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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4238|回復: 7
打印 上一主題 下一主題
收起左側(cè)

單片機智能溫度巡檢儀設計(各通道單獨設置上下限)源碼與資料分享

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:317116 發(fā)表于 2018-4-26 22:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以前做過的一個課設,這是一個基于51單片機用DS18B20傳感器進行4路通道的溫度巡檢,可以實現(xiàn)手動檢查和自動檢測,當然這個電路是基于Proteus電路進行仿真,可以對每個通道進行上下限設置,超限報警功能,同時將溫度值顯示到4位數(shù)碼管,還可以在上位機進行顯示。



智能儀器綜合設計實驗——智能溫度巡檢儀的設計
一、實驗目的
1.設計一個以51單片機為核心的智能溫度巡檢儀。
2.掌握智能儀器系統(tǒng)的軟硬件設計方法
二、實驗設備
計算機,proteus仿真軟件,keil c51開發(fā)軟件
三、實驗任務
1.溫度測量范圍為-20~60攝氏度,溫度分辨率0.1攝氏度。
2. 巡檢通道最少4路。
3. 巡檢顯示時,要求各通道顯示5s切換一次。
4. 顯示通道可手動切換。
5. 獨立式或矩陣式鍵盤,設置測量溫度的上下限值,各通道可單獨設置。
6. 測量超限時,進行聲光報警,報警位置可定位。
7. 通過串口調(diào)試助手實現(xiàn)與上位機的通信,能將通道溫度信息實時傳送給上位機存儲。
四、實驗步驟
1.進入Keil uVision4軟件編譯環(huán)境,進行源程序編輯,保存。
2.對源程序進行編譯、連接,如有錯誤必須對源程序進行修正并存盤,重復此步,直到編譯無錯誤為止,生成擴展名為HEX的文件。
3.進入proteus仿真軟件,進行電路原理圖的繪制。
4.將第二步中生成的HEX文件加載入單片機,并運行,調(diào)節(jié)傳感器輸入溫度值,觀察仿真結(jié)果。
5.調(diào)試,若仿真結(jié)果有問題,則對系統(tǒng)進行調(diào)試,硬件問題回到第三步,軟件問題回到第二步,反復進行修改,直到系統(tǒng)運行結(jié)果符合要求為止。
6.實驗結(jié)果記錄:實時記錄溫度值,并對數(shù)據(jù)進行分析。

五、預習與思考題
1.復習鍵盤顯示控制電路和軟件設計方法。
2.說明傳感器選擇的依據(jù)。
3.如果使用DS18B20數(shù)字溫度傳感器,說明數(shù)據(jù)輸出的格式及處理方法。
4.如果使用模擬溫度傳感器,說明本系統(tǒng)如何實現(xiàn)標度變換,并說明選擇何種A/D轉(zhuǎn)換器及選擇理由。
六、實驗報告內(nèi)容
題目,任務分析和方案設計,具體的軟硬件設計,系統(tǒng)調(diào)試與分析,體會,附電路原理圖和程序清單。電路原理圖和程序清單可計算機打印,其余要求手寫。

單片機源程序如下:
  1. /*******************************************************************************************************************
  2. * 實驗名                :智能溫度巡檢儀設計顯示實驗
  3. * 使用的IO            :P0,P1,P2,P3
  4. * 實驗效果      :LED數(shù)碼管顯示溫度4個通道的溫度值,按鍵用于設置溫度的上下限值以及模式設置,蜂鳴器和LED燈用于聲光報警
  5.   多位數(shù)碼管動態(tài)顯示程序要掌握幾個要點:
  6. 1.顯示1輪的周期不大于15ms,不小于1ms,否則大于15ms會閃爍,小于1ms會暗淡并產(chǎn)生鬼影。每一位的顯示時間1~3ms為宜。
  7. 2.各位顯示時間應相同,否則各位亮度不均勻。
  8. 3.顯示過程不能被其他程序干擾,會產(chǎn)生閃爍。避免使用軟件延時delay占用MCU時間,會影響其他程序運行。
  9. 4.這里的delay(),不是刷新延時,只是相鄰兩個數(shù)碼管交替顯示的間隔時間,所以刷新時間是定時器的溢出時間。
  10. 5.最好是在定時器溢出時只顯示一個數(shù)碼管,等下次溢出時再顯示下一個數(shù)碼管,這樣只有一個時間需要調(diào)整,容易做一些,
  11.   現(xiàn)在的做法實際上是有兩個時間,一個是定時器,一個是delay(),兩個時間的協(xié)調(diào)會比較麻煩
  12.   總而言之,用中斷法或時間片輪詢法處理多位數(shù)碼管動態(tài)顯示效果較好。
  13. ******************************姓名:李仕剛 ************************************
  14. ******************************班級:1434070102 ********************************
  15. ******************************學號:143407010214 ******************************
  16. ********************************************************************************************************************/
  17. /***************************************************實驗現(xiàn)象********************************************************
  18. 1.按下S5按鍵進入自動巡檢模式,每隔5S會切換到下一個通道進行檢測,并將檢測結(jié)果進行顯示,有超過限值會發(fā)光發(fā)聲報警。
  19. 2.按下S6按鍵進入手動巡檢模式,每次按下相應通道(S1S2S3S4)會切換到相應通道進行檢測,并將檢測結(jié)果進行顯示,有超過限值
  20.   會發(fā)光發(fā)聲報警。再次按下S6退出手動巡檢模式。
  21. 3.按下(S1S2S3S4)對相應通道的上下限值進行設置,按下S5是對上限值進行加,S6對下限值進行減。設置完畢后,按下(S1S2S3S4)
  22.   對應通道按鍵退出相應通道的溫度設置。
  23. 4.
  24. ********************************************************************************************************************/
  25. #include<reg51.h>
  26. #include"temperture.h"
  27. #include"led_beep.h"
  28. #include"keyscan.h"
  29. #include"display.h"
  30. #include<stdio.h>
  31. //int MAX_temperture=50;//溫度上限值
  32. //int MIN_temperture=10;//溫度下限值
  33. uint count=0;
  34. uchar SIGNAL1_Timer_5S=0;//傳感器1定時5S標志
  35. uchar SIGNAL2_Timer_5S=0;//傳感器2定時5S標志
  36. uchar SIGNAL3_Timer_5S=0;//傳感器3定時5S標志
  37. uchar SIGNAL4_Timer_5S=0;//傳感器4定時5S標志
  38. //uchar Usart_shi=0;Usart_ge=0;Usart=20;
  39. void UsartConfiguration();
  40. void Timer0Configuration();
  41. /*******************************************************************************
  42. * 函數(shù)名          : main主函數(shù)  【【-----------當局者迷,旁觀者清------------】】
  43. *******************************************************************************/
  44. void main()
  45. {        
  46. //        uchar sendData=0;
  47.         uchar i=0;
  48.         P2=0x0F;
  49.         GPIO_DIG=0xFF; //消隱,數(shù)碼管全部點亮,顯示8.8.8.8.
  50. //        Delay1ms(1000);//延時1S等待做出按鍵選擇,如果不按下按鍵,則默認進入自動巡檢模式
  51.         UsartConfiguration();
  52.         Timer0Configuration();
  53.         while(1)
  54.         {
  55.                 Keyscan();                 //安檢掃描函數(shù)
  56.                 if(SIGNAL1_Timer_5S)
  57.                 {
  58.                         LEDDisplay(SIGNAL1_Ds18b20ReadTemp());
  59.                         Auto_WD_Display();
  60.                         Usart_shi=Final_WD/10+0x30;
  61.                         Usart_ge=Final_WD%10+0x30;
  62.                         if(i==0)
  63.                         {
  64.                                 send_wd('\r');
  65.                         }
  66.                         send_wd(Usart_shi);//發(fā)送溫度數(shù)據(jù)
  67.                         send_wd(Usart_ge);
  68.                         send_wd(' ');
  69.                         i++;
  70.                         if(i==8)
  71.                         {
  72.                                 i=0;
  73.                                 send_wd('\r');
  74.                         }
  75.                         SIGNAL1_Led_Beep(Final_WD);
  76.                 }
  77.                 if(SIGNAL2_Timer_5S)
  78.                 {
  79.                         LEDDisplay(SIGNAL2_Ds18b20ReadTemp());
  80.                         Auto_WD_Display();
  81.                         Usart_shi=Final_WD/10+0x30;
  82.                         Usart_ge=Final_WD%10+0x30;
  83.                         if(i==0)
  84.                         {
  85.                                 send_wd('\r');
  86.                         }
  87.                         send_wd(Usart_shi);//發(fā)送溫度數(shù)據(jù)
  88.                         send_wd(Usart_ge);
  89.                         send_wd(' ');
  90.                         i++;
  91.                         if(i==8)
  92.                         {
  93.                                 i=0;
  94.                                 send_wd('\r');
  95.                         }
  96.                         SIGNAL2_Led_Beep(Final_WD);
  97.                 }
  98.                 if(SIGNAL3_Timer_5S)
  99.                 {
  100.                         LEDDisplay(SIGNAL3_Ds18b20ReadTemp());
  101.                         Auto_WD_Display();
  102.                         Usart_shi=Final_WD/10+0x30;
  103.                         Usart_ge=Final_WD%10+0x30;
  104.                         if(i==0)
  105.                         {
  106.                                 send_wd('\r');
  107.                         }
  108.                         send_wd(Usart_shi);//發(fā)送溫度數(shù)據(jù)
  109.                         send_wd(Usart_ge);
  110.                         send_wd(' ');
  111.                         i++;
  112.                         if(i==8)
  113.                         {
  114.                                 i=0;
  115.                                 send_wd('\r');
  116.                         }
  117.                         SIGNAL3_Led_Beep(Final_WD);
  118.                 }
  119.                 if(SIGNAL4_Timer_5S)
  120.                 {
  121.                         LEDDisplay(SIGNAL4_Ds18b20ReadTemp());
  122.                         Auto_WD_Display();
  123.                         Usart_shi=Final_WD/10+0x30;
  124.                         Usart_ge=Final_WD%10+0x30;
  125.                         if(i==0)
  126.                         {
  127.                                 send_wd('\r');
  128.                         }
  129.                         send_wd(Usart_shi);//發(fā)送溫度數(shù)據(jù)
  130.                         send_wd(Usart_ge);
  131.                         send_wd(' ');
  132.                         i++;
  133.                         if(i==8)
  134.                         {
  135.                                 i=0;
  136.                                 send_wd('\r');
  137.                         }
  138.                         SIGNAL4_Led_Beep(Final_WD);
  139.                 }
  140. //                if(usart_key==0)
  141. //                {
  142. //                         while(!usart_key);
  143. //                        Usart_shi=Final_WD/10+0x30;
  144. //                        Usart_ge=Final_WD%10+0x30;
  145. //                        send_wd(Usart_shi);//發(fā)送溫度數(shù)據(jù)
  146. //                        send_wd(Usart_ge);
  147. //                        send_wd('\r');
  148. //                }               
  149.         }
  150. }
  151. /*******************************************************************************
  152. * 函 數(shù) 名         :UsartConfiguration()
  153. * 函數(shù)功能                   :設置串口
  154. *******************************************************************************/
  155. void UsartConfiguration()
  156. {
  157.         SCON=0X40;                        //設置為工作方式1 SM0 SM1 SM2 REN TB8 RB8 TI RI
  158. //        TMOD=0X20;                        //設置計數(shù)器工作方式2
  159.         PCON=0X00;                        //波特率加倍           fosc=12MHZ
  160.         TH1=0XFD;                    //計數(shù)器初始值設置,注意波特率是9600的
  161.         TL1=0XFD;                        //B=(2^SMODXfosc)/(32X12X(2^n-X))=9600     X=256-6.5=250=FA
  162.         TR1=1;                                //打開計數(shù)器
  163.         ES=1;                                //打開串口中斷
  164. }
  165. void UsartConfiguration_DATA() interrupt 4
  166. {
  167. //        ES=0;
  168. //        TI=0;
  169. //        ES=1;
  170.         if(TI) //發(fā)送完一字節(jié)數(shù)據(jù)
  171.         {
  172.           TI=0;
  173.           send=0;  //清正在發(fā)送標志
  174.         }
  175. }

  176. /*******************************************************************************
  177. * 函數(shù)名         : Timer0Configuration()
  178. * 函數(shù)功能                 : 設置計時器
  179. *******************************************************************************/
  180. void Timer0Configuration()
  181. {
  182.         TMOD=0x21;//選擇為定時器模式,工作方式1,僅用TRX打開啟動。T1工作方式2
  183.         TH0=0xD8;//給定時器賦初值,定時10ms        定時50ms初值X=2^16-(定時時間T/1MHZ)=65536-50000=15536=3CB0        
  184.         TL0=0xF0;//定時初值X=2^16-(定時時間T/1MHZ)=65536-10000=55536=D8F0
  185. //        TH0=0x3C;
  186. //        TL0=0xB0;        
  187.         ET0=1;//打開定時器0中斷允許
  188.         EA=1;//打開總中斷
  189.         TF0=0;
  190. //        TR0=1;//關(guān)閉定時器0               
  191. }
  192. /*******************************************************************************
  193. * 函數(shù)名         : DigDisplay() interrupt 1
  194. * 函數(shù)功能                 : 中斷數(shù)碼管顯示
  195. *******************************************************************************/
  196. void DigDisplay() interrupt 1
  197. {        
  198.         TR0=0;
  199.         TF0=0;        
  200.         TH0=0xD8;//給定時器賦初值,定時10ms
  201.         TL0=0xF0;//定時初值X=2^16-(定時時間T/1MHZ)=65536-10000=55536=D8F0        
  202. //        TH0=0x3C;
  203. //        TL0=0xB0;
  204.         if(count==0)
  205.         {
  206.                 SIGNAL1_Timer_5S=1;//進入中斷后先顯示傳感器1通道的溫度值
  207.         }
  208.         count++;
  209.         if(count==200)   //定時時間達到5S
  210.         {               
  211.                 SIGNAL1_Timer_5S=0;
  212.                 SIGNAL2_Timer_5S=1;                                                
  213.         }
  214.         if(count==400)//定時時間達到10S
  215.         {        
  216.                 SIGNAL2_Timer_5S=0;
  217.                 SIGNAL3_Timer_5S=1;
  218.         }
  219.         if(count==600)//定時時間達到15S
  220.         {               
  221.                 SIGNAL3_Timer_5S=0;
  222.                 SIGNAL4_Timer_5S=1;                                                
  223.         }
  224.         if(count==800)//定時時間達到20S

  225. ……………………

  226. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載:
智能儀器.zip (286.81 KB, 下載次數(shù): 72)


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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-4-27 03:12 | 只看該作者
好資料,51黑有你更精彩!!!樓主能分享下仿真工程嗎?
回復

使用道具 舉報

板凳
ID:317116 發(fā)表于 2018-4-27 10:04 | 只看該作者
admin 發(fā)表于 2018-4-27 03:12
好資料,51黑有你更精彩!!!樓主能分享下仿真工程嗎?

昨晚發(fā)的,睡太早了,壓縮包里只有代碼,忘記添加仿真電路了,實在抱歉!馬上添加上!
回復

使用道具 舉報

地板
ID:317116 發(fā)表于 2018-4-27 10:10 | 只看該作者
實在抱歉忘記把仿真電路放里邊了,下次不再犯這種錯誤了,對了,我的仿真用的是Proteus8.1版本,有的低版本打不開的,所以需要的注意了,請勿說仿真打不開的問題!
回復

使用道具 舉報

5#
ID:317116 發(fā)表于 2018-4-27 11:22 | 只看該作者
附上仿真電路

溫度巡檢仿真電路.zip

82.62 KB, 下載次數(shù): 35, 下載積分: 黑幣 -5

仿真電路

回復

使用道具 舉報

6#
ID:652296 發(fā)表于 2019-11-29 14:07 來自手機 | 只看該作者
新視野 發(fā)表于 2018-4-27 11:22
附上仿真電路

樓主在嗎
回復

使用道具 舉報

7#
ID:316613 發(fā)表于 2020-9-15 10:45 | 只看該作者
這仿真里面不對啊
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产99久久久国产精品 | 亚洲国产精品一区二区第一页 | 免费av直接看 | 中文字幕一区二区三区四区 | 国产一区在线免费 | 欧美久久国产 | 国产日韩欧美另类 | 欧美日韩成人 | 免费在线观看av网站 | 国产一区久久 | 99久久久无码国产精品 | 国产精品欧美一区喷水 | 国产一区二区在线观看视频 | 午夜在线视频 | 国产国拍亚洲精品av | 国产一区二区精品 | 久久免费视频在线 | 亚洲欧美精品国产一级在线 | av免费网址 | 天天干视频网 | 国产高清精品在线 | 成人午夜| 九九热这里 | 毛片入口 | 国产在线中文字幕 | 欧美精品video | 久精品久久 | 日本免费网 | 香蕉视频在线播放 | 欧美韩一区二区 | 精品国产99 | 久久精品中文字幕 | 国产女人叫床高潮大片免费 | 精品国产乱码久久久久久老虎 | 国产精品99久久久久久动医院 | 久久精品视频在线免费观看 | 奇米影视77 | 三极网站| 久草在线中文888 | 欧美video| 成人自拍视频网站 |