资源描述:
《动态数码管显示与键盘显》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第14章动态数码管显示与键盘识别CollegeofCommunicationEngineering,JilinUniversity本章提要14.1数码管显示14.1.1七段数码管原理与结构14.1.2七段数码管编码14.1.3数码管动态扫描14.1.4数码管显示硬件设计14.1.5数码管显示软件设计14.1.6LED显示应用实例14.2键盘识别14.2.1开关与键盘14.2.2键盘的消抖问题14.2.3键盘的识别功能14.2.4键盘的硬件设计14.2.5键盘扫描法软件设计14.2.6键盘的扫描策略14.2.7键盘识别应用实例College
2、ofCommunicationEngineering,JilinUniversity本章提要14.1数码管显示14.1.1七段数码管原理与结构14.1.2七段数码管编码14.1.3数码管动态扫描14.1.4数码管显示硬件设计14.1.5数码管显示软件设计14.1.6LED显示应用实例14.2键盘识别14.2.1开关与键盘14.2.2键盘的消抖问题14.2.3键盘的识别功能14.2.4键盘的硬件设计14.2.5键盘扫描法软件设计14.2.6键盘的扫描策略14.2.7键盘识别应用实例CollegeofCommunicationEngineer
3、ing,JilinUniversity14.1数码管显示14.1.1七段数码管原理与结构把7个细长的LED排成字型8个LED,使用一个公用端共阳型:所有LED的阳极连在一起共阴型:所有LED的阴极连在一起单独控制每个段的亮灭,可以表示出数字0~9使用多个数码管表示数字应用非常广泛多种颜色,多种尺寸CollegeofCommunicationEngineering,JilinUniversity14.1数码管显示14.1.2七段数码管编码共阴型:1–表示点亮0–表示熄灭共阳型:取反Ngfedcba01111113F111062111115B
4、3111114F41111665111116D61111117D711107811111117F91111116FbcdefgaDPCollegeofCommunicationEngineering,JilinUniversity14.1数码管显示14.1.3数码管动态扫描通过段控制信息确定数码管显示的数字(多位复用)通过位控制信号使得任意时刻只有一位数码管处于显示状态利用视觉暂留现象,定时更改位控制信息和段控制信息,得到稳定的数字显示多个LED同时点亮的电流都经过公共端,MCU的IO无法承受,必须使用三极管为了减小MCU的灌入电流,段控
5、制端都连接了输出驱动器74LS07段控制位控制注:共阳极,所有引脚低电平有效CollegeofCommunicationEngineering,JilinUniversity14.1数码管显示14.1.4数码管显示硬件设计121110987654321C4afC3C2bC1gcdpde121110987654321T3P0P5T2T1P1T0P6P2P7P3P4实验中可将段控制连接到P口,将位控制连接到T口,连线关系如下:实验板上有4位数码管,共阳极结构,引出12根连线,8根段控制,4根位控制,对应关系如下:CollegeofCommun
6、icationEngineering,JilinUniversity14.1数码管显示14.1.5数码管显示软件设计LED动态显示:按人眼的反应,刷新频率得大于80Hz,即所有LED在12ms内必须刷新一次。现有4组LED,即每段显示3ms。这个3ms可以用软件延迟实现,但为提高CPU效率,一般使用定时器。显示一位数字:constunsignedcharDisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x77,~0x7c,~0x39
7、,~0x5e,~0x79,~0x71};//0-9ABCDEFDDRP
8、=0xFF;DDRT
9、=0xFF;//点亮一个数码管,显示2PTP=DisplayDecode[2];PTT=0xFE;CollegeofCommunicationEngineering,JilinUniversity14.1数码管显示14.1.5数码管显示软件设计示例程序//unsignedcharshowdata[4];voidShow(){unsignedcharDisplayNumber;PTT=0x0f;for(DisplayNumber=0;Display
10、Number<4;DisplayNumber++){PTP=DisplayDecode[showdata[DisplayNumber]];if(DisplayNumber==2)PTP&=0x