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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C5a32s2單片機(jī)超聲波模塊HY-SRF05程序,數(shù)碼管 注釋詳細(xì)顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:699637 發(fā)表于 2020-3-11 13:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /**************************************************************
  2. 功能:超聲波模塊HY-SRF05,數(shù)碼管顯示
  3. 說明:
  4. 硬件:stc12c5a32s2,晶振12MHz
  5.          4組共陽數(shù)碼管
  6.          HY-SRF05超聲波模塊
  7. **************************************************************/
  8. #include<stc12c5a60s2.h>

  9. #define uchar unsigned char
  10. #define uint  unsigned int

  11. #define Num P2                                 //P2口接數(shù)碼管其余腳
  12. #define Seg_Place P3                 //P3口高位來控制哪個管顯示數(shù)字

  13. sbit Trig = P0^0;                         //超聲波模塊觸發(fā)
  14. sbit Echo = P0^1;                         //超聲波模塊回響

  15. //點亮第幾位數(shù)碼管
  16. uint code Seg[]={0x10,0x20,0x40,0x80};

  17. //數(shù)碼管0~9數(shù)字
  18. uint code Table[]={
  19. 0x03,0x9f,0x25,0x0d,0x99,
  20. 0x49,0x41,0x1f,0x01,0x09};

  21. void Timer0Init(void)               
  22. {
  23.         TMOD = 0x01;                //設(shè)置定時器模式
  24.         TH0 = 0;
  25.         TL0 = 0;
  26. }


  27. /***********************************************
  28. 函數(shù)作用:  延時
  29. 說明:          時間不精確,i=1為1毫秒
  30. *************************************************/

  31. void Delay_Ms(uint i)
  32. {
  33.         uint j;
  34.         for(i;i>0;i--)
  35.         {
  36.             for(j=0;j<1002;j++);  
  37.         }  
  38. }

  39. /***********************************************
  40. 函數(shù)作用:  數(shù)碼管顯示的數(shù)字
  41. 說明:         
  42. *************************************************/

  43. void Display_Seg_Num(uchar i)
  44. {
  45.      Num = Table[i];
  46. }

  47. /***********************************************
  48. 函數(shù)作用:  顯示第幾位數(shù)碼管
  49. 說明:         
  50. *************************************************/

  51. void Display_Seg(uchar i)
  52. {
  53.      Seg_Place = Seg[i];
  54. }


  55. /***********************************************
  56. 函數(shù)作用:  超聲波觸發(fā)
  57. 說明:          拉高電平至少10us
  58. *************************************************/
  59. void Trig_Init()
  60. {
  61.          Trig = 0;
  62.          Trig = 1;
  63.          Delay_Ms(1);
  64.          Trig = 0;
  65. }

  66. /***********************************************
  67. 函數(shù)作用:  接收超聲波并計算距離
  68. 說明:          一個機(jī)器周期為1us,12個時鐘周期為1個機(jī)器周期
  69. 注意:          如果這樣寫:time = time * 12 /12 ; time * 12可能會溢出,導(dǎo)致結(jié)果出錯
  70. *************************************************/
  71. uint Distance()
  72. {
  73.         uint time,distance;
  74.         Trig_Init();                           //初始化超聲波觸發(fā)
  75.         
  76.         while(Echo == 0);                   //當(dāng)回響為高電平,打開定時器0
  77.         TR0 = 1;
  78.         while(Echo == 1);                   //當(dāng)回響為低電平,計算時間
  79.         TR0 = 0;
  80.         time = TH0*256 + TL0;           
  81.         time = time /12 * 12;           //time是us級別(實際時間 = 時間 / 晶振頻率 ×12個時鐘周期)
  82.         TH0 = 0;
  83.         TL0 = 0;
  84.         distance = 0.017 * time;          //距離=速度×?xí)r間;(厘米 = 0.017厘米/微秒 × 微秒)
  85.         return distance;                   //返回值 距離
  86. }


  87. /***********************************************
  88. 函數(shù)作用:  數(shù)碼管顯示的數(shù)字
  89. 說明:         
  90. *************************************************/

  91. void main()
  92. {
  93.      uint distance;
  94.         uchar i;
  95.         P3M0 = 0Xf0;
  96.         P3M1 = 0X00;           //P3口推挽輸出,增加電流大小

  97.         Timer0Init();           //初始化定時器0

  98.         while(1)
  99.         {
  100.                 distance = Distance();                                  //將讀出的距離賦值給distance

  101.                 for(i=0;i<50;i++)                                          //顯示距離一段時間
  102.                 {
  103.                         Display_Seg(0);                                  //點亮第一個數(shù)碼管
  104.                         Display_Seg_Num(distance/100);          //顯示厘米的百位
  105.                         Delay_Ms(5);                                          //短延時

  106.                         Display_Seg(1);                                  //點亮第二個數(shù)碼管
  107.                         Display_Seg_Num(distance/10%10);          //顯示厘米的十位
  108.                         Delay_Ms(3);                                          //短延時

  109.                         Display_Seg(2);                                  //點亮第三個數(shù)碼管
  110.                         Display_Seg_Num(distance%10);                  //顯示厘米的個位
  111.                         Delay_Ms(3);                                          //短延時
  112.                 }
  113.         }
  114. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:316613 發(fā)表于 2020-10-27 15:42 | 只看該作者
沒評論嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 福利一区在线观看 | 亚洲欧美视频在线观看 | 久久国产精品视频观看 | 色婷婷精品国产一区二区三区 | 中文字幕高清免费日韩视频在线 | 色就是色欧美 | 欧美成人精品一区二区三区 | 精品国产精品国产偷麻豆 | 久久精品久久久久久 | 丝袜美腿一区二区三区动态图 | 日韩影音 | 亚洲一区二区三区在线播放 | 伊人网综合在线 | 韩日在线视频 | 国产精品视频在 | 久草网址| 欧美成人免费 | 亚洲精品日韩在线 | 国产高清视频在线观看播放 | 黄色大片免费网站 | 国产小视频在线观看 | 日韩视频一区二区 | 日本在线你懂的 | 国产精品无码专区在线观看 | 黄色一级电影免费观看 | ririsao久久精品一区 | 中文字幕在线中文 | 无码一区二区三区视频 | 日韩一级二级片 | 国产欧美在线观看 | 亚洲二区在线 | 最新国产视频 | 欧美一区二区三区在线播放 | 伊人伊人 | 一区二区三区亚洲 | 色黄视频在线 | 在线看亚洲 | 国内91在线 | 亚洲国产一区二区三区 | 亚洲区一区二区 | 亚洲小视频在线观看 |