標題: 51單片機定時器的應用proteus仿真 [打印本頁]
作者: 林94 時間: 2017-5-10 10:33
標題: 51單片機定時器的應用proteus仿真
這是對于單片機的簡單應用
仿真結果圖:
0.png (118.81 KB, 下載次數(shù): 83)
下載附件
2017-5-10 15:54 上傳
0.png (141.95 KB, 下載次數(shù): 73)
下載附件
2017-5-10 15:54 上傳
51單片機定時器的應用proteus仿真
本人喜好單片機設計,精通單片機編程和硬件電路設計,在空余之際編一些小程序與大家分享,有哪位路過,請多多指教,希望大家在一起能互相學習,互相進步。這里的程序已經(jīng)測試通過。發(fā)表出來,一來可以幫助同樣愛好單片機的朋友們,二來,希望能結交一些同道中人,共同學習。
實例原理:用定時器設計一個秒表,其中設有一個按鍵,定時器 T0工作在方式1。當?shù)谝?/font> 次按下按鍵時,定時器開始計時。第二次按下按鍵時,停止計時并計算第一次按下鍵盤與第二次按下鍵盤的時間,送人P0口和P2口并將時間顯示出來,P0口顯示十位,P2口顯示各位。第三次按下鍵盤時使定時器清零,等待下一次按鍵。
源程序:
#include<reg51.h>
#defineuchar unsigned char
sbitkey=P3^0;
sbitge=P2^7;
sbitshi=P2^6;
uchartime=0,count=0;
ucharcode dis[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
ucharcode dis_dot[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
voiddelay(uchar N)
{
uchar i,j;
for(i=0;i<N;i++)
for(j=0;j<125;j++);
}
voiddisplay(void)
{
P0=dis[time%10];
ge=0;
delay(3);
ge=1;
P0=dis_dot[time/10];
shi=0;
delay(3);
shi=1;
}
voidmain()
{
TMOD=0x01;TH0=0x3c;TL0=0xb0;IE=0x82;//定時器T0工作在方式1
while(1)
{
while(key==1)
display();
TR0=1;
EA=1;
while(key==0)
display();
while(key==1)
display();
EA=0;
while(key==0);
display();
while(key==1)
display();
time=0;
while(key==0)
display();
}
}
voidT0_time()interrupt 1
{
count++;
if(count==2)
{
time++;
count=0;
if(time==99)
time=0;
}
TH0=0x3c;TL0=0xb0;
}
如果您想做項目開發(fā),或者是做課題,或者您只是有一個想法,親聯(lián)系我們,我們會盡最大努力幫您完成,您的需要就是我們奮斗的方向!
-
-
51單片機定時器的應用proteus仿真 源程序.doc
2017-5-10 10:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
67.5 KB, 下載次數(shù): 80, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |