C51 程序数码管继电器等控制程式解析Word格式文档下载.docx
《C51 程序数码管继电器等控制程式解析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C51 程序数码管继电器等控制程式解析Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
ucharcodetable[]={//显示编码0,1,2,3,4,5,6,7,8,9,-,H,E,L,U,R
~0x3f,~0x06,~0x5b,~0x4f,
~0x66,~0x6d,~0x7d,~0x07,
~0x7f,~0x6f,~0x40,~0x76,
~0x79,~0x38,~0x3e,~0x77,
~0x49,~0x79,~0x38,~0x3f};
ucharfen,miao,t0,t1,t2,set_flag,set_wei_flag,jia_flag,jian_flag,go_flag;
ucharshi_qianwei,shi_baiwei,shi_shiwei,shi_gewei,fen_shiwei,fen_gewei,
miao_shiwei,miao_gewei;
ucharset_fen,set_miao,shan,shan_over;
charset_shi_q,set_shi_b,set_shi_s,set_shi_g,set_fen_s,set_fen_g,set_miao_s,
set_miao_g,set_wei;
intshi,set_shi,jingbao;
voiddelay(uintz)//延时函数1ms;
{
uintt1,y;
for(t1=z;
t1>
0;
t1--)
for(y=100;
y>
y--);
}
voidMCUinit()//初始化MCU;
P0=0;
P1=0;
P2=0;
P3=0;
set=1;
jia=1;
jian=1;
go=1;
set_shi_q=0;
set_shi_b=0;
set_shi_s=0;
set_shi_g=0;
set_fen_s=0;
set_fen_g=0;
set_miao_s=0;
set_miao_g=0;
set_wei=7;
set_flag=0;
jia_flag=0;
jian_flag=0;
go_flag=0;
shi=0;
fen=0;
miao=0;
t0=0;
t1=0;
shan=0;
jingbao=0;
TMOD=0x11;
//使能定时器并加入初值
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR1=1;
voidsetscanf()//设置函数
{
while(set_flag==1)
{
if(set_shi<
=99)
{
if(set_wei_flag==1)//设置位自左往右循环;
set_wei_flag=0;
set_wei--;
if(set_wei<
1)
set_wei=6;
}
switch(set_wei)
case1:
{
if(jia_flag==1)
jia_flag=0;
set_miao_g++;
if(set_miao_g>
9)
if(jian_flag==1)
jian_flag=0;
set_miao_g--;
if(set_miao_g<
0)
set_miao_g=9;
}
//时十位;
=============================
P0=table[set_shi_s];
P1=0x20;
delay
(1);
P0=0xff;
//时个位;
=============================
P0=table[set_shi_g];
P1=0x10;
//分十位;
P0=table[set_fen_s];
P1=0x08;
//分个位;
P0=table[set_fen_g];
P1=0x04;
//秒十位;
P0=table[set_miao_s];
P1=0x02;
//秒个位;
if(shan<
20)//数码管闪烁占空比的控制1:
1
{
P0=table[set_miao_g]&
0x7f;
}
else
if(shan>
=20)
}
P1=0x01;
break;
}
case2:
set_miao_s++;
if(set_miao_s>
5)
if(jian_flag==1)
set_miao_s--;
if(set_miao_s<
set_miao_s=5;
//时十位;
P0=table[set_miao_s]&
}
P0=table[set_miao_g];
case3:
set_fen_g++;
if(set_fen_g>
set_fen_g--;
if(set_fen_g<
set_fen_g=9;
P0=table[set_fen_g]&
case4:
set_fen_s++;
if(set_fen_s>
set_fen_s--;
if(set_fen_s<
set_fen_s=5;
P0=table[set_fen_s]&
}
case5:
set_shi_g++;
if(set_shi_g>
set_shi_g--;
if(set_shi_g<
set_shi_g=9;
P0=table[set_shi_g]&
case6:
set_shi_s++;
if(set_shi_s>
{
set_shi_b++;
}
set_shi_s--;
if(set_shi_s<
set_shi_s=9;
P0=table[set_shi_s]&
}
else//画面‘三9999三’============
if(set_shi>
99)
{
if(set_wei>
set_wei=4;
if(set_wei_flag==1)
2)
set_wei=5;
set_shi_g=5;
//‘三’位;
P0=table[16];
//时千位;
P0=table[set_shi_q];
//时百位;
P0=table[set_shi_b];
//时分位;
//‘三’个位;
//时千位;
P0