亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機超聲波測距資料

[復制鏈接]
跳轉到指定樓層
樓主
ID:145423 發表于 2016-10-31 21:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
自己動手下載吧:
超聲波測距 main.rar (1.11 KB, 下載次數: 22)

  1. /*
  2. 超聲波測距
  3. 8-29 HC-SR04模塊用有-2cm的誤差,
  4.                                         但是US-015模塊是正確的

  5. 編程思路
  6.         測距動作
  7.                 開20us的Trig
  8.                 等待Echo上升
  9.                 一旦上升開定時器
  10.                 Echo下降時關定時器
  11.                 輸出定時器的值
  12.         主程序
  13.                 循環測距動作
  14.                 間隔1s
  15.         定時器中斷
  16.                 復位

  17. 準確性
  18.         與計算公式有關
  19.         與被測物體的表面積大小有關
  20.         與角度有關
  21. */
  22. #include <stdio.h>
  23. #include <intrins.h>
  24. #include <math.h>
  25. #include <STC12C5A60S2.H>

  26. sbit hcsr04_trig = P2^0;//發
  27. sbit hcsr04_echo = P3^2;//收 INT0
  28. sbit hcsr04_test = P2^1;//測試

  29. unsigned char data hcsr04_tl        = 0;
  30. unsigned char data hcsr04_th        = 0;
  31. unsigned int        data hcsr04_s        = 0;

  32. void Delay20us()                //@11.0592MHz
  33. {
  34.         unsigned char i;

  35.         _nop_();
  36.         i = 52;
  37.         while (--i);
  38. }

  39. void Delay1000ms()                //@11.0592MHz
  40. {
  41.         unsigned char i, j, k;

  42.         i = 43;
  43.         j = 6;
  44.         k = 203;
  45.         do
  46.         {
  47.                 do
  48.                 {
  49.                         while (--k);
  50.                 } while (--j);
  51.         } while (--i);
  52. }

  53. void UART_init()
  54. {
  55.         PCON        = 0x00;
  56.         SCON        = 0x50;//0101 0000
  57.         TMOD        |= 0x20 ;
  58.         TH1                = 0xFD;//9600bps
  59.         TL1                = 0xFD;
  60.         ET1                = 0;
  61.         ES                = 0;//1時開串口中斷
  62.         TR1                = 1;

  63.         TI                 = 1;
  64.         puts("HC-SR04 \t--------");
  65.         Delay20us();        
  66.         puts("UART_init \t-");
  67.         Delay20us();        
  68. }

  69. void t0_init()
  70. {
  71.         TMOD         |= 0x01;//T0工作方式1------16位
  72.         TH0         = 0x00;
  73.         TL0         = 0x00;        
  74.         ET0         = 1;//T0中斷
  75.         EA                 = 1;        
  76.         
  77.         puts("t0_init \t-");
  78.         Delay20us();        
  79. }

  80. void t0ser() interrupt 1
  81. {
  82.         TH0 = 0;
  83.         TL0 = 0;
  84. }

  85. /*
  86. HC-SR04 模塊工作原理
  87. 1.Trig觸發測距 >=10us 高電平
  88. 2.模塊自動發送8個40kHz方波
  89.         自動檢測是否有信號返回
  90. 3.當有信號返回時,
  91. */
  92. void hcsr04()
  93. {        
  94.         TR0 = 0;
  95.         TH0        = 0;
  96.         TL0 = 0;
  97.         
  98.         hcsr04_trig = 1;
  99.         Delay20us();
  100.         hcsr04_trig = 0;
  101.         Delay20us();
  102.         while(!hcsr04_echo);        
  103.         TR0 = 1;
  104.         while(hcsr04_echo);
  105.         TR0 = 0;
  106.         
  107.         // hcsr04_s = (TH0*256+TL0)/58;        
  108.         hcsr04_s =(TH0*256+TL0+59)*0.0172;
  109. }

  110. void main(void)
  111. {        
  112.         UART_init();        
  113.         t0_init();        

  114.         while(1)
  115.         {        
  116.                 hcsr04();
  117.                 printf("MAIN \thcsr04_s = %d\n",
  118.                         hcsr04_s);        
  119.                 Delay1000ms();                                
  120.         }        
  121. }
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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