数码管的显示与键盘识别 清华洪伟

上传人:san****019 文档编号:84028869 上传时间:2019-03-02 格式:PPT 页数:22 大小:1.46MB
返回 下载 相关 举报
数码管的显示与键盘识别 清华洪伟_第1页
第1页 / 共22页
数码管的显示与键盘识别 清华洪伟_第2页
第2页 / 共22页
数码管的显示与键盘识别 清华洪伟_第3页
第3页 / 共22页
数码管的显示与键盘识别 清华洪伟_第4页
第4页 / 共22页
数码管的显示与键盘识别 清华洪伟_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数码管的显示与键盘识别 清华洪伟》由会员分享,可在线阅读,更多相关《数码管的显示与键盘识别 清华洪伟(22页珍藏版)》请在金锄头文库上搜索。

1、第十四章 数码管的显示与键盘识别,14.1 数码管的显示 14.1.1 7段数码管原理与结构 14.1.2 7段数码管编码 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 键盘的扫描策略,Page 1,Page 2,第十四章数码管的显示与键盘识别 数码管的显示,14.1.1 7段数码管原理与结构 把7个细长的LED排成日字型 8个LED,使用一个公用端,共阳型:所

2、有LED的阳极连在一起, 共阴型:所有LED的阴极连在一起 单独控制每个段的亮灭,可以表示出数字 09 使用多个数码管表示数字 应用非常广泛 多种颜色,多种尺寸,Page 3,第十四章数码管的显示与键盘识别 数码管的显示,14.1.2 7段数码管编码,b,c,d,e,f,g,a,共阴型:1 表示点亮 0 表示熄灭 共阳型:取反,DP,Page 4,第十四章数码管的显示与键盘识别 数码管的显示,14.1.3 数码管动态扫描 通过段控制信息确定数码管显示的数字(多位复用) 通过位控制信号使得任意时刻只有一位数码管处于显示状态 利用视觉暂留现象,定时更改位控制信息和段控制信息,得到稳定的数字显示 多

3、个LED同时点亮的电流都经过公共端,MCU的IO无法承受,必须使用三极管 为了减小MCU的灌入电流,段控制端都连接了输出驱动器74LS07,段控制,位控制,注:所有引脚都是低电平有效,Page 5,第十四章数码管的显示与键盘识别 数码管的显示,14.1.4 数码管显示硬件设计 实验板上有4位数码管,共阳极结构,引出12根连线,8根段控制,4根位控制,对应关系如下: 实验中可将段控制连接到P口,将位控制连接到T口,连线关系如下:,Page 6,第十四章数码管的显示与键盘识别 数码管的显示,14.1.4 数码管显示软件设计 显示一位数字: const unsigned char DisplayDe

4、code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /0-9 ABCDEF DDRP|=0XFF; DDRT|=0XFF; /点亮一个数码管,显示2 PTP=DisplayDecode2; PTT=0xfe; LED动态显示时,按人眼的反应,刷新频率得大于80Hz,即所有LED在12ms内必须刷新一次。现有4组LED,即每段显示3ms。这个3ms可以用软件延迟实现,但为提高CPU效率,一般使用定时器。,Page 7,第十四章数码管的显示与键盘识别 数码管的显示,示例程序 /u

5、nsigned char showdata4; void Show() unsigned char DisplayNumber; PTT=0x0f; for(DisplayNumber=0;DisplayNumber4;DisplayNumber+) PTP=DisplayDecodeshowdataDisplayNumber; if(DisplayNumber=2) PTP ,Page 8,第十四章数码管的显示与键盘识别 数码管的显示,示例程序 /unsigned char showdata4; void delay(unsigned int countert) /3ms unsigned

6、int i,j; for(i=0;icountert;i+) for(j=0;j4000;) j+; ,1 2 3/1,晶振16M,总线时钟8M,延时为: 4000*(1+2+3)/(8*106)s=3ms,LED显示应用实例 实验11 任务:(1) 在8位数码管上显示班级和学号,之间用小数点分隔。 (2) 在4个数码管上实现“0”字符跑马灯 (3) 编制实验一中的已知年月,求天数的C程序,将天数显示在数码管中间两位上,前后放上分隔符“。 -” 例如: (4) 利用实验一中的已知年月,求天数的汇编程序作子程序,实现混合编程。 (5) 利用DIP开关实现上述功能的菜单,Page 9,第十四章数码

7、管的显示与键盘识别 实验11,第十章 单片机片内外模块 并行I/O,硬件连线,Page 10,数码管12线连P口和T口,第十四章数码管的显示与键盘识别 键盘识别,14.2.1 开关与键盘 开关(Switch) 开关有两种状态闭合和断开 船形开关,拨位开关 按键:带有自恢复装置的开关,常开常闭型 各种形状,各种尺寸 耐高压,轻触式,带指示 键盘:由多个按键组合而成 为了区分按键,给每个按键安排了一个代码,称键码。 编码键盘和非编码键盘前者较复杂,较贵。后者较简单,极便宜。 非编码键盘分为独立式键盘和行列式键盘,Page 11,第十四章数码管的显示与键盘识别 键盘识别,14.2.2 键盘的消抖问题

8、 按键用于产生一个脉冲,1个MCU的IO口可以检查一个按键的状态 按下和释放的时刻会有抖动 需要设计硬件消抖电路或软件消抖 硬件消抖:阻容滤波或双稳态触发器 软件消抖:延时等待(12ms),Page 12,void delay(void) unsigned int i,j; for(i=0;i4;i+) for(j=0;j4000;) j+; ,12ms,第十四章数码管的显示与键盘识别 键盘识别,14.2.3 键盘的识别功能 有无键按下 软件延时消抖 扫描求键码 等待键释放 查表求键值,Page 13,第十四章数码管的显示与键盘识别 键盘识别,Page 14,14.2.4 键盘的硬件设计,5V

9、,行端口输出,Y1,X1,Y2,Y3,Y4,X2,X3,X4,列端口输入,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,注:将MCUI/O口输入端的内部上拉电阻使能,键码,键值,第十四章数码管的显示与键盘识别 键盘识别,Page 15,0,实验板上有一个4*4的薄膜键盘,板上无上拉电阻,接口是X1-4、Y1-4,实验中可将其连接到PORTA口上,Y1-4(PA0-3)为输出, X1-4(PA4-7)做为输入,使能PORTA的上拉电阻,行端口输出,Y1,X1,Y2,Y3,Y4,X2,X3,X4,列端口输入,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,第十四章数码

10、管的显示与键盘识别 键盘识别,Page 16,5V,行端口输出,X1 (PA4),X2 (PA5),X3 (PA6),X4 (PA7),列端口输入,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,14.2.5 键盘扫描法软件设计 当所有行输出为0,列输入码若不全为1,说明有键按下; 令一行输出为0,其余行输出为1,列输入码若不全为1,说明该行有键按下 根据行输出码和列输入码中同时为0的行号和列号,可以确定键号。 多键识别时需要依次扫描所有行(shift+A) 窜键问题:软件处理 连续输入问题:需要考虑扫描策略,Y1(PA0),Y2(PA1),Y3(PA2),Y4(PA3),示例

11、程序: unsigned char KeyScan() unsigned char Input,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;i4; if(Input!=0x0F) switch(Input) case 0x0E: Keynumber=0; break; case 0x0D: Keynumber=1;

12、 break; case 0x0B: Keynumber=2; break; case 0x07: Keynumber=3; break; Keynumber=Keynumber+i*ColumnSize; Keyvalue1=KeyDecodeKeynumber; break; else Output=1; return(Keyvalue1); ,第十四章数码管的显示与键盘识别 键盘识别,Page 17,5V,Y1(PA0),X1 (PA4),Y2(PA1),Y3(PA2),Y4(PA3),X2 (PA5),X3 (PA6),X4 (PA7),0,1,2,3,4,5,6,7,8,9,A,B,

13、C,D,E,F,第十四章数码管的显示与键盘识别 键盘识别,Page 18,键值表:const unsigned char KeyDecode= 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x00,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f;,行端口输出,Y1,X1,Y2,Y3,Y4,X2,X3,X4,列端口输入,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,第十四章数码管的显示与键盘识别 键盘识别,14.2.6 键盘的扫描策略 循环扫描:可行、可靠,占用CPU时间; 定时扫描:可能丢失按键动作,需要确定扫描频率

14、,触点接触时间在几十到几百ms量级; 键盘中断:发现有任何按键按下时启动键盘扫描,需要设计相应的硬件电路,Page 19,示例程序: void main(void) /* put your own code here */ unsigned char Keyresult; showdata0=1; showdata1=2; showdata2=3; showdata3=4; EnableInterrupts; Init_PORT(); Show(); for(;) Keyresult=KeyScan(); /键盘扫描 if(Keyresult!=0xFF) showdata0=Keyresul

15、t; Show(); /显示 ,第十四章数码管的显示与键盘识别 键盘识别,14.2.6 键盘的扫描策略 循环扫描:可行、可靠,占用CPU时间; 定时扫描:可能丢失按键动作,需要确定扫描频率,触点接触时间在几十到几百ms量级; 键盘中断:发现有任何按键按下时启动键盘扫描,需要设计相应的硬件电路,Page 20,示例程序: void main(void) /* put your own code here */ unsigned char Keyresult; showdata0=1; showdata1=2; showdata2=3; showdata3=4; EnableInterrupts; Init_PORT(); Show(); for(;) Keyresult=KeyScan(); /键盘扫描 if(Keyresult!=0xFF) showdata0=Keyresult; Show(); /显示 ,键盘应用实例 实验10 任务:(1) 延续前边的实验,键盘输入年和月,在数码管上显示对应的天数。 (2) 延续前边的实验,从键盘输入班级和学号,并在8位数码管上显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号