久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5219|回復: 3
打印 上一主題 下一主題
收起左側

按鍵按一次計數器開始計數,按兩次停止計數

[復制鏈接]
跳轉到指定樓層
樓主
有沒有人有源程序,看起來很簡單,,自己寫就各種實現不了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:94072 發表于 2017-1-7 23:44 | 只看該作者
用標志位啊,按一次時為1,按兩次時為2,停止計數,標志位清零
回復

使用道具 舉報

板凳
ID:155507 發表于 2017-1-8 00:19 | 只看該作者
  1. /*-----------------------------------------------
  2. 名稱:數碼管顯示,按鍵控制秒表
  3. 內容:中斷按鍵控制,數碼管顯示,P3.2 中斷0控制計時和停止,P3.3 中斷1清零
  4. ------------------------------------------------*/
  5. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

  6. unsigned int msecond,second;//定義全局變量
  7. bit GoFlag;//定義停止,計時標志

  8. #define DataPort P0 //定義數據端口 程序中遇到DataPort 則用P0 替換
  9. sbit LATCH1=P2^2;//定義鎖存使能端口 段鎖存         74hc573 就是鎖存器
  10. sbit LATCH2=P2^3;//             位鎖存

  11. unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9
  12. unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
  13. unsigned char TempData[8]; //存儲顯示值的全局變量

  14. void DelayUs2x(unsigned char t);//函數聲明
  15. void DelayMs(unsigned char t);
  16. void Display(unsigned char FirstBit,unsigned char Num);
  17. void Init_Timer0(void);
  18. void CLR(void);
  19. /*------------------------------------------------
  20.                                         主函數
  21. ------------------------------------------------*/
  22. void main (void)
  23. {
  24.         unsigned char num=0;                  


  25.         EX0=1;         //外部中斷0開
  26.         IT0=1;         //IT1=0表示邊沿觸發
  27.         EX1=1;         //外部中斷1開
  28.         IT1=1;         //IT1=1表示邊沿觸發
  29.         Init_Timer0();
  30.         while (1)         //主循環
  31.         {

  32.                 TempData[0]=DuanMa[second/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  33.                 TempData[1]=DuanMa[second%10];
  34.                 TempData[2]=0x40;// "-"
  35.                 TempData[3]=DuanMa[msecond/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  36.                 TempData[4]=DuanMa[msecond%10];
  37.                
  38.                 //主循環中添加其他需要一直工作的程序
  39.                
  40.         }
  41. }

  42. /*------------------------------------------------
  43. 顯示函數,用于動態掃描數碼管
  44. 輸入參數 FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數碼管開始顯示
  45. 如輸入0表示從第一個顯示。
  46. Num表示需要顯示的位數,如需要顯示99兩位數值則該值輸入2
  47. ------------------------------------------------*/
  48. void Display(unsigned char FirstBit,unsigned char Num)
  49. {
  50.         static unsigned char i=0;
  51.        

  52.         DataPort=0;   //清空數據,防止有交替重影
  53.         LATCH1=1;     //段鎖存
  54.         LATCH1=0;

  55.         DataPort=WeiMa[i+FirstBit]; //取位碼
  56.         LATCH2=1;     //位鎖存
  57.         LATCH2=0;

  58.         DataPort=TempData[i]; //取顯示數據,段碼
  59.         LATCH1=1;     //段鎖存
  60.         LATCH1=0;
  61.        
  62.         i++;
  63.         if(i==Num)
  64.         i=0;


  65. }
  66. /*------------------------------------------------
  67.                                         定時器初始化子程序
  68. ------------------------------------------------*/
  69. void Init_Timer0(void)
  70. {
  71.         TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
  72.         //TH0=0x00;              //給定初值
  73.         //TL0=0x00;
  74.         EA=1;            //總中斷打開
  75.         ET0=1;           //定時器中斷打開
  76.         TR0=1;           //定時器開關打開
  77. }
  78. /*------------------------------------------------
  79.                                 定時器中斷子程序
  80. ------------------------------------------------*/
  81. void Timer0_isr(void) interrupt 1
  82. {
  83.         static unsigned char num;
  84.         TH0=(65536-2000)/256;                  //重新賦值 2ms
  85.         TL0=(65536-2000)%256;

  86.         Display(0,8);
  87.         if(GoFlag)
  88.         {
  89.                 num++;
  90.                 if(num==5)
  91.                 {
  92.                         num=0;
  93.                         msecond++;
  94.                         if (msecond==100)//100進1
  95.                         {
  96.                                 msecond=0;
  97.                                 second++;//秒加1
  98.                                 if(second==100)
  99.                                 second=0;
  100.                         }
  101.                 }
  102.         }
  103. }
  104. /*------------------------------------------------
  105.                         外部中斷0程序
  106. ------------------------------------------------*/
  107. void ISR_INT0(void) interrupt 0
  108. {
  109.         GoFlag=!GoFlag; //利用外部中斷打開和關閉定時標志 用于開始和停止計時
  110. }
  111. /*------------------------------------------------
  112.                         外部中斷1程序
  113. ------------------------------------------------*/
  114. void ISR_INT1(void) interrupt 2
  115. {
  116.         if(GoFlag==0)//停止時才可以清零
  117.         CLR();
  118. }
  119. /*------------------------------------------------
  120.                         數值清零
  121. ------------------------------------------------*/
  122. void CLR(void)
  123. {
  124.         second=0;      //利用外部中斷清零
  125.         msecond=0;
  126. }

復制代碼
回復

使用道具 舉報

地板
ID:111634 發表于 2017-1-8 13:31 | 只看該作者
本帖最后由 zl2168 于 2017-1-8 13:32 編輯

一鍵三用:按第一次,秒表運行計時,最大計時99.9s,超過復0。按第二次,秒表停運行,但保持最后顯示秒數。按第三次,秒表清0。


實例93 99.9秒秒表
Proteus仿真一下,確認有效。
實例95 99.9秒秒表.rar (38.86 KB, 下載次數: 19)

以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,書中電路和程序設計有詳細說明,電路與程序真實可靠可信可行,程序語句條條有注解。若需99.99秒,硬件電路增加一位595軟件程序增加0.01s10ms)計數器,并修改相應計數顯示程序。
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久久 | 麻豆精品国产91久久久久久 | 亚洲欧美精品在线观看 | 精品国产亚洲一区二区三区大结局 | 毛片链接 | 91精品久久久久久久久久入口 | 91色视频在线观看 | 国产精品色 | 一区二区三区在线免费观看 | 艹逼网| 久久成人国产精品 | 99精品99| 天天视频一区二区三区 | 国产免费国产 | 精品日韩一区二区 | 久久久av一区 | 国产福利在线 | 亚洲一区二区久久 | 美女黄视频网站 | 毛片在线免费 | 91玖玖 | 91色在线视频 | 亚洲午夜精品久久久久久app | 亚洲国产成人久久久 | 在线播放国产视频 | 黄色一级片视频 | 欧美国产日韩在线观看 | 毛片免费观看 | 欧美亚洲视频在线观看 | 国产三级在线观看播放 | 国产成人精品一区二区三区四区 | 日韩在线免费视频 | 国产婷婷色一区二区三区 | 久久久久国产一区二区三区 | 亚洲综合色婷婷 | 国产91久久精品一区二区 | 欧美久久久电影 | va精品| 精品国产91| 国产精品久久久久久久久久 | 亚洲精品一区二区 |