1、第十章 数码管的显示与键盘识别n 10.1 数码管的显示10.1.1 7段数码管原理与结构10.1.2 7段数码管编码10.1.3 数码管动态扫描10.1.4 数码管显示硬件设计10.1.5 数码管显示软件设计n 10.2 键盘识别10.2.1 开关与键盘10.2.2 键盘的消抖问题10.2.3 键盘的识别功能10.2.4 键盘的硬件设计10.2.5 键盘扫描法软件设计10.2.6 键盘的扫描策略Page 1Page 2第十章数码管的显示与键盘识别 数码管的显示10.1.1 7 ( 8)段数码管原理与结构n 把 7个细长的 LED排成 日 字型,还有一位控制小数点。n 8个 LED,使用一个公
2、用端,共阳型:所有 LED的阳极连在一起,共阴型:所有 LED的阴极连在一起n 单独控制每个段的亮灭,可以表示出数字 0 9n 使用多个数码管表示数字n 应用非常广泛n 多种颜色,多种尺寸 使用单个数码管时公用端接入电源或地,用微控制器的 IO控制每一个段 LED的亮灭。 多位数码管表示一个多位数时,每个数码管仅能表示一位,对每位都要进行编码转换 多个数码管可以使用动态扫描的方法节约 IO端口。第十章数码管的显示与键盘识别 数码管的使用Page 310.1.2 7( 8)段数码管编码Page 4第十章数码管的显示与键盘识别 数码管的显示10.1.2 7( 8)段数码管编码bcdefgaN g
3、f e d c b a0 1 1 1 1 1 1 3F1 1 1 062 1 1 1 1 1 5B3 1 1 1 1 1 4F4 1 1 1 1 665 1 1 1 1 1 6D6 1 1 1 1 1 1 7D7 1 1 1 078 1 1 1 1 1 1 1 7F9 1 1 1 1 1 1 6F共阴型: 1 表示点亮0 表示熄灭共阳型:取反DPPage 5第十章数码管的显示与键盘识别 数码管的显示10.1.3 数码管动态扫描n 通过段控制信息确定数码管显示的数字(多位复用)n 通过位控制信号使得任意时刻只有一位数码管处于显示状态n 利用视觉暂留现象,定时更改位控制信息和段控制信息,得到稳定的
4、数字显示n 多个 LED同时点亮的电流都经过公共端, MCU的 IO无法承受,必须使用三极管n 为了减小 MCU的灌入电流,段控制端都连接了输出驱动器 74LS07(六高压输出缓冲器 /驱动器)段控制位控制注:所有引脚都是低电平有效Page 6第十章数码管的显示与键盘识别 数码管的显示10.1.4 数码管显示硬件设计n 实验板上有 4位数码管, 共阳极 结构,引出 12根连线, 8根段控制, 4根位控制,对应关系如下:n 实验中可将段控制连接到 P口,将位控制连接到 T口,连线关系如下:12 11 10 9 8 7 6 5 4 3 2 1C4 a f C3 C2 b C1 g c dp d e
5、12 11 10 9 8 7 6 5 4 3 2 1T3 P0 P5 T2 T1 P1 T0 P6 P2 P7 P3 P4Page 7第十章数码管的显示与键盘识别 数码管的显示10.1.4 数码管显示软件设计n 显示 一位 数字:const unsigned char DisplayDecode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /0-9和 ABCDEF DDRP|=0XFF;DDRT|=0XFF;/点亮一个数码管,显示 2PTP=DisplayDecode2;PTT
6、=0xfe;n LED动态显示时,按人眼的反应,刷新频率得大于 80Hz,即所有 LED在12ms内必须刷新一次。现有 4组 LED,即每段显示 3ms。这个 3ms可以用软件延迟实现,但为提高 CPU效率,一般使用定时器。PTP(寄存器名) : P、 T、 S、 M、 P、 H、 J命名相似。PORTA(寄存器名) : A、 B、 E、 K命名 类 似。Page 8第十章数码管的显示与键盘识别 数码管的显示n 示例程序 /unsigned char showdata4; void Show()unsigned char DisplayNumber;PTT=0x0f; for(DisplayN
7、umber=0;DisplayNumber4;DisplayNumber+) PTP=DisplayDecodeshowdataDisplayNumber;if (DisplayNumber=2) PTPswitch(DisplayNumber) case 0:PTT=0xfe; break;case 1:PTT=0xfd; break;case 2:PTT=0xfb; break;default:PTT=0xf7; break; delay(1);Page 9第十章数码管的显示与键盘识别 数码管的显示n 示例程序 /unsigned char showdata4; void delay(un
8、signed int countert) /3ms unsigned int i,j;for(i=0;icountert;i+) for(j=0;j4000;) j+;123/1晶振 16M,总线时钟 8M,延时为:4000*( 1+2+3) /(8*106)s=3msLED显示应用实例实验 3任务: (1) 在 4个数码管上 分时 显示自己的班级(如 C05)、学号(如 H23)和目标要达到的考试成绩(如 98.5,必须 要带小数点 )。(2) 在 4个数码管上实现 “F”字符跑马灯。显示速度通过改变系统总线时钟来实现。(注意 F字符的显示是否出现问题)Page 10第十章数码管的显示与键盘识别 实验 3