《实验四 数码管显示》由会员分享,可在线阅读,更多相关《实验四 数码管显示(9页珍藏版)》请在金锄头文库上搜索。
1、实验四 数码管显示 1. 驱动原理数码管由 7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理. 基本的半导体数码管是由 7个条状的发光二极管(LED)按图 1所示排列而成的,可实现数字09及少量字符的显示。另外为了显示小数点,增加了 1个点状的发光二极管,因此数码管就由 8个 LED组成,我们分别把这些发光二极管命名为 a,b,c,d,e,f,g,dp,排列顺序如下图 1。图 1: 数码管引脚图及外形图2. 数码管的结构及分类特别提示:注意段码和位码的概念;会找出不同接法的段码分析方法。数码管按各发光二
2、极管电极的连接方式分为共阳数码管和共阴数码管两种共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极 COM接到地线 GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。共阴数码管内部连接如图 3所示。 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极 COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阳数码管内部连接如图 2所示。 图 2:共阳数码管内部连接图 图
3、 3:共阴数码管内部连接图二、多位数码管的驱动方法静态法静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O端口进行驱动,或者使用如 BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O端口多,如驱动 5个数码管静态显示则需要 5840 根 I/O端口来驱动,要知道一个 89S51单片机可用的 I/O端口才 32个呢:) ,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。送数后可保持。动态扫描法动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8个
4、显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极 COM增加位选通控制电路,位选通由各自独立的 I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通 COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的 COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快
5、,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O端口,而且功耗更低。注意:需要不停送数。实验任务一:静态扫描显示在数码管上循环显示 0000至 9999。打开锁存器 74HC573锁存端,使数码管和 P0口直通,向 P0口送段码,打开数码管位选。注意:若 P0口只需要用数码管功能,则锁存器 573可以为直通方式若 P0口需要数码管和其它器件复用,则需要用上 573的锁存功能(1)硬件的连接图(2)实验目的: 学会对数码管静态显示操作(3)实验步骤 分析设计内容,设计软硬件设计方法 编写 C 语言代码 编译代码 下载可执行文件 硬件调试
6、观察现象(4)程序源码:/*头文件*/#includeregx52.h #define uchar unsigned char#define uint unsigned intuchar code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /09共阴显示子码sbit LOCK=P10; /定义锁存端sbit D1=P11; /数码管位选 第一位sbit D2=P12; /数码管位选 第二位sbit D3=P13; /数码管位选 第三位sbit D4=P14; /数码管位选 第四位/*毫秒级延时函数 */void de
7、layms(uint ms)uchar b;while(ms-)for(b=0;b7654-6543-5432-4321-3210-2108 如此循环。实验任务三:数码管动态扫描使用进阶09999 自加器,满 9999 清 0 重新计数。(1)硬件连接图如上(2)实验目的:学会对数码管的更进一步的控制(3)程序设计内容本实验使用了定时器 0 中断完成 4 位数码管的显示。注意:若 P0 口只需要用数码管功能,则锁存器 573 可以为直通方式;若 P0 口需要数码管和其它器件复用,则需要用上 573 的锁存功能。(4)实验步骤 分析设计内容,设计软硬件设计方法 编写 C 语言代码 编译代码 下载
8、可执行文件 硬件调试 观察现象(5)程序源码:/*头文件*/#includeregx52.h #define uchar unsigned char#define uint unsigned intuchar code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /09 共阴显示子码uchar code dispbit=0xfd,0xfb,0xf7,0xef;/数码管位选码,低电平为选通,分别是P11,P12,P13,P14uchar dispbuf= ;uint num=0; /计数变量uchar cont=0; /
9、显示偏移量uchar i=0; /计时变量sbit LOCK=P10; /定义锁存端/*毫秒级延时函数*/void delayms(uint ms)uchar b;while(ms-)for(b=0;b125;b+);/*主函数*/void main()LOCK=0; /数码管直通IE=0X82; /EA=1 ET0=1 打开总中断 打开定时器 0 中断TMOD=0X01; /T0 方式 2 8 位定时器自动重装TL0=(65536-5000)%256; /定时 5MSTH0=(65536-5000)/256;TR0=1; /启动定时器 T0while(1) /大循环num+; /计数变量自增
10、if(num=10000) /满 10000 清 0(数码管最大显示 9999)num=0; dispbuf3=num/1000%10; /分离千位,放缓冲区 dispbufdispbuf2=num/100%10;/分离百位dispbuf1=num/10%10; /分离十位dispbuf0=num/1%10; /分离个位delayms(50); /延时 50MS(时间自定)/*定时器 0 的中断服务程序*/利用中断服务函数,完成 4 位数码管的显示void timetodisplay() interrupt 1/定时器 T0TL0=(65536-5000)%256; /定时 5MSTH0=(65536-5000)/256;P0=dispcodedispbufcont;/根据显示偏移量 cont,将数组 dispbuf中的数取出来,/作为取数组 dispcode的偏移量,再根据取出来的数,/将 dispcode里面的段码取出来送给 P0P1=dispbitcont&0xff; /根据偏移量cont+; /显示偏移量自增(显示下一位)if(cont=4) /满 4 清 0(四位数码管)cont=0; (6)现象09999 每 50 毫秒自加一次。加满清 0,如此循环(7)扩展任务09999 自加自减。加满 9999 自减为 0,为 0 再自加。