




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统原理与应用实验报告实验序号:06实验项目名称:矩阵键盘实验学号姓名ZRZ专业、班18计卓1班实验地点指导教师黄鹏程实验时间一、实验目的1. 通过实验,理解矩阵键盘按键识别的软件方法。2. 会编写识别矩阵键盘的驱动程序。二、实验设备(环境)及要求硬件:PC机;软件:PC机操作系统windows XP, Proteus软件,ADS 1.2三、实验内容与步骤实验内容:设4M的矩阵键盘,并给按键编号为0-15,通过软件方式识别 矩阵键盘中按下的键,最后利用八段数码管显示出按键编号。实验步骤:1. 在Proteus将实验所需的各个部件连接,确保连接正确无误。2. 在ADS当中将相应的代码完成,
2、保证编译通过无异常。3. 在Proteus打开相应的hex文件进行仿真实验。7四、实验结果与数据处理1.实验连接图02A *XTM1 XTM2RTX:1 RTJC2U1fi_壬PQ2OCUXAflDn aiWJQMATUmHI 川 49C8MO I0«0< mseoolUF 伸 OQT 畑 QMOCQCg Z7910 fO;SUXUW3BHT2 PC&TiDVKCUgD 八 Ok D“U 9M1MV3 >at3«rcucA>ia»i2 FO 1XT81C1.1«M1 ic laosKinuTiomou fO1M»TRl
3、M*Tl t«01< IQMIOCOKHTIMAI 巧 St代IKTZADfSPaifQAMXC 皿 E2 IC.t8CA*131lfi0tAIATl3 IQIftW<TtUOCIt£A»l2FOJOUITIJWaiiBMn 32kfW«SA01£CA>0 «122> i rcA*aawATOofOSAKliOUrPCJKACQS33VfiDOiCA12«ATD2aaa«*D02iCA®aMi*TD3PCRXC© 3C t*rc AFOO «31图1实验原理图2
4、.程序代码#include "config, h"defineROWl0x10#defineROW20x20#defineROW30x40SdefineROW40x80SdefineCOL10x01SdefineCOL20x02#defineCOL30x04#defineCOL40x08uintS Key;void delay(int time) int i;for(;time > 0;time-)for(i = 0;i < 3300;i+);/扫描函数uintS KEY_Scan(void)uintS key二0;/扫描第1列IOOSET 二 OxOe;IOO
5、CLR = C0L1;if(IOOPINROW1)二二 0)key = 1;如果按键发生在第一行if(IOOPINROW2)二二 0)key = 5;如果按键发生在第二行if(IOOPINROW3)二二 0) key = 9;/如果按键发生在第三辻(IOOPINROW4)二二 0) key = 13;如果按键发生在第四/扫描第2列IOOSET 二 OxOd;IOOCLR 二 C0L2;if(IOOPIN & ROW1) = 0)辻(IOOPIN & ROW2)二二 0)辻(IOOPIN & ROW3)二二 0)辻(IOOPIN & ROW4)二二 0)/扫描第3
6、列IOOSET 二 0x0b;IOOCLR = C0L3;辻(IOOPIN & ROW1) = 0)key = 3;辻(IOOPIN & ROW2) = 0)key = 7;辻(IOOPIN & ROW3) = 0)key = 11;if(IOOPIN & ROW4) = 0)key 二 15;/扫描第4列IOOSET 二 0x07;IOOCLR 二 C0L4;辻(IOOPIN & ROW1)=0)key = 4;if(IOOPIN & ROW2)=0)key = 8;if(IOOPIN & ROW3)=0)key = 12;if(IOO
7、PIN & ROW4)=0)key = 16;/四列全清(0IOOCLR 二 OxOf;IOOSET 二 0x00; return (key);键盘扫描void _irq key_irq(void)uint32 i, keyl,key2 ;for(i=0;iU1000;i+);/延时一段时间,消抖keyl 二 KEY_Scan() ;/按键扫描for (i=0; i<=1000; i+) ;/延时一段时间key2 二 KEY_Scan() ;/按键扫描if(keyl = key2)Key = keyl;如果两次扫描得到的键值相同,则保存这个按键EXTINT = 0x01 ;VIC
8、VectAddr 二 0 ;/中断结束void nums(int x)uint32 num;switch(x)case 0:num = Ox7eOO;break;case 1:num = OxcOO;break;case 2:num = 0xb600;break;case 3:num = 0x9e00;break;case 4:num = OxccOO;break;case 5:num = OxdaOO;break;case 6:num = OxfaOO;break;case 7:num = OxeOO;break;case 8:num = OxfeOO;break;case 9:num =
9、OxdeOO;break;case10:num = OxeeOO;break;case11:num = OxfSOO;break;case12:num = 0x7200;break;case13:num = OxbcOO;break;case14:num = 0xf200;break;case15:num = 0xe200;break;IOOSET = num; delay (1000);IOOSET 二 0x00;IOOCLR = num;int main (void)PINSELO = OxOO;PINSEL1 = 0x01;IOODIR = OxfeOf;EXTMODE = 0x01;E
10、XTPOLAR = 0x00;VICIntSelect二0x00;VICVectAddrl=(uint32) key_irq;VICVectCntll=0x2014;VICIntEnable二(1«14);IOOCLR = OxOf;IOOSET = 0x00;while(1)IOOSET 二 0x00;IOOCLR 二 OxOf;if(Key != 0)nums(Key-1);Key二 0;return 0;3.实验说明在这个实验中,我们主要可以通过参考ppt上的代码来完成实验,其中最重 要的就是对按键扫描的过程和通过按键触发中断的部分,这两部分的主要代码如 下:/* 文fl Yi
11、: unsigned KEY_Scan()*功能:按键的列扫描,扫描结束后返回按键的代码.床出口参数:key,按键码*林*林*林寒*木水*水水木宕*木宕*木*水冰*水*木水* /uint8 KEY_Scan(void)uintS key-0:打描第1列IO2CLR = COL1;IO2SET = COL2;IO1SET = COL3 C0L4: if(IO2P!X & ROU1)二二 0) key if(I02PI & R0U2) = 0) key if(I02PIX & R0W3) = 0) kev if(IO2PIX & R0W4) = 0) kev/列线C
12、0L1输出氏低/其他列线输岀宣高/如果按键发牛在笫行/如果按键发生在第二行/.打描第2列I02CLR = C0L2;I02SET = COL1;I01SET =C0L3 C0L4;/列线C0L2输岀氏低/其他列线输出置高if(02PIN & R0W1) = 0)key = 5:if(IO2PIN & R0W2) = 0)key = 6:if(I02PIN & R0W3) = 0)key = 7;/打描第3列I01CLR = C0L3;列线C0L3输岀置低I02SET = C0L1 C0L2; I01SET=C0L4;/其他列线输出置高if(I02PIN & RO
13、W) = 0)key = 9:if (仃02PIN & R0W2) = 0)key = 10:if(I02PIN & R0W3) = 0)key = 11;if(I02PIN & R0W4) = 0)key = 12;/J 1描第4列I01CLR = C0L4:I02SET = C0L1 C0L2; IO1SET = C0L3;列线C0L4输岀泡低/其他列线输出置高if(I02P!N & if(I02PTX & if(I02PIX & if(I02PIN &ROK1) = 0)R0W2) = 0)R0W3) = 0)ROW4) = 0)k
14、ey 二 13; key = 14: key = 15: key = 16;TH列全活0I01CLR = C0L3 C0L4: I02CLR = C0L1 C0L2: return(key):图2按键扫描主要算法山于按键开关为机械弹性开关,按键开关在闭合和断开的瞬间均有一连串的 抖动。抖动时间的长短山按键的机械特性决定,一般为5ms10mso所以我们在 程序设讣中也要进行消除抖动的操作按键识别中断服务程序volatile uint8 Key;定义全局变就保存按健值* 文件名:KEY IRQ()集功能:外部申断服务程序,判斷两次按键值是否相等 入口多数:无岀口参数:按键值保存在全局变疑Key中v
15、oid _irq KEYRQ(void)iuint32 i,keyl,key2 ; for(i=0;i<=1000;i+); keyl = KEY_Scan();延时一段时间.消抖/按犍扫描for(i=0J<=1000;i)r key2= KEY_Scan();延时一段时间按键扫描if(keyl = key 2) Key = keyl;如果两次扫描得到的键值相同.则保存这个按铤while(EXTINT&0x01)l=O)/ 除中断标志EXTINT = 0x01;1JVICVectAddr = 0; 中断结束图3按键中断和消除抖动上要算法实验效果XTM1XTAL2RTC1 R
16、T«2屈FnDT>D0*K«1RgwmEMwn) po2«cinrAoo RXO心IAR IVDMTI «L4CCICCAMA£<ie R 艸 IKOUBECU FOMJQSDCgZOlI adCUW«2/CE ICAOYOVHMIUROI.1 咒McDVKW 泗NT? Rl!OTTSlCM1flMH2 raiUCTGUCAFI tec 11 POSWIUlUh 映 M PQ GTJTRU1<(T1 miOCOL "Q0A(FC 5EAB2C2U2 anjCA>13CKVMATI2 4畋"8
17、8 讥imj KLtMI«<T1IIO6nCM1.2P03WUT1365eiV«l73 FO2V*WUf(»1GCA/l 3 IQ22M)1 ?£AinOMAlD QI02SMX)4J>OUT 9QXW39 畑/goo ac 人畑 vMAin i *028*00 XA»OJWA1U2 Q3W2CAWA1U3R7. 心 <TCtT>.R5工io. 八 JR6心 c«T>.WT R8心 <T>T>图4实验效果图一U2AXTM1XTA12RTMC1 RTOC?Fa<K>H«
18、;l«MWTOP02firiDCAP0DROWMOiiE tvwrriKliCCIOCUftiACClSR16W$OC«JAD1Dp rweuwm 切 egnovfuMiiRlt(WTStCM111MH 2 FOIlCrSUCAfl 16CL1 poowwvu<KTia*®u pntauTRuiftTi jjhak mJOCDtlMTlSOA1 ra«?WI1«MT2AD!5ra ZWABRC2O2 MITXMlJMCKimATIJ 穴i 畋"imi a tmm j 阿 51 幻12W06HQAM.2POJWiT1»95eiV<liT3 >02l.«WU5016CMI 3 1022017
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 腰部脊髓损伤的护理
- 惊艳四字散文题目及答案
- 指头炎的护理
- 数字化转型对交通设备制造业生产成本的影响报告
- 数字艺术展览数字化展示效果与观众满意度调查与提升策略
- 生态茶园观光旅游项目2025年旅游产品创新建议书
- 康复紧急预案培训课件
- 教育培训中心课件
- 河南红娘培训课件
- 教师心理知识培训课件
- GB/T 37556-201910 kV带电作业用绝缘斗臂车
- GB/T 19247.2-2003印制板组装第2部分:分规范表面安装焊接组装的要求
- GB/T 1766-2008色漆和清漆涂层老化的评级方法
- 驾驶员安全驾车个人责任书三篇
- 广西建工80塔吊使用说明书TCT5512
- DB15T 1889-2020 防风栽培技术规程
- 混凝土基本性能试验报告
- 代付农民工工资委托付款书(模板)
- JJF1075-2015 钳形电流表校准规范-(高清现行)
- 公路水运工程试验检测机构资质评审培训共34页课件
- CSR管理体系策略
评论
0/150
提交评论