找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4877|回復(fù): 4
收起左側(cè)

oled顯示的超聲波測距裝置 原理圖+單片機(jī)源代碼

[復(fù)制鏈接]
ID:390712 發(fā)表于 2018-8-28 11:47 | 顯示全部樓層 |閱讀模式
這是超聲波測距裝置,附件里面包含接線圖 ,程序源代碼,用oled顯示

單片機(jī)源程序如下:
  1.                                    /****************************************Copyright (c)****************************************************
  2. **                                       
  3. **                                 
  4. **
  5. **--------------File Info---------------------------------------------------------------------------------
  6. ** File name:                       
  7. ** Last modified Date:         
  8. ** Last Version:                  
  9. ** Descriptions:                                                       
  10. **--------------------------------------------------------------------------------------------------------
  11. ** Created by:                        FiYu
  12. ** Created date:                2017-02-20
  13. ** Version:                            1.0
  14. ** Descriptions:                HC-SR04超聲波測距實(shí)驗(yàn)                       
  15. **--------------------------------------------------------------------------------------------------------
  16. ** Modified by:                       
  17. ** Modified date:               
  18. ** Version:                               
  19. ** Descriptions:               
  20. ** Rechecked by:                       
  21. **********************************************************************************************************/
  22. /****-----請閱讀ReadMe.txt進(jìn)行實(shí)驗(yàn)-----***********/

  23. #include "OLED.h"

  24. /**********************
  25. 引腳別名定義
  26. ***********************/
  27. sbit ECHO=P0^2;      
  28. sbit TRIG=P0^3;

  29. #define Distance_MAX    700   //HC-SR04模塊可檢測的最大距離


  30. unsigned int i;
  31.                           
  32. unsigned int  time=0;                 //測距用時間
  33. unsigned long S=0;                    //測距用距離
  34. bit      flag =0;                     //測距用超出范圍標(biāo)識符

  35. /**************************************
  36. 功能描述:計(jì)算距離并在LCD1602屏上顯示
  37. 入口參數(shù):無
  38. 返回值:無
  39. ***************************************/
  40. void Conut(void)
  41. {
  42.          time=TH0*256+TL0;
  43.          TH0=0;
  44.          TL0=0;
  45.           
  46.    //顯示漢字
  47.   for(i=0; i<5; i++)
  48.     {  
  49.           LCD_P16x16Ch((i+1)*16,0,i);         
  50.    
  51.     }         
  52.         LCD_P8x16Str(0*16,4,"dance=   CM");
  53.          S=(time*1.7)/100;        //算出來是CM
  54.          if((S>=Distance_MAX)||flag==1)    //超出測量范圍顯示“-”
  55.          {         
  56.           flag=0;
  57.         LCD_P8x16Str(0*16,4,"dance=xxxCM");
  58.           
  59.          }
  60.          else
  61.          {
  62.           OLED_ShowChar(6*8,4,S/100%10+'0');
  63.           OLED_ShowChar(7*8,4,S/10%10+'0');
  64.           OLED_ShowChar(8*8,4,S%10+'0');
  65.           
  66.          }
  67. }

  68. /**************************************
  69. 功能描述:計(jì)數(shù)器0初始化函數(shù)
  70. 入口參數(shù):無
  71. 返回值:無
  72. ***************************************/
  73. void Timer0Init(void)
  74. {
  75.         AUXR &= 0x7F;                   //計(jì)數(shù)器0為12T模式
  76.         TMOD &= 0xFD;                   //計(jì)數(shù)器0為16位不可重裝載模式,TL0,TH0全用
  77.         TMOD |= 0x01;                   //計(jì)數(shù)器0為16位不可重裝載模式,TL0,TH0全用
  78.         TH0=0;
  79.         TL0=0;         
  80.         ET0=1;           //允許T0中斷       
  81. }

  82. /**************************************
  83. 功能描述:計(jì)數(shù)器0中斷服務(wù)函數(shù)
  84. 入口參數(shù):無
  85. 返回值:無
  86. ***************************************/
  87. void timer0_int (void) interrupt 1
  88. {
  89.   flag=1;                                                         //中斷溢出標(biāo)志
  90. }
  91.        
  92. /**************************************
  93. 功能描述:啟動HC-SR04模塊
  94. 入口參數(shù):unsigned char X, unsigned char Y, unsigned char DData
  95. 返回值:無
  96. ***************************************/
  97. void  StartModule()                          //啟動模塊
  98. {
  99.         TRIG=1;                                             //啟動一次模塊
  100.         delay_ms(5);
  101.         TRIG=0;
  102. }

  103. /***************************************************************************
  104. * 描  述 : 主函數(shù)
  105. * 入  參 : 無
  106. * 返回值 : 無
  107. **************************************************************************/
  108. int main(void)
  109. {

  110.        
  111. /////////////////////////////////////////////////
  112. //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關(guān)的IO口均為
  113. //      高阻態(tài),需將這些口設(shè)置為準(zhǔn)雙向口或強(qiáng)推挽模式方可正常使用
  114. //相關(guān)IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
  115. //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
  116. /////////////////////////////////////////////////
  117.         P0M1 = 0;        P0M0 = 0;        //設(shè)置P0.0~P0.7為準(zhǔn)雙向口
  118.         P1M1 = 0;        P1M0 = 0;        //設(shè)置P1.0~P1.7為準(zhǔn)雙向口
  119.         P2M1 = 0;        P2M0 = 0xff;        //設(shè)置P2.0~P2.7為推挽輸出
  120.         P3M1 = 0;        P3M0 = 0;        //設(shè)置P3.0~P3.7為準(zhǔn)雙向口
  121.         P4M1 = 0;        P4M0 = 0;        //設(shè)置P4.0~P4.7為準(zhǔn)雙向口
  122.         P5M1 = 0;        P5M0 = 0;        //設(shè)置P5.0~P5.7為準(zhǔn)雙向口

  123.         delay_ms(500);                           //上電延時               
  124.             OLED_Init();                      //對OLED屏初始化  
  125.                     OLED_Fill(0x00);                  //清屏

  126.         while(1)
  127.         {
  128.        Timer0Init();
  129.               EA=1;                              //開啟總中斷                       
  130.        
  131.                    while(1)
  132.          
  133.             { StartModule();
  134.              while(!ECHO);                //當(dāng)ECHO為零時等待
  135.              TR0=1;                              //開啟計(jì)數(shù)
  136.              while(ECHO);                        //當(dāng)ECHO為1計(jì)數(shù)并等待
  137.              TR0=0;                                    //關(guān)閉計(jì)數(shù)
  138.        Conut();                            //計(jì)算
  139.                    delay_ms(80);                  //80ms延時         
  140.           }
  141.         }
  142. }
復(fù)制代碼

所有資料51hei提供下載:
超聲波測距 - oled顯示.zip (1.01 MB, 下載次數(shù): 126)


回復(fù)

使用道具 舉報

ID:481072 發(fā)表于 2019-2-26 17:07 | 顯示全部樓層
這是用51單片機(jī)控制的嗎
回復(fù)

使用道具 舉報

ID:592012 發(fā)表于 2019-7-29 15:41 | 顯示全部樓層
頭文件在資料里面嗎
回復(fù)

使用道具 舉報

ID:648535 發(fā)表于 2019-11-28 09:36 | 顯示全部樓層
里面是oled屏幕的嗎?
回復(fù)

使用道具 舉報

ID:660346 發(fā)表于 2019-12-10 23:16 | 顯示全部樓層
不需要頭文件?

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表