欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機數(shù)碼管時鐘設(shè)計 ,在線求各位大佬怎么把其他功能加到以編的程序中?
[打印本頁]
作者:
馬強民
時間:
2020-9-2 08:54
標題:
單片機數(shù)碼管時鐘設(shè)計 ,在線求各位大佬怎么把其他功能加到以編的程序中?
功能:n1.4位共陽數(shù)碼管顯示,4個按鍵輸入,1個紅外遙控輸入。n2.能顯示時間,設(shè)置時間。n3.能設(shè)置鬧鐘,當(dāng)設(shè)置的時間到時通過數(shù)碼管閃爍提醒。n4.倒計時功能。n5.秒表功能。n6.計算器功能(4位數(shù)以內(nèi)的)。要求:n1.所有的功能都能在按鍵和者遙控器上獨立實現(xiàn)。n2.要求提交的資料:程序清單、電路圖、狀態(tài)圖、設(shè)計文檔。
51hei.png
(34.69 KB, 下載次數(shù): 48)
下載附件
2020-9-2 13:47 上傳
單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x00,0x7c,0x39,0x5e,
0x79,0x71};//共陰數(shù)碼管代碼
uint x,y,q,b,s,g,cunshi,cunfen,t0;
uchar sigh,sigh2=1,sigh3,banmiao,miaozt,nz;//banmiao是半秒標志位,miaozt是讓調(diào)時時小數(shù)點不閃
uint nshi,nfen;//鬧鐘時、分變量
int bxshi,bsshi;//報時時間段變量,上下限
int miao,fen,shi;
uchar count1,count2,count3,count4,count5;
sbit K1=P1^0;//位選0到3
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit deep=P2^0;
sbit an1=P0^0;
sbit an2=P0^1;
sbit an3=P0^2;
sbit an4=P0^3;
sbit hong=P2^2;
void init();
void display(int q,int b,int s,int g);
void ajcl();//按鍵及處理
void baoshiyf();//報時與否函數(shù)
void kaiji();//開機系統(tǒng)檢測
void nzzx();//鬧鐘執(zhí)行
void main()
{
init();
while(1)
{
kaiji();
ajcl();
display(q,b,s,g);
baoshiyf();
nzzx();
}
}
void init()
{
hong=1;
P3=0xc0;
K1=0;K2=0;K3=0;K4=0;
P3=0xc0;
K1=1;K2=1;K3=1;K4=1;
TMOD=0x11;ET1=1;x=65000;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=65000/256;
TL1=65000%256;
EA=1;
ET0=1;
TR0=1;
deep=0;
nz=1;
bxshi=6;bsshi=22;
}
void ajcl() //按鍵及處理
{
if(an1==0) { y=200; while(y--); if(an1==0) count1++;
while(!an1) {display(q,b,s,g);} } //1鍵按鍵計數(shù)
if(an2==0) { y=200; while(y--); if(an2==0) count2++;
while(!an2) {display(q,b,s,g);} } //2鍵按鍵計數(shù)
if(count4==0)
{
if(an3==0) { y=200; while(y--); if(an3==0) count3++;
while(!an3) {display(q,b,s,g);} } //3鍵按鍵計數(shù)
}
if(count3==0 || count3==3)
{
count3=0;
if(an4==0) { y=200; while(y--); if(an4==0) count4++;
while(!an4) {display(q,b,s,g);}} //4鍵按鍵計數(shù)
}
P0=0xff;
q=cunshi/10; b=cunshi%10; s=cunfen/10; g=cunfen%10;
////////////////////////////////////////接下來按an4觸發(fā)可調(diào)時間
if (count4 && !count3)
{
cunshi = shi; cunfen = fen;
miaozt=1;
switch(count4)
{
case 1 : if((shi==0)&&count2) shi=24 ;
shi = shi+count1; count1=0;
shi = shi-count2; count2=0;
if(shi==24) shi=0;
if (banmiao) {q=10; b=10; }
else {q=shi/10; b=shi%10;} break;
case 2 : if((fen==0)&&count2) fen=60;
fen = fen+count1; count1=0;
fen = fen-count2; count2=0;
if(fen==60) fen=0;
if (banmiao) {s=10; g=10; }
else {s=fen/10; g=fen%10;} break;
case 3 : miao=0;count4=0; break;
}
}
////////////////////////////////////////接下來按an3觸發(fā)可定鬧鐘和報時時間段
if (count3 && (!count4))
{
cunshi = nshi; cunfen = nfen;
miaozt=1;
switch(count3)
{
case 1 : s=nfen/10; g=nfen%10;
if((nshi==0)&&count2) nshi=24;
nshi = nshi+count1; count1=0;
nshi = nshi-count2; count2=0;
if(nshi==24) nshi=0;
if (banmiao) {q=10; b=10; }
else {q=nshi/10; b=nshi%10;} break;
case 2 : q=nshi/10; b=nshi%10;
if((nfen==0)&&count2) nfen=60;
nfen = nfen+count1; count1=0;
nfen = nfen-count2; count2=0;
if(nfen==60) nfen=0;
if (banmiao) {s=10; g=10; }
else {s=nfen/10; g=nfen%10;} break;
case 3 : cunshi=shi; cunfen=fen; break;
case 4 : cunshi = bxshi; cunfen = bsshi;
s=bsshi/10; g=bsshi%10;
if((bxshi==0)&&count2) bxshi=24;
bxshi = bxshi+count1; count1=0;
bxshi = bxshi-count2; count2=0;
if(bxshi==24) bxshi=0;
if (banmiao) {q=10; b=10; }
else {q=bxshi/10; b=bxshi%10;} break;
case 5 : cunshi = bxshi; cunfen = bsshi;
q=bxshi/10; b=bxshi%10;
if((bsshi==0)&&count2) bsshi=24;
bsshi = bsshi+count1; count1=0;
bsshi = bsshi-count2; count2=0;
if(bsshi==24) bsshi=0;
if (banmiao) {s=10; g=10; }
else {s=bsshi/10; g=bsshi%10;} break;
case 6 : count3=0; cunshi=shi; cunfen=fen; break;
}
}
///////////////////////////////////////////時分 秒切換
if(count1 && (!count3) && (!count4) )
{
if(count1==1)
{ q=10; b=10; s=miao/10; g=miao%10; miaozt=1; }
else count1=0 ;
}
}
void timer0() interrupt 1
{
t0++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(t0==10) {banmiao=1;miaozt=1;}
if(t0==20) {banmiao=0;miaozt=0;t0=0;miao++;sigh=1;}
if(miao==11) {sigh2=0; }
if(miao==60) {miao=0;fen++;sigh3=1;}
if(fen==60) {fen=0;shi++; }
if(shi==24) {shi=0; }
cunshi=shi; cunfen=fen;
}
void timer1() interrupt 3
{
TH1=x/256;
TL1=x%256;
deep=~deep;
}
void display(int q,int b,int s,int g)
{
P3=~table[g];
K4=0; delay();
K4=1;
P3=~table[s]; [/s][s]
K3=0; delay();
K3=1;
P3=t0<9?(P3=~(table[b]+0x80)):(P3=~table[b]); [/b][/b][b][b]
K2=0; delay();
K2=1;
P3=~table[q];
K1=0; delay();
K1=1;
}
void baoshiyf()
{
if( ((shi+1) >= bxshi) && (shi < bsshi) )
{
if( fen==59 )
{
if(( (miao==56) || (miao==57) || (miao==58) || (miao==59) )&&(t0<8))
{x=65000;nz=0;TR1=1;}
if(( (miao==56) || (miao==57) || (miao==58) || (miao==59) )&&(t0>7)) TR1=0;nz=1;
}
if( sigh &&(fen==0) && (miao==0) && (t0<14) )
{
x=65150;
nz=0;TR1=1;
}
if( sigh&& (fen==0) && (miao==0) && (t0==14) )
TR1=0;nz=1;
}
if(shi==bsshi)
{
if(sigh &&(fen==0) && (miao==0) && (t0<14) )
{ x=65150; nz=0;TR1=1;}
if( sigh&& (fen==0) && (miao==0) && (t0==14) ) TR1=0;nz=1;
}
}
void kaiji()
{
if(sigh2)
{
if( (miao!=0) && (t0<5) )
{x=64800;nz=0;TR1=1;}
if( (miao!=0) && (t0>4) )
TR1=0;nz=1;
if (t0<13) hong=1;
else hong=0;
}
}
void delay()
{
uint x,y;
for(x=50;x>0;x--)
for(y=1;y>0;y--);
}
void nzzx()
{ if(sigh3)
{
if((nshi==shi)&&(nfen==fen)&&(miao<31))
{ x=65300; TR1=1; }
else
if(nz)
{ TR1=0; }
}
}
復(fù)制代碼
作者:
yzwzfyz
時間:
2020-9-2 16:24
是來布置作業(yè)的,請學(xué)得好同學(xué)的來答。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1