找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5694|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

秒表可以連續(xù)走到9999秒

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:149988 發(fā)表于 2016-11-29 11:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
秒表可以連續(xù)走到9999秒,到9999秒自動復(fù)位到0,重新計時可以按復(fù)位鍵或停止鍵。本程序經(jīng)過上板實驗,完全可靠。

  1. #include<reg51.h>
  2. #define GPIO_DIG   P0
  3. #define GPIO_PLACE P1
  4. unsigned char code DIG_PLACE[4] = {0xfe,0xfd,0xfb,0xf7};//,0xef,0xdf,0xbf,0x7f};//位選控制   查表的方法控制
  5. unsigned char code DIG_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. unsigned char DisplayData[8]; //用來存放要顯示的8位數(shù)的值
  7. unsigned char Time;                        //用來存放定時時間
  8. unsigned int Second;
  9. /*********************使用數(shù)碼管顯示*******************/
  10. void DigDisplay()
  11. {
  12.         unsigned char i;
  13.         unsigned int j;
  14.         for(i=0; i<8; i++)
  15.         {
  16.                 GPIO_PLACE=DIG_PLACE[i];         //發(fā)送位選
  17.                 GPIO_DIG=DisplayData[i];   //發(fā)送段碼
  18.                 j=10;                                                           //掃描間隔時間設(shè)定
  19.                 while(j--);        
  20.                 GPIO_DIG=0x00;             //消隱
  21.         }
  22. }
  23. /*********************配置定時器************************/
  24. void Timer0init(void)
  25. {
  26.         TMOD=0x01;     //定時器0選擇工作方式1
  27.   TH0 =(65536-49550)/256;         //設(shè)置初始值,定時50MS
  28.   TL0 =(65536-49550)%256;
  29.   EA  =1;           //打開總中斷
  30.   ET0 =1;                 //打開定時器0中斷
  31.   TR0 =1;                 //啟動定時器0        
  32. }
  33. /**********************主函數(shù)***************************/
  34. void main(void)
  35. {         
  36.   Timer0init();  
  37.   while(1)   
  38.   {
  39.     if(Second>9999)
  40.     {
  41.       Second=0;
  42.     }
  43.     DisplayData[0]=DIG_CODE[(Second)/10000];
  44.     DisplayData[1]=DIG_CODE[(Second)%1000/100];
  45.     DisplayData[2]=DIG_CODE[(Second)%100/10];
  46.     DisplayData[3]=DIG_CODE[(Second)%10];
  47.     DigDisplay();

  48.   }                                
  49. }
  50. /*******************定時器0中斷函數(shù)**********************/                  
  51. void Timer0() interrupt 1
  52. {
  53.         TH0=(65536-49550)/256; //設(shè)置初始值
  54.         TL0=(65536-49550)%256;
  55.         Time++;
  56.         if(Time==40)  //控制秒時間長短
  57.         {
  58.                 Second++;
  59.                 Time=0;
  60.         }
  61. }
復(fù)制代碼


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:138155 發(fā)表于 2016-11-29 14:10 | 只看該作者
雖然不需要 但是還是要感謝樓主的奉獻(xiàn)精神
回復(fù)

使用道具 舉報

板凳
ID:150990 發(fā)表于 2016-11-29 14:24 | 只看該作者
非常好
回復(fù)

使用道具 舉報

地板
ID:111634 發(fā)表于 2016-11-29 14:43 | 只看該作者
本帖最后由 zl2168 于 2016-11-29 14:47 編輯

實例93  99.9秒秒表


Proteus仿真一下,確認(rèn)有效。
實例95 99.9秒秒表.rar (38.86 KB, 下載次數(shù): 12)
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計實例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實驗操作,書中電路和程序設(shè)計有詳細(xì)說明,電路與程序真實可靠可信可行,程序語句條條有注解。
若需99.99秒,硬件電路增加一位595。軟件程序增加0.01s10ms)計數(shù)器,并修改相應(yīng)計數(shù)顯示程序。
另外,顯示也可改成I/O口直接驅(qū)動。


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表