欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:699637 發(fā)表于 2020-3-11 13:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  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口高位來控制哪個(gè)管顯示數(shù)字

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

  15. //點(diǎn)亮第幾位數(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è)置定時(shí)器模式
  24.         TH0 = 0;
  25.         TL0 = 0;
  26. }


  27. /***********************************************
  28. 函數(shù)作用:  延時(shí)
  29. 說明:          時(shí)間不精確,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ù)作用:  接收超聲波并計(jì)算距離
  68. 說明:          一個(gè)機(jī)器周期為1us,12個(gè)時(shí)鐘周期為1個(gè)機(jī)器周期
  69. 注意:          如果這樣寫:time = time * 12 /12 ; time * 12可能會溢出,導(dǎo)致結(jié)果出錯(cuò)
  70. *************************************************/
  71. uint Distance()
  72. {
  73.         uint time,distance;
  74.         Trig_Init();                           //初始化超聲波觸發(fā)
  75.         
  76.         while(Echo == 0);                   //當(dāng)回響為高電平,打開定時(shí)器0
  77.         TR0 = 1;
  78.         while(Echo == 1);                   //當(dāng)回響為低電平,計(jì)算時(shí)間
  79.         TR0 = 0;
  80.         time = TH0*256 + TL0;           
  81.         time = time /12 * 12;           //time是us級別(實(shí)際時(shí)間 = 時(shí)間 / 晶振頻率 ×12個(gè)時(shí)鐘周期)
  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();           //初始化定時(shí)器0

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

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

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表