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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5241|回復: 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网站在线看 | 精品免费视频 | 亚洲在线视频 | 久久久久久国产 | 欧洲亚洲一区二区三区 | av网站在线免费观看 | www.日本国产| 午夜精品福利视频 | 国产高清一二三区 | 成人二区| 男女午夜免费视频 | 精品欧美一区免费观看α√ | 日本高清精品 | 超碰在线97国产 | 国产乱码精品一区二区三区中文 | 国产欧美在线 | 国产精品影视在线观看 | 18gay男同69亚洲网站 | 羞羞午夜 | 国产精品日韩在线观看一区二区 | 成人免费视频网站在线看 | 色五月激情五月 | 蜜桃视频在线观看免费视频网站www | 国产日韩精品一区二区 | 中文字幕日韩欧美一区二区三区 | 一道本不卡视频 | 天天操天天舔 | 亚洲综合小视频 | 91在线资源 | 亚洲精品视频在线观看视频 | 精品在线看|