静态数码管
硬件连接
图中为共阳极数码管,数码管的8个段就是8个LED,LED的阳极接在一起,接高电平。当某一段的阴极接低电平时,该段就会点亮。
软件设计
把0~F的段码放入数组中,依次显示0~F。
unsigned char DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/***************************************************************
* 函 数 名 : static_dig
* 函数功能 : 静态数码管依次显示
* 输 入 : 无
* 输 出 : 无
***************************************************************/
void static_dig(void)
{
unsigned char i = 0;
for (i=0; i<16; i++)
{
DIG = ~DIG_CODE[i];
delay1s();
}
}
动态数码管
硬件连接
数码管的位选段接38译码器的输出。段选端接74573跟随器的输出。
在某一时刻,只能某一个数码管被点亮。可以把各个数码管点亮的间隔缩短,利用人眼的余辉效应。看起来像是,各个数码管同时点亮,显示不同的码值。
软件设计
unsigned char DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/*********************************************************
* 函 数 名 : dongtai_all
* 函数功能 : 各个数码管依次显示不同的内容
* 输 入 : 无
* 输 出 : 无
**********************************************************/
void dongtai_all(void)
{
unsigned char i = 0;
for (i=0; i<8; i++)
{
WEI = i; //位选,决定哪个数码管亮
DUAN = DIG_CODE[i+1]; //段选,决定数码管的哪段亮(亮什么数字)
delay1s();
}
}