標(biāo)題:
51單片機(jī)實(shí)現(xiàn)定時(shí)器,附上電路圖,代碼簡(jiǎn)單易懂,新手必備
[打印本頁(yè)]
作者:
jackchen
時(shí)間:
2016-11-23 21:43
標(biāo)題:
51單片機(jī)實(shí)現(xiàn)定時(shí)器,附上電路圖,代碼簡(jiǎn)單易懂,新手必備
51單片機(jī)實(shí)現(xiàn)定時(shí)器,附上電路圖,代碼簡(jiǎn)單易懂,新手必備
作者:
jackchen
時(shí)間:
2016-11-23 21:46
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,bb,c,d,shi1,shi2,fen1,fen2,miao1,miao2;
sbit set_1=P1^0;
sbit esc=P1^1;
sbit up=P1^2;
sbit dwon=P1^3;
sbit left=P1^4;
sbit right=P1^5;
sbit enter=P1^6;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
bit cc;
uchar flag=1;
void init();
void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);
void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);
void delay_ms(uint z);
void key_scan();
void time();
void key();
void main()
{
init();
while(1)
{ key();
if(c>0)
{key_scan();}
display1(shi1,shi2,fen1,fen2,miao1,miao2);
}
}
void delay_ms(uint z)
{ uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
aa=0;
bb=0;
c=0;
d=0;
shi1=0;
shi2=0;
fen1=0;
fen2=0;
miao1=0;
miao2=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
EX0=1;
ET0=1;
IT0=1;
TR0=1;
cc=0;
flag=1;
d=0;
display1(shi1,shi2,fen1,fen2,miao1,miao2);
}
void key()
{
//set
if(set_1==0) {delay_ms(2);}
if(set_1==0) {
c++;flag=0;d=1;
shi1=0;shi2=0;fen1=0;fen2=0;miao1=0;miao2=0;
display1(shi1,shi2,fen1,fen2,miao1,miao2);
}
while(!set_1){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
//ESC
if(esc==0) {delay_ms(2);}
if(esc==0) {
c=0;flag=2;
display1(shi1,shi2,fen1,fen2,miao1,miao2);
}
while(!esc){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
//enter
if(enter==0) {delay_ms(2);}
if(enter==0) {
flag=1;
display(shi1,shi2,fen1,fen2,miao1,miao2);
}
while(!enter){display(shi1,shi2,fen1,fen2,miao1,miao2);}
}
//按鍵掃描函數(shù)
void key_scan()
{
if(left==0) {delay_ms(2);} //左移
if(left==0) {if(d<6)d=d+1;
else {d=1;}
}
while(!left){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
if(right==0) {delay_ms(2);} //右移
if(right==0) {if(d>1)d=d-1;
else {d=6;}
}
while(!right){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
//add
if(d==6){if(up==0){delay_ms(2);}
if(up==0){if(shi1<2){shi1=shi1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else{shi1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==5){if(up==0){delay_ms(2);}
if(up==0){if(shi1<2){if(shi2<9){shi2=shi2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else{shi2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}
if(shi1==2){if(shi2<4){shi2=shi2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else{shi2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}} }
while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==4){if(up==0){delay_ms(2);}
if(up==0){if(fen1<5){fen1=fen1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {fen1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==3){if(up==0){delay_ms(2);}
if(up==0){
if(fen2<9){fen2=fen2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {fen2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==2){ if(up==0){delay_ms(2);}
if(up==0){if(miao1<5){miao1=miao1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {miao1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==1){ if(up==0){delay_ms(2);}
if(up==0){
{if(miao2<9){miao2=miao2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {miao2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
} while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
//dec
if(d==6){if(dwon==0){delay_ms(2);}
if(dwon==0){if(shi1>0){shi1=shi1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else{shi1=2;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==5){if(dwon==0){delay_ms(2);}
if(dwon==0){if(shi1<2){if(shi2>0){shi2=shi2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else{shi2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}
if(shi1==2){if(shi2>0){shi2=shi2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else{shi2=3;display1(shi1,shi2,fen1,fen2,miao1,miao2);}} }
while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==4){if(dwon==0){delay_ms(2);}
if(dwon==0){if(fen1>0){fen1=fen1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {fen1=5;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==3){if(dwon==0){delay_ms(2);}
if(dwon==0){
if(fen2>0){fen2=fen2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {fen2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==2){ if(dwon==0){delay_ms(2);}
if(dwon==0){if(miao1>0){miao1=miao1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
else {miao1=5;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
if(d==1){ if(dwon==0){delay_ms(2);}
if(dwon==0){
{if(miao2>0){miao2=miao2-1;display(shi1,shi2,fen1,fen2,miao1,miao2);}
else {miao2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
} while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
}
void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)
{
P2=0x01;
P0=table[shi1];
delay_ms(1);
P2=0x02;
P0=table[shi2];
delay_ms(1);
P2=0x04;
P0=table[fen1];
delay_ms(1);
P2=0x08;
P0=table[fen2];
delay_ms(1);
P2=0x10;
P0=table[miao1];
delay_ms(1);
P2=0x20;
P0=table[miao2];
delay_ms(1);
}
void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)
{
switch(d)
{ case 0:{display(shi1,shi2,fen1,fen2,miao1,miao2);}break;
case 6:if(cc==1)
{P2=0x00;
P0=table[shi1];
delay_ms(1);
P2=0x02;
P0=table[shi2];
delay_ms(1);
P2=0x04;
P0=table[fen1];
delay_ms(1);
P2=0x08;
P0=table[fen2];
delay_ms(1);
P2=0x10;
P0=table[miao1];
delay_ms(1);
P2=0x20;
P0=table[miao2];
delay_ms(1);}
else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
break;
case 5:if(cc==1)
{P2=0x01;
P0=table[shi1];
delay_ms(1);
P2=0x00;
P0=table[shi2];
delay_ms(1);
P2=0x04;
P0=table[fen1];
delay_ms(1);
P2=0x08;
P0=table[fen2];
delay_ms(1);
P2=0x10;
P0=table[miao1];
delay_ms(1);
P2=0x20;
P0=table[miao2];
delay_ms(1);}
else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
break;
case 4:if(cc==1)
{P2=0x01;
P0=table[shi1];
delay_ms(1);
P2=0x02;
P0=table[shi2];
delay_ms(1);
P2=0x00;
P0=table[fen1];
delay_ms(1);
P2=0x08;
P0=table[fen2];
delay_ms(1);
P2=0x10;
P0=table[miao1];
delay_ms(1);
P2=0x20;
P0=table[miao2];
delay_ms(1);}
else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
break;
case 3:if(cc==1)
{P2=0x01;
P0=table[shi1];
delay_ms(1);
P2=0x02;
P0=table[shi2];
delay_ms(1);
P2=0x04;
P0=table[fen1];
delay_ms(1);
P2=0x00;
P0=table[fen2];
delay_ms(1);
P2=0x10;
P0=table[miao1];
delay_ms(1);
P2=0x20;
P0=table[miao2];
delay_ms(1);}
else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
break;
case 2:if(cc==1)
{P2=0x01;
P0=table[shi1];
delay_ms(1);
P2=0x02;
P0=table[shi2];
delay_ms(1);
P2=0x04;
P0=table[fen1];
delay_ms(1);
P2=0x08;
P0=table[fen2];
delay_ms(1);
P2=0x00;
P0=table[miao1];
delay_ms(1);
P2=0x20;
P0=table[miao2];
delay_ms(1);}
else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
break;
case 1:if(cc==1)
{P2=0x01;
P0=table[shi1];
delay_ms(1);
P2=0x02;
P0=table[shi2];
delay_ms(1);
P2=0x04;
P0=table[fen1];
delay_ms(1);
P2=0x08;
P0=table[fen2];
delay_ms(1);
P2=0x10;
P0=table[miao1];
delay_ms(1);
P2=0x00;
P0=table[miao2];
delay_ms(1);}
else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
break;
default:break;
}
}
void T0_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(flag==1)
{
aa++;
if(aa==20)
{
aa=0;
miao2++;
if(miao2>9)
{
miao2=0;
miao1++;
if(miao1>5)
{
miao1=0;
fen2++;
if(fen2>9)
{
fen2=0;
fen1++;
if(fen1>5)
{
fen1=0;
shi2++;
if(shi1==2)
{
if(shi2==4){shi2=0;shi1=0;}
}else
{
if(shi2>9){shi2=0;shi1++;}}
}
}
}
}
}
}else if(flag==0) {aa++;if(aa==10){aa=0;cc=~cc;}}
else {cc=0;}
}
復(fù)制代碼
作者:
qqlong11
時(shí)間:
2016-12-14 21:01
新手來學(xué)習(xí)一下,
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1