7段数码管显示电路

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.4 显示模块
显示模块显示模块
显示模块
4.4.1 7段数码管的结构与工作原理
段数码管的结构与工作原理段数码管的结构与工作原理
段数码管的结构与工作原理
7
段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成
数字显示,另外一个圆形的发光二极管显示小数点。 当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能
显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,
使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极
数码管,如图4.9所示。


















4.4.2 7
段数码管驱动方法
段数码管驱动方法段数码管驱动方法
段数码管驱动方法 发光二极管(LED是一种由磷化镓(GaP)等半导体材料制成的,能直接将电能转变
成光能的发光显示器件。当其内部有一一电流通过时,它就会发光。
7段数码管每段的驱动电流和其他单个LED发光二极管一样,一般为5~10mA;正
向电压随发光材料不同表现为1.8~2.5V不等。
7段数码管的显示方法可分为静态显示与动态显示,下面分别介绍。
(1) 静太显示
所谓静态显示,就是当显示某一字符时,相应段的发光二极管恒定地寻能可截止。这
种显示方法为每一们都需要有一个8位输出口控制。对于51单片机,可以在并行口上扩展
多片锁存74LS573作为静态显示器接口。
静态显示器的优点是显示稳定,在发光二极管导通电注一定的情况下显示器的亮度
高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程
序,这样大大节省了CPU的时间,提高了CPU的工作效率;缺点是位数较多时,所需I/O
口太多,硬件开销太大,因此常采用另外一种显示方式——动态显示。
共阴极
7段数码管内部字段LED和引脚分布
共阳极
图4.9 7段数码管结构图 (2)动态显示
所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而
言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮),但利用人眼
的视觉暂留效应和发光二极管熄 灭时的余辉效应,看到的却是多个字符“同时”显示。显
示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时
间参烽,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极
电位只需一个8位I/O口(称为扫描口或字位口),控制各

位LED显示器所显示的字形也需
要一个8位口(称为数据口或字形口)。
动态显示器的优点是节省硬件资源,成本较低,但在控制系统运行过程中,要保证显
示器正常显示,CPU必须每隔一段时间执行一次显示子程序,这占用了CPU的大量时间,
降低了CPU工作效率,同时显示亮度较静态显示器低。
综合以上考虑,由于温度显示为精确到小数点后两位,故只需4个数码管,又考虑到CPU
工作效率与电源效率,本毕业设计采用静态显示。为共阳极显示。 4.4.3
硬件编码
硬件编码硬件编码
硬件编码

74LS47是一款BCD码转揣为7段输出的集成电路芯片,利用它可以直接驱动共阳
极的7段数码管。它的引脚分部和真值表分别下图。










74LS47管脚定义 7段数码管静态显示电路原理图之锁存电路
7段数码管静态显示电跩 原理图之锁存译码电路
















上述设计中,单片机工作时钟由18.432MHZ的晶振产生;电路中共有4位7段共阳
极数码管,用于显示数据;
74HC573是8位锁存器,用于锁存各个数码管的显示数据;74HC138是3——8线译
码器,它和6反相器74HC04一起实现地各个数码管的锁存器控制地址的译码。 4.4.4
软件设计
软件设计软件设计
软件设计 上述设对于共阳极数码管,控制端置0使数码管点亮,控制端置1使数码管不亮。根
据显示数字0~9需要点亮哪几段发光二极管,可以制定出如下表所示的编码表。
字型
dp g f e d c b a
编码
共阴
编码
共阳
0 0 0 1 1 1 1 1 1 3F C0
1 0 0 0 0 1 1 0 0 0C F3
2 0 1 1 1 0 1 1 0 76 89
3 0 1 0 1 1 1 1 0 5E A1
4 0 1 0 0 1 1 0 1 4D B2
5 0 1 0 1 1 0 1 1 5B A4
6 0 1 1 1 1 0 1 1 7B 84
7 0 0 0 0 1 1 1 0 0E F1
8 0 1 1 1 1 1 1 1 7F 80
9 0 1 1 1 1 1 1 1 5F A0
A 0 1 0 0 1 1 1 1 6F 90
B 0 1 1 1 1 0 0 1 79 86
C 0 0 1 1 0 0 1 1 33 CC
D 0 1 1 1 1 1 0 0 7C 83
E 0 1 1 1 0 0 1 1 73 8C
F 0 1 1 0 0 0 1 1 63 9C

7段数码管静态显示电路原理图之CPU电路 MCS-51
单片软件实现过程如下:

/***************************************************
7段数码管静态显示程序
***************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

/* 4个7段数码管锁存器地址 */
#define LED1ADDR 0x8000
#define LED2ADDR 0x8100
#define LED3ADDR 0x8200
#define LED4ADDR 0x8300

// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
/* 0-9 a-f 的7段数码管显示编码 */
unsigned char
ledcode[16]

={0xC0,0xF3,0x89,0xA1,0xB2,0xA4,0x84,0xF1,0x80,0xA0,0x90,0x86,0xCC,0x83,0
x8C,0x9C};
/* 存放要显示的数字值 */
unsigned char val[4];//


/* 写锁存器的子程序 */
void wraddr(unsigned int addr,unsigned char d)
{ unsigned char xdata *pa;

pa=(unsigned char xdata *)addr;
*pa=d;
}
/* 显示子程序 */
void display(void)
{ unsigned int addr[4]={LED1ADDR,LED2ADDR,LED3ADDR,LED4ADDR};
int i;

for(i=0;i<4;i++) { if((val[i]>=0)&&(val[i]<=15))
{ wraddr(addr[i],ledcode[val[i]]);
}
else
{ wraddr(addr[i],0xff);
}
}
}
/* 初始化子程序 */
void init(void)
{ wraddr(LED1ADDR,0XFF);
wraddr(LED2ADDR,0XFF);
wraddr(LED3ADDR,0XFF);
wraddr(LED4ADDR,0XFF);
//输入要显示的数值
val[0]=1;
val[1]=2;
val[2]=3;
val[3]=4;
}
/* 主程序入口 */
int main(void)
{ init();

while(1)
{ display();
}
}






































相关文档
最新文档