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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機 vb上位機程序(超聲波測距,溫度顯示等)

  [復制鏈接]
跳轉到指定樓層
樓主
小弟最近在做超聲波測距的上位機顯示,上位機用VB顯示,找了好長時間沒有找到設計資料,索性x了一套,有視頻講解和源程序的那種,再次跟大家分享一下。

vb上機位及源碼:


單片機源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned  char
  3. #define uint  unsigned  int  

  4. sbit  Echo = P2^0;                            // 接Echo端
  5. sbit  Trig = P2^1;                                // 接Trig端

  6. bit flag =0;                                        // 定時器0是否溢出的標志,1表示溢出
  7. bit enable=0;                                        // 用于判斷是否允許測量,1表示允許

  8. /***********************************
  9.    函數:void InitUart()
  10. ----------------------
  11.    說明:對串口進行初始化
  12.    參數:無
  13. 返回值:無
  14. ***********************************/
  15. void InitUart()
  16. {
  17.     TMOD = 0x21;                                // 高4位(定時器1)用于串口,低4位(定時器0)用于超聲波計時
  18.         SCON = 0x50;       
  19.         TH1  = 0xFD;                                // 波特率 9600
  20.         TL1  = 0xFD;
  21.         ES   = 1;                                        // 允許串口中斷
  22.         ET0  = 1;                                        // 允許定時器0中斷
  23.         TR1  = 1;                                        // 開啟定時器1
  24.         EA   = 1;                                        // 開啟總中斷
  25. }


  26. /***********************************
  27.    函數:void DelayMs(uint ms)
  28. ----------------------
  29.    說明:毫秒級程序延時
  30.    參數:ms代表要延時的毫秒數
  31. 返回值:無
  32. ***********************************/
  33. void DelayMs(uint ms)
  34. {
  35.         uint x,y;
  36.         for(x=ms;x>0;x--)
  37.                 for(y=110;y>0;y--);
  38. }


  39. /***********************************
  40.    函數:void  StartModule()
  41. ---------------------------
  42.    說明:啟動超聲波模塊
  43.    參數:無
  44. 返回值:無
  45. ***********************************/
  46. void  StartModule()
  47. {
  48.         Trig=1;
  49.         DelayMs(1);
  50.         Trig=0;
  51. }


  52. /***********************************
  53.    函數:uint Conut(void)
  54. ------------------------
  55.    說明:計算測到的距離
  56.    參數:無
  57. 返回值:測得的距離
  58. ***********************************/
  59. uint Conut(void)
  60. {
  61.         uint time;                                               // 用于記錄測得的時間
  62.         uint ss;                                                // 用于記錄測得的距離
  63.         time = (TH0*256+TL0)*1.09;                // 總時間               
  64.         TH0=0;
  65.         TL0=0;
  66.         if(flag==1)                                                   // 如果超出測量距離,則不傳輸數據
  67.         {
  68.                 flag=0;
  69.                 ss=0;
  70.         }
  71.         else
  72.         {
  73.                 ss=time*1.7/100;                           // 空氣中聲音的速度是340m/s
  74.         }
  75.         return ss;
  76. }


  77. /***********************************
  78.    函數:void send(uint dat)
  79. ---------------------------
  80.    說明:將測得的距離通過串口發送出去
  81.    參數:dat是測得的距離
  82. 返回值:無
  83. ***********************************/       
  84. void Send(uint dat)
  85. {
  86.         SBUF=(dat/100)+ 48;                        // 發送 百 位
  87.         while(!TI);
  88.         TI=0;
  89.         SBUF=(dat%100/10)+48;                // 發送 十 位
  90.         while(!TI);
  91.         TI=0;
  92.         SBUF=(dat%10)+48;                        // 發送 個 位
  93.         while(!TI);
  94.         TI=0;
  95. }



  96. /***********************************
  97. 函數:void main(void)
  98. ----------------------
  99.    說明:主函數
  100.    參數:無
  101. 返回值:無
  102. ***********************************/
  103. void main(void)
  104. {  
  105.         uint ss;                                        // 記錄測量到的距離
  106.         InitUart();
  107.         while(1)
  108.         {
  109.                 if(enable==1)
  110.                 {
  111.                         StartModule();
  112.                         while(!Echo);                // 當RX為零時等待
  113.                         TR0=1;                            // 開啟計數
  114.                         while(Echo);                // 當RX為1計數并等待
  115.                         TR0=0;                                // 關閉計數
  116.                         ss=Conut();                        // 計算
  117.                         Send(ss);                        // 將計算的值通過串口發送出去
  118.                         DelayMs(800);
  119.                 }
  120.         }

  121. }  


  122. /***********************************
  123. 函數:void Inter() interrupt 4
  124. ------------------------------
  125.    說明:串口中斷處理
  126.    參數:無
  127. 返回值:無
  128. ***********************************/
  129. void Inter() interrupt 4
  130. {
  131.         if(RI==1)
  132.         {
  133.                 RI=0;
  134.                 if(SBUF == 0x01)
  135.                 {
  136.                         enable = 1;
  137.                 }
  138.                 if(SBUF == 0x02)
  139.                 {
  140.                         enable = 0;
  141.                 }
  142.         }       
  143. }


  144. /***********************************
  145. 函數:void zd0() interrupt 1
  146. ------------------------------
  147.    說明:T0中斷用來計數器溢出,超過測距范圍則置flag為1
  148.    參數:無
  149. 返回值:無
  150. ***********************************/
  151. void zd0() interrupt 1
  152. {
  153.         flag=1;                               
  154. }            
復制代碼

所有資料51hei提供下載:
單片機程序.zip (40.35 KB, 下載次數: 53)
VB上位機程序.zip (8.04 KB, 下載次數: 69)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:482017 發表于 2019-4-26 22:49 | 只看該作者
沒有人頂一下嗎 這么好的精華帖

評分

參與人數 1黑幣 +8 收起 理由
zqy181818 + 8

查看全部評分

回復

使用道具 舉報

板凳
ID:484435 發表于 2019-4-27 11:01 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

地板
ID:51321 發表于 2019-4-28 12:28 | 只看該作者

感謝樓主分享
回復

使用道具 舉報

5#
ID:431514 發表于 2019-4-29 07:27 | 只看該作者
沒有人頂一下嗎 這么好的精華帖
回復

使用道具 舉報

6#
ID:405273 發表于 2019-5-28 10:49 | 只看該作者
這個程序不行啊
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
8#
無效樓層,該帖已經被刪除
9#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表