数码管概括
数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。
数码管的分类
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
在CT107D中,我们所用到的数码管就是共阳极数码管
数码管的相关原理图
锁存器
138译码器
通过原理图我们可以看出来 我们还需要调用译码器和锁存器来实现数码管的显示,通过控制译码器A口的值来让Y6口输出,进而让我们的锁存器U8使能,再通过段选出哪一位或多位显示,再通过U7进行位选输出相应数值。
下面就是一段简单的数码管静态显示
#include <STC15F2K60S2.H>
unsigned char code LedChar[] = {
0x90,0x80,0xf8,0x82,0x92,0x99,0xB0,0xA4,0xF9,0xC0
};//数码管的真值表
void main()
{
unsigned char cnt = 0; //记录T0中断次数
unsigned char sec = 0; //记录秒数
P2 = 0xD0; //及P27=1;P26=1;P25=0;选中Y6输出
P0 = 0x01; //使当前数码管不显示
TMOD = 0x01; //设置定时器T0工作模式为1
TH0 = 0xB8; //给T0赋值为0xb800,即定时20ms
TL0 = 0x00;
TR0 = 1; //启动T0
while(1)
{
if(TF0 == 1) //判断T0的值是否溢出
{
P2 = 0xE0; //切换数码管的选中位置
TF0 = 0; //溢出清0处理
TH0 = 0xB8; //重新赋初值
TL0 = 0x00;
cnt++; //计数+1
if(cnt >= 25) //判断溢出是否达到25次,即0.5s
{
cnt = 0;//达到25s后清零
P0 = LedChar[sec];//显示当前秒数
sec++;//秒数自加
if(sec >= 10)
{
sec = 0;
}
}
}
}
}