资源描述:
《实验四 数码管显示.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四数码管显示1.驱动原理数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理.基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9"及少量字符的显示。另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为"a,b,c,d,e,f,g,dp",排列顺序如下图1。图1:数码管引脚图及外形图2.数码管的结构及分类特别提示:注意段码和位码的概念;会找
2、出不同接法的段码分析方法。数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。共阴数码管内部连接如图3所示。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极
3、为高电平时,相应字段就不亮。共阳数码管内部连接如图2所示。 图2:共阳数码管内部连接图 图3:共阴数码管内部连接图二、多位数码管的驱动方法A.静态法静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂
4、性。送数后可保持。B.动态扫描法动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个
5、数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。注意:需要不停送数。实验任务一:静态扫描显示在数码管上循环显示0000至9999。打开锁存器74HC573锁存端,使数码管和P0口直通,向P0口送段码,打开数码管位选。注意:若P0口只需要用数码管功能,则锁存器573可以为直通方式
6、若P0口需要数码管和其它器件复用,则需要用上573的锁存功能(1)硬件的连接图(2)实验目的:l学会对数码管静态显示操作(3)实验步骤l分析设计内容,设计软硬件设计方法l编写C语言代码l编译代码l下载可执行文件l硬件调试l观察现象(4)程序源码:/***********************头文件*********************/#include"regx52.h"#defineucharunsignedchar#defineuintunsignedintucharcodedispcode[]={0x3f,0x06,0x5b
7、,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9共阴显示子码sbitLOCK=P1^0;//定义锁存端sbitD1=P1^1;//数码管位选第一位sbitD2=P1^2;//数码管位选第二位sbitD3=P1^3;//数码管位选第三位sbitD4=P1^4;//数码管位选第四位/*******************毫秒级延时函数*****************/voiddelayms(uintms){ucharb;while(ms--){for(b=0;b<125;b++);}}/********
8、***************主函数*****************/voidmain(){uinti;LOCK=1;//高电平通,低电平锁//此程序因为不复用端口,所以让它全通D1=0;//依次打开全部