標題: 超聲波測距可設置LCD1602顯示Proteus仿真代碼,并帶溫度DS18B20補償 [打印本頁]

作者: wangfushou    時間: 2021-11-17 21:09
標題: 超聲波測距可設置LCD1602顯示Proteus仿真代碼,并帶溫度DS18B20補償
超聲波測距可設置LCD1602顯示,并帶溫度DS18B20補償,超限制報警。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. //頭函數(shù)
  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. //數(shù)值有誤
  25. uchar FW=0;





  26. #include "BJ_Key.h"                    //報警按鍵
  27. #include "display.h"                         //顯示頭函數(shù)
  28. #include "ultrasonic_wave.h"//超聲波頭函數(shù)
  29. #include "DS18B20.h"                    //溫度傳感器頭函數(shù)


  30. //函數(shù)聲明
  31. void delayms(uint ms);



  32. //主函數(shù)
  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.         //循環(huán)顯示
  46.         while(1)
  47.         {
  48.                 Key();
  49.                
  50.                         StartModule();//啟動超聲波
  51.                         while(!RX);          //當RX為零時等待
  52.                         TR0=1;                  //開啟計數(shù)
  53.                         while(RX);          //當RX為1計數(shù)并等待
  54.                         TR0=0;                  //關閉計數(shù)
  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中斷用來計數(shù)器溢出,超過測距范圍
  83. void CJ_T0() interrupt 1
  84. {
  85.     flags=1;                                                         //中斷溢出標志
  86. }
復制代碼

仿真代碼資料51hei附件下載:
超聲波測距,可設置距離.7z (191.77 KB, 下載次數(shù): 115)


作者: wgaopeng    時間: 2021-11-18 21:25
好資料,51黑有你更精彩!!!
作者: aide51    時間: 2022-2-24 07:43
這個跟上的差不多




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1