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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1987|回復: 1
打印 上一主題 下一主題
收起左側

51單片機水位水箱控制全套資料 Proteus仿真程序調試文檔

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


Altium Designer畫的單片機水位控制箱原理圖和PCB圖如下:(51hei附件中可下載工程文件)


第5章 系統調試
5.1 軟件調試
其過程分為以下幾個步驟:
第一步,建立源程序。通過計算機開發系統的編輯軟件,按照所要求的格式、語法規定、源程序輸入到開發系統中,并存在磁盤上。
第二步,在計算機上,利用KEIL軟件對第一步輸入的源程序進行編譯,變為可執行的目標代碼。如果源程序有語法錯誤,則其錯誤將顯示出來,然后返回到第一步進行修改,再進行編譯,直到語法錯誤全部糾正為止。
第三步,動態在線調試。對于與系統、硬件無聯系的程序,可以借助動態在線調試手段,如單步運行、設置斷點等,發現邏輯錯誤,然后返回到第一步修改,直到邏輯錯誤糾正為止。對于與系統硬件緊密相關的程序,則需軟件,硬件同時進行調試,將程序燒入單片機,然后將CPU 插入系統,發現硬件故障排除故障,發現邏輯錯誤,修改程序,消除邏輯錯誤。
5.2 硬件調試
硬件調試分兩步:
第一步:系統上電之前,先用萬用表等工具,根據硬件邏輯設計圖,仔細檢查線路是否連接正確,并核對元器件的型號、規格和安裝是否符合要求,應特別注意電源系統的檢查,以防止電源的短路和極性錯誤,并重點檢查系統總線是否存在相互之間短路或與其它信號線的短路。
第二步:第一步的調試,只是對系統進行初步調試,可以排除一些明顯的故障,而硬件故障(如各個部件內部存在的故障和部件之間連接的邏輯錯誤)主要是靠軟件和硬件聯調來排除。
硬件調試和軟件調試是不能完全分開的,許多硬件錯誤是在軟件調試中發現和被糾正的。
5.2.1 發光二極管及蜂鳴器調試
1. 發光二極管調試
LED在本設計中代表的閥門可以說是很重要的部分。最開始的時候單片機供電發現LED不亮,首先看電路的焊接是否有掉線的情況,發現沒有掉線。然后用萬用表檢查個點之間有沒有短路的情況,沒有發現有短路的情況。最后看焊接的是否正確,經過對照電路圖檢查發現,LED的正負極接發錯誤。通過最后的改正。重新給單片機供電LED正常顯示。調試成功。
2. 蜂鳴器調試
蜂鳴器本文的報警設施,液位超過所設置的最高值系統就會發出報警。經過反復檢查最后發現三極管的引腳接法有錯誤。把9012引腳當成了9013引腳焊接而9012和9013發射極和集電極在電路中的接法不同,經過改正最后蜂鳴器正常工作。

圖5-1  LED、蜂鳴器調試
5.2.2 1602液晶顯示屏調試
超聲波測量的距離如果不能把距離正確顯示在液晶屏上本設計將是徒勞,所以液晶屏的正確顯示是本文的重中之重。開始的時候啟動整個系統,液晶屏只是亮起來而不顯示距離,首先檢查電路焊接是否有錯誤,發現沒有錯誤。然后用萬用表檢查是否有短接,也沒發現問題。最后結合軟件檢查發現軟件編程時液晶顯示的賦值部分有錯誤。最后經過仔細修改,液晶屏正常的顯示了測量距離。
  圖5-2 1602液晶屏的調試
5.2.3 初始值調試
本文設計首先是設定一個物位初始值。分別由兩個按鍵控制,加值按鍵和減值按鍵。確定初始值之后按下確定按鍵及超聲波開始對物位檢測。初值同時也是報警電路的參數,因此整個系統設定初值就很重要。開始的時候按鍵按下時,屏幕的初始值沒有任何反應,最開始的時候檢查有沒有掉線情況發現沒有。經過仔細檢查發現原來按鍵的四個引腳上下兩個是同一引腳,在焊接的時候把兩個相同的引腳連接到了電路中,最后經過改正按鍵能正常使用了。
   
圖5-3 初始值調試
5.2.4 超聲波測液位調試
整個系統上電以后,首先確定初始值,然后按確定鍵,超聲波開始對液位
進行檢測,測定的距離顯示在液晶屏幕上。調試成功以后,設計才算最終完成。
     
圖5-4 測液位調試


單片機源程序如下:
  1. /*
  2. 基于51單片機超聲波測距及溫度補償
  3. */
  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=0;
  14. //計算定時間
  15. uint time=0;
  16. //計算距離
  17. ULint L_=0;
  18. //溫度
  19. uint t_=0;
  20. //顯示模式  0正常  1最大值調整  2最小值調整
  21. uchar mode=0;

  22. uint Max=220;
  23. uint Min=190;
  24. //按鍵標志
  25. uchar k=0;
  26. //數值有誤
  27. uchar FW=0;
  28. //頭函數
  29. #include <reg52.h>
  30. #include <intrins.h>
  31. #include "BJ_Key.h"                    //報警按鍵
  32. #include "display.h"                         //顯示頭函數
  33. #include "ultrasonic_wave.h"//超聲波頭函數
  34. #include "DS18B20.h"                    //溫度傳感器頭函數


  35. //函數聲明
  36. void delayms(uint ms);
  37. //主函數
  38. void main()
  39. {
  40.         Init_ultrasonic_wave();
  41.         //屏幕初始化
  42.         Init1602();
  43.         //溫度初始化
  44.         tmpchange();
  45.         t_=tmp();
  46.         tmpchange();
  47.         t_=tmp();
  48.         tmpchange();
  49.         t_=tmp();

  50.         //循環顯示
  51.         while(1)
  52.         {
  53.                 Key();
  54.                 //正常顯示
  55.                 if(mode==0)
  56.                 {
  57.                         StartModule();//啟動超聲波
  58.                         while(!RX);          //當RX為零時等待
  59.                         TR0=1;                  //開啟計數
  60.                         while(RX);          //當RX為1計數并等待
  61.                         TR0=0;                  //關閉計數
  62.         
  63.                         delayms(20);  //20MS
  64.                         tmpchange();  //溫度轉換
  65.                         t_=tmp();     //度溫度
  66.                         Conut(t_/10); //計算距離
  67.                         if(L_<Min)
  68.                         {
  69.                                 Feng_Start();
  70.                                 Motor_Start();
  71.                         }
  72.                         else if(L_>Max)
  73.                         {
  74.                                 Feng_Start();
  75.                                 Motor_Stop();
  76.                         }
  77.                         else{
  78.                                 Feng_Stop();
  79.                                 Motor_Start();
  80.                         }
  81.                         Display_1602(t_/10,L_);
  82.                 }
  83.                 //調整顯示
  84.                 else if(mode!=0)
  85.                 {
  86.                         //最大最小值
  87.                         Init_MaxMin();
  88.                         while(mode!=0)
  89.                         {
  90.                                 
  91.                                 Key();
  92.                                 if(k==1&&mode==1)
  93.                                 {
  94.                                         Init_MaxMin();        
  95.                                    write_com(0x8d);//設置位置                                       
  96.                                 }
  97.                                 else if(k==1&&mode==2)
  98.                                 {
  99.                                         Init_MaxMin();        
  100.                                    write_com(0x8d+0x40);//設置位置        
  101.                                 }
  102.                                 k=0;
  103.                         }
  104.                         //界面初始化
  105.                         Init1602();
  106.                 }
  107.         }
  108. }

  109. void delayms(uint ms)
  110. {
  111.         uchar i=100,j;
  112.         for(;ms;ms--)
  113.         {
  114.                 while(--i)
  115.                 {
  116.                         j=10;
  117.                         while(--j);
  118.                 }
  119.         }
  120. }


  121. //T0中斷用來計數器溢出,超過測距范圍
  122. void CJ_T0() interrupt 1
  123. {
  124.     flags=1;                                                         //中斷溢出標志
  125. }
復制代碼

Keil代碼與Proteus仿真下載:
程序仿真.7z (1.13 MB, 下載次數: 41)
參考文檔,僅供參考.7z (11.87 MB, 下載次數: 33)

評分

參與人數 1黑幣 +70 收起 理由
admin + 70 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:262 發表于 2023-4-19 00:39 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看亚洲一区二区 | 成人免费xxxxx在线视频 | 欧美日韩综合一区 | 久久久久91 | 久久久精品综合 | 久久久国产精品 | 91精品中文字幕一区二区三区 | 精品一区二区三区不卡 | 欧美日韩精品专区 | 久草在线| 毛片99 | 国产精品久久久久久久久久久久 | 欧美激情综合 | 国产在线精品一区二区三区 | 久久久精品一区二区三区 | av午夜激情 | 91电影| 日韩av一区二区在线观看 | 国产精品99久 | 国产成人精品一区二 | 日韩欧美专区 | 色噜噜亚洲男人的天堂 | 国产一区久久久 | 亚洲视频在线免费观看 | 成人免费视频网址 | 日韩在线一区二区三区 | 伊人网国产 | 中文字幕免费视频 | 精品一区二区在线观看 | 欧美日韩一区精品 | 在线不卡视频 | 日韩综合在线 | 亚洲黄色在线免费观看 | 羞羞网站在线观看 | 国产精品久久777777 | 国产一区不卡 | 波多野结衣av中文字幕 | 免费人成激情视频在线观看冫 | 网站黄色在线免费观看 | 日韩精品久久 | 一级毛片视频在线观看 |