7段数码管是常用的一种数字显示技术。我们可以理解为其将7个LED灯按照一定规律进行摆放,通过控制其点亮与熄灭形成相应的阿拉伯数字。其一般有共阴和共阳两种类型,所谓共阳,就是7个LED正极接在一起,共阴则是7个LED负极接在一起。
1.原理图
2.程序
#include "reg51.h"
#define u8 unsigned char
#define u16 unsigned int
u8 code SMG_CC[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit K1 = P1^0;
u8 num = 0;
void delay_ms(u8 time)
{
u8 i,j;
while(time)
{
i = 12;
j = 169;
do
{
while(--j);
}while(--i);
time --;
}
}
void key_scan()
{
if(K1 == 0)
{
delay_ms(5);
if(K1 == 0)
{
num++;
if(num == 16)
num = 0;
while(K1 == 0);
}
}
}
void main()
{
while(1)
{
key_scan();
P2 = SMG_CC[num];
}
}
3.解释
SMG_CC里存放着点亮不同数字的数组
按键使一个变量不断增加
变量的增加使得写入P2端口的数值不断变化,形成相应数字