📄 1266.c
字号:
//利用动态扫描和定时器1在数码管上显示出从765432开始以1%秒的速度
//往下递减直至765400并保持显示此数,与此同时利用定时器0以500MS速度
//进行流水灯从上至下移动,同时蜂鸣器发声,当数码管上数减到停止时,
//实验板上流水灯全部闪烁5次,数码管全熄灭。单片机进入休眠状态。
#include<reg52.h>
#include<intrins.h>
#define uc unsigned char
#define ui unsigned int
sbit beep=P2^3;
sbit dus=P2^6;
sbit wes=P2^7;
uc i,k,a,b,c;
ui count0,count1,num,j;
uc code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77};
void delay(ui x)
{
for(i=10;i>0;i--)
for(j=x;j>0;j--);
}
void display(ui qi,ui bi,ui si,ui ge)
{
P0=0xff;
wes=1;
wes=0;
P0=table[7];
dus=1;
dus=0;
P0=0xfe;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[6];
dus=1;
dus=0;
P0=0xfd;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[qi];
dus=1;
dus=0;
P0=0xfb;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[bi];
dus=1;
dus=0;
P0=0xf7;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[si];
dus=1;
dus=0;
P0=0xef;
wes=1;
wes=0;
delay(1);
P0=0xff;
wes=1;
wes=0;
P0=table[ge];
dus=1;
dus=0;
P0=0xdf;
wes=1;
wes=0;
delay(1);
}
void main()
{
EA=1;
ET1=1;
ET0=1;
TMOD=0x11;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR1=1;
TR0=1;
a=0xfe;
num=5432;
while(1)
{
if(count1==50)
{
count1=0;
num--;
}
display(num/1000,num%1000/100,num%1000%100/10,num%1000%100%10);
P1=a;
beep=1;
if(count0==50)
{
a=_crol_(a,1);
count0=0;
beep=0;
}
//if(count0==25)
//beep=~beep;
if(num==5400)
{
beep=1;
TR1=0;
TR0=0;
for(b=5;b>0;b--)
{
for(c=100;c>0;c--)
display(num/1000,num%1000/100,num%1000%100/10,num%1000%100%10);
P1=0x00;
for(c=100;c>0;c--)
display(num/1000,num%1000/100,num%1000%100/10,num%1000%100%10);
P1=0xff;
}
P0=0xff;
wes=1;
wes=0;
while(1);
}
}
}
void time1() interrupt 3 using 1
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
count1++;
}
void time0() interrupt 1 using 3
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
count0++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -