這是對于單片機的簡單應用
仿真結果圖:
51單片機定時器的應用proteus仿真 本人喜好單片機設計,精通單片機編程和硬件電路設計,在空余之際編一些小程序與大家分享,有哪位路過,請多多指教,希望大家在一起能互相學習,互相進步。這里的程序已經測試通過。發表出來,一來可以幫助同樣愛好單片機的朋友們,二來,希望能結交一些同道中人,共同學習。 實例原理:用定時器設計一個秒表,其中設有一個按鍵,定時器 T0工作在方式1。當第一 次按下按鍵時,定時器開始計時。第二次按下按鍵時,停止計時并計算第一次按下鍵盤與第二次按下鍵盤的時間,送人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; }
如果您想做項目開發,或者是做課題,或者您只是有一個想法,親聯系我們,我們會盡最大努力幫您完成,您的需要就是我們奮斗的方向!
|