找回密碼
         注冊會員
        搜索附件  
        MCU資訊論壇 附件中心 單片機電路論壇 外圍器件論壇 超聲波模塊參考.pdf

        熱門下載

        附件中心&附件聚合2.0
        For Discuz! X2.5 © hgcad.com

        超聲波模塊參考.pdf

         

        超聲波的工作原理與超聲波模塊資料:
        應群友要求分享超聲波的工作原理與超聲波模塊資料
        超聲波例程
        1. //************************************************************************************
        2. //URM37V3.0超聲波模塊是通過串口通訊的,也可以設置成PWM輸出模式及開關量輸出模式,
        3. //這些都是通過串口操作,具體詳情請到http://www.dfrobot.cn下載使用手冊查看!
        4. //本程序是使用DF-URFV1.0作控制板,串口讀取方式(比較實用、簡單),使用1602LCD顯示,
        5. //使用MODE及+/L兩個按鍵作功能切換和舵機角度控制,具體程序如下:
        6. //************************************************************************************

        7. //***********************************URM37_51DEMO.H*******************************

        8. #include<AT89X51.H>
        9. #include<INTRINS.H>

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


        12. #define LCD_E P0_7 //使能線,R/W = 0,E電平低有效;R/W = 1,E電平高有效
        13. #define LCD_RW P0_6 //'1'讀操作,'0'寫操作
        14. #define LCD_RS P0_5 //'0'操作指令寄存器,'1'操作數據寄存器
        15. #define LED P0_4 //LCD背光

        16. #define ModeKey P0_3 //模式選擇按鈕

        17. #define TemperKey P0_2

        18. #define LCD_DATA P2 //8數據線


        19. //*********************************************************************************

        20. //***********************************HD44780.C*************************************

        21. #include"URM37_51demo.H"

        22. void Delay_ms(uchar ms)
        23. {
        24. uchar i;
        25. for(;ms>0;ms--)
        26. for(i=250;i>0;i--)
        27. {

        28. _nop_();
        29. _nop_();
        30. }
        31. }

        32. void LCD_WRITE_COMM(uchar comm) //寫命令
        33. {


        34. LCD_RS = 0;
        35. LCD_RW = 0;

        36. LCD_E = 1;
        37. LCD_DATA = comm; //寫8位
        38. LCD_E = 0;


        39. Delay_ms(2);
        40. }

        41. void LCD_WRITE_DATA(uchar Data)//寫數據
        42. {

        43. LCD_RS = 1;
        44. LCD_RW = 0;

        45. LCD_E = 1;
        46. LCD_DATA = Data; //寫8位
        47. LCD_E = 0;


        48. Delay_ms(2);
        49. }



        50. void LCD_Init(void)
        51. {
        52. Delay_ms(15);


        53. LCD_RS = 0;
        54. LCD_RW = 0;

        55. LCD_E = 1;
        56. LCD_DATA = 0x00; //上電初使
        57. LCD_E = 0;
        58. Delay_ms(5);

        59. LCD_E = 1;
        60. LCD_E = 0;
        61. Delay_ms(5);


        62. LCD_E = 1;
        63. LCD_E = 0;
        64. Delay_ms(5);


        65. LCD_E = 1;
        66. LCD_DATA = 0x02; //2行顯示,5×7點陣
        67. LCD_E = 0;
        68. Delay_ms(5);

        69. LCD_WRITE_COMM(0x0c); //開顯示,開光標,開字符閃爍
        70. LCD_WRITE_COMM(0x06); //顯示后自動加一,光標移動
        71. LCD_WRITE_COMM(0x01); //清顯示
        72. LCD_WRITE_COMM(0x38); //選擇8線接口方式,2行顯示,5×7點陣
        73. LCD_WRITE_COMM(0x80); //

        74. }

        75. //******************************************************************************

        76. //*****************************URM37_COM.C***********************************

        77. #include"URM37_51demo.H"

        78. extern void LCD_Init(void);
        79. extern void LCD_WRITE_DATA(uchar);
        80. extern void LCD_WRITE_COMM(uchar);
        81. extern void Delay_ms(uchar);


        82. uchar Data_buf[4];
        83. uchar Send_buf[4];
        84. uchar Receive_buf[4];
        85. uchar Temper_Oder[4]={0x11,0x00,0x00,0x11};//讀溫度命令
        86. uchar Du_dec[7]={29,65,100,135,170,206,241};//舵機角度
        87. uchar time,sum,Mode,Mode_flag;

        88. void MCU_Initi(void) //MCU初始化
        89. {
        90. TMOD = 0X21;//波特率發生器T1工作在模式2上
        91. SCON = 0X50;//設串口工作方式1,收發狀態
        92. PCON = 0X00;//波特率不加倍
        93. TL1 = 0XFD;//設波特率為9600
        94. TH1 = 0XFD;
        95. TR1 = 1; //開
        96. }

        97. void LCD_logo(void) //LOGO顯示
        98. {
        99. uchar i;
        100. uchar LOGO[]=" URM37 V3.0 ";
        101. i = 0;

        102. LCD_WRITE_COMM(0x80);
        103. while(LOGO!=NULL)
        104. {
        105. LCD_WRITE_DATA(LOGO);
        106. i++;
        107. }
        108. }



        109. void Receive(uchar *p)//串口接收
        110. {
        111. uchar i,n=100;
        112. for(i=0;i<4;i++)
        113. {
        114. while(RI==0); //等待串行中斷
        115. *(p+i)=SBUF;
        116. RI = 0; //清TI,必須軟件清除
        117. while(--n); //延時

        118. }

        119. }


        120. void Send_com(uchar *p)//串口發送
        121. {
        122. uchar i,n=100;
        123. for(i=0;i<4;i++)
        124. {

        125. SBUF = *(p+i);
        126. while(TI==0); //等待串行中斷
        127. TI = 0; //清TI,必須軟件清除
        128. while(--n); //延時

        129. }


        130. }


        131. uchar Efficacy(uchar x)//效驗和
        132. {
        133. uchar i,temp=0;

        134. if(x==1)
        135. {
        136. for(i=0;i<3;i++)
        137. {
        138. temp=temp+Send_buf;//發送效驗和
        139. }
        140. }
        141. if(x==2)
        142. {
        143. for(i=0;i<3;i++)
        144. {
        145. temp=temp+Receive_buf;//接收效驗和
        146. }
        147. }
        148. return temp;
        149. }


        150. void HEX_TO_DEC(uint source,uchar * object)//16進制轉10進制
        151. {
        152. uchar i;

        153. for(i=0;i<4;i++)
        154. {
        155. *(object+i) = source % 10;
        156. source/=10;
        157. }
        158. return;
        159. }


        160. void Dis_Temper(void)//溫度顯示
        161. {
        162. uchar i;
        163. uchar Temp;
        164. uchar x;
        165. uchar y;
        166. uchar TemperData;
        167. uchar Dis[]="Temperature: ";
        168. i = 0;

        169. LCD_WRITE_COMM(0xc0);
        170. while(Dis!=NULL)
        171. {
        172. LCD_WRITE_DATA(Dis);
        173. i++;
        174. }

        175. x=Receive_buf[1]<<4;
        176. y=Receive_buf[2]>>4;
        177. TemperData = ((x&0xf0)|(y&0x0f))&0xff;
        178. Temp = TemperData/10;
        179. LCD_WRITE_DATA(0x30+Temp);
        180. Temp= TemperData%10;
        181. LCD_WRITE_DATA(0x30+Temp);
        182. LCD_WRITE_DATA('C');

        183. }


        184. void Dis_Distance(void)//角度與距離顯示
        185. {
        186. uchar i;
        187. uchar tem;
        188. uchar temp;
        189. uchar Data[4];
        190. uchar du[]="Du: ";
        191. uchar Distance[]="D: ";
        192. i=0;
        193. LCD_WRITE_COMM(0xc0);
        194. while(du!=NULL)
        195. {
        196. LCD_WRITE_DATA(du);
        197. i++;
        198. }
        199. tem=Du_dec[Mode]/100;
        200. LCD_WRITE_DATA(0x30+tem);
        201. tem=(Du_dec[Mode]%100)/10;
        202. LCD_WRITE_DATA(0x30+tem);
        203. tem=(Du_dec[Mode]%100)%10;
        204. LCD_WRITE_DATA(0x30+tem);
        205. LCD_WRITE_DATA(0x20);

        206. i=0;
        207. while(Distance!=NULL)
        208. {
        209. LCD_WRITE_DATA(Distance);
        210. i++;
        211. }


        212. tem=Receive_buf[1];
        213. temp=(uchar)(((tem<<8)&0xff00)|Receive_buf[2]);
        214. HEX_TO_DEC(temp,Data);
        215. LCD_WRITE_DATA(0x30+Data[2]);//米
        216. LCD_WRITE_DATA('.');
        217. LCD_WRITE_DATA(0x30+Data[1]);//分米
        218. LCD_WRITE_DATA(0x30+Data[0]);//厘米
        219. LCD_WRITE_DATA('m');

        220. }


        221. void main(void)
        222. {
        223. uchar i;
        224. uchar Mod,flag; //模式記數
        225. MCU_Initi();
        226. LCD_Init();
        227. LCD_logo();

        228. Mode_flag=0;
        229. sum=0;
        230. Mode = 0;
        231. flag = 0;
        232. Mod = 0;

        233. while(1)
        234. {

        235. LED = 0;//背光亮
        236. TemperKey = 1;
        237. if(TemperKey == 0)//按鍵舵機角度控制
        238. {
        239. Delay_ms(10);
        240. if(TemperKey == 0)
        241. {
        242. if(Mode==0)
        243. flag=0;
        244. if(Mode==6)
        245. flag=1;
        246. if(flag==0)
        247. Mode++;
        248. else Mode--;
        249. }
        250. while(!TemperKey);
        251. }

        252. ModeKey = 1;
        253. if(ModeKey == 0)//功能切換模式
        254. {
        255. Delay_ms(10);
        256. if(ModeKey == 0)
        257. {
        258. if(Mod == 1)
        259. Mod = 0;
        260. else
        261. Mod++;
        262. }
        263. while(!ModeKey);
        264. }

        265. switch(Mod)
        266. {
        267. case 0: for(i=0;i<4;i++)//溫度讀取
        268. Send_buf=Temper_Oder;

        269. Send_com(Send_buf);
        270. Receive(Receive_buf);
        271. Dis_Temper();
        272. Delay_ms(100);
        273. break;

        274. case 1: Send_buf[0]=0x22;//距離讀取
        275. Send_buf[1]=0x05+Mode*6;
        276. Send_buf[2]=0x00;
        277. Send_buf[3]=Efficacy(1);
        278. Delay_ms(50);
        279. Send_com(Send_buf);
        280. Receive(Receive_buf);
        281. Dis_Distance();
        282. Delay_ms(50);
        283. break;


        284. default : break;
        285. }

        286. }

        287. }


        288. //************************************************************************
        復制代碼
        超聲波模塊資料


        非常之感謝感謝機器人


        jaychou9456于2010-12-12 16:18補充以下內容:
        大哥  你真牛X
        非常之感謝感謝機器人


        jaychou9456于2010-12-12 16:18補充以下內容:
        大哥  你真牛X



        風吹葉動于2011-1-1 18:34補充以下內容:
        非常之感謝感謝機器人


        jaychou9456于2010-12-12 16:18補充以下內容:
        大哥  你真牛X



        風吹葉動于2011-1-1 18:34補充以下內容:
        非常之感謝感謝機器人


        jaychou9456于2010-12-12 16:18補充以下內容:
        大哥  你真牛X



        風吹葉動于2011-1-1 18:35補充以下內容:
        非常之感謝感謝機器人


        jaychou9456于2010-12-12 16:18補充以下內容:
        大哥  你真牛X
        剛做了,可惜沒錢,不然可以參考下

        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網站地圖

        GMT+8, 2025-3-18 11:25 , Processed in 0.036964 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2024 Discuz! Team.

        返回頂部
        久久久精品视频免费观看| 久久精品视屏| 国产在线观看一区精品| 国产亚洲精品AA片在线观看不加载 | 久久综合精品国产二区无码| 精品无码久久久久久午夜| 精品四虎免费观看国产高清午夜| 99精品视频在线观看婷| 亚洲AV日韩精品一区二区三区| 久久精品无码一区二区无码| 美女露胸和尿口的视频动态图| 国产成人精品免费久久久久| 国产精品国产三级在线专区 | 国产精品白浆在线观看免费| 国产精品综合专区中文字幕免费播放 | 免费视频精品一区二区| 日韩精品少妇无码受不了| 久久青草国产精品一区| 日本精品久久久久影院日本| 久久精品亚洲日本波多野结衣| 99R在线精品视频在线播放| 一本精品中文字幕在线| 91精品在线看| 日韩蜜芽精品视频在线观看 | 国产内地精品毛片视频| 亚洲精品国产成人片| 日本精品久久久久中文字幕| 日韩AV毛片精品久久久| 国产精品186在线观看在线播放| 国产内地精品毛片视频| 久久国产精品无码一区二区三区| 国产成人久久精品麻豆一区| 亚洲码国产精品高潮在线| 成人精品一区二区三区免费看 | 香蕉国产精品频视| 亚洲精品无码AV人在线播放| 国产精品色视频ⅹxxx | 国产精品亚洲综合专区片高清久久久 | 免费人成黄页网站在线观看| 911亚洲精品国产自产| 色欲久久久天天天综合网精品|