本文采用共阴极8段数码管,图1是8段数码管的显示原理,图2是编码方式。
图1 8段数码管显示原理
编码方式:
图2 8段数码管编码方式
采用图2的编码方式对0~f进行编码所得的数码码表见表2(没有点)、表3(带点)。
下图是8位锁存器(74HC573),其中1D~8D为输入端(直接领与单片机的IO连接),1Q~8Q是输出端,与数码管的段选或者位选连接。
图3 74HC573图4 74HC573的功能表
图4是8位锁存器(74HC573)的功能表,即:
LE=1,输出端Q的数值随输入端D数据的变化而变化,从而将输入端D的数据锁存起来。
LE=0,输出端Q的数据保持不变,输入端D的数据变化不会改变输出端Q的数据。
锁存器的另一功能就是将输入端D和输出端Q隔离开来。从而避免数码管工作时的大电流冲击微控制器(单片机)。如果不采用锁存器,数码管的位选需要加三极管来驱动数码管,也是为了防止数码管工作的大电流对微处理器的冲击甚至破坏。
图5是8位8段数码管显示模块的框图,主要包括微处理器、锁存器和数码管。当显示一位数码管时,单片机将位选信息和段选信息分别锁存到锁存器1和锁存器2中,即可实现任意一位数码管的显示,这种显示方式称为静态显示。当显示多位(≥2)的数值信息时就要用到数码管的动态显示了,此时的显示过程中,分时轮流对多位数码管的各位进行位选和段选操作,即分时轮流对锁存器1和锁存器2进行写操作。利用二极管的余晖和人眼时间暂留机制,使人的感觉多位数码管的各位同时都在显示。
图5 数码管显示模块结构框图
图6和图7分别是数码管锁存器和数码管的接口电路原理图。其中D0-D7是来自单片机的位选信息和段选信息,WELA为锁存器(位选)使能信号,高电平有效。DULA位锁存器(段选)使能信号,高电平有效。锁存器1的Q0-Q7接数码管的位选,低电平有效。锁存器2的Q0-Q7接数码管的段选,高电平有效。
图6 锁存器1(位选)和锁存器2(段选)的接口电路图7 8位共阴极数码管的接口电路
第二位显示5为例。
#include <reg52.h>
//数码管
//位选使能信号
sbit wei_enable = P2^7; //与锁存器配合使用
//段选使能信号
sbit duan_enable = P2^6; //与锁存器配合使用
unsigned char dat_wei[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //从做到右
//个位→0x7f;十位→0xbf;百位→0xdf;千位→0xef;万位→0xf7;十万位→0xfb;百万位→0xfd;千万位→0xfe;
unsigned char dat_duan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-f
//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;0x40→-;0x00→熄灭
void main()
{
wei_enable = 0;
duan_enable = 0;
//第2位显示5
//位选
P0 = 0xbf;
wei_enable = 1;
wei_enable = 0;
//段选
P0 = 0x6d;
duan_enable = 1;
duan_enable = 0;
while(1);
}
<< · Back Index ·>>
本文大約2367字,閱讀約14分鐘昨天寫瞭關於商超裡的品牌餐飲店如何通過7次效應展示自傢的餐廳。今天我們接著聊聊,街邊的餐飲...
九月份了,最近我发现不少同学是刚刚开始备考,也有的同学一直埋头学习,不知道自己的目标院校已经出简章了,甚至考试科目变 ...