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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機DS18B20溫度測控系統仿真設計詳解 LCD1602顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:708562 發表于 2020-8-4 16:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用單片機開發一個溫度測量控制系統,顯示用16*2的液晶,實時顯示測量溫度,加熱輸出采用通斷控制,用發光二極管來模擬,能設置目標溫度,能設置報警溫度閾值,超過了進行報警,報警采用液晶屏幕顯示。
                        
                        
  • 方案分析和設計
                        
看到設計任務的時候,因為主要是進行溫度測量,所以必然會用到溫度傳感器。那么什么是溫度傳感器呢。溫度傳感器(temperature transducer)是指能感受溫度并轉換成可用輸出信號的傳感器。溫度傳感器是溫度測量儀表的核心部分,品種繁多。按測量方式可分為接觸式和非接觸式兩大類,按照傳感器材料及電子元件特性分為熱電阻和熱電偶兩類。在經過一番選擇后,最終確定用DS18B20作為需要的溫度傳感器,原因如下。1.DS18B20是常用的數字溫度傳感器,其輸出的是數字信號,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。 2.因為之前用過熱敏電阻代替,精度不夠高,也想嘗試下新的傳感器。
                        
其次就是16*2的液晶顯示模塊,因為要求中不需要顯示中文,所有就采用LCD1602模塊為所需的液晶顯示屏。加熱部分用發光二極管模擬,并采用通斷控制,那么就可以利用定時器中斷發出PWM波達到需要的要求即可。其次是設置目標溫度和警報溫度。顯然,需要加至少兩個按鍵來控制。進行報警的部分就可以使用簡單的蜂鳴器即可。當溫度達到警報溫度的時候,蜂鳴器就響。
                        
因為是LCD屏,所有發揮部分加了一個萬年歷的模塊,采用DS1302時鐘模塊。本可以加個計算器模塊,但是估計IO口設計完上面的一系列模塊后就不夠用了,所以不打算加上計算器模塊。
                        
                        
                        
  • 硬件設計
                        
主要元器件的選擇:MCU 芯片選擇的是AT89C51,LCD顯示屏采用的是LCD1602,在仿真電路中用的是LM016L,和LCD1602性質相同。溫度傳感器用的是DS18B20。發揮部分用的是DS1302時鐘模塊。
                        
模塊設計
                        
最小系統:這個部分的設計相對比較簡單,首先是系統時鐘電路,需要一個12M的外部晶振,其次需要兩個30pf電容。搭配起來就是一個系統時鐘了。接下來就是復位電路了,需要一個10K電阻,一個10μf的電解電容,還有一個開關。設計好后的最小系統如圖所示:
                        
                                                        
                        
液晶顯示:LCD1602
                        
                                                        
                        
                        
                                                        
                        
按照LCD1602手冊連接好電路如圖所示:
                        
                                                        
                        
                        
DS18B20溫度模塊: 單線數字溫度傳感器,所以操作的要求比較高,讀取數據的時候需要控制在微秒量級。
                        
                                                        
                        
初始化:主機首先發出一個480-960微秒的低電平脈沖,然后釋放總線變為高電平,并在隨后的480微秒時間內對總線進行檢測,如果有低電平出現說明總線上有器件已做出應答。若無低電平出現一直都是高電平說明總線上無器件應答。
                        
做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現,如果有,在總線轉為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。
                        
                        
                                                        
                        
寫操作:寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續拉低電平最少60微秒直至寫周期結束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內總線為高電平則為1,若采樣期內總線為低電平則為0。
                        
                                                        
                        
讀操作:對于讀數據操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數據傳輸到單總線上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數據,若是要送出0就把總線拉為低電平直到讀周期結束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內的15微秒時間內完成對總線進行采樣檢測,采樣期內總線為低電平則確認為0。采樣期內總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成。
                        
                                                        
                        
                        
DS1302模塊:
                        
                                                        
                        
DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數據輸入輸出端(雙向),后面有詳細說明。SCLK始終是輸入端。
                        
                        
加熱模塊:用的LED代替,在加熱的時候LED在PWM波的作用下會出現周期為4s的亮滅,代表加熱的進行。在停止加熱的時候,會滅掉。
                        
                                                        
按鍵功能:按鍵1是萬年歷按鍵,按鍵2是設置目標溫度和警報溫度按鍵,按一下進入目標溫度設置,按兩下進入警報溫度設置。按鍵3是加溫度按鍵,按鍵4是減溫度按鍵。按鍵5是溫度顯示按鍵。

                        
                                                        
                        
  
硬件電路圖:
                        
                        
                                                        
                        
                        
硬件PCB板圖:
                        
                                                        
                        
                                                        
                        
                        
  • 軟件設計
                        LCD顯示模塊部分代碼編寫:
                        LCD硬件部分介紹的時候,介紹了LCD1602讀寫的步驟和時序。按步驟可以編寫出以下的初始化和讀寫代碼。其中的清屏(LcdWriteCom(0x01))這一步在主函數里面的用處很多。
                                                                                
                                                                                
                        DS18B20溫度顯示模塊:
                        DS18B20對時序的要求很高,要控制在微秒量級之間,初始化、讀、寫中的任何一步有誤差就會顯示不出溫度。按照硬件部分的介紹可以寫出DS18B20部分的代碼如下:
                        初始化:
                                                                                
                        寫操作:
                                                                                
                        
                        
                        
                        
讀操作:
                        
                                                        
                        
                                                        
                        
                                      DS1302模塊代碼:
                        
根據硬件部分對DS1302的解釋,也可以寫出如下的代碼
                                                                                                                
                        
                                                                                
                        
                        
                        
                        
                        PWM波代碼:通過定時器中斷1輸出周期為4s的方波,實現兩秒亮,兩秒滅。
                                                                                
                        
                        目標溫度和警報溫度設定:
                                                                                
                        
                        達到目標溫度后LED滅和未達到目標溫度LED周期性亮滅:
                                                                                
                        
                        達到警報溫度后蜂鳴器響:
                                                                                
                        
                        
                        
  • 軟件仿真
                        按下溫度顯示按鍵,顯示當前溫度:
                                                                                
                        按下目標溫度設置鍵,出現Aim_temp設置。此時按下加和減鍵可以實現目標溫度設置。
                                                                                
                                                                                
                                                                                
                        繼續按下溫度設置鍵,跳轉到警報溫度設置頁面,按下加和減號鍵可以設置警報溫度。
                                                                                
                        
                        此時,按下溫度顯示鍵:如果目標溫度高于當前溫度,LED燈會周期性亮滅,模擬加熱環節。如果目標溫度低于當前溫度,則LED滅。模擬停止加熱環節。如果當前溫度高于設定的警報溫度,蜂鳴器響。
                        目標溫度(52)高于當前溫度(48),LED亮。
                                                                                
                        目標溫度(52)低于當前溫度(55),LED滅:
                                                                                
                        
                        當前溫度高于警報溫度,蜂鳴器響:
                                                                                
                                                                                
                        
                        按下萬年歷顯示模塊,顯示日期(初始化值):
                                                                                
                        
                        
                        
  • 總結體會
                        
通過本次的設計,讓我學會了如何通過元器件手冊編寫相應的初始化等程序。尤其是DS18B20這個溫度傳感器模塊。稍有延遲誤差就讀不出具體的溫度數據,會一直顯示-0.006℃。調了很久,才把延遲范圍控制在要求的范圍內。
                        
此外,對于LCD1602的部分,要是想顯示單獨一個變量數字,需要在末尾加上’0’。例如:要在LCD上顯示目標溫度Aim_temp,需要拆分成高位和地位,分別用Aim_h和Aim_l來表示,那么要顯示出來就需要Aim_h+’0’才可以顯示出來。總之,這次綜合設計讓我更加意識到了單片機的強大和有趣,希望未來能在這條路上越走越遠。
                        
  • 參考資料
                        1.      DS1302時鐘芯片介紹                        2.      DS18B20模塊介紹                        3.      LCD1602顯示屏模塊介紹

所有資料51hei下載地址:
http://www.zg4o1577.cn/bbs/dpj-149956-1.html

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本黄色大片免费看 | 精品成人佐山爱一区二区 | 久久亚洲一区二区三区四区 | 日韩av一区二区在线观看 | 日韩一二三区视频 | 久久九精品 | 亚洲精品888| 久久精品亚洲精品国产欧美 | 免费一区二区三区 | 欧美一区二区三区精品免费 | 久久久精品一区二区三区四季av | 伊人最新网址 | 国产精品网址 | 日韩视频免费看 | 成人在线免费 | 精品国产乱码一区二区三 | 精区3d动漫一品二品精区 | 午夜精品久久久久久久久久久久 | 久草免费在线视频 | 日本午夜一区 | 亚洲a视| 久在线视频播放免费视频 | 国产一区| 日韩欧美在线播放 | 久久亚洲综合 | 天天澡天天操 | 99精品在线观看 | 成人一区二区三区在线 | 成人av免费 | 国产亚洲成av人在线观看导航 | 精品国产免费一区二区三区演员表 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 国产日韩一区二区三免费高清 | 国产福利视频在线观看 | 成人在线观看免费 | 99久久婷婷国产综合精品电影 | 日韩黄a | 久久蜜桃资源一区二区老牛 | 黄页网址在线观看 | 亚洲成人一级 | 中文字幕av在线 |