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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機0-99秒表程序+電路(精確到0.1秒)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:382145 發(fā)表于 2018-12-8 17:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
大二工科直女,單片機剛?cè)肟樱@是第一個全部由自己完成的處女作啦,在圖書館調(diào)試到腰酸背痛,但還是超級開心!!
我的單片機是淘寶買的學(xué)習(xí)板,所以電路圖直接發(fā)現(xiàn)有的咯
萌新們大家一起加油鴨~~


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned  int
  4. #define uchar unsigned char
  5. sbit key2=P3^0;
  6. sbit key3=P3^1;
  7. sbit key4=P3^2;
  8. sbit key5=P3^3;
  9. sbit DU=P2^6;
  10. sbit WE=P2^7;
  11. uchar secs,sec, msec, usec;
  12. uchar  code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};

  13. void delay(uint z)
  14. {
  15.         uint x,y;
  16.         for(x = z; x > 0; x--)
  17.                 for(y = 114; y > 0 ; y--);                
  18. }

  19. void display(uchar secs,sec,msec)
  20. {
  21.        
  22.         P0 = 0XFF;
  23.         WE = 1;
  24.         P0 = 0XFE;
  25.         WE = 0;
  26.        
  27.         DU = 1;
  28.         P0 = tabel[secs];
  29.         DU = 0;
  30.         delay(5);


  31.         P0 = 0XFF;
  32.         WE = 1;
  33.         P0 = 0XFD;
  34.         WE = 0;
  35.        
  36.         DU = 1;
  37.         P0 = tabel[sec];
  38.         DU = 0;
  39.         delay(5);


  40.         P0 = 0XFF;
  41.         WE = 1;
  42.         P0 = 0XFB;
  43.         WE = 0;
  44.        
  45.         DU = 1;
  46.         P0 = tabel[msec];
  47.         DU = 0;
  48.         delay(5);
  49. }
  50. void dian()
  51. {
  52.            P0 = 0XFF;
  53.         WE = 1;
  54.         P0 = 0XFD;
  55.         WE = 0;
  56.        
  57.         DU = 1;
  58.         P0 = 0x80;
  59.         DU = 0;
  60.         delay(5);
  61. }  

  62. void count()
  63. {
  64.            if(usec == 10)
  65.                         {
  66.                                 usec = 0;
  67.                                 msec++;
  68.                         }                                       
  69.                           if(msec==10)
  70.                           {
  71.                           msec=0;
  72.                           sec++;
  73.                           }
  74.                            if(sec==10)
  75.                           {
  76.                           sec=0;
  77.                           secs++;
  78.                           }
  79.                            if(secs==10)
  80.                         {
  81.                                         TR0=0;
  82.                                         TH0=0XDC;
  83.                                         TL0=0X00;
  84.                                         usec=0;
  85.                                         msec=0;
  86.                                    sec=0;
  87.                                    secs=0;
  88.                                         TR0=1;
  89.             }
  90. }
  91. void timer0() interrupt 1
  92. {
  93.         TH0=0XDC;
  94.         TL0=0X00;
  95.         usec++;
  96.         count();
  97.        
  98. }

  99. void init()
  100. {
  101.    
  102.         TMOD=0X01;
  103.         TH0=0XDC;
  104.         TL0=0X00;
  105.         EA=1;
  106.         ET0=1;
  107.         sec=0;
  108.     msec=0;
  109.         usec=0;
  110.         secs=0;
  111. }

  112. void keyscan()
  113. {
  114.         if(key2==0)//判斷按鍵是否按下
  115.                 {
  116.                         delay(10);//延時10ms用以消抖
  117.                         if(key2==0)//按鍵確實按下
  118.                         {
  119.                                 while(key2==0)//松手檢測
  120.                                 {
  121.                                         display(secs,sec,msec);//還沒松手時,不斷刷新顯示函數(shù),這樣數(shù)碼管就不會不顯示
  122.                                 }
  123.                                 TR0=1;//打開定時器0                       
  124.                
  125.                         }               
  126.                 }
  127.                
  128.                 if(key3==0)//判斷按鍵是否按下
  129.                 {
  130.                         delay(10);//延時10ms用以消抖
  131.                         if(key3==0)//按鍵確實按下
  132.                         {
  133.                                 while(key3==0)//松手檢測
  134.                                 {
  135.                                      TR0=0;//關(guān)閉定時器0
  136.                                 }
  137.                     }       
  138.             }
  139.        if(key4==0)//判斷按鍵是否按下
  140.                 {
  141.                         delay(10);//延時10ms用以消抖
  142.                         if(key4==0)//按鍵確實按下
  143.                         {
  144.                                 while(key4==0)//松手檢測
  145.                                 {
  146.                                      TR0=1;//關(guān)閉定時器0
  147.                                 }
  148.                     }       
  149.             }
  150.       

  151.            if(key5==0)
  152.            {
  153.                         delay(10);//延時10ms消抖
  154.                         if(key5==0)//zero按鍵確實按下
  155.                         {
  156.                                 TR0=0;//關(guān)閉定時器0
  157.                             while(key5==0)//松手檢測
  158.                                    {
  159.                                             display(secs,sec,msec);//還沒松手時,不斷刷新顯示函數(shù),這樣數(shù)碼管就不會不顯示
  160.                                    }
  161.                                 TH0=0; //重新裝初值
  162.                                 TL0=0;
  163.                                 sec=0;//初始化一下變量為默認的數(shù)值(0);
  164.                                 msec=0;
  165.                                 usec=0;
  166.                                 secs=0;
  167.                        
  168.                         }
  169.                        
  170.            }
  171.           
  172. }

  173. void main()
  174. {       
  175.        
  176.         init();
  177.         while(1)
  178.         { dian();
  179.         keyscan();
  180.         display(secs,sec,msec);
  181.         }
  182. }
復(fù)制代碼

所有資料51hei提供下載:
秒表.rar (22.78 KB, 下載次數(shù): 29)
開發(fā)板原理圖V3(1).pdf (152.3 KB, 下載次數(shù): 27)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:443072 發(fā)表于 2018-12-10 10:14 | 只看該作者
厲害了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区三区高清 | 久久在线看 | 国产精品视频在线播放 | 久久久久av | 天天久 | 国产 日韩 欧美 在线 | 一级毛片,一级毛片 | 美国一级黄色片 | 九色在线观看 | 色婷婷在线视频 | 国产综合一区二区 | 午夜精品久久久久久久久久久久久 | 欧美一区二区三区四区视频 | 亚洲成人免费在线观看 | 日韩精品在线播放 | 99热.com| 久久久久国产一级毛片高清网站 | 国产乱码精品一区二区三区中文 | 69堂永久69tangcom | av黄色网| 亚洲综合大片69999 | 玖玖色在线视频 | 国产在线一区观看 | 久久久久久久久久久久久9999 | 亚洲成人一区 | 国产91在线播放 | 国产98色在线 | 日韩 | 成年无码av片在线 | 日韩aⅴ在线观看 | heyzo在线 | 羞羞视频在线观免费观看 | 国产成人精品一区二区三区视频 | 亚洲在线一区 | 少妇午夜一级艳片欧美精品 | 91在线最新 | 色婷婷国产精品综合在线观看 | 一区二区三区四区在线视频 | 五月激情婷婷网 | 福利网址 | 狠狠色狠狠色综合系列 | 二区三区视频 |