找回密码
 立即注册

QQ登录

只需一步,快速开始

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

超声波测距可设置LCD1602显示Proteus仿真代码,并带温度DS18B20补偿

[复制链接]
跳转到指定楼层
楼主
超声波测距可设置LCD1602显示,并带温度DS18B20补偿,超限制报警。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. //头函数
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. //宏定义
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define ULint unsigned long int
  8. //温度零上与零下的标志位
  9. char flag=0;
  10. //超声波
  11. char flags=0;
  12. //超声波距离
  13. char flag1s=1;
  14. //计算定时间
  15. uint time=0;
  16. //计算距离
  17. ULint L_=0;

  18. ULint Mini=20;
  19. //温度
  20. uint t_=0;

  21. bit xsflag=1;




  22. //按键标志
  23. uchar k=0;
  24. //数值有误
  25. uchar FW=0;





  26. #include "BJ_Key.h"                    //报警按键
  27. #include "display.h"                         //显示头函数
  28. #include "ultrasonic_wave.h"//超声波头函数
  29. #include "DS18B20.h"                    //温度传感器头函数


  30. //函数声明
  31. void delayms(uint ms);



  32. //主函数
  33. void main()
  34. {
  35.         Init_ultrasonic_wave();
  36.         //屏幕初始化
  37.         Init1602();
  38.         //温度初始化
  39.         tmpchange();
  40.         t_=tmp();
  41.         tmpchange();
  42.         t_=tmp();
  43.         tmpchange();
  44.         t_=tmp();

  45.         //循环显示
  46.         while(1)
  47.         {
  48.                 Key();
  49.                
  50.                         StartModule();//启动超声波
  51.                         while(!RX);          //当RX为零时等待
  52.                         TR0=1;                  //开启计数
  53.                         while(RX);          //当RX为1计数并等待
  54.                         TR0=0;                  //关闭计数
  55.        
  56.                         delayms(20);  //20MS
  57.                         tmpchange();  //温度转换
  58.                         t_=tmp();     //度温度
  59.                         Conut(t_/10); //计算距离

  60.                         if(L_<Mini && xsflag==1)
  61.                         {
  62.                                 Feng_Start();
  63.                         }else{
  64.                                 Feng_Stop();
  65.                         }
  66.                         Display_1602(t_/10,L_,Mini);
  67.        
  68.         }
  69. }

  70. void delayms(uint ms)
  71. {
  72.         uchar i=100,j;
  73.         for(;ms;ms--)
  74.         {
  75.                 while(--i)
  76.                 {
  77.                         j=10;
  78.                         while(--j);
  79.                 }
  80.         }
  81. }
  82. //T0中断用来计数器溢出,超过测距范围
  83. void CJ_T0() interrupt 1
  84. {
  85.     flags=1;                                                         //中断溢出标志
  86. }
复制代码

仿真代码资料51hei附件下载:
超声波测距,可设置距离.7z (191.77 KB, 下载次数: 115)

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:982352 发表于 2021-11-18 21:25 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:372579 发表于 2022-2-24 07:43 来自手机 | 只看该作者
这个跟上的差不多
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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