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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

超聲波模塊測距+1602顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:87624 發(fā)表于 2015-8-8 07:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
超聲波模塊測距+1602顯示.,,,基于此程+軸流風(fēng)機(jī)已完美做出風(fēng)洞



單片機(jī)源程序:
  1. #include<reg52.h>

  2. #include <intrins.h>

  3. #define uint unsigned int

  4. #define uchar unsigned char


  5. sbit in=P3^3;          //超聲波接收口
  6. sbit out=P3^4;          //超聲波發(fā)射口


  7. //LCD1602端口定義

  8. sbit RS=P2^6;          //寄存器選擇位,將RS位定義為P2.0引腳           //1602引腳定義
  9. sbit RW=P2^5;          //讀寫選擇位,將RW位定義為P2.1引腳
  10. sbit E=P2^7;           //使能信號位,將E位定義為P2.2引腳
  11.          
  12. #define LCD1602data P0 //1602數(shù)據(jù)口接單片機(jī)P1口


  13. uint time;
  14. unsigned long s=0;
  15. bit flag; //超聲波超出測量范圍標(biāo)志位
  16. uint s1,s2,s3;



  17. /*****************************************************
  18. 以下為1602模塊語句
  19. ***************************************************/


  20. /*****************************************************
  21. 函數(shù)功能:延時1ms
  22. ***************************************************/
  23. void delay1ms()
  24. {
  25.            unsigned char i,j;       
  26.         for(i=0;i<10;i++)
  27.         for(j=0;j<33;j++);                 
  28. }
  29. /*****************************************************
  30. 函數(shù)功能:延時若干毫秒
  31. 入口參數(shù):n
  32. ***************************************************/
  33. void delay(unsigned int n)
  34. {
  35.            unsigned int i;
  36.         for(i=0;i<n;i++)
  37.         delay1ms();
  38. }
  39. /*****************************************************
  40. 函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)
  41. 返回值:result。result=1,忙碌;result=0,不忙
  42. ***************************************************/
  43. bit BusyTest(void)
  44.   {
  45.             bit result;
  46.         RS=0;//根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài)
  47.             RW=1;
  48.             E=1;        //E=1,才允許讀寫
  49.             _nop_();   //空操作
  50.             _nop_();
  51.             _nop_();
  52.            _nop_();   //空操作四個機(jī)器周期,給硬件反應(yīng)時間       

  53.         E=0;
  54.             return result;
  55.   }
  56. /*****************************************************
  57. 函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊
  58. 入口參數(shù):dictate
  59. ***************************************************/
  60. void Write_com (unsigned char dictate)
  61. {   
  62.     while(BusyTest()==1); //如果忙就等待
  63.          RS=0;            //根據(jù)規(guī)定,RS和R/W同時為低電平時,可以寫入指令
  64.          RW=0;   
  65.          E=0;             //E置低電平(寫指令時,
  66.                           // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"
  67.          _nop_();
  68.          _nop_();         //空操作兩個機(jī)器周期,給硬件反應(yīng)時間
  69.          LCD1602data=dictate;//將數(shù)據(jù)送入P0口,即寫入指令或地址
  70.          _nop_();
  71.          _nop_();
  72.          _nop_();
  73.          _nop_();         //空操作四個機(jī)器周期,給硬件反應(yīng)時間
  74.          E=1;             //E置高電平
  75.          _nop_();
  76.          _nop_();
  77.          _nop_();
  78.          _nop_();         //空操作四個機(jī)器周期,給硬件反應(yīng)時間
  79.           E=0;            //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令
  80. }
  81. /*****************************************************
  82. 函數(shù)功能:指定字符顯示的實(shí)際地址
  83. 入口參數(shù):x
  84. ***************************************************/
  85. void WriteAddress(unsigned char x)
  86. {
  87.      Write_com(x|0x80); //顯示位置的確定方法規(guī)定為"80H+地址碼x"       
  88. }
  89. /*****************************************************
  90. 函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入液晶模塊
  91. 入口參數(shù):y(為字符常量)
  92. ***************************************************/
  93. void WriteData(unsigned char y)
  94. {
  95.     while(BusyTest()==1);  
  96.           RS=1;           //RS為高電平,RW為低電平時,可以寫入數(shù)據(jù)
  97.           RW=0;
  98.           E=0;            //E置低電平(寫指令時,,
  99.                        // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"
  100.           LCD1602data=y;  //將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊
  101.           _nop_();
  102.           _nop_();
  103.           _nop_();
  104.               _nop_();       //空操作四個機(jī)器周期,給硬件反應(yīng)時間
  105.           E=1;          //E置高電平
  106.           _nop_();
  107.           _nop_();
  108.           _nop_();
  109.           _nop_();        //空操作四個機(jī)器周期,給硬件反應(yīng)時間
  110.           E=0;            //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令
  111. }
  112. /*****************************************************
  113. 函數(shù)功能:對LCD的顯示模式進(jìn)行初始化設(shè)置
  114. ***************************************************/
  115. void LcdInt(void)
  116. {
  117.            delay(15);      //延時15ms,首次寫指令時應(yīng)給LCD一段較長的反應(yīng)時間
  118.            Write_com(0x38);  //顯示模式設(shè)置:16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口
  119.         delay(5);   //延時5ms 
  120.         Write_com(0x38);
  121.         delay(5);
  122.         Write_com(0x38); //3次寫 設(shè)置模式
  123.         delay(5);
  124. //        Write_com(0x0F);  //顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍
  125. //        delay(5);

  126.         Write_com(0x0c);  //顯示模式設(shè)置:顯示開,不顯示光標(biāo)
  127.         delay(5);

  128.         Write_com(0x06);  //顯示模式設(shè)置:光標(biāo)右移,字符不移
  129.         delay(5);                                                                                          
  130.         Write_com(0x01);  //清屏幕指令,將以前的顯示內(nèi)容清除
  131.         delay(5);
  132. }

  133. //add為顯示字符的位置(在第二行顯示)//x為顯示的字符
  134. //調(diào)用此函數(shù)請注意:此函數(shù)是為顯示數(shù)字的,display(10,9);display(10,a);
  135. //分別表示第二行第十位顯示數(shù)字9和a代表的數(shù)字
  136. //如果想把此函數(shù)改寫成顯示字母的,
  137. //只需把最后WriteData(0x30+x);中的
  138. // 0x30+ 去掉即可,調(diào)用時注意格式  display(10,'a');
  139. display(unsigned char add,unsigned char x)            
  140. {                                         
  141.                        

  142.                  WriteAddress(0x00);
  143.                                                                                                                                                                                
  144.                  delay(5);

  145.                  Write_com(0x80+0x40+add);

  146.                  WriteData(0x30+x);
  147. }



  148. LCD1602()//1602初顯示
  149. {
  150.        

  151.               LcdInt();         //調(diào)用LCD初始化函數(shù)  
  152.           delay(10);
  153.               Write_com(0x01);                //清屏

  154.                   delay(5);

  155.                   WriteAddress(0x00);
  156. //設(shè)置顯示位置為第一行第一個字,這條語句可以不用寫,因為默認(rèn)是從第一行第一個字顯示                                                                                                                                                                               
  157.                   delay(5);
  158. //第一行顯示 DISTANCE:   
  159.                   WriteData('D');
  160.               WriteData('I');
  161.                   WriteData('S');
  162.                   WriteData('T');
  163.                   WriteData('A');       
  164.                   WriteData('N');       
  165.                   WriteData('C');       
  166.                   WriteData('E');       
  167.                   WriteData(':');
  168. }



  169. /*****************************************************
  170. 以上為1602模塊語句
  171. ***************************************************/


  172. void  FS()                          //發(fā)射超聲波
  173.   {
  174.           out=1;                                      
  175.           _nop_();
  176.           _nop_();
  177.           _nop_();
  178.           _nop_();
  179.           _nop_();
  180.           _nop_();
  181.           _nop_();
  182.           _nop_();
  183.           _nop_();
  184.           _nop_();
  185.           _nop_();
  186.           _nop_();
  187.           _nop_();
  188.           _nop_();
  189.           _nop_();
  190.           _nop_();
  191.           _nop_();
  192.           _nop_();
  193.           _nop_();
  194.           _nop_();
  195.           _nop_();
  196.           out=0;
  197.   }

  198. void conut(void) //計算并顯示超聲波測到的距離
  199. {
  200.          time=TH0*256+TL0;
  201.          TH0=0;
  202.          TL0=0;
  203.        
  204.          s=(time*1.7)/100;     //算出來單位是CM

  205.          if((s>=700)||flag==1) //超出測量范圍顯示"ERROR"
  206.          {         
  207.           flag=0;
  208.          
  209.           Write_com(0x80+0x40+11);
  210.           WriteData('E');        delay(5);
  211.       WriteData('R');        delay(5);
  212.           WriteData('R');        delay(5);
  213.           WriteData('O');        delay(5);
  214.           WriteData('R');        delay(5);
  215.          }
  216.          else
  217.          {
  218.           s1=s%1000/100;
  219.           s2=s%1000%100/10;
  220.           s3=s%1000%10 %10;
  221.           display(11,s1);
  222.           WriteData('.');
  223.           display(13,s2);       
  224.           display(14,s3);
  225.           WriteData('m');
  226.          }


  227. }
  228. /********************************************************/
  229. void zd0() interrupt 1                  //T0中斷用來計數(shù)器溢出,超過測距范圍
  230. {
  231.    

  232. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

下載:
超聲波模塊測距 1602顯示.zip (44.62 KB, 下載次數(shù): 83)

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

使用道具 舉報

沙發(fā)
ID:96386 發(fā)表于 2015-11-19 18:17 | 只看該作者
沒有電路圖
回復(fù)

使用道具 舉報

板凳
ID:61326 發(fā)表于 2016-3-10 11:42 | 只看該作者
謝謝!
回復(fù)

使用道具 舉報

地板
ID:191372 發(fā)表于 2017-4-19 20:44 | 只看該作者
多謝樓主了
回復(fù)

使用道具 舉報

5#
ID:191836 發(fā)表于 2017-4-21 18:39 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

6#
ID:203888 發(fā)表于 2017-6-22 15:00 | 只看該作者
求帶報警電路的。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日产久久高清欧美一区 | 日韩不卡视频在线观看 | 久久精品久久综合 | 免费视频一区二区 | av一级久久| 精品美女久久久 | 欧美激情99 | 在线观看中文字幕 | 亚洲视频免费观看 | 先锋资源网| 国产日韩欧美精品一区二区三区 | 成人免费视频网 | 久久毛片 | 一级免费毛片 | 亚洲高清视频在线观看 | 精久久久 | 欧美国产视频一区二区 | 午夜电影网站 | 国产精品欧美一区二区 | 久久精品国产亚洲 | 中文字幕亚洲一区二区三区 | jⅰzz亚洲 | 国产欧美一区二区三区在线看 | 97av视频| 国产在线视频一区 | 午夜在线精品偷拍 | 免费黄色av | 国产一区二区在线91 | 久久久久久影院 | 精品一区二区久久久久久久网精 | 老司机精品福利视频 | 我要看黄色录像一级片 | 91精品国产色综合久久不卡蜜臀 | 999久久久久久久久 国产欧美在线观看 | 成人做爰69片免费观看 | 色综合久久久久 | 久久99深爱久久99精品 | 午夜视频在线观看网站 | 日韩有码一区二区三区 | 日本免费一区二区三区四区 | 最新黄色毛片 |