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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機9.9 秒計時器proteus仿真設計 用定時器T0實現 帶源程序原理圖

[復制鏈接]
跳轉到指定樓層
樓主
一個51單片機9.9 秒計時器proteus仿真設計
開始時,顯示"00",第 1 次按下 BY1 后就開始計時。第 2 次按 BY1 后,計時
停止。 第3次按BY1后,計時歸零。
下面是仿真原理圖:



單片機源程序:
  1. /********************************************************************
  2. 51黑電子論壇
  3. *********************************************************************/
  4. #include<reg52.h>                 //庫文件
  5. #define uchar unsigned char//宏定義無符號字符型
  6. #define uint unsigned int  //宏定義無符號整型
  7. /********************************************************************
  8.                             初始定義
  9. *********************************************************************/
  10. code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數碼管字跟
  11. uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端
  12. uchar sec; //定義計數值,每過1/10 秒,sec 加一
  13. uchar keycnt=0;//按下次數值
  14. uint tcnt; //鍵值判斷
  15. sbit P3_0=P3^0;
  16. /********************************************************************
  17.                             延時函數
  18. *********************************************************************/
  19. void delay(uchar t)
  20. {
  21.   uchar i,j;
  22.    for(i=0;i<t;i++)
  23.    {
  24.             for(j=13;j>0;j--);
  25.          { ;
  26.          }
  27.    }
  28. }

  29. /********************************************************************
  30.                             顯示函數
  31. *********************************************************************/        
  32. void Led(int date) //顯示函數
  33. {
  34. /*****************數據轉換*****************************/
  35. uint z,x,c,v;
  36.   z=date/1000;                         //求千位
  37.   x=date%1000/100;                 //求百位
  38.   c=date%100/10;                 //求十位
  39.   v=date%10;                         //求個位

  40.       P2=0XFF;
  41.           P0=seg7code[z];
  42.           P2=wei[0];
  43.           delay(80);
  44.           P2=0XFF;  
  45.       P0=seg7code[x];
  46.           P2=wei[1];
  47.           delay(80);
  48.           P2=0XFF;  
  49.              P0=seg7code[c];
  50.           P2=wei[2];
  51.           delay(80);
  52.           P2=0XFF;  
  53.       P0=seg7code[v];
  54.           P2=wei[3];
  55.           delay(80);
  56.           P2=0XFF;
  57. }
  58. /********************************************************************
  59.                             按鍵掃描函數
  60. *********************************************************************/
  61. void KEY() //按鍵掃描程序
  62. {
  63. uchar i,j;
  64. if(P3_0==0)
  65.         {
  66.         delay(20);
  67.         if(P3_0==0)
  68.                 {
  69.                         keycnt++;
  70. /********************************************************************
  71.                             按下次數判斷函數
  72. *********************************************************************/
  73. switch(keycnt) //按下次數判斷
  74.         {
  75.         case 1: //第一次按下
  76.         TH0=0x06; //對TH0 TL0 賦值
  77.         TL0=0x06;
  78.         TR0=1; //開始定時
  79.         break;
  80.         case 2: //第二次按下
  81.         TR0=0; //定時結束
  82.         break;
  83.         case 3: //第三次按下
  84.         keycnt=0; //重新開始判斷鍵值
  85.         sec=0; //計數重新從零開始
  86.         break;
  87.         }
  88.         while(P3_0==0);
  89.                 }
  90.         }
  91. }
  92. /********************************************************************
  93.                             定時中斷服務函數
  94. *********************************************************************/
  95. void t0(void) interrupt 1 using 0 //定時中斷服務函數
  96. {
  97.         tcnt++; //每過250ust tcnt 加一
  98.         if(tcnt==400) //計滿400 次(1/10 秒)時
  99.         {
  100.                 tcnt=0; //重新再計
  101.                 sec++;
  102.                 if(sec==100) //定時10 秒,在從零開始計時
  103.                 {
  104.                         sec=0;
  105.                 }
  106.         }
  107. }

  108. /********************************************************************
  109.                             主函數
  110. *********************************************************************/
  111. void main()
  112. {
  113.         TMOD=0x02; //定時器工作在方式2
  114.         ET0=1;
  115.         EA=1;
  116.         sec=0;
  117.         while(1)
  118.         {
  119.                 KEY();
  120.                 Led(sec);
  121.         }
  122. }               

  123.         
  124. /********************************************************************
  125.                               結束
  126. *********************************************************************/
復制代碼



9.9 秒計時器仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個單片機仿真,全部下載后找到第010個項目即可):
http://www.zg4o1577.cn/bbs/dpj-56298-1.html

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

使用道具 舉報

沙發
ID:199477 發表于 2017-5-11 11:51 | 只看該作者
挺好的
回復

使用道具 舉報

板凳
ID:209425 發表于 2017-6-9 09:13 | 只看該作者
怎么把四位的數碼管改成兩個的?求問~
回復

使用道具 舉報

地板
ID:209425 發表于 2017-6-9 09:23 | 只看該作者
還想請教 你這用的是共陽吧,怎么換成共陰呢?
回復

使用道具 舉報

5#
ID:210302 發表于 2017-6-12 01:39 | 只看該作者
特別好
回復

使用道具 舉報

6#
ID:210302 發表于 2017-6-12 01:40 | 只看該作者
和我們剛學過的很像
回復

使用道具 舉報

7#
ID:66679 發表于 2020-4-21 20:52 | 只看該作者
lomassun 發表于 2017-6-9 09:13
怎么把四位的數碼管改成兩個的?求問~

直接把前兩個數碼管去掉,把位選碼去掉兩個,顯示程序前面兩位去掉就可以。本來就只用顯示9.9兩位。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二区 | 日韩福利片 | 亚洲免费在线观看av | 亚洲精品福利视频 | 男人的天堂avav | 久久久久久综合 | 国产亚洲精品久久久久动 | 99久久久国产精品免费消防器 | 涩涩视频在线观看 | 中文字幕在线一 | 久久亚洲一区二区三 | 久久久天堂| 国产精品久久久久久久久久尿 | 国产1区 | 综合久久综合久久 | 精品一二区 | 久久久av | 一级毛片大全免费播放 | 婷婷色国产偷v国产偷v小说 | 国产精品视频网站 | 蜜桃在线一区二区三区 | 欧美电影免费网站 | 国产精品久久久久免费 | 激情久久久久 | 97精品超碰一区二区三区 | 成年人黄色一级片 | 日韩黄| 一级午夜aaa免费看三区 | 成人免费视频网站在线观看 | 国产成人小视频 | 久久久精品一区二区 | 欧美久久大片 | 二区三区视频 | 欧美自拍网站 | 日韩av中文 | 亚洲一区二区三区免费在线观看 | 国产精品毛片久久久久久久 | 99热精品久久 | 欧美一区2区三区4区公司二百 | 成年人在线观看 | 免费观看日韩精品 |