第十四章数码管的显示与键盘识别 清华洪伟

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十四章数码管的显示与键盘识别14.1数码管的显示14.1.17段数码管原理与结构14.1.27段数码管编码14.1.3数码管动态扫描14.1.4数码管显示硬件设计14.1.5数码管显示软件设计14.2键盘识别14.2.1开关与键盘14.2.2键盘的消抖问题14.2.3键盘的识别功能14.2.4键盘的硬件设计14.2.5键盘扫描法软件设计14.2.6键盘的扫描策略Page1Page2第十四章数码管的显示与键盘识别—数码管的显示14.1.17段数码管原理与结构把7个细长的LED排成‘日’字型8个LED,使用一个公用端,共阳型:所有LED的阳极连在一起,共阴型:所有LED的阴极连在一起单独控制每个段的亮灭,可以表示出数字0~9使用多个数码管表示数字应用非常广泛多种颜色,多种尺寸Page3第十四章数码管的显示与键盘识别—数码管的显示14.1.27段数码管编码bcdefgaNgfedcba01111113F111062111115B3111114F41111665111116D61111117D711107811111117F91111116F共阴型:1–表示点亮0–表示熄灭共阳型:取反DPPage4第十四章数码管的显示与键盘识别—数码管的显示14.1.3数码管动态扫描通过段控制信息确定数码管显示的数字(多位复用)通过位控制信号使得任意时刻只有一位数码管处于显示状态利用视觉暂留现象,定时更改位控制信息和段控制信息,得到稳定的数字显示多个LED同时点亮的电流都经过公共端,MCU的IO无法承受,必须使用三极管为了减小MCU的灌入电流,段控制端都连接了输出驱动器74LS07段控制位控制注:所有引脚都是低电平有效Page5第十四章数码管的显示与键盘识别—数码管的显示14.1.4数码管显示硬件设计实验板上有4位数码管,共阳极结构,引出12根连线,8根段控制,4根位控制,对应关系如下:实验中可将段控制连接到P口,将位控制连接到T口,连线关系如下:121110987654321C4afC3C2bC1gcdpde121110987654321T3P0P5T2T1P1T0P6P2P7P3P4Page6第十四章数码管的显示与键盘识别—数码管的显示14.1.4数码管显示软件设计显示一位数字:constunsignedcharDisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71};//0-9ABCDEFDDRP|=0XFF;DDRT|=0XFF;//点亮一个数码管,显示2PTP=DisplayDecode[2];PTT=0xfe;LED动态显示时,按人眼的反应,刷新频率得大于80Hz,即所有LED在12ms内必须刷新一次。现有4组LED,即每段显示3ms。这个3ms可以用软件延迟实现,但为提高CPU效率,一般使用定时器。Page7第十四章数码管的显示与键盘识别—数码管的显示示例程序//unsignedcharshowdata[4];voidShow(){unsignedcharDisplayNumber;PTT=0x0f;for(DisplayNumber=0;DisplayNumber4;DisplayNumber++){PTP=DisplayDecode[showdata[DisplayNumber]];if(DisplayNumber==2)PTP&=0x7f;switch(DisplayNumber){case0:PTT=0xfe;break;case1:PTT=0xfd;break;case2:PTT=0xfb;break;default:PTT=0xf7;break;}delay(1);}}Page8第十四章数码管的显示与键盘识别—数码管的显示示例程序//unsignedcharshowdata[4];voiddelay(unsignedintcountert)//3ms{unsignedinti,j;for(i=0;icountert;i++)for(j=0;j4000;)j++;}123/1晶振16M,总线时钟8M,延时为:4000*(1+2+3)/(8*106)s=3msLED显示应用实例实验11任务:(1)在8位数码管上显示班级和学号,之间用小数点分隔。(2)在4个数码管上实现“0”字符跑马灯(3)编制实验一中的已知年月,求天数的C程序,将天数显示在数码管中间两位上,前后放上分隔符“。-”例如:(4)利用实验一中的已知年月,求天数的汇编程序作子程序,实现混合编程。(5)利用DIP开关实现上述功能的菜单Page9第十四章数码管的显示与键盘识别—实验11第十章单片机片内外模块——并行I/O硬件连线Page10数码管12线连P口和T口第十四章数码管的显示与键盘识别—键盘识别14.2.1开关与键盘开关(Switch)开关有两种状态-闭合和断开船形开关,拨位开关按键:带有自恢复装置的开关,常开常闭型各种形状,各种尺寸耐高压,轻触式,带指示键盘:由多个按键组合而成为了区分按键,给每个按键安排了一个代码,称键码。编码键盘和非编码键盘前者较复杂,较贵。后者较简单,极便宜。非编码键盘分为独立式键盘和行列式键盘Page11第十四章数码管的显示与键盘识别—键盘识别14.2.2键盘的消抖问题按键用于产生一个脉冲,1个MCU的IO口可以检查一个按键的状态按下和释放的时刻会有抖动需要设计硬件消抖电路或软件消抖硬件消抖:阻容滤波或双稳态触发器软件消抖:延时等待(12ms)Page12voiddelay(void){unsignedinti,j;for(i=0;i4;i++)for(j=0;j4000;)j++;}12ms第十四章数码管的显示与键盘识别—键盘识别14.2.3键盘的识别功能有无键按下软件延时消抖扫描求键码等待键释放查表求键值Page13第十四章数码管的显示与键盘识别—键盘识别Page141234567890ABCDEF14.2.4键盘的硬件设计5V行端口输出000011011111Y1X1Y2Y3Y4X2X3X4列端口输入0123456789ABCDEF注:将MCUI/O口输入端的内部上拉电阻使能键码键值第十四章数码管的显示与键盘识别—键盘识别Page150实验板上有一个4*4的薄膜键盘,板上无上拉电阻,接口是X1-4、Y1-4,实验中可将其连接到PORTA口上,Y1-4(PA0-3)为输出,X1-4(PA4-7)做为输入,使能PORTA的上拉电阻行端口输出000011011111Y1X1Y2Y3Y4X2X3X4列端口输入123456789ABCDEF第十四章数码管的显示与键盘识别—键盘识别Page165V行端口输出000011011111X1(PA4)X2(PA5)X3(PA6)X4(PA7)列端口输入0123456789ABCDEF14.2.5键盘扫描法软件设计当所有行输出为0,列输入码若不全为1,说明有键按下;令一行输出为0,其余行输出为1,列输入码若不全为1,说明该行有键按下根据行输出码和列输入码中同时为0的行号和列号,可以确定键号。多键识别时需要依次扫描所有行(shift+A)窜键问题:软件处理连续输入问题:需要考虑扫描策略Y1(PA0)Y2(PA1)Y3(PA2)Y4(PA3)示例程序:unsignedcharKeyScan(){unsignedcharInput,Output,Keynumber,Keyvalue1,i;Keyvalue1=0xFF;Output=0xF0;PORTA=Output;Input=PORTA4;if(Input!=0x0F){delay(4);Input=PORTA4;if(Input!=0x0F){Output=0x01;for(i=0;iRowSize;i++){PORTA=~Output;Input=PORTA4;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);}第十四章数码管的显示与键盘识别—键盘识别Page175V000011011111Y1(PA0)X1(PA4)Y2(PA1)Y3(PA2)Y4(PA3)X2(PA5)X3(PA6)X4(PA7)0123456789ABCDEF第十四章数码管的显示与键盘识别—键盘识别Page181234567890ABCDEF键值表:constunsignedcharKeyDecode[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};行端口输出000011011111Y1X1Y2Y3Y4X2X3X4列端口输入0123456789ABCDEF第十四章数码管的显示与键盘识别—键盘识别14.2.6键盘的扫描策略循环扫描:可行、可靠,占用CPU时间;定时扫描:可能丢失按键动作,需要确定扫描频率,触点接触时间在几十到几百ms量级;键盘中断:发现有任何按键按下时启动键盘扫描,需要设计相应的硬件电路Page19示例程序: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();//显示}}第十四章数码管的显示与键盘识别—键盘识别14.2.6键盘的扫描策略循环扫描:可行、可靠,占用CPU时间;定时扫描:可能丢失按键动作,需要确定扫描频率,触点接触时间在几十到几百ms量级;键盘中断:发现有任何按键按下时启动键盘扫描,需要设计相应的硬件电路Page20示例程序: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();//显示}}键盘应用实例实验10任务:(1)延续前边的实验,键盘输入年和月,在数码管上显示对应的天数。(2)延续前边的实验,从键盘输入班级和学号,并在8位数码管上显示。(3)自由发挥,如:组合键:F+1,显示班级;F+2,显示学号反转法识别键盘编制函数y=3*x+4,x由键盘输入,y用数码管显示菜单……Page21第十四章数码管的显示与键盘识别—键盘识别第十章单片机片内外模块——并行I/O硬件连线Page22数码管12线连P口和T口键盘8线连A口

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功