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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機超聲波測距原理圖及源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:73526 發表于 2015-2-11 02:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 wangming 于 2015-2-11 02:07 編輯

         這是一款單片機超聲波測距原理圖,這款單片機超聲波測距板電路簡單,制作容易,無需進行調試,電路焊焊接好后,下裝程序后即可工作。


超聲波測距原理的詳細解釋詳見:http://www.zg4o1577.cn/mcu/2294.html

  1. //////////////////////////////////////////////////////////////////////////////////////

  2. //             AT89C2051單片機超聲波測距程序               //

  3. //                            編寫:yuan_jia                              //

  4. //                             QQ:111716                                //

  5. //                               2014年7月                                 //

  6. //                             晶振:12MH                                //

  7. ////////////////////////////////////////////////////////////////////////////////////

  8. #include <REG2051.H>
  9. #define k1 P3_4
  10. #define csbout P3_5 //超聲波發送
  11. #define csbint P3_7 //超聲波接收
  12. #define csbc=0.034
  13. #define bg P3_3
  14. unsigned char csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,jpjs;//顯示標識
  15. unsigned char convert[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段碼
  16. unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
  17. bit cl;

  18. void csbcj();
  19. void delay(j); //延時函數
  20. void scanLED(); //顯示函數
  21. void timeToBuffer(); //顯示轉換函數
  22. void keyscan();
  23. void k1cl();
  24. void k2cl();
  25. void k3cl();
  26. void k4cl();
  27. void offmsd();


  28. void main() //主函數
  29. {
  30. EA=1; //開中斷
  31. TMOD=0x11; //設定時器0為計數,設定時器1定時
  32. ET0=1; //定時器0中斷允許
  33. ET1=1; //定時器1中斷允許
  34. TH0=0x00;
  35. TL0=0x00;
  36. TH1=0x9E;
  37. TL1=0x57;
  38. csbds=0;
  39. csbint=1;
  40. csbout=1;
  41. cl=0;
  42. ōpto=0xff;
  43. jpjs=0;
  44. sj1=45;
  45. sj2=200;
  46. sj3=400;
  47. k4cl();
  48. TR1=1;
  49. while(1)
  50. {
  51. keyscan();
  52. if(jpjs<1)
  53. {
  54. csbcj();
  55. if(s>sj3)
  56. {
  57. buffer[2]=0x76;
  58. buffer[1]=0x76;
  59. buffer[0]=0x76;
  60. }
  61. else if(s<sj1)
  62. {
  63. buffer[2]=0x40;
  64. buffer[1]=0x40;
  65. buffer[0]=0x40;
  66. }
  67. else timeToBuffer();
  68. }
  69. else timeToBuffer(); //將值轉換成LED段碼
  70. offmsd();
  71. scanLED(); //顯示函數
  72. if(s<sj2)
  73. bg=0;
  74. bg=1;
  75. }
  76. }


  77. void scanLED() //顯示功能模塊
  78. {
  79. digit=0x04;
  80. for( i=0; i<3; i++) //3位數顯示
  81. {
  82. P3=~digit&opto; //依次顯示各位數
  83. P1=~buffer; //顯示數據送P1口
  84. delay(20); //延時處理
  85. P1=0xff; //P1口置高電平(關閉)
  86. if((P3&0x10)==0) //判斷3位是否顯示完
  87. key=0;
  88. digit>>=1; //循環右移1位
  89. }
  90. }

  91. void timeToBuffer() //轉換段碼功能模塊
  92. {
  93. xm0=s/100;
  94. xm1=(s-100*xm0)/10;
  95. xm2=s-100*xm0-10*xm1;
  96. buffer[2]=convert[xm2];
  97. buffer[1]=convert[xm1];
  98. buffer[0]=convert[xm0];
  99. }

  100. void delay(i)
  101. {
  102. while(--i);
  103. }

  104. void timer1int (void) interrupt 3 using 2
  105. {
  106. TH1=0x9E;
  107. TL1=0x57;
  108. csbds++;
  109. if(csbds>=40)
  110. {
  111. csbds=0;
  112. cl=1;
  113. }
  114. }

  115. void csbcj()
  116. {
  117. if(cl==1)
  118. {
  119. TR1=0;
  120. TH0=0x00;
  121. TL0=0x00;
  122. i=10;
  123. while(i--)
  124. {
  125. csbout=!csbout;
  126. }
  127. TR0=1;
  128. i=mqs; //盲區
  129. while(i--)
  130. {
  131. }
  132. i=0;
  133. while(csbint)
  134. {
  135. i++;
  136. if(i>=2450) //上限值
  137. csbint=0;
  138. }
  139. TR0=0;
  140. TH1=0x9E;
  141. TL1=0x57;
  142. t=TH0;
  143. t=t*256+TL0;
  144. s=t*csbc/2;
  145. TR1=1;
  146. cl=0;
  147. }
  148. }

  149. void keyscan() //健盤處理函數
  150. {
  151. xx=0;
  152. if(k1!=1) // 判斷開關是否按下
  153. {
  154. delay(400); //延時去抖動
  155. if(k1!=1) // 判斷開關是否按下
  156. {
  157. while(!k1)
  158. {
  159. delay(30);
  160. xx++;
  161. }
  162. if(xx>2000)
  163. {
  164. jpjs++;
  165. if(jpjs>4)
  166. jpjs=0;
  167. }
  168. xx=0;
  169. switch(jpjs)
  170. {
  171. case 1: k1cl();break;
  172. case 2: k2cl();break;
  173. case 3: k3cl();break;
  174. case 4: k4cl();break;
  175. }
  176. }
  177. }
  178. }



  179. void k1cl()
  180. {
  181. sj1=sj1+5;
  182. if(sj1>100)
  183. sj1=30;
  184. s=sj1;
  185. }
  186. void k2cl()
  187. {
  188. sj2=sj2+5;
  189. if(sj2>500)
  190. sj2=40;
  191. s=sj2;
  192. }

  193. void k3cl()
  194. {
  195. sj3=sj3+10;
  196. if(sj3>500)
  197. sj3=100;
  198. s=sj3;
  199. }

  200. void k4cl()
  201. {
  202. sx1=sj1-1;
  203. sx1=sx1/csbc;
  204. mqs=sx1/4.5;
  205. }

  206. void offmsd()
  207. {
  208. if (buffer[0] == 0x3f)
  209. buffer[0] = 0x00;
  210. }
復制代碼



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

使用道具 舉報

沙發
ID:74956 發表于 2015-4-9 20:13 | 只看該作者
可以用嗎
回復

使用道具 舉報

板凳
ID:138687 發表于 2016-9-7 12:32 | 只看該作者
好用嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线视频第一页 | 久久精品国产免费看久久精品 | 在线成人| 亚洲精精品 | 国产免费国产 | 国产成人99久久亚洲综合精品 | 国产精品女人久久久 | 欧美高清视频一区 | 日本精品一区二区三区在线观看 | 久久一热 | 亚洲免费在线观看 | 亚洲精品视频在线观看免费 | 在线播放第一页 | 东京av男人的天堂 | 国产精品久久久久久久久久久久久 | 精品视频999 | av日韩一区 | 国产精品久久久久久高潮 | 日韩精品一区二区三区中文在线 | 国产91精品久久久久久久网曝门 | 亚洲精品电影在线观看 | 日本免费视频在线观看 | av黄色免费 | 亚洲欧美日韩久久久 | 国产网站在线免费观看 | 精品国产精品三级精品av网址 | 免费成人在线网 | a级在线| hsck成人网| 成人高清视频在线观看 | 日韩中文字幕久久 | 精品久久一区二区三区 | 国产精品国产三级国产aⅴ无密码 | 国产成人精品免费 | 日韩手机在线看片 | 久久人体视频 | 久久久精品视频免费 | av免费在线观看网站 | aaaaaa大片免费看最大的 | 大香网伊人| 这里只有精品999 |