(11) 9.3 键盘与显示接口(实验7KEY 实验8 LED)_第1页
(11) 9.3 键盘与显示接口(实验7KEY 实验8 LED)_第2页
(11) 9.3 键盘与显示接口(实验7KEY 实验8 LED)_第3页
(11) 9.3 键盘与显示接口(实验7KEY 实验8 LED)_第4页
(11) 9.3 键盘与显示接口(实验7KEY 实验8 LED)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CollegeofCommunicationEngineering,JilinUniversity9.3动态数码管显示与键盘识别2CollegeofCommunicationEngineering,JilinUniversity本章提要9.3.1键盘识别

1.开关与键盘

2.键盘的消抖问题

3.键盘的识别功能

4.键盘的硬件设计

5.键盘扫描法软件设计

6.键盘的扫描策略

7.键盘识别应用实例9.3.2数码管显示1.七段数码管原理与结构2.七段数码管编码3.数码管动态扫描4.数码管显示硬件设计5.数码管显示软件设计6.LED显示应用实例

3CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别1.开关与键盘开关(Switch)状态-闭合和断开种类-船形开关,拨位开关按键带有自恢复装置的开关,常开常闭型各种形状,各种尺寸耐高压,轻触式,带指示键盘由多个按键组合而成为了区分按键,给每个按键安排了一个代码,称键码。编码键盘和非编码键盘相比,前者较复杂,较贵。后者较简单,极便宜。非编码键盘分独立式键盘和行列式键盘4CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别2.键盘的消抖问题按键用于产生一个脉冲,1个MCU的IO口可以检查一个按键的状态按下和释放的时刻会有抖动需要设计硬件消抖电路或软件消抖硬件消抖:阻容滤波或双稳态触发器软件消抖:延时等待(12ms)voiddelay(void){unsignedinti,j;for(i=0;i<4;i++)for(j=0;j<4000;)j++;}5CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别3.键盘的识别功能有无键按下软件延时消抖扫描求键码等待键释放查表求键值6CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别4.键盘的硬件设计5V行端口输出00001101111Y1X1Y2Y3Y4X2X3X4列端口输入0123456789ABCDEF1234567890ABCDEF7CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别4.键盘的硬件设计(续)实验板上有一个4*4的薄膜键盘,板上无上拉电阻,接口是X1-4、Y1-4,实验中可连接到PORTA口上,Y1-4(PA0-3)为输出,X1-4(PA4-7)做为输入,使能PORTA的上拉电阻0行端口输出00001101111Y1X1Y2Y3Y4X2X3X4列端口输入123456789ABCDEF8CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别5.键盘扫描法软件设计当所有行输出为0,列输入码若不全为1,说明有键按下;令一行输出为0,其余行输出为1,列输入码若不全为1,说明该行有键按下:根据行输出码和列输入码中同时为0的行号和列号,可以确定键号。多键识别时需要依次扫描所有行(shift+A)窜键问题:软件处理连续输入问题:需要考虑扫描策略5V行端口输出00001101111Y1(PA0)X1(PA4)Y2(PA1)Y3(PA2)Y4(PA3)X2(PA5)X3(PA6)X4(PA7)列端口输入0123456789ABCDEF示例程序

unsignedcharKeyScan(){unsignedcharInput,Output,Keynumber,Keyvalue1,i;Keyvalue1=0xFF;Output=0xF0; PORTA=Output;Input=PORTA>>4; if(Input!=0x0F) { delay(4); Input=PORTA>>4; if(Input!=0x0F){ Output=0x01; for(i=0;i<RowSize;i++){ PORTA=~Output; Input=PORTA>>4; if(Input!=0x0F){ switch(Input){ case0x0E:Keynumber=0;break; case0x0D:Keynumber=1;break; case0x0B:Keynumber=2;break; case0x07:Keynumber=3;break;} Keynumber=Keynumber+i*ColumnSize; Keyvalue1=KeyDecode[Keynumber];break;} elseOutput<<=1; } } } return(Keyvalue1);}5V行端口输出00001101111Y1(PA0)X1(PA4)Y2(PA1)Y3(PA2)Y4(PA3)X2(PA5)X3(PA6)X4(PA7)列端口输入0123456789ABCDEF键值表constunsignedcharKeyDecode[]={0x01,

0x02,

0x03,

0x04,

0x05,

0x06,

0x07,

0x08,

0x09,

0x00,

0x0a,

0x0b,

0x0c,

0x0d,

0x0e,

0x0f};5V行端口输出00001101111Y1(PA0)X1(PA4)Y2(PA1)Y3(PA2)Y4(PA3)X2(PA5)X3(PA6)X4(PA7)列端口输入0123456789ABCDEF1234567890ABCDEF11CollegeofCommunicationEngineering,JilinUniversity9.3.1键盘识别6.键盘的扫描策略循环扫描:可行、可靠,占用CPU时间;定时扫描:可能丢失按键动作,需要确定扫描频率,触点接触时间在几十到几百ms量级;键盘中断:发现有任何按键按下时启动键盘扫描,需要设计相应的硬件电路示例程序

voidmain(void){/*putyourowncodehere*/unsignedcharKeyresult;

showdata[0]=1;showdata[1]=2;showdata[2]=3;showdata[3]=4; EnableInterrupts; Init_PORT();Show();for(;;){Keyresult=KeyScan();//键盘扫描

if(Keyresult!=0xFF)showdata[0]=Keyresult;Show(); //显示

}}

12CollegeofCommunicationEngineering,JilinUniversity9.3.2数码管显示1.七段数码管原理与结构把7个细长的LED排成字型8个LED,使用一个公用端共阳型:所有LED的阳极连在一起共阴型:所有LED的阴极连在一起单独控制每个段的亮灭,可以表示出数字0~9使用多个数码管表示数字应用非常广泛多种颜色,多种尺寸13CollegeofCommunicationEngineering,JilinUniversity2.七段数码管编码共阴型:1–表示点亮

0–表示熄灭共阳型:取反Ngfedcba01111113F111062111115B3111114F41111665111116D61111117D711107811111117F91111116FbcdefgaDP9.3.2数码管显示14CollegeofCommunicationEngineering,JilinUniversity3.数码管动态扫描通过段控制信息确定数码管显示的数字(多位复用)通过位控制信号使得任意时刻只有一位数码管处于显示状态利用视觉暂留现象,定时更改位控制信息和段控制信息,得到稳定的数字显示多个LED同时点亮的电流都经过公共端,MCU的IO无法承受,必须使用三极管为了减小MCU的灌入电流,段控制端都连接了输出驱动器74LS07段控制位控制

注:共阳极,所有引脚低电平有效9.3.2数码管显示15CollegeofCommunicationEngineering,JilinUniversity4.数码管显示硬件设计121110987654321C4afC3C2bC1gcdpde121110987654321T3P0P5T2T1P1T0P6P2P7P3P4实验中可将段控制连接到P口,将位控制连接到T口,连线关系如下:实验板上有4位数码管,共阳极结构,引出12根连线,8根段控制,4根位控制,对应关系如下:9.3.2数码管显示16CollegeofCommunicationEngineering,JilinUniversity5.数码管显示软件设计LED动态显示:按人眼的反应,刷新频率得大于80Hz,即所有LED在12ms内必须刷新一次。现有4组LED,即每段显示3ms。这个3ms可以用软件延迟实现,但为提高CPU效率,一般使用定时器。显示一位数字:

constunsignedcharDisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71};//0-9ABCDEFDDRP|=0xFF; DDRT|=0xFF; //点亮一个数码管,显示2 PTP=DisplayDecode[2]; PTT=0xFE;9.3.2数码管显示17CollegeofCommunicationEngineering,JilinUniversity5.数码管显示软件设计示例程序

//unsignedcharshowdata[4];

voidShow() { unsignedcharDisplayNumber; PTT=0x0f; for(DisplayNumber=0;DisplayNumber<4;DisplayNumber++) { PTP=Displ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论