6个数码管轮流显示数字
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*6位数码管轮流显示*/
#include
#define uchar unsigned char
sbit dula=P2^6; //数码管段选,锁存器控制信号
sbit wela=P2^7; //数码管位选,锁存器控制信号
unsigned char j,k;
/*1MS为单位的延时程序*/
void delay(uchar x)
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
//
/*定义数码管显示字符跟数字的对应数组关系*/
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管显示编码(1-F)
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
uchar i=0;
while(1){
switch (i){
case 0:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x7e; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 1:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x7d; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 2:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x7b; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 3:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x77; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 4:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x6f; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 5:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=5;
P0=0x5f; //数码管位选
wela=1;
wela=0;
delay(5);
break;
}
delay(200);
delay(200);
i++;
if(i>=6) i = 0;
}
}