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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)DS18B20溫度測(cè)控系統(tǒng)仿真設(shè)計(jì)詳解 LCD1602顯示

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

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

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

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩免费视频 | 91精品国产色综合久久 | 夜夜骑首页 | 亚洲免费成人 | 亚洲精品一区在线观看 | 欧美日韩在线观看视频网站 | 日韩福利在线 | 一区二区不卡 | 网站黄色av| 五月婷婷 六月丁香 | 中文字幕91av | 免费超碰 | 污免费网站 | 欧美日韩在线成人 | 黄色大片免费观看 | 色吧综合网 | 国产日韩欧美在线播放 | 国产精品久久欧美久久一区 | 大乳boobs巨大吃奶挤奶 | 国产a视频 | 91人人爽| 羞羞视频在线观看 | 天天操综合网 | 国产伦精品一区二区三区照片91 | 最新国产精品 | 国产精品视频偷伦精品视频 | 国产区免费视频 | 国产精品激情在线 | 玖玖综合网 | 日本不卡一区二区三区在线观看 | 成人亚洲视频 | 在线观看第一区 | 久久久久国产 | 亚洲激情av | 日韩精品在线网站 | 黄色一级视频 | 可以免费观看的av | 99久久久久久久 | 精品视频一区二区在线观看 | 在线观看视频91 | 成人蜜桃av|