标题:
传个流水灯加数码管小程序,流水灯流一次数码管加一
[打印本页]
作者:
腾飞的龙
时间:
2015-12-11 14:23
标题:
传个流水灯加数码管小程序,流水灯流一次数码管加一
/***********************************************
功能 :流水灯循环一次数码管显示加一
P0口是流水灯。P2口通过573锁存器控制数码管的
位和段。
单片机:STC12C5A60S2
晶振 :11.0592M
作者 :苏义江
时间 :2015-12-11
**********************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//共阳数码管段码
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
0xa1,0x86,0x8e,0x89};
//位码
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar b,i;
uint c;//数的变量
uchar qian,bai,shi,ge;
sbit wei=P0^6; //位使能573
sbit duan=P0^7; //段使能573
void display();
void delay(uint z);
void main()
{
c=0;
while(1)
{
for(c=0;c<9999;c++)//显示到1000从新开始
{
for(i=0;i<8;i++)
{
P0=table1[i];//流水灯
delay(10);
for(b=0;b<20;b++)//循环显示20次增加数码管亮度
{
display();//数码管显示
}
}
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=420;y>0;y--);
}
void display()
{
//数的分解千,百,十,个位
qian=c/1000;
bai=c%1000/100;
shi=c%100/10;
ge=c%10;
wei=1; //使能位选
P2=0xfe;
wei=0; //使能位选
duan=1; //使能段选
P2=table[qian]; //显示
duan=0; //使能段选
delay(3);
P2=0XFF;
wei=1;
P2=0xfd;
wei=0;
duan=1;
P2=table[bai];
duan=0;
delay(3);
P2=0XFF;
wei=1;
P2=0xfb;
wei=0;
duan=1;
P2=table[shi];
duan=0;
delay(3);
P2=0XFF;
wei=1;
P2=0xf7;
wei=0;
duan=1;
P2=table[ge];
duan=0;
delay(3);
P2=0XFF;
}
复制代码
作者:
admin
时间:
2015-12-11 19:12
楼主能分享一下,或者简单的介绍一下数码管的电路图吗
作者:
腾飞的龙
时间:
2015-12-12 10:09
admin 发表于 2015-12-11 19:12
楼主能分享一下,或者简单的介绍一下数码管的电路图吗
手画了一张传到论坛啦。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1