实验三数码管动态显示实验目的1、掌握数码管动态显示原理;2、掌握数码管动态扫描的显示原理与锁存器的使用。实验设备与文件PC机、stc89c52实验箱、USB线、stc89c52实验板原理图。k1858825858986883886911674HC57315AWE8.8.8.8.8.8.8.8.R文RL318808B35809868838869K74HC573111GNE数码管锁存器模块8位共阴极数码管图1原理图
1 实验三 数码管动态显示 一、 实验目的 1、掌握数码管动态显示原理; 2、掌握数码管动态扫描的显示原理与锁存器的使用。 二、 实验设备与文件 PC 机、stc89c52 实验箱、USB 线、stc89c52 实验板原理图。 图 1 原理图
三、实验原理3.1LED数码管显示原理LED数码管:“8”字型,7段(不包括小数点)或8段(包括小数点),每段对应一个发光二极管,共阳极和共阴极两种,如图2。共阳极数码管的阳极连接在一起,接+5V;共阴极数码管阴极连在一起,接地。fGNDabt体109876aoaoA体abobo体cocO体Hdodo体eoeo体fofo体dgog0dp梦dpodpo本34512d GND edp.(a)共阴极(b)共阳极(c)外形及引脚图28段LED数码管结构及外形对于共阴极数码管,当某发光二极管阳极为高电平时,发光二极管点亮,相应段被显示。同样,共阳极数码管阳极连在一起,公共阳极接+5V,当某个发光二极管阴极接低电平时,该发光二极管被点亮,相应段被显示。为使LED数码管显示不同字符,要把某些段点亮,就要为数码管各段提供一字节的二进制码,即字型码(也称段码),如图3所示:显示共阴极显示共阴极共阳极共阳极字符字型码字型码字符字型码字型码0c3FHCOH39HC6H106HF9Hd5EHA1H25BHA4HE79H86H34FHBOHF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8H6EH91Hy00H7FH80H76H89H96FH90HL38HC7H“灭”A77H88HOOHFFHb7CH83H.....图3段码表2
2 三、 实验原理 3.1 LED 数码管显示原理 LED 数码管:“8”字型,7 段(不包括小数点)或 8 段(包括小数点), 每段对应一个发光二极管,共阳极和共阴极两种,如图 2。共阳极数码管的阳极 连接在一起,接+5V;共阴极数码管阴极连在一起,接地。 图 2 8 段 LED 数码管结构及外形 对于共阴极数码管,当某发光二极管阳极为高电平时,发光二极管点亮,相 应段被显示。同样,共阳极数码管阳极连在一起,公共阳极接+5V,当某个发光 二极管阴极接低电平时,该发光二极管被点亮,相应段被显示。 为使 LED 数码管显示不同字符,要把某些段点亮,就要为数码管各段提供 一字节的二进制码,即字型码(也称段码),如图 3 所示: 图 3 段码表
3.2数码管动态显示8段码线8位I/O(1)dp~dpa~dpdp8.88.86位选线4位I/O(2)图44位LED数码管动态显示示意图动态显示就是单片机向段码线输出欲显示字符的段码。每一时刻,只有1位位选线有效,即选中某一位显示,其他各位位选线都无效。每隔一定时间逐位轮流点亮各数码管(扫描方式),由于数码管余辉和人眼的“视觉暂留”作用,只要控制好每位数码管显示时间和间隔,则可造成“多位同时亮”的假象,达到同时显示效果。各位数码管轮流点亮的时间间隔(扫描间隔)应根据实际情况定。发光二极管从导通到发光有一定的延时,如果点亮时间太短,发光太弱,人眼无法看清;时间太长,产生闪烁现象,且此时间越长,占用单片机时间也越多。另外,显示位数增多,也将占用单片机大量时间,因此动态显示实质是以执行程序时间来换取I/O端口减少。3.374HC573数据锁存使用OELEDQHHLHHL-VLLXQQXHX1图 5 74HC573的真值表3
3 3.2 数码管动态显示 图 4 4 位 LED 数码管动态显示示意图 动态显示就是单片机向段码线输出欲显示字符的段码。每一时刻,只有 1 位 位选线有效,即选中某一位显示,其他各位位选线都无效。每隔一定时间逐位轮 流点亮各数码管(扫描方式),由于数码管余辉和人眼的“视觉暂留”作用,只 要控制好每位数码管显示时间和间隔,则可造成“多位同时亮”的假象,达到同 时显示效果。 各位数码管轮流点亮的时间间隔(扫描间隔)应根据实际情况定。发光二极 管从导通到发光有一定的延时,如果点亮时间太短,发光太弱,人眼无法看清; 时间太长,产生闪烁现象,且此时间越长,占用单片机时间也越多。另外,显示 位数增多,也将占用单片机大量时间,因此动态显示实质是以执行程序时间来换 取 I/O 端口减少。 3.3 74HC573 数据锁存使用 图 5 74HC573 的真值表
由图5这个真值表可以看出:OE为高时,输出始终为高阻态,此时芯片处于不可控制状态,所以在一般应用中,将OE接低电平。LE则是输出端状态改变端,当LE为低电平时,输出端Q始终保持上一次锁存的信号(从D端输入):当LE为高电平时,Q紧随D的状态变化而实时变化。即当锁存使能端LE为高时,74HC573的锁存对于数据是透明的(输出同步);当锁存使能端LE为低时,数据会被锁存。在本实验中74HC573的应用实现了PO的分时复用。在不同时刻,PO输出数码管的段选数据与位选数据。四、实验内容及步骤4.1内容与要求1、利用keil4软件搭建好实验环境;2、依照实验参考程序5.1、5.2,实现在数码管上显示自已学号的后六位。4
4 由图 5 这个真值表可以看出:OE 为高时,输出始终为高阻态,此时芯片处 于不可控制状态,所以在一般应用中,将 OE 接低电平。 LE 则是输出端状态改变端,当 LE 为低电平时,输出端 Q 始终保持上一次 锁存的信号(从 D 端输入);当 LE 为高电平时,Q 紧随 D 的状态变化而实时 变化。即当锁存使能端 LE 为高时,74HC573 的锁存对于数据是透明的(输出同 步);当锁存使能端 LE 为低时,数据会被锁存。 在本实验中 74HC573 的应用实现了 P0 的分时复用。在不同时刻,P0 输出数 码管的段选数据与位选数据。 四、 实验内容及步骤 4.1 内容与要求 1、 利用 keil4 软件搭建好实验环境; 2、 依照实验参考程序 5.1、5.2,实现在数码管上显示自己学号的后六位
五、实验参考程序数码管动态显示12345678#include<reg52.h>#defineucharunsignedchar//宏定义//宏定义#define uint unsigned int#define DELAY TIME 2//将常量定义为宏,方便修改代码sbit we=P2'7;//数码管位选锁存器接口sbit du = P26://数码管段选锁存器接口//数码管段选表uchar code leddata[J-f1"0"Ox3F,//"1"0x06,1/"2"0x5B,//"3"0x4F,11"4"0x66,11"5"0x6D,11"6"0x7D,//"7"0x07,1/"8"0x7F,//"g0x6F,II"A"0x77,/I"B"0x7C,1I"c"0x39,/I"D"0x5E,1I"E"0x79,1I"F"0x71,1/"H"0x76,//"L"0x38,//"n"0x37,//"u"0x3E,//"p"0x73,1/"0"0x5C,1/"~*0x40,//熄灭0x00,0x00//自定义1;//毫秒级延时函数void delay(uint z)uint x,y;5
5 五、 实验参考程序 数码管动态显示 12345678 #include <reg52.h> #define uchar unsigned char //宏定义 #define uint unsigned int //宏定义 #define DELAY_TIME 2 //将常量定义为宏,方便修改代码 sbit we = P2^7; //数码管位选锁存器接口 sbit du = P2^6; //数码管段选锁存器接口 //数码管段选表 uchar code leddata[]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x77, //"A" 0x7C, //"B" 0x39, //"C" 0x5E, //"D" 0x79, //"E" 0x71, //"F" 0x76, //"H" 0x38, //"L" 0x37, //"n" 0x3E, //"u" 0x73, //"P" 0x5C, //"o" 0x40, //"-" 0x00, //熄灭 0x00 //自定义 }; //毫秒级延时函数 void delay(uint z) { uint x,y;