找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4731|回复: 4
打印 上一主题 下一主题
收起左侧

oled显示的超声波测距装置 原理图+单片机源代码

[复制链接]
跳转到指定楼层
楼主
ID:390712 发表于 2018-8-28 11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是超声波测距装置,附件里面包含接线图 ,程序源代码,用oled显示

单片机源程序如下:
  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超声波测距实验                       
  15. **--------------------------------------------------------------------------------------------------------
  16. ** Modified by:                       
  17. ** Modified date:               
  18. ** Version:                               
  19. ** Descriptions:               
  20. ** Rechecked by:                       
  21. **********************************************************************************************************/
  22. /****-----请阅读ReadMe.txt进行实验-----***********/

  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;                     //测距用超出范围标识符

  35. /**************************************
  36. 功能描述:计算距离并在LCD1602屏上显示
  37. 入口参数:无
  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. 功能描述:计数器0初始化函数
  70. 入口参数:无
  71. 返回值:无
  72. ***************************************/
  73. void Timer0Init(void)
  74. {
  75.         AUXR &= 0x7F;                   //计数器0为12T模式
  76.         TMOD &= 0xFD;                   //计数器0为16位不可重装载模式,TL0,TH0全用
  77.         TMOD |= 0x01;                   //计数器0为16位不可重装载模式,TL0,TH0全用
  78.         TH0=0;
  79.         TL0=0;         
  80.         ET0=1;           //允许T0中断       
  81. }

  82. /**************************************
  83. 功能描述:计数器0中断服务函数
  84. 入口参数:无
  85. 返回值:无
  86. ***************************************/
  87. void timer0_int (void) interrupt 1
  88. {
  89.   flag=1;                                                         //中断溢出标志
  90. }
  91.        
  92. /**************************************
  93. 功能描述:启动HC-SR04模块
  94. 入口参数: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. * 描  述 : 主函数
  105. * 入  参 : 无
  106. * 返回值 : 无
  107. **************************************************************************/
  108. int main(void)
  109. {

  110.        
  111. /////////////////////////////////////////////////
  112. //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
  113. //      高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
  114. //相关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;        //设置P0.0~P0.7为准双向口
  118.         P1M1 = 0;        P1M0 = 0;        //设置P1.0~P1.7为准双向口
  119.         P2M1 = 0;        P2M0 = 0xff;        //设置P2.0~P2.7为推挽输出
  120.         P3M1 = 0;        P3M0 = 0;        //设置P3.0~P3.7为准双向口
  121.         P4M1 = 0;        P4M0 = 0;        //设置P4.0~P4.7为准双向口
  122.         P5M1 = 0;        P5M0 = 0;        //设置P5.0~P5.7为准双向口

  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);                //当ECHO为零时等待
  135.              TR0=1;                              //开启计数
  136.              while(ECHO);                        //当ECHO为1计数并等待
  137.              TR0=0;                                    //关闭计数
  138.        Conut();                            //计算
  139.                    delay_ms(80);                  //80ms延时         
  140.           }
  141.         }
  142. }
复制代码

所有资料51hei提供下载:
超声波测距 - oled显示.zip (1.01 MB, 下载次数: 126)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:481072 发表于 2019-2-26 17:07 | 只看该作者
这是用51单片机控制的吗
回复

使用道具 举报

板凳
ID:592012 发表于 2019-7-29 15:41 | 只看该作者
头文件在资料里面吗
回复

使用道具 举报

地板
ID:648535 发表于 2019-11-28 09:36 | 只看该作者
里面是oled屏幕的吗?
回复

使用道具 举报

5#
ID:660346 发表于 2019-12-10 23:16 | 只看该作者
不需要头文件?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表