关于单片机驱动数码管流水灯蜂鸣器的程序总程序.docx
《关于单片机驱动数码管流水灯蜂鸣器的程序总程序.docx》由会员分享,可在线阅读,更多相关《关于单片机驱动数码管流水灯蜂鸣器的程序总程序.docx(8页珍藏版)》请在冰豆网上搜索。
![关于单片机驱动数码管流水灯蜂鸣器的程序总程序.docx](https://file1.bdocx.com/fileroot1/2022-12/12/0a93aed4-d21a-4a62-a001-d547353827f1/0a93aed4-d21a-4a62-a001-d547353827f11.gif)
关于单片机驱动数码管流水灯蜂鸣器的程序总程序
//关于单片机驱动数码管、流水灯、蜂鸣器的程序
#include52."H>
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbitclk=P2^0;
sbitAB=P2^1;
sbitSG=P2^5;
sbitSS=P2^4;
sbitSB=P2^3;
sbitSQ=P2^2;
sbitL1=P2^7;
//延时调用函数
voidDelay(){unsignedchari,j,k;
for(i=5;i>0;i--)
for(j=10;j>0;j--)
for(k=50;k>0;k--);}//显示一个数字
voidSentDate(charnum){unsignedcharc;
for(c=0;c<8;c++){clk=0;
AB=num&0x01;
num=num>>1;
clk=1;}}
//延时10次
voidten()
{inta;
for(a=0;a<10;a++)
Delay();}//流水灯控制
voidLED(){inti,j,a,b;
a=0x01;
b=0x80;
P1=~a;
ten();
for(i=0;i<8;i++){a=a<<1;
P1=~a;
ten();}P1=~b;
ten();
for(j=0;j<8;j++){b=b>>1;
P1=~b;
ten();}}
//四个相邻数码管动态显示不同值
voidmain(){unsignedchari,j,a,b,c;
while
(1){for(b=0;b<10;b++)//显示千位数
for(c=0;c<10;c++)//显示百位数
for(i=0;i<10;i++)//显示十位数{L1=0;//逢十报警一次ten();
L1=1;
for(j=0;j<10;j++)//显示个位数{LED();
for(a=0;a<10;a++)//循环十次{SentDate(table[b]);
SQ=0,SB=1,SS=1,SG=1;
Delay();
SentDate(table[c]);
SQ=1,SB=0,SS=1,SG=1;
Delay();
SentDate(table[i]);
SQ=1,SB=1,SS=0,SG=1;
Delay();
SentDate(table[j]);
SQ=1,SB=1,SS=1,SG=0;
Delay();}}}}}//移位控制
#include52."H>
sbitclk=P2^0;
sbitAB=P2^1;
sbitS1=P2^5;
sbitS2=P2^4;
sbitS3=P2^3;
sbitS4=P2^2;
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voiddelay02(){unsignedchari,j,k;
for(i=10;i>0;i--)
for(j=10;j>0;j--)
for(k=20;k>0;k--);}voidsent(charnum)
{unsignedcharc;
for(c=0;c<8;c++)
{clk=0;
AB=num&0x01;
num=num>>1;
clk=1;}}
voiddisplay(chara,charb,charm,charn)
{unsignedcharl;
for(l=0;l<40;l++){sent(table[a]);
S4=1;S1=0;
delay02();
sent(table[b]);
S1=1;S2=0;
delay02();
sent(table[n]);
S2=1;S3=0;
delay02();
sent(table[m]);
S3=1;S4=0;
delay02();}}
voidmain(){while
(1)
{charm=0,n=1,k,a=3,b=2;
for(k=0;k<30;k++){display(a,b,m,n);
a++;b++;
m++;n++;
if(a==10)a=0;
elseif(b==10)b=0;
elseif(m==10)m=0;
elseif(n==10)n=0;}}}/*LED走一轮,数码管走一次,蜂鸣器报警一次*/
#include51."H>
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbitclk=P2^0;
sbitAB=P2^1;
sbitSG=P2^5;
sbitSS=P2^4;
sbitSB=P2^3;
sbitSQ=P2^2;
sbitL1=P2^7;
voiddelay(void){inte;
for(e=100;e>0;e--);}//延时10次
voidten()
{inta;
for(a=0;a<10;a++)
delay();}/*发送一个数字*/
sentdate(m){intb,num;
num=table[m];
for(b=0;b<8;b++){clk=0;
AB=num&0x01;
num=num>>1;
clk=1;}}
/*计数*/
voidJS(void){inta,c,d,f,g;
for(g=0;g<10;g++){sentdate(g);
SQ=0,SB=1,SS=1,SG=1;
for(f=0;f<10;f++){sentdate(f);
SQ=1,SB=0,SS=1,SG=1;
for(d=0;d<10;d++){sentdate(d);
SQ=1,SB=1,SS=0,SG=1;
for(c=0;c<10;c++){intm,n;
n=0x80;//10000
for(m=0;m<8;m++){P1=0x00;//0000
ten();
P1=P1|n;//11000
n=n>>1;//01000
for(a=20;a>0;a--){sentdate(c);
SG=0;
delay();
SG=1;
sentdate(d);
SS=0;
delay();
SS=1;
sentdate(f);
SB=0;
delay();
SB=1;
sentdate(g);
SQ=0;
delay();
SQ=1;}}
L1=0;
ten();
L1=1;}}}}
}voidmain(void){JS();}/*LED走一轮,数码管计数,蜂鸣器逢十报警一次*/
#include51."H>
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbitclk=P2^0;
sbitAB=P2^1;
sbitSG=P2^5;
sbitSS=P2^4;
sbitSB=P2^3;
sbitSQ=P2^2;
sbitL1=P2^7;
//延时函数
voiddelay(void){inte;
for(e=100;e>0;e--);}//延时10次
voidten(){inta;
for(a=0;a<10;a++)
delay();}/*发送一个数字*/
sentdate(m){intb,num;
num=table[m];
for(b=0;b<8;b++){clk=0;
AB=num&0x01;
num=num>>1;
clk=1;}}
/*计数*/
voidmain(void){intc,d,f,g;
for(g=0;g<10;g++)//千位{sentdate(g);
SQ=0,SB=1,SS=1,SG=1;
for(f=0;f<10;f++)//百位{sentdate(f);
SQ=1,SB=0,SS=1,SG=1;
for(d=0;d<10;d++)//十位{sentdate(d);
SQ=1,SB=1,SS=0,SG=1;
for(c=0;c<10;c++)//个位{intm,k,n;//流水灯控制
m=0x01;
P1=~m;
ten();
for(k=0;k<8;k++){m=m<<1;
P1=~m;
ten();
for(n=0;n<60;n++)//数码管显示{sentdate(c);
SG=0;
delay();
SG=1;
sentdate(d);
SS=0;
delay();
SS=1;
sentdate(f);
SB=0;
delay();
SB=1;
sentdate(g);
SQ=0;
delay();
SQ=1;}}}}}}L1=0;//记十次报警一次
ten();
ten();
L1=1;}