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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1968|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)水位水箱控制全套資料 Proteus仿真程序調(diào)試文檔

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


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


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

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


單片機(jī)源程序如下:
  1. /*
  2. 基于51單片機(jī)超聲波測(cè)距及溫度補(bǔ)償
  3. */
  4. //宏定義
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define ULint unsigned long int
  8. //溫度零上與零下的標(biāo)志位
  9. char flag=0;
  10. //超聲波
  11. char flags=0;
  12. //超聲波距離
  13. char flag1s=0;
  14. //計(jì)算定時(shí)間
  15. uint time=0;
  16. //計(jì)算距離
  17. ULint L_=0;
  18. //溫度
  19. uint t_=0;
  20. //顯示模式  0正常  1最大值調(diào)整  2最小值調(diào)整
  21. uchar mode=0;

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


  35. //函數(shù)聲明
  36. void delayms(uint ms);
  37. //主函數(shù)
  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.         //循環(huán)顯示
  51.         while(1)
  52.         {
  53.                 Key();
  54.                 //正常顯示
  55.                 if(mode==0)
  56.                 {
  57.                         StartModule();//啟動(dòng)超聲波
  58.                         while(!RX);          //當(dāng)RX為零時(shí)等待
  59.                         TR0=1;                  //開啟計(jì)數(shù)
  60.                         while(RX);          //當(dāng)RX為1計(jì)數(shù)并等待
  61.                         TR0=0;                  //關(guān)閉計(jì)數(shù)
  62.         
  63.                         delayms(20);  //20MS
  64.                         tmpchange();  //溫度轉(zhuǎn)換
  65.                         t_=tmp();     //度溫度
  66.                         Conut(t_/10); //計(jì)算距離
  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.                 //調(diào)整顯示
  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);//設(shè)置位置                                       
  96.                                 }
  97.                                 else if(k==1&&mode==2)
  98.                                 {
  99.                                         Init_MaxMin();        
  100.                                    write_com(0x8d+0x40);//設(shè)置位置        
  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中斷用來計(jì)數(shù)器溢出,超過測(cè)距范圍
  122. void CJ_T0() interrupt 1
  123. {
  124.     flags=1;                                                         //中斷溢出標(biāo)志
  125. }
復(fù)制代碼

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

評(píng)分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人精品免费 | 久久之精品| 国产美女精品 | 国产精品伦理一区 | 久久久成人网 | 搞黄网站在线观看 | 亚洲一一在线 | 黄色片网此 | 人人叉 | 成人在线国产 | 天天看天天摸天天操 | 亚洲色图插插插 | 精彩视频一区二区三区 | 91久久精品一区二区二区 | 涩涩导航| h片免费在线观看 | 亚洲一二三区免费 | 91精品久久久久 | 日韩一区二区在线观看视频 | 欧美日韩在线一区二区 | 亚洲www| 在线一级片 | 欧美日韩精品久久久免费观看 | 亚洲精品9999 | 欧产日产国产精品99 | 福利av在线 | 亚洲精品久久久9婷婷中文字幕 | 91免费在线 | 在线免费观看成人 | 在线a视频 | 羞视频在线观看 | 狠狠操狠狠操 | 日韩一区二区三区在线 | 免费三级网 | 欧美一级片免费看 | 天堂网色 | 免费一区二区三区 | 成年网站在线观看 | 欧美a免费 | 国产黄色网 | 精品欧美一区二区三区久久久 |