欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機電子鐘的仿真程序設(shè)計
[打印本頁]
作者:
23568709
時間:
2023-4-13 16:04
標題:
51單片機電子鐘的仿真程序設(shè)計
主要功能:
1.能實現(xiàn)時、分、秒的顯示;
2.按鍵控制時、分、秒的調(diào)整。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
(59.79 KB, 下載次數(shù): 32)
下載附件
2023-4-13 16:15 上傳
本次設(shè)計的單片機系統(tǒng)由AT89C51、數(shù)碼管顯示屏、時鐘振蕩器、電源、按鍵鍵盤等組成。2.3 單片機系統(tǒng)流程圖程序首先開始進行初始化,在主程序的循環(huán)程序中首先調(diào)用時鐘子程序完成秒的計時及向分鐘、小時的進位,用于調(diào)整分鐘、小時、秒,主要由主函數(shù)組成通過對相關(guān)子程序的調(diào)用。然后調(diào)用按鍵子程序,在判斷是否有按鍵按下。若有按鍵按下則轉(zhuǎn)到相應(yīng)的功能程序執(zhí)行。
第三部分 系統(tǒng)硬件設(shè)計3.1 時鐘振蕩器時鐘振蕩器即時鐘脈沖發(fā)生器,產(chǎn)生整個芯片內(nèi)部個功能電路正常操作所需的時鐘脈沖和定時信號。最常用的一種電路連接方法是,在XTAL1和XTAL2這2只引腳之間外接一只晶體振蕩器XTAL和2只電容C1和C2到地,與片內(nèi)電路共同構(gòu)成一個多諧振蕩器電路。其振蕩頻率取決于外接石英振蕩器原件XTAL的固有頻率3.2 數(shù)碼管顯示電路數(shù)碼管顯示屏的A到G與單片機P0口相連,數(shù)碼管顯示屏的1到6口與單片機P2口相連。
3.3 鍵盤輸入電路本次設(shè)計采用獨立鍵盤,鍵盤按下時,相應(yīng)的I/O口電平由高變低。3個獨立鍵盤依次控制著秒、分鐘、小時的設(shè)置。3個獨立按鍵與單片機P1.0—P1.2口相連。3.4 中心模塊AT89C51是一種帶4K字節(jié)的低電壓、高性能的高效微控制器。P0口:是一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(計時器0外部輸入)
P3.5 T1(計時器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)RST:復(fù)位輸入。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
單片機源程序如下:
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};
uchar seconde=0;
uchar minite=0;
uchar hour=0;
uchar mstcnt=0;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
void delay(uint k );
void delay1(uchar h );
void time_pro( );
void display( );
void keyscan( );
void delay1 (uchar h)
{
uchar j;
while((h--)!=0)
{
for(j=0;j<125;j++)
{;}
}
}
void delay (uint k)
{
uint a,b,c;
for(c=k;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void time_pro( void)
{
if(seconde==60)
{ seconde=0;
minite++;
if( minite==60)
{ minite=0;
hour++;
if(hour==24)
{hour=0; }
}
}
}
void display(void)
{
P2=0xfe;
P0=dispcode[hour/10];
delay1(4);
P2=0xfd;
P0=(dispcode[(hour%10)])|0X80;
delay1(4);
P2=0xfb;
P0=dispcode[minite/10];
delay1(4);
P2=0xf7;
P0=(dispcode[minite%10])|0X80;
delay1(4);
P2=0xef;
P0=dispcode[seconde/10];
delay1(4);
P2=0xdf;
P0=dispcode[seconde%10];
delay1(4);
}
void keyscan (void)
{
if(P1_0==0)
{
delay(3);
if(P1_0==0)
{
seconde++;
if(seconde==60)
{seconde=0; }
}
}
if(P1_1==0)
{
delay(3);
if(P1_1==0)
{
minite++;
if(minite==60)
{minite=0;}
}
}
if(P1_2==0)
{
delay(3);
if(P1_2==0)
{
hour++;
if(hour==24)
{hour=0; }
}
}
}
void timer0(void) interrupt 1 using 0
{
TH0=0x3c;
TMOD = 0x11;
mstcnt++;
if(mstcnt==20)
{
seconde++;
mstcnt=0;
}
}
void main(void)
{ P1=0xff;
TMOD = 0x11;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
while (1)
{
keyscan( );
time_pro( );
display( );
}
}
復(fù)制代碼
Keil代碼與Proteus仿真下載:
仿真程序.7z
(62.19 KB, 下載次數(shù): 20)
2023-4-13 16:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1