




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第9 9章章 键盘与显示器键盘与显示器一、一、 LED数码管的显示原理数码管的显示原理LED(Light Emitting Diode)发光二极管缩写。LED数码管数码管是由发光二极管构成是由发光二极管构成的。1.1 LED数码管的结构数码管的结构常见的LED数码管为“8”字型字型的,共计8段段。每一段每一段对应一个发光二极管对应一个发光二极管。有共阳极共阳极和共阴极共阴极两种,如图图10-1所示所示。共阴极共阴极发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平阳极为高电平时,发光二极管点亮。同样,共阳极共阳极LED数码管的发光二极管的阳极连接在阳极连接在一起一起,公共阳极接正电压
2、接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。238段段LED数码管结构及外形数码管结构及外形为了使数码管显示为了使数码管显示不同的符号或数字不同的符号或数字,要把某些段发光二极管点亮,就要为LED数码管提供段码段码(字型码字型码)。LED数码管共计8段段。正好是一个字节一个字节。习惯上是以以“a”段对应段码字节的最低位段对应段码字节的最低位。各段与字节中各位对应关系如表表10-1所示。按照上述格式,显示各种字符的8段LED数码管的段码如表表所示。4510.1.2 LED数码管工作原理数码管工作原理图图10-3所示为显示4位字符的LED数码管的结构原理图。N位位
3、选线位选线和8 N条段码线段码线。段码线控制段码线控制显示字型字型,而位选线位选线控制着该显示位的LED数码管的亮或暗亮或暗。6LED数码管有静态显示静态显示和动态显示动态显示两种显示方式两种显示方式。1LED静态显示方式静态显示方式无论多少位LED数码管,同时处于显示状态同时处于显示状态。静态显示方式,各位的共阴极(或共阳极)连接在一起共阴极(或共阳极)连接在一起并接地(或接+5V);每位的段码线(段码线(adp)分别与一)分别与一个个8位的位的I/O口锁存器输出相连。口锁存器输出相连。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的口锁存器锁存的段码输出将维持不
4、变段码输出将维持不变,直到送入另一个字符的段码为止。正因为如此,静态显示方式的显示无闪烁,亮度都较高,软件控制比较容易软件控制比较容易。7静态显示方式接口编程容易,但是占用口线较多。静态显示方式接口编程容易,但是占用口线较多。82LED动态显示方式动态显示方式无论在任何时刻只有一个只有一个LED数码管处于显示状态数码管处于显示状态,即单片机采用“扫描扫描”方式方式控制各个数码管轮流显示。9虽然这些字符是在不同时刻出现,而在同一时刻,只有一位显示,其他各位熄灭,由于余辉和人眼的“视觉暂留”作用,只要每位显示间隔足够短,则可以造成“多位同时亮”的假象,达到同时显示的效果。LED不同位显示的时间间隔
5、(扫描间隔)应根据实际情况而定。显示位数多,将占大量的单片机时间,因此动态显示的实质是以牺牲单片机时间来换取I/O端口的减少。动态显示的优点优点是硬件电路简单,显示器越多,优势越明显。缺点缺点是显示亮度不如静态显示的亮度高。如果“扫描”速率较低,会出现闪烁现象。10开发板显示电路:11uchar code disptab1= 0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 x88,0 x83,0 xFF; / 0 1 2 3 4 5 6 7 8 9 A B 全黑 的段码表uchar code disptab2= 0 x
6、C0,0 xCF,0 xA4,0 x86,0 x8B,0 x92,0 x90,0 xC7,0 x80,0 x82,0 x81,0 x98,0 xFF; / 0 1 2 3 4 5 6 7 8 9 A B 全黑 的倒置数码管段码表12sbit ledbit4=P17; /LED数码管电源开关sbit ledbit3=P16;sbit ledbit2=P15;sbit ledbit1=P14;void disp() uchar i; uint time=20; ledbit1=0;/第1位LED数码管上电,动态扫描第1位 i=dispbuf0; /取显示值 P0=disptab2i;/取显示码值
7、(倒置数码管段码表) delayms(time); ledbit1=1; ledbit2=0;/第2位LED数码管上电,动态扫描第2位 i=dispbuf1; /取显示值 P0=disptab2i;/取显示码值 delayms(time); ledbit2=1; ledbit3=0; /第3位LED数码管上电,动态扫描第3位 i=dispbuf2; /取显示值 P0=disptab1i;/取显示码值 delayms(time); ledbit3=1; ledbit4=0; i=dispbuf3; P0=disptab1i; delayms(time); ledbit4=1;13二、键盘接口原理
8、二、键盘接口原理键盘具有向单片机输入数据、命令等功能,是人与单片机对话的主要手段。下面介绍键盘的工作原理和键盘的工作方式。2.1 键盘输入应解决的问题键盘输入应解决的问题1键盘的任务键盘的任务任务有三项:(1) 判别判别是否有键按下是否有键按下?若有,进入下一步工作。?若有,进入下一步工作。(2)识别识别哪一个键被按下哪一个键被按下,并求出相应的键值。,并求出相应的键值。(3)根据根据键值键值,找到,找到相应键值的处理程序入口相应键值的处理程序入口。142键盘输入的特点键盘输入的特点常见键盘:触摸式键盘、薄膜键盘和按键式键盘常见键盘:触摸式键盘、薄膜键盘和按键式键盘,最常常用的是用的是按键式键
9、盘按键式键盘。按键实质上就是一个开关。如图(图(a)所示,按键开关的两端分别连接在行线和列线上,通过键盘开关机械触点的断开、闭合,其行线电压输出波形如行线电压输出波形如图图(b)所示所示。抖动时间长短与开关的机械特性有关抖动时间长短与开关的机械特性有关,一般为510ms15如何消除按键的抖动如何消除按键的抖动按键去抖动的方法有两种两种:一种软件延时软件延时,本思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为
10、高电平,说明按键确实已经松开。采取本措施,可消除两个抖动期t1和t3的影响。另一种是采用专用的键盘采用专用的键盘/显示器接口芯片显示器接口芯片,这类芯片中都有自动去抖动的硬件电路自动去抖动的硬件电路。16键盘扫描举例 图a 4*4键盘 图b 4*3键盘17线反转法扫描1819/*键盘扫描子函数0 xbe,0 xbd,0 xbb,0 xb7,0 xde,0 xdd,0 xdb,0 xd7,0 xee,0 xed,0 xeb,0 xe7;该反转法键值码的排序决定了K0K11的顺序,如果按键对应显示的值,应在显示码中与之对应*/uchar keyscan() uchar scan1, scan2,
11、key, j; P2=0 xF0; scan1=P2; if(scan1&0 xF0)!=0 xF0) /判键是否按下 delayms(30); /延时30ms scan1=P2; if(scan1&0 xF0)!=0 xF0) /二次判键是否按下 P2=0 x0F; /反转 scan2=P2; key=scan1|scan2; /组合成键编码 do scan2=P2; disp(); /如无此语句,按住时将无显示 while(scan2&0 x0F)!=0 x0F);/等待按键松开 for(j=0;j=12;j+) if(key= keycodej) /查表得键值 return(j); el
12、se P2=0 xFF; return (0 xFF);202. 独立式键盘查询方式独立式键盘查询方式【例例1】采用查询方式对实现独立式键盘的键值读取。独立式键盘的接口电路如图图所示所示。21图图 独立式键盘的接口电路22由图图,当P1口某一位为0时,表明该位所接的按键被按下,然后在计算机屏幕上输出按下的按键的信息。例如,例如,3号键按下,则在在PC机显示屏上显示机显示屏上显示“key No. 3 down”。程序如下:#include#include/*因为用到printf( )函数,所以要包含stdio.h */Uart_Init();sbit P10=0 x90;/*定义P1口各位的位名
13、*/sbit P11=0 x91;sbit P12=0 x92;sbit P13=0 x93;sbit P14=0 x94;sbit P15=0 x95;sbit P16=0 x96;sbit P17=0 x97;main( ) Uart_Init( );while(1); /*无限循环,不断查询按键状态,键值判断和提示信息的显示*/2324if(P10=0)printf(key No.0 downn);/*如0号键按下,串行输出按下键信息*/if(P11=0)printf(key No.1 downn);/*如1号键按下,串行输出按下键信息*/if(P12=0)printf(key No.2
14、 downn);/*如2号键按下,串行输出按下键信息*/if(P13=0)printf(key No.3 downn);/*如3号键按下,串行输出按键信息*/if(P14=0)2425printf(key No.4 downn);/*如4号键按下,串行输出按键信息*/if(P15=0)printf(key No. 5 downn);/*如5号键按下,串行输出按键信息*/if(P16=0)printf(key No. 6 downn);/*如6号键按下,串行输出按键信息*/if(P17=0)printf(key No. 7 downn);/*如7号键按下,串行输出按键信息*/2526Uart_I
15、nit( ) /* 实验系统初始化函数,因要通过实验系统串行输出显示*/ SCON=0 x52; /* 设置串行口控制寄存器SCON */ TMOD=0 x20; /* 12MHz时钟时波特率为2400 */ TCON=0 x69; /* TCON */ TH1=0 xf3; /* TH1 */ 273. 行列式键盘查询方式行列式键盘查询方式【例例2】本例为2008年某省电子大赛D题“电能质量检测装置”某参赛者设计中的一部分。单片机外接行列式单片机外接行列式键盘,键盘,用于控制单片机向FPGA(现场可编程门阵列)发出指令启动AD对信号采样分析,并控制单片机向LCD传输数据以显示波形和参数。采用
16、查询方式采用查询方式对实现行列式键盘的键值读取。独立式44键盘的接口电路如下页图图。2728 28图图 行列式键盘的接口电路行列式键盘的接口电路29图图中中,每个按键行数按键行数与P1口高半字节口高半字节对应,列数与列数与P1口低半字节口低半字节对应,行列号结合即可确定键位行列号结合即可确定键位。首先查询判断是否有键按下:驱动P1口高半字节为全0,低半字节为全1,当读回P1口低半字节存在某位为0时,表明有键按下。延时去抖后,获取键位。延时去抖后,获取键位。先获取键位列号:先获取键位列号:按照之前的驱动方式对P1口驱动高半字节为全0,低半字节全1,读回P1口的低半字节值。然后获取行号:驱动P1口
17、低半字节为全0,高半字节为全1,读回P1口的低半字节值。得到键位值后,进入键位服务程序进入键位服务程序。2930头文件头文件key.h如下:如下:#ifndef KEY_H#include #include #define KEY_H#define KEY_PORT P1#define KV_FALSE 0Xff /*无键按下* /*宏定义键位值宏定义键位值* /#define KV_START 0 x11 /*“开始采样”键* /#define KV_END 0 x12 /*“结束采样”键* /#define KV_wave 0 x14 /*“显示波形”键*/#define KV_param
18、eter 0 x18 /*“显示基本参数”键*/3031#define KV_U_harmon 0 x21 /*“显示电压谐波分析”键*/#define KV_I_harmon 0 x22 /*“显示电流谐波分析”键* /#define KV_7 0 x24 /*未使用的按键,下同*/#define KV_8 0 x28#define KV_9 0 x41#define KV_10 0 x42#define KV_11 0 x44#define KV_12 0 x48#define KV_13 0 x81#define KV_14 0 x82#define KV_15 0 x84#define
19、 KV_16 0 x88uchar KeyScan(void);3132/*宏定义几种数据类型*/typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;#endif用于扫描键盘以得到键值的子程序如下:用于扫描键盘以得到键值的子程序如下:#include key.huchar KeyScan(void)uchar keyValue; /*检测是否有键按下*/ KEY_PORT = 0 x0F; if(KEY_PORT | 0 xF0) = 0) return KV_FALSE; /*延时
20、去抖*/3233DelayMs(5); /*检测是否仍有键按下并获取P1口键位列号*/ KEY_PORT = 0 x0F; keyValue = (KEY_PORT | 0 xF0); if(keyValue=0) return KV_FALSE; /*补充P1口键位行号*/KEY_PORT= 0 xF0; keyValue |= (KEY_PORT | 0 x0F); /*等待按键释放*/ do KEY_PORT = 0 x0F;if(KEY_PORT | 0 xF0) != 0) continue; /*仍然被按下*/ /*判断是否真的释放*/DelayMs(5);if(KEY_PORT | 0 xF0) != 0) continue; /*key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 框架结构设计流程
- 班主任的家庭教育指导艺术
- 小班安全教育主题班会
- 紫色小清新毕业论文答辩模板
- 埃及线上汉语课堂管理研究
- 工程备件管理
- 美术新闻采访教程课件
- 小学美术立体绘本制作教学课件
- 回收废电器通货合同协议
- led电子屏合同协议
- 2025年重庆市中考物理模拟试卷(一)(含解析)
- 《服务营销双主动》课件
- 演出经纪人员资格备考资料2025
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- GB/T 23858-2009检查井盖
- 分 包 工 程 量 确 认 单
- 产后抑郁的护理共45张课件
- T∕CSRME 016-2021 城市地下空间网络化拓建工程技术规范
- 员工个人信息保护合规要点清单
- 山东省危废处理名录
- 班组安全安全考核表
评论
0/150
提交评论