版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
東北林業(yè)大學
單片機原理實驗課程設計總結報告機電工程學院設計項目:基于MCS-51單片機溫濕度儀系統(tǒng)的設計項目完成人: 謝文權、王世偉指導教師:管雪梅副教授學院:理學院專業(yè):物理學2010級物理一班 2012年11月25日綜合電子課程設計任務書
學生姓名謝文權學號20103215專業(yè)(班級)物理學一班學生姓名王世偉學號201032專業(yè)(班級)物理學一班設計項目基于MCS-51單片機溫濕度儀系統(tǒng)的設計設計內(nèi)容本設計主要開發(fā)一種基于MCS-51單片機的溫濕度監(jiān)測系統(tǒng),該系統(tǒng)主要由溫濕度傳感器SHT10、MCS-51單片機、DS1302時鐘芯片、AT24C02數(shù)據(jù)存儲芯片和鍵盤顯示電路幾部分組成,采用軟件編程??梢燥@示時間并實現(xiàn)室內(nèi)溫度和濕度的實時測量與顯示,同時具有數(shù)據(jù)存儲、查詢和上傳的功能。主要技術指標和要求(1)實時顯示室內(nèi)的溫度和濕度,顯不年、月、日、星期、時、分、秒:(2)能夠通過鍵盤輸入日期和時間的初值;(3)通過功能鍵能夠實現(xiàn)數(shù)據(jù)儲存、查詢功能;(4)通過功能鍵能夠實現(xiàn)外中斷和定時中斷功能;(5)完成設計報告。設計所用儀器設備LJD-SY-5200學習板一塊、計算機一臺工作計劃11.5-11.11 選定設計項目,復習單片機的一些語句:11.12-11.16熟悉KEIL3開發(fā)環(huán)境以及LJD-SY-5200開發(fā)板;11.17-11.20掌握各器件的運用,對各芯片程序分別進行調(diào)試;11.21-11.23 將各個分立的子程序集合成大程序并調(diào)試;11.23-11.25完成實驗報告。參考資料[1]趙偉,張錫英,高微,等,MCS—51系列一單片機原理與應用[M],黑龍江:東北林業(yè)大學出版社,2007[2]藍海芯片單片機板LJ—SY5200附帶材料指導教師簽字溫濕度傳感器綜合實驗摘要本系統(tǒng)用AT89c51、SHT10,鍵盤、數(shù)碼管、液晶屏、DS1302等組成,系統(tǒng)包括測量溫度、濕度的功能。系統(tǒng)除基本的測溫濕度功能外,還具有時間日期設定、顯示等功能.在設計中我們應用LJD-SY-5200單片機實驗系統(tǒng)做系統(tǒng)仿真。LJD-SY-5200實驗系統(tǒng)具有豐富的硬件資源。本設計采用AT89C51單片機控制可編程芯片CH451實現(xiàn)對顯示和鍵盤的控制。溫濕度值在液晶屏幕上顯示,時間在數(shù)碼管上顯示。本文詳細介紹了如何實現(xiàn)用鍵盤中斷測量顯示溫濕度的功能,并實現(xiàn)鍵盤輸入修改時間、I/O□等功能。關鍵詞:shtlO;測溫濕度;時間顯示;鍵盤設定初值;目錄TOC\o"1-5"\h\z1緒論 2引言 2\o"CurrentDocument"系統(tǒng)方案設計 3L3方案論證 32系統(tǒng)主要器件選型與依據(jù) 41LJD-SY-5200單片機實驗系統(tǒng) 4\o"CurrentDocument"CH451DS1芯片簡介 5\o"CurrentDocument"DS1302芯片簡介 7\o"CurrentDocument"SHT10芯片簡介 93系統(tǒng)的硬件設計 10\o"CurrentDocument"2溫濕度測量電路 11\o"CurrentDocument"3時間日期顯示設計 12\o"CurrentDocument"4鍵盤顯示模塊設計 12\o"CurrentDocument"4系統(tǒng)的軟件設計 13\o"CurrentDocument"5總結 13參考文獻附錄A溫濕度傳感器綜合實驗1緒論1.1引言近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據(jù)具體硬件結構軟硬件結合,加以完善。SHT10系列產(chǎn)品是一款高集成度的溫濕度傳感器芯片,提供全標定數(shù)字輸出。它采用的CMOSens技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與14位的A/D轉換器以及串行接口電路實現(xiàn)無縫連接。因此,該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、極高的性價比等優(yōu)點。每個傳感器芯片都在極為精確的濕度腔室中進行標定,以鏡面冷凝式濕度計為參照。校準系數(shù)以程序形式儲存在OTP內(nèi)存中,在標定的過程中使用。兩線制的串行接口與內(nèi)部的電壓調(diào)整,使外圍系統(tǒng)集成變得快速而簡單。微小的體積、極低的功耗,使其成為各類應用的首選。本系統(tǒng)采用MSC-51系列單片機和可編程串行I/O接口芯片CH451為中心器件來設計溫濕度測量,本系統(tǒng)實用性強、操作簡單、擴展功能強。1.2系統(tǒng)方案設計利用控制芯片、測溫電路、鍵盤顯示模塊、時鐘電路、等分別實現(xiàn):(1)能夠通過鍵盤輸入日期和時間的初值;(2)實時顯示時、分、秒;(3)測量并顯示溫濕度(4)通過I/O口顯示圖1-1為設計方案總體框圖圖1-1設計方案總體框圖系統(tǒng)初始化后,液晶屏幕上顯示“單片機實驗”等,同時可通過鍵盤依次輸入時、分、秒,輸入完成后即在數(shù)碼管上顯示,通過功能鍵10能在液晶屏上顯示溫濕度,通過功能鍵11能顯示I/O口流水燈。3方案論證(1)測溫模塊方案:使用SHT10芯片測量溫濕度,SHT10系列產(chǎn)品是一款高集成度的溫濕度傳感器芯片,提供全標定數(shù)字輸出。它采用的CMOSens技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。(2)顯示模塊方案一:使用LCD液晶屏作為時間日期顯示,LCD液晶顯示器的構造是在兩片平行的玻璃當中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細小電線,透過通電與否來控制桿狀水晶分子改變方向,將光線折射出來產(chǎn)生畫面。顯示清晰,實現(xiàn)功能全。但是開發(fā)板P0口同時作用在點陣和液晶上,不能同時用,故該方案舍棄。方案二:使用8為數(shù)碼管作為顯示,通過芯片CH451控制數(shù)碼管,可實現(xiàn)時間和日期還有當前交通狀態(tài)顯示,缺點是數(shù)碼管顯示數(shù)字,顯示不靈活多變。但是LCD液晶屏與點陣IO口沖突,故選用方案二數(shù)碼管作為顯示模塊。(3)時鐘電路模塊方案一:DS1302一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V?5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31X8的用于臨時性存放數(shù)據(jù)的RAM寄存器。方案二:DS12c887實時時鐘芯片功能豐富,可以用來直接代替IBMPC上的時鐘日歷芯片DS12887,同時,它的管腳也和MC146818B、DS12887相兼容。由于DS12c887能夠自動產(chǎn)生世紀、年、月、日、時、分、秒等時間信息,其內(nèi)部又增加了世紀寄存器,從而利用硬件電路解決子''千年”問題;DS12c887中自帶有鋰電池,外部掉電時,其內(nèi)部時間信息還能夠保持10年之久;對于一天內(nèi)的時間記錄,有12小時制和24小時制兩種模式。在12小時制模式中,用AM和PM區(qū)分上午和下午;時間的表示方法也有兩種,一種用二進制數(shù)表示,一種是用BCD碼表示;DS12C887中帶有128字節(jié)RAM,其中有11字節(jié)RAM用來存儲時間信息,4字節(jié)RAM用來存儲DS12C887的控制信息,稱為控制寄存器,113字節(jié)通用RAM使用戶使用;此外用戶還可對DS12c887進行編程以實現(xiàn)多種方波輸出,并可對其內(nèi)部的三路中斷通過軟件進行屏蔽。由于DS12c887是并行方式,DS1302是串行方式,為了減少IO口占用,故選用DS1302(4)鍵盤顯示控制模塊方案一:HD7279A是一片具有串行接口的,可驅動8位共陰式數(shù)碼管(或64只獨立LED)的智能顯示驅動芯片,該芯片同時還可連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示、鍵盤接口的全部功能。方案二:CH451是一個整合了數(shù)碼管顯示驅動和鍵盤掃描控制以及RP監(jiān)控的多功能外圍芯片。CH451內(nèi)置RC振蕩電路,可以動態(tài)驅動8位數(shù)碼管或者64位LED,具有BCD譯碼、閃爍、移位等功能;同時還可以進行64鍵的鍵盤掃描;CH451通過可以級聯(lián)的串行接口與單片機等交換數(shù)據(jù);并且提供上電復位和看門狗等監(jiān)控功能。相比之下CH451性能更好一點,故選用CH451作為鍵盤顯示控制芯片2系統(tǒng)主要器件選型及依據(jù)1LJD-SY-5200單片機實驗系統(tǒng)LJD-SY-5200的基本結構:LJD-SY-5200實驗系統(tǒng)的硬件部分主要由以下電路構成:顯示電路(其中顯示電路包括液晶顯示,數(shù)碼管顯示,發(fā)光二極管顯示及8X8三色LED點陣顯示),鍵盤電路,USB電路,串口電路,時鐘電路,12c電路,D/A&A/D轉換電路,測溫濕度電路,1一WIRE總線電路,IC卡電路,語音電路,蜂鳴器&繼電器電路,單脈沖發(fā)生電路,紅外遙感電路等電路有機組合而成。而實驗系統(tǒng)的軟件部分則是精心編寫并測試通過的所有硬件部分驅動程序和大量的綜合實驗例程。LJD-SY-5200硬件配置:LJD-SY-5200實驗系統(tǒng)具有豐富的硬件資源,具體的硬件配置如下:液晶顯示器采用的是兩兆字庫12232漢字液晶屏,漢顯液晶屏具有編程簡單使用方便等其他液晶屏所不具備的優(yōu)點;數(shù)碼管采用的是8段8位數(shù)碼管;鍵盤是4X4行列式鍵盤,鍵盤與數(shù)碼管通過專用鍵盤和數(shù)碼管接口芯片CH451與CPU相連接,使用鍵盤接口芯片的好處就是可以大大減少編程的工作量,一個復雜的數(shù)碼管顯示位的閃爍移動操作,在此我們只需要一行簡單的命令就能輕輕實現(xiàn)。發(fā)光二極管部分采用的24個紅黃綠三色的發(fā)光二極管,大量的各色發(fā)光二級管組合在一起能夠變換出五彩繽紛的色彩:點陣部分采用的8X8三色點陣顯示,點陣的驅動電路是兩片74HC573和一片74HC138及八個8550三極管和相應的限流電阻,其具體的使用方法詳見后續(xù)章節(jié)的8X8LED點陣的操作使用說明;USB電路采用的是內(nèi)部已經(jīng)固化了USB標準通信協(xié)議的USB接口芯片CH372"蝴CH372可以在很大程度上簡化USB驅動程序的開發(fā)復雜程度,面對USB驅動程序的開發(fā)初學者不再會望而卻步,只要在熟悉相關通信協(xié)議的基礎上即使是初學者也能輕輕松松開發(fā)出屬于自己的USB驅動程序。時鐘電路采用的是dsl302實時時鐘芯片,針對該芯片我們配置了較多的相關程序,包括通過數(shù)碼管顯示當前時間的RTC,可調(diào)節(jié)的通過數(shù)碼管顯示當前時間的RTC,可調(diào)節(jié)的通過數(shù)碼管可顯示當前時間和日期的RTC,通過12232液晶顯示屏顯示當前時間和日期的RTC,這些程序在編寫順序上遵循的是循序漸進,由易到難的原則,是真正的針對初學者而為其量身定做的,具有很強的針對性,相信初學者一定會從中受益的;12c電路采用的當前流行的AT24co2;DA/AD電路采用的分別是TLC5615&TLC549轉換芯片,他們具有簡單實用操作方便的特點。測溫濕度電路采用的SHT10溫濕度傳感器,它能夠精確的測試出當前小環(huán)境溫度和濕度,針對溫濕度傳感器我們?yōu)槠渑渲昧送ㄟ^液晶屏及數(shù)碼管顯示當前溫度&濕度的程序,詳見后續(xù)章節(jié)的SHT10篇;1—WIRE采用的是iButton(信息紐扣)一一DS1990A-F5,可說這在當前是比較先進的,這在市面上其他同類產(chǎn)品中是不具備的;IC卡電路采用的是西門子公司的SLE4442邏輯加密卡;語音芯片采用的是ISD1420,具有20秒的語音錄放功能.(3)LJD-SY-5200的仿真方法:把隨機帶的仿真監(jiān)控芯片插到LJD-SY-5200的CPU插座上,將串口線的一端插到計算機的串口上,另一端與LJD-SY-5200的串口相連接即完成硬件連接部分,接下來需要對仿真監(jiān)控芯片的工作參數(shù)進行設定。2.2CH451DS1芯片簡介CH451是一個整合了數(shù)碼管顯示驅動和鍵盤掃描控制以及UP監(jiān)控的多功能外圍芯片。CH451內(nèi)置RC振蕩電路,可以動態(tài)驅動8位數(shù)碼管或者64位LED,具有BCD譯碼、閃爍、移位等功能;同時還可以進行64鍵的鍵盤掃描;CH451通過可以級聯(lián)的串行接口與單片機等交換數(shù)據(jù);并且提供上電復位和看門狗等監(jiān)控功能。特點:(1)顯示驅動內(nèi)置大電流驅動級,段電流不小于25mA,字電流不小于150mA。動態(tài)顯示掃描控制,直接驅動8位數(shù)碼管或者64位發(fā)光管LEDo可選數(shù)碼管的段與數(shù)據(jù)位相對應的不譯碼方式或者BCD譯碼方式。數(shù)碼管的字數(shù)據(jù)左移、右移、左循環(huán)、右循環(huán)。各數(shù)碼管數(shù)字獨立閃爍控制。通過占空比設定提供16級亮度控制。
支持段電流上限調(diào)整,可以省去所有限流電阻。掃描極限控制,支持1到8個數(shù)碼管,只為有效數(shù)碼管分配掃描時間。(2)鍵盤控制內(nèi)置64鍵鍵盤控制器,基于8X8矩陣鍵盤掃描。內(nèi)置按鍵狀態(tài)輸入的下拉電阻,內(nèi)置去抖動電路。鍵盤中斷,低電平有效輸出。提供按鍵釋放標志位,可供查詢按鍵按下與釋放。(3)外部接口高速的4線串行接口,支持多片級聯(lián),時鐘速度從0到lOMHzo串行接口中的DIN和DCLK信號線可以與其它接口電路共用,節(jié)約引腳。完全內(nèi)置時鐘振蕩電路,通常不需要外接晶體或者阻容振蕩。內(nèi)置上電復位和看門狗Watch-Dog,提供高電平有效和低電平有效復位輸出。功能:CH451是一個多功能外圍芯片,通過可以級聯(lián)的4線串行接口與單片機、DSP、微處理器等交換數(shù)據(jù)。CH451包含三個功能:數(shù)碼管顯示驅動、鍵盤掃描控制、UP監(jiān)控,三個功能之間相互獨立,單片機可以通過操作命令分別啟用、關閉、設定CH451的任何一個功能。CH451的串行接口是由硬件實現(xiàn)的,單片機可以頻繁地通過串行接口進行高速操作,而絕不會降低CH451的工作效率。圖2-1為CH451外圍電路圖。表2-1為按鍵鍵值表。表2-2為引腳功能表。表2-3為操作指令表。圖2-2為CH451獲得按鍵代碼時序圖DCLK .DCLK .DIN .LOAD -單片機一 DOUT外國芯片MCU等<—RST(慮戰(zhàn)可選)<■RST?—SEG[7-0]十亍-1^8位數(shù)色或64位發(fā)光管8x8矩眸64DIG[7-0] ) 圖2-1CH451外圍電路圖表2-1按鍵鍵值表按鍵代碼DIG7DIG6DIG5DIG4DIG3DIG2DIG1DIGOSEGO47H46H45H44H43H42H41H40HSEG14FH4EH4DH4CH4BH4AH49H48HSEG257H56H55H54H53H52H51H50HSEG35FH5EH5DH5CH5BH5AH59H58HSEG467H66H65H64H63H62H61H60HSEG56FH6EH6DH6CH6BH6AH69H68HSEG677H76H75H74H73H72H71H70H|SEG77FH7EH7DH7CH7BH7AH79H78H表2-2引腳功能表
28腳封裝的引腳號24腳封裝的引腳號引腳名稱類型引腳說明232VCC電源正電源端.持續(xù)電流不小于200mA915GND電源公共接地端.持續(xù)電流不小于200mA254LOAD輸入串行接口的數(shù)據(jù)加載.內(nèi)置上拉電阻265DIN輸入串行按口的數(shù)據(jù)輸入,內(nèi)置上拉電阻276DCLK輸入串行接口的數(shù)據(jù)時鐘,內(nèi)置上拉電阻同時用于石門狗的清除輸入243DOUT摘出串行接口的數(shù)據(jù)輸出和鍵盤中斷22-151、2418SEG7-SEGO三態(tài)輸出及摘入數(shù)碼管的段驅動.高電平有效.鍵盤掃描輸入.高電平有效.內(nèi)黃下拉18774DIG7DIGO據(jù)出數(shù)碼管的字驅動.低電平有效.鍵盤掃描輸出,高電平有效1216RST輸出上電復位和石門狗復位.高電平有效13不支持RST#輸出上電復位和右門狗復位.低電平有效14不支持ADJ輸入段電流上限調(diào)整,內(nèi)置強下拉電阻10不支持CLK輸入可選外接電阻電容調(diào)整內(nèi)部時鐘頻率11不支持CLKO輸出CLK引腳時鐘的二分頻輸出28不支持RSTI編入手工復位輸入.高電平有效17N.C.不連接.禁止使用表2-3操作指令表操作命令位11位10位9位8位7位6位514位3位2位1位0空操作0000XXXXXXXX芯片內(nèi)部復位001000000001字數(shù)據(jù)左移001100000000字數(shù)據(jù)右移001100000010字數(shù)據(jù)左循環(huán)001100000001字數(shù)據(jù)右循環(huán)001100000011設定系統(tǒng)參數(shù)010000000WDOGKEYBDISP設定顯示參數(shù)0101MODELIMITINTENSITY設定閃爍控制0110D7SD6SD5SD4SD3SD2SD1SDOS加載字數(shù)據(jù)01000DIG_DATA.DIGO對應的字數(shù)據(jù)加載字數(shù)據(jù)11001DIG_DATA.DIG1對應的字數(shù)據(jù)加載字數(shù)據(jù)21010DIG_DATA.DIG2對應的字數(shù)據(jù)加載字數(shù)據(jù)31011DIG_DATA.DIG3對應的字數(shù)據(jù)加載字數(shù)據(jù)41100DIG_DATA.DIG4對應的字數(shù)據(jù)加載字數(shù)據(jù)51101DIG_DATA.DIG5對應的字數(shù)據(jù)加載字數(shù)據(jù)61110DIG_DATA.DIG6對應的字數(shù)據(jù)加載字數(shù)據(jù)71111DIG_DATA.DIG7對應的字數(shù)據(jù)讀取按鍵代碼0111XXXXXXXXDIN 'B8B9B1e[B11TOC\o"1-5"\h\z1 1 1edoleii-ini~iiii~ii~ii~ii~ii~ii~iiloadL UL MHLLLHHDOUTMCU|中斷|讀取按鍵代碼命令| 輸入按鍵代碼 |圖2-2單片機從CH451獲得按鍵代碼時序圖
2.3DS1302芯片簡介DS1302是DALLAS公司推出的涓流充電時鐘芯片,內(nèi)含有一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM通過簡單的串行接口與單片機進行通信,實時時鐘/日歷電路提供秒分時日日期月年的信息,每月的天數(shù)和閏年的天數(shù)可自動調(diào)整,時鐘操作可通過AM/PM指示決定采用24或12小時格式DS1302與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線1RES復位2I/O數(shù)據(jù)線3SCLK串行時鐘時鐘/RAM的讀/寫數(shù)據(jù)以一個字節(jié)或多達31個字節(jié)的字符組方式通信,DS1302工作時功耗很低,保持數(shù)據(jù)和時鐘信息時功率小于ImW。DS1302是由DS1202改進而來,增加了以下的特性,雙電源管腳用于主電源和備份電源供應Vccl為可編程涓流充電電源。附加七個字節(jié)存儲器,它廣泛應用于電話傳真便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領域,下面將主要的性能指標作一綜合:實時時鐘具有能計算2100年之前的秒分時日日期星期月年的能力,還有閏年調(diào)整能力。318位暫存數(shù)據(jù)存儲RAM串行I/O□方式使得管腳數(shù)量最少寬范圍工作電壓2.05.5V工作電流2.0V時,小于300nA讀/寫時鐘或RAM數(shù)據(jù)時有兩種傳送方式單字節(jié)傳送和多字節(jié)傳送字符組方式8腳DIP封裝或可選的8腳SOIC封裝根據(jù)表面裝配簡單3線接口與TTL兼容Vcc=5V可選工業(yè)級溫度范圍-40+85與DS1202兼容在DS1202基礎上增加的特性:對Vccl有可選的涓流充電能力;雙電源管用于主電源和備份電源供應;備份電源管腳可由電池或大容量電容輸入;附加的7字節(jié)暫存存儲器。DS1302的管腳排列及描述如圖2-4所示。管腳配置VCC2O□VcxziX1□27□SCLKX2U36□I/OgndCJ□RST圖2-4DS1302管腳圖XIX232.768KHz晶振管腳;GND地:RST復位腳;I/O數(shù)據(jù)輸入/輸出引腳;SCLK串行時鐘;,Vccl,Vcc2電源供電管腳;DS1302內(nèi)部寄存器;CH:時鐘停止位寄存器2的第7位12/24小時標志;CH=OCH=1WP:WP=OWP=1TCS:振蕩器工作允許bit7=l,CH=OCH=1WP:WP=OWP=1TCS:振蕩器工作允許bit7=l,12小時模式;振蕩器停止bit7=0,24小時模式;寫保護位寄存器2的第5寄存器數(shù)據(jù)能夠寫入AP=1寄存器數(shù)據(jù)不能寫入AP=O涓流充電選擇位:AM/PM定義;TCS-1010使能涓流充電TCS=其它禁止涓流充電DS=OO或11,即使TCS=1O1O,下午模式;上午模式;DS:DS-01DS=10二極管選擇位選擇一個二極管選擇兩個二極管充電功能也被禁止DS1302的管控制字如圖2-5所示。DS1302的讀寫時序圖如圖2-6所示。7 6 5 4 3 2 1 01RAMA4A3A2A1A0RD隔圖2-5DS1302的控制字獨字節(jié)讀J S“^^^TLrLrLrLrLrLnjrLrLrLrTrLrLrTrL|AO]A1|A2|A31A4|R/C|1.DO|DI|D2|D3|D4|D5|D6|D7單字節(jié)與?c^^rLrLrLrLrLTLrLrLrLrLrLrLrLrLrLr (R/W|AO|A0|A21A31A4|R/C|11■(DO|D1|02|D3|D)|05|D>|D7DS1302的讀寫時序圖如圖2-6所示。4SHT10芯片簡介SHT10系列產(chǎn)品是一款高集成度的溫濕度傳感器芯片,提供全標定數(shù)字輸出。它采用的CMOSens技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與14位的A/D轉換器以及串行接口電路實現(xiàn)無縫連接。因此,該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、極高的性價比等優(yōu)點。每個傳感器芯片都在極為精確的濕度腔室中進行標定,以鏡面冷凝式濕度計為參照。校準系數(shù)以程序形式儲存在OTP內(nèi)存中,在標定的過程中使用。兩線制的串行接口與內(nèi)部的電壓調(diào)整,使外圍系統(tǒng)集成變得快速而簡單。微小的體積、極低的功耗,使其成為各類應用的首選。
SCKDATAGNDVDDSCKDATAGNDVDDSHT10框圖命令代碼預留OOOOx溫度測量00011濕度測量00101讀狀態(tài)寄存器00111寫狀態(tài)寄存器00110預留0W1x-1110x軟復位,復位接口、清空狀態(tài)寄存器,,即清空為默認值下一次命令前等待至少11ms11110SHT10命令集3硬件設計3.1系統(tǒng)硬件設計總框圖系統(tǒng)原理圖設計如圖3-1所示,AT89C51單片機硬件系統(tǒng)實現(xiàn)如下功能:(1)控制時鐘芯片DS1302讀取日期和時間,設置初值;(2)控制CH451顯示時間和日期;(3)控制SHT10實現(xiàn)溫濕度測量;2溫濕度測量電路
3時間日期顯示設計電路如圖3-3所示,該時鐘電路可以對年、月、日、周、時、分、秒進行計時。DS1302實時時鐘具體控制方法如下:(1)單片機的P10口連接DS1302的I/O口,作為串行數(shù)據(jù)的輸入和輸出口;(2)單片機的P11口連接DS1302的SCLK口,給DS1302提供讀寫數(shù)據(jù)的脈沖信號;(3)單片機的P14口連接DS1302的RST口,起到時鐘芯片的復位作用。RSTGNDI/OX2SCLKXIVCC1VCC2圖3-3時鐘電路3.4鍵盤顯示模塊設計鍵盤顯示模塊控制電路如圖3-5所示,CH451控制鍵盤與8位數(shù)碼管,有鍵按下時產(chǎn)生中斷,并獲得相應的鍵值,根據(jù)相應的鍵值做相應功能處理,具體控制方法如下:(1)單片機的P12口連接CH451的LOAD口,作為串行數(shù)據(jù)加載:(2)單片機的P35口連接CH451的DIN口,作為串行數(shù)據(jù)輸入;(3)單片機的P34口連接CH451的DCLK口,作為串行接口的數(shù)據(jù)時鐘;(4)單片機的INT1口連接CH451的DOUT口,作為串口數(shù)據(jù)的輸出和鍵盤中斷;(5)CH451的RST1口連接外部按鍵,起到上電復位和看門狗復位的作用。一x3X££0X0苴4系統(tǒng)的軟件設計本系統(tǒng)利用鍵盤實現(xiàn)時間初值的設定,并利用鍵盤中斷實現(xiàn)溫濕度測量及顯示,I/O口流水燈顯示。5總結系統(tǒng)設計簡便、穩(wěn)定性強、操作簡單、程序設計簡便。系統(tǒng)不足:過于簡單,系通過于平面化,深度不足參考文獻[1]趙偉、張錫英。MCS-51系列單片機原理與應用東北林業(yè)大學出版社2007⑵藍海芯片單片機板LJ—SY5200附帶材料附表:
LOADBITPL2 ;鍵盤和顯示定義CH451DINBITP3.5DCLKBITP3.4DOUTBITP3.3DATA_FEQUOCHDATA_KEYEQUODHMREQU08HMR1EQU09HMR2EQUOAHMR3EQUOBHCOUNTEQUOCHADDR EQUOEHADDR EQUOEH;起始的顯示位置ADDRIEQUOFH;起始的顯示位置臨時變量N1 EQU10H;行數(shù)的臨時變量W_C_GLCDEQUOcfffH;00寫指令W_D_GLCDEQUOdfffH;01寫數(shù)據(jù)R_B_GLCDEQUOefffH;10讀忙標志R_D_GLCDEQUOffffH;11讀數(shù)據(jù);p2.5=r/wp2.4=rsSCLKBITPl.l;;系統(tǒng)時鐘芯片ds1302IODATABITPLO;RSTBITPl.4 ;FLAGBIT02H;讀寫標志位DATBITP3.5SCKBITP3.4ACKBIT01H;adrcommandr/w*/STATUSWEQU06H;00000110*/寫狀態(tài)STATUSREQU07H;00000111*/讀狀態(tài)MTEMPEQU03H;00000011*/測量溫度MHUMIEQU05H;00000101*/測量濕度RESETEQUIEH;000mi0*/SDAbitP1.0;/*iic數(shù)據(jù)傳送位*/ AT24co2A定義SCLbitPl.l;/*iic時鐘控制位*/WPBITPl.4,**********************************CS1 BITPl.5 ;A/DTLC549cp管腳定義SDA1BIT P1.0SCL1BIT Pl.lCS2BITPl.3;DA片選信號SCLK2BITPl.l;DA時鐘信號DIN2BITP1.0;lObit數(shù)字數(shù)據(jù)輸入TOC\o"1-5"\h\zORG 00H□MP MAINORG 03HLIMP LINTOORG OBHLJMP LT1ME0ORG 13HLJMPCH451」NT1;設置鍵盤中斷外部中斷1ORG23HUMPRECIVEORG 30HMAIN: MOVSP,#60HLCALLINITIAL_GLCD;調(diào)用LCD初試化LCALLINICH451;顯示和鍵盤初始化LCALLDS1302INI;時鐘芯片dsl302初始化SETBIT1;置外部中斷信號為邊沿觸發(fā)SETBEXI;允許鍵盤中斷SETBEA;開總中斷STAT: MOVA,#01H;清除LCD顯示器LCALLCOMMAND_GLCDMOVDPTR,#DHZTAB1MOVADDRI,#00H;開始行位置MOVNl,#6 ;顯示數(shù)量LCALLDHZLCALLOFFDISMOV 77H,#0MOV 78H,#18HMOV 79H,#18HMOV 7AH,#0EHMOV 7BH,#17HLCALL DISPLAYMOV 20H,#0MOV DATA_KEY,#0SETBEXI************鍵盤判斷*****************************KEYO: JNB00H,KEY0
CLROOHMOVA,DATA_KEYKEY1:CJNEA,#41H,KEY2一鍵一定時器---—CLREXI;禁止鍵盤中斷MOVTMOD,#01H;T0方式1MOVTL0,#0B0H淀時50毫秒MOVTHO,#3cHMOVR5,#40;2秒SETBETO;允許T0中斷SETBEACLRFOSETBTROJNBF0,$CLRFOAJMPSTAT一一外中斷into KEY2:CJNEA,#42H,KEY3;12鍵CLREXISETBITO;置外部中斷0信號為邊沿觸發(fā)SETBEXOSETBEAJNB01H,$CLR01HAJMPSTAT一存儲器寫記錄 KEY3:CJNEA,#43H,KEY31;3鍵LCALLOFFDISMOVA,#01H;消除顯示器LCALLCOMMAND..GLCDMOV77H,#3LCALLDISPLAYSETBWP;控制允許24C02A讀寫NOPCLRWPLCALLMEMLCALLDELAY,ISAJMPSTAT一存儲器讀記錄 KEY31:CJNEA,#48H,KEY4;4鍵LCALLOFFDISMOVA,#01H;清除顯示器LCALLCOMMAND..GLCDMOV77H,#4LCALLDISPLAYJKEY:JNBOOH,JKEYCLROOHMOVA,DATA_KEYCJNEA,#52HJKEY1;4+A,鍵按順序顯示記錄MOV7AH,#0AHLCALLDISPLAYLCALLDELAY.ISLCALLDISJILU;顯示記錄AJMPSTATJKEY1:CJNEA,#53H,JKEY2;4+B,鍵按時間和日期顯示記錄LCALLDISJILUDTMOV7AH,#0BHLCALLDISPLAYLCALLDELAY_1SAJMPSTATJKEY2:CJNEA,#53H,JKEY;‘4+E'鍵返回MOV7AH,#0EHLCALLDISPLAYLCALLDELAY,ISAJMPSTAT一串行通訊發(fā)送 KEY4:CJNEA,#49H,KEY5;5鍵CLREXILCALLTONGX1FAJMPSTAT--串行通訊接收 KEY5:CJNEA,#4AH,KEY6;6鍵CLREXILCALLTONGXISAJMPSTAT一蜂鳴器———KEY6:CJNEA,#4BH,KEY7;7鍵CLREiXlMOVR7,#10KK: LCALLYAN300CPLP1.6LCALLYAN300CPLP1.6DJNZR7,KKSETBEX1AJMPSTAT; A/D KEY7: CJNEA,#50H,KEY8 /8'鍵LCALLADREADAJMPSTAT; D/A KEY8: CJNEA,#51H,KEY9 ;9鍵LCALLDAWRITEAJMPSTAT; D/A KEY9: CJNEA,#52H,KEY10 ;'A鍵LCALLOFFDISMOVA,#01H ;清除顯示器LCALLCOMMAND-GLCDCONT: SETBACKLCALLMEASTEMP;測量溫度結果在B(6位整數(shù))A(8位小數(shù))中LCALLDISTEMP;顯示測量溫度LCALLYAN300LCALLMEASHUMILCALLDISHUMILCALLDELAY.ISJNBOOH,CONTCLROOHAJMPSTAT-鍵盤輸入日期和時間初值———KEY10:CJNEA,#53H,KEY11;'B鍵LCALLOFFDISMOVA,#01H;清除顯示器LCALLCOMMAND.GLCDLCALLDT;鍵盤輸入日期和時間初值AJMPSTAT-顯示日期和時間 KEY11:CJNEA,#58H,KEY12;'C鍵LCALLOFFDISMOVA,#01H;清除顯示器LCALLCOMMAND.GLCDMOV77H,#0CHLCALLDISPLAYLCALLXTTIMEAJMPSTAT--將記錄個數(shù)清零 KEY12:CJNEA,#59H,KEY13;D鍵LCALLOFFDISMOVA,#01H;清除顯示器LCALLCOMMAND,GLCDMOV77H,#0DHLCALLDISPLAY
MOV47H,#0A0H;寫命令0A0H=101000(X頁地址)0(寫)MOV48H,#0;地址OOH存記錄個數(shù)MOV49H,#0微據(jù)LCALLWRDATALCALLDELAY,ISAJMPSTATKEY13: AJMPKEYO;記錄個數(shù)清零;***********按時間和日期顯示記錄***********************DISJILUDT:MOVCOUNT,#0MOVR0,#30HDDT: JNB00H,DDTCLROOHMOVA,DATA_FMOV@R0,AINCCOUNTRET;統(tǒng)計鍵盤輸入年、月、日、時查詢和顯示; 按順序顯示記錄 —DISJILU: SETBWPNOPCLR WP;控制允許24co2A讀寫MOV47H,#0A0H;寫命令MOV48H,#0;地址MOV49H,#OA1H;讀命令LCALLRDDATAMOVR5,ACLRCMOVA,#lSUBBA,#l;讀記錄數(shù)MOVB,#12期、溫度(2)、濕度(2);一個存儲記錄=12字節(jié)=年(2)、月、日、時、分、秒、星MULABADDA,#l;計算存儲記錄的地址MOV48H,A;A=頁內(nèi)的地址B=頁地址XCHA,B;AB互換RLA;將頁地址*2ADDA,47HMOV47H,ALCALLDELAY10MOV7EH,R5MOV7BH,#1JXDUO: LCALLDISPLAYMOVR0,#30HMOVR7,#12;將頁地址+命令中JXDU1: LCALLRDDATA ;讀記錄數(shù)MOV@R0,AINCROINC48HLCALLDELAY10DJNZR7JXDU1LCALLDISDTWS;顯示記錄INC7BHJNB00H,$CLROOHDJNZR5JXDU0RETDISDTWS:MOVA,#80H ;送顯示地址第一行LCALLCOMMAND.GLCD;調(diào)寫命令子程序MOVR7,#7MOVR0,#30HJIXD2:LCALLDISDT ;顯示年、月、日\時、分、秒DJNZR7,J1XD2MOVA,@R0ADDA,#30HLCALLWRITE_GLCD ;顯示星期INCROMOVA,#90H ;送顯示地址第二行LCALLCOMMAND_GLCD;調(diào)寫命令子程序MOVR7,#2JIXD3:MOVA,@R0SWAPAANLA,#0FH;先顯示高4位ADDA,#30HLCALLWRITE_GLCDMOVA,@R0ANLA,#0FHADDA,#30H;送顯示MOVA,#?LCALLWRITE_GLCD;顯示低4位LCALLWRITE_GLCDINCROMOVA,@R0SWAPA;顯示?ANLA,#0FH ;先顯示高4位ADDA,#30HLCALLWRITE_GLCDMOVA,@R0;顯示第一位小數(shù)
ANLA,#OFHADDA,#30HLCALLWRITE_GLCD;顯示第二位小數(shù)MOVA,#'-'LCALLWRITE_GLCD;顯示「INCRODJNZR7,JIXD3RET;***************顯示日期和時間********XTTIME: MOVR0,#40HMOVR7,#7SETBFLAG;FLAG=1讀日期和時間LCALLRWRTCLCALLTIAOZMOVA,#80H;送顯示地址第一行LCALLCOMMAND.GLCD;調(diào)寫命令子程序MOVR7,#3MOVR0,#30HLCALLDISDT;顯示年高2位JIXUO:LCALLDISDT;顯示年、月、日DJNZR7,JIXU1AJMPJIXU2JIXU1:MOVLCALLWRITE.GLCD ;顯示丁AJMPJIXUOJIXU2:MOVA,#90H;送顯示地址第二行LCALLCOMMAND..GLCD;調(diào)寫命令子程序MOVR7,#3JIXU3:LCALLDISDT;顯示時、分、秒DJNZR7JIXU4AJMPJIXU5JIXU4:MOVLCALLWRITE.GLCD ;顯示UAJMPJIXU3JIXU5:CLREAMOVADDR1,#15HMOVNl,#2MOVDPTR.#TABLCALLDHZMOVA,@R0ADDA,#30HLCALLWRITE_GLCDSETBEAJBCOOH,QUITOAJMPXTT1MEQUITO: RETTIAOZ: MOV30H,#20H;年MOV31H,46HTOC\o"1-5"\h\zMOV32H,44H ;月MOV33H,43H ;日MOV34H,42H ;時MOV35H,41H ;分MOV36H,40H ;秒MOV37H,45H ;星期RETDISDT: MOVA,@R0SWAPAANLA,#0FHADDA,#30HLCALLWRITE_GLCD;顯示2MOVA,@R0ANLA,#0FHADDA,#30HLCALLWRITE.GLCD;顯示5INCRORET?**********.鍵盤輸入p|期和時間初值****************DT:MOV77H,#0BHLCALLDISPLAYJNB00H,$CLROOHMOVA,DATA_KEYKYI:CJNEA,#41H,KY2LCALLKEYINMOV30H,#8cHLCALLWRDT;'B+「鍵輸入年(2位BCD碼如11年);鍵盤輸入2位BCD碼;年地址8CH=1000110(地址)0;寫入LIMPDTKY2:CJNEA,#42H,KY3LCALLKEYINMOV30H,#88HLCALLWRDT;'B+2鍵輸入月(2位BCD碼如06月);鍵盤輸入2位BCD碼;年地址88H=1000100(地址)0;寫入LIMPDTKY3:CJNEA,#43H,KY4LCALLKEYINMOV30H,#86HLCALLWRDT;'B+3鍵輸入日(2位BCD碼如16日);鍵盤輸入2位BCD碼;年地址86H=1000011(地址)0怎入UMPDTKY4:UMPDTCJNEA,#48H,KY5LCALLKEYINMOV30H,#8AHLCALLWRDT;'B+4鍵輸入星期(2位BCD碼如02);鍵盤輸入2位BCD碼;年地址8AH=1000101(地址)0;寫入KY5:UMPDTCJNEA,#49H,KY6LCALLKEYINMOV30H,#84HLCALLWRDT;'B+5鍵輸入時(2位BCD碼如21時);鍵盤輸入2位BCD碼;年地址84H=1000010(地址)0;寫入KY6:UMPDTCJNEA,#4AH,KY7LCALLKEYINMOV30H,#82HLCALLWRDT;'B+6鍵輸入分(2位BCD碼如21分);鍵盤輸入2位BCD碼;年地址82H=1000001(地址)0;寫入KY7:UMPDTCJNEA,#4BH,KY8LCALLKEYINMOV30H,#80HLCALLWRDT;'B+7鍵輸入秒(2位BCD碼如21);鍵盤輸入2位BCD碼;年地址80H=l000000(地址)0;寫入KY8:KY9:CJNEA,#5AH,KY9RETLJMPDT;E鍵返回KEYIN: LCALLDELAYJSLCALLOFFDISMOVRO,#30H ;鍵盤輸入2位BCD碼MOVR4,#2KEYIN1: JNBOOH,KEYIN1CLROOHMOVA,DATA_FMOV@R0,AINCRODJNZR4,KEYIN1MOVA,30HSWAPAADDA,31H ;組合成壓縮的BCD碼如02H+03H->23HMOV31H,ALCALLDELAY.ISRETWRDT:MOVR0,#30HLCALLWRRTC
RET.********顯示測量溫度T=001*BA-40(溫度校正)********************************DISTEMP:MOVR2,#20h號位;R2=階碼D7-最高位符號D6D5D4D3D2D1-階DO-尾數(shù)符MOVR3,BMOVR4,A;將溫度BA轉成3字節(jié)浮點數(shù)存到R0為地址3個單元中LCALLSU924MOV40H,R2MOV41H.R3MOV42H.R4;入口數(shù)據(jù)R2R3R4出口數(shù)據(jù)R2R3R4MOVR0,#40H;XA=溫度MOV43H,#OF4H3個單元中MOV44H,#0A3HMOV45H,#0D6H;將小數(shù)0.01轉成3字節(jié)浮點數(shù)=F4A3D6H存到R1為地址MOVRI,#43H;XB=0.01LCALLSATBMOV40H,R2MOV41H,R3MOV42H,R4;XA*XB->R2R3R4實現(xiàn)0.01*測量溫度BAMOVR0,#40H;XA=0.01*測量溫度BAMOV43H,#0CH單元中MOV44H,#0A0HMOV45H,#00H;將數(shù)40轉成3字節(jié)浮點數(shù)=0CA000H存到R1為地址3個MOVR1,#43H;XB=40LCALLSAMBMOV40H,R2MOV41H,R3MOV42H,R4MOVRO,#40H;XA-XB->R2R3R4=實現(xiàn)0.01*測量溫度BA-40LCALLFDHEX ;將浮點數(shù)(正數(shù))轉化為16進制r€為地址的3字節(jié)浮點數(shù)->r2r3(整數(shù))r4r5(小數(shù))MOVR0,#51HMOVR7,#2LCALLBINXSBCD;將r4r5中2進制小數(shù)轉化為bcd->iO為地址的RAM中即40H41HLCALLBINBCD ;將r2r3中2進制整數(shù)轉化為bcd->r4r5r6MOV50H,R6MOVADDRI,#00H ;第一行顯示"溫度”
MOVNl,#2MOVDPTR,#DHZTAB3MOVNl,#2MOVDPTR,#DHZTAB3LCALLDHZ;數(shù)量2個;需要顯示的漢字位置;調(diào)用漢字顯示子程序SWAPAANLA,#0FH ;先顯示高4位ADDA,#30HMOVB,AMOVA,#02H ;送顯示地址ORLA,#80H ;送顯示地址LCALLCOMMAND_GLCD;調(diào)寫命令子程序MOVA,BLCALLWRITE_GLCD;送顯示MOVA.R6ANLA,#0FHADDA,#30HLCALLWRITE_GLCD ;顯示低4位MOVA,#?LCALLWRITE_GLCD濕示?MOVA,51HADDA,#30HLCALLWRITE_GLCD;顯示第一位小數(shù)MOVA,52HADDA,#30HLCALLWRITE_GLCD;顯示第二位小數(shù)MOVA,51HSWAPAADDA,52HMOV51H,ARET正產(chǎn)*****************DISHUMI:MOVR2,#20h號位.MOVR3,BMOVR4,ALCALLSU924MOV40H,R2MOV41H,R3MOV42H,R4MOVRO,#40H;將濕度BA轉成3字節(jié)浮點數(shù)存到R0為地址3個單元中正產(chǎn)*****************DISHUMI:MOVR2,#20h號位.MOVR3,BMOVR4,ALCALLSU924MOV40H,R2MOV41H,R3MOV42H,R4MOVRO,#40H;將濕度BA轉成3字節(jié)浮點數(shù)存到R0為地址3個單元中;入口數(shù)據(jù)R2R3R4出口數(shù)據(jù)R2R3R4MOVR1,#40HLCALLSATBMOV43H,R2;XA=濕度;XB=濕度;XA*XB->R2R3R4實現(xiàn)BA*BAMOV44H,R3MOV45H,R4MOVR0,#43H;XA=BA*BAMOV56H,#0DCH;將小數(shù)0.0000028轉成3字節(jié)浮點數(shù)=DCBBE6H存至l]RI為地址3個單元中MOV57H,#0BBHMOV58H,#0E6HMOVRi,#56H;XB=0.0000028LCALLSATBMOV56H,R2MOV57H,R3MOV58H,R4;XA*XB->R2R3R4實現(xiàn)0.0000028*BA*BAMOVR0,#40H;XA=BAMOV43H,#0F8H;將小數(shù)0.0405轉成3字節(jié)浮點數(shù)=F8A5E2H存到RI為地址3個單元中MOV44H,#0A5HMOV45H,#0E2HMOVR1,#43H;XB=0.0405LCALLSATBMOV40H,R2MOV41H,R3MOV42H,R4;XA*XB->R2R3R4實現(xiàn)0.0405*BAMOVR0,#40H;XA=0.0405*BAMOVR1,#56H;XB=0.0000028*BA*BALCALLSAMBMOV40H,R2MOV41H,R3MOV42H,R4;XA-XB->R2R3R4=實現(xiàn)0.0405*BA-0.0000028*BA*BAMOVR0,#40H;XA=0.0405*BA-0.0000028*BA*BA元中MOV43H,#06HMOV44H,#80HMOV45H,#00H;將數(shù)4轉成3字節(jié)浮點數(shù)=068000H存到R1為地址3個單MOVR1,#43H;XB=4LCALLSAMBMOV40H,R2MOV41H,R3MOV42H,R4MOVR0,#40H;XA-XB->R2R3R4=實現(xiàn)0.0405*BA-0.0000028*BA*BA-4
LCALLFDHEX ;將浮點數(shù)(正數(shù))轉化為16進制rO為地址的3字節(jié)浮點數(shù)->r2r3(整數(shù))r4r5(小數(shù))MOVRO,#53HMOVR7,#2LCALLBINXSBCD;將r4r5中2進制小數(shù)轉化為bcd->rf)為地址的RAM中即40H41HLCALLBINBCD;將r2r3中2進制整數(shù)轉化為bcd->r4r5r6MOV52H,R6MOVADDR1,#1OH ;第一行顯示"濕度"MOVNl,#2 ;數(shù)量2個MOVDPTR,#DHZTAB2 ;需要顯示的漢字位置LCALLDHZ ;調(diào)用漢字顯示子程序MOVMOVA,R6SWAPAANLA,#0FH ;先顯示高4位ADDA,#30HMOVB,AMOVA,#12H ;送顯示地址ORLA,#80H ;送顯示地址LCALLCOMMAND_GLCD;調(diào)寫命令子程序A,BLCALLWRITE_GLCD;送顯示MOVA,R6ANLA,#0FHADDA,#30HLCALLWRITE_GLCD ;顯示低4位MOVA,#'「LCALLWRITE_GLCD;顯示?MOVA,53HMOVADDA,#30HLCALLWRITE_GLCD;顯示第一位小數(shù)A,54HADDA,#30HLCALLWRITE_GLCD;顯示第二位小數(shù)MOVA,53HSWAPAADDA,54HMOV53H,ARET,****;1:**********;1:**************************************DHZTAB1:DW0B6ABH.0B1BlH,0C1D6H,0D2B5H,0B4F3H,0D1A7H]東北林業(yè)大學”DHZTAB2:DW0CAAAH,0B6C8H1濕度”DHZTAB3:DW0CEC2H,0B6C8H;"溫度”TAB:DW0D0C7H,0C6DAH星期’
*************顯示漢字16X16占陣************************DHZ:MOVADDR.ADDR1 ;開始行位置MOV R7,N1 ;顯示數(shù)量DHZ1:MOVA,ADDRORLA.#80H ;送顯示地址LCALLCOMMAND_GLCD;調(diào)寫命令子程序DHZ2:CLR AMOVCA,@A+DPTR;查找漢字的高位碼INCDPTRLCALLWRITE_GLCD;送顯示CLRAMOVCA,@A+DPTR;查找漢字的低位碼INCDPTRLCALLWRITE_GLCD;送顯示DJNZR7,DHZ2RET;點陣式LCD(128X64)模塊顯示實驗; LCD初始化工作 INITIAL_GLCD:MOV A,#30H ;功能設定001DLORE00LCALLCOMMAND_GLCD;DL=0/l(4/8位數(shù)據(jù)),RE=O/1(基本/擴充指令)MOV A,#30H ;功能設定LCALLCOMMAND.GLCDMOV A,#30HLCALLCOMMAND_GLCD ;S=0顯示畫面整體不移動MOV A,#06H ;游標不顯示;但是字會閃爍I/D=l光標向左移動地址-1LCALLCOMMAND_GLCD;000001I/DS I/D=0光標向右移動地址+1MOV A,#01H ;清除顯示器LCALLCOMMAND_GLCDMOV A,#0CH ;顯示狀態(tài)00001DCB,D=0/l顯示關/開LCALLCOMMAND_GLCD;C=0/l光標顯示關/開,B=0/l光標位置字符不反白/反白RET檢查LCD忙碌標志CHKBUSY_GLCD:PUSHMOVCHK: MOVXJBPOPRETACCDPTR,#R_B_GLCD;讀標志地址A,@DPTRACC7cHK ;判別是不是忙?ACC寫命令到GLCDCOMMAND_GLCD:CLREAPUSHDPHPUSHDPLLCALLCHKBUSY_GLCD;判別是不是忙?MOVDPTR,#W_C_GLCDMOVX@DPTR,A ;寫入命令POPDPLPOPDPHSETBEARET;?一一寫數(shù)據(jù)至IJGLCD WRITE_GLCD:CLREAPUSHDPHPUSHDPLLCALLCHKBUSY_GLCD;判別是不是忙?MOVDPTR,#W_D_GLCD;寫入數(shù)據(jù)MOVX@DPTR,APOPDPLPOPDPHSETBEARET;一一清除LCD的顯示幕 CLEAR_GLCD:MOVA,#01H ;清除顯示器LCALLCOMMAND_GLCDRET,********************************************************************;功能:向SHT10寫一字節(jié)數(shù)據(jù)或指令產(chǎn)*******************************東*****窣****************************/SWRITE:MOVR4,#8CLRSCKSWRT:RLCAMOVDAT,CSETBSCK時序脈沖NOPCLRSCKNOPDJNZR4,SWRTSETBDAT ;釋放數(shù)據(jù)線*/SETBSCK ;第9位作為響應位*/NOP ;檢測響應情況,如果有響應,數(shù)據(jù)線就會被SHT10拉低CLRSCK ;返回1表示沒響應RET,** * -, * **''需需」**需.宇**「宇亭.用宰,*亭宇宰;功能:從SHTIO讀取一字節(jié)數(shù)據(jù);說明:當ack=l時向SHT10發(fā)出一個響應位SREAD:MOVR4,#8SETBDAT;釋放數(shù)據(jù)線SRD:SETBSCK;連續(xù)讀8位數(shù)據(jù)MOVC,DATRLCACLRSCKDJNZR4,SRDCPLACKMOVC,ACKMOVDAT,C;當2?1<=1時拉低數(shù)據(jù)線*/SETBSCK;clk#9forack*/NOP;pulswithapprox.5us*/CLRSCKSETBDAT;移放數(shù)據(jù)線*/RET;功能:產(chǎn)生一個傳送開始條件;******************************************************************/SSTART:;DAT;SCK—II_IISETBDATCLRSCK;初始狀態(tài)*/NOPNOPSETBSCKNOPNOPCLRDATNOPNOPCLRSCKNOPNOPSETBSCKNOPNOP
SETBDATNOPNOPCLRSCKRET,************************************牛************:1:***********牛*****;功能:復位;*******************************************************************/SRESET:;communicationreset:DATA-line=landatleast9SCKcyclesfollowedbytransstart*/*/;DAT: II */*/;SCK:_ll_ll_ll_ll_ll_ll_ll_ll_lIII_II*/SETBDATCLRSCKInitialstate*/MOVR4,#8RSET:SETBSCKNOPCLRSCKDJNZR4,RSET;9SCKcycles*/SETBSCKNOPCLRSCKLCALLSSTARTtransmissionstart*/RET*********************************************************************;功能:軟復位;說明:通過軟復位的方式對SHT10進行復位;******************************************************************/;SOFTRESET:LCALLSRESET;SOFTRESET:LCALLSRESET;resetcommunication*/MOVA,#RESETLCALLSWRITEMOVA,#RESETLCALLSWRITERET;向傳感器發(fā)送復位命令*/;error=lincaseofnoresponseformthesensor*/;功能:讀狀態(tài)寄存器;出口參數(shù):B二讀狀態(tài)寄存器A=readchecksum(8-bit)(校驗位):RSTATUS: ;readsthestatusregisterwithchecksum(8-bit)*/LCALLSSTART ;傳送開始MOVA,#STATUSR
LCALLSWRITE;向傳感器發(fā)送命令*/SETBACKLCALLSREAD;讀狀態(tài)寄存器(8-bit)MOVB,ACLRACKLCALLSREAD;readchecksum(8-bit)(校驗位)RET;檢測響應情況,如果有響應,數(shù)據(jù)線就會被SHT10拉低DATA=0;功能:寫狀態(tài)寄存器;出口參數(shù):檢測響應情況,如果有響應DATA=0,數(shù)據(jù)線就會被SHT10拉低,*******************************************************************/;WSTATUS:;writesthestatusregisterwithchecksum(8-bit)LCALLSSTARTMOVA,#STATUSWLCALLSWRITEMOVA,BLCALLSSTARTMOVA,#STATUSWLCALLSWRITEMOVA,BLCALLSWRITEtransmissionstart*/;sendcommandtosensor*/;sendvalueofstatusregisterRET;功能:測量溫度結果在BA中;********************************************************************/MEASTEMP:LCALLSSTARTMOVA,#MTEMP;測量溫度14位LCALLSWRITE;發(fā)測量溫度命令LCALLYAN300;延時220毫秒JBDAT,$;DAT=0表示測量結束SETBACKLCALLSREAD;讀高8位數(shù)據(jù)readthefirstbyte(MSB)MOVB,ACLRACKLCALLSREAD;讀低8位數(shù)據(jù)readthesecondbyte(LSB)RET;功能:測量濕度結果在BA中MEASHUMI:LCALLSSTARTMOVA,#MHUMI;測量濕度12位LCALLSWRITE;發(fā)測量濕度命令LCALLYAN300;延時220亳秒JBDAT,$;DAT=0表示測量結束SETBACKLCALLSREAD;讀高8位數(shù)據(jù)readthefirstbyte(MSB)MOVB,A
CLRACKLCALLSREAD ;讀低8位數(shù)據(jù)readthesecondbyte(LSB)RET;***********d/A******************************DAWRITE: MOVB,#OFFHDATLC1:MOVA,#03HLCALLDATLC5615XCHA,B ;AB-1->ABCLRCSUBBA,#lXCHA,BSUBBA,#0JNZDATLC1;高8位=0?XCHA,B ;高8位=0再判斷低8位=0?JZDATLC2;低8位=0XCHA,B ;低8位O0AJMPDATLC1DATLC2:LCALLDATLC5615XCHA,BADDA,#lXCHA,BADDCA,#0MOVR7,BCJNER7,#0FFH,DATLC2CJNEA,#O3H,DATLC2JNB00H,DATLClRET?***********D/a***數(shù)在AB中*****************DATLC5615:PUSH06HTCL1:MOVR6,#6 ;精度10位,所以左移6位CLRC ;先送高位再送低位XCHA,BRLCAXCHA,BRLCATLC2:DJNZR6,TCL1CLRCS2CLRSCLK2MOVR6,#12;逐位傳遞12次,由于10位傳完需要傳送2位0CLRC ;先送高位再送低位XCHA,BRLCAXCHA,BRLCA
MOVD1N2,CSETBSCLK2NOPNOPCLRSCLK2DJNZR6,TLC2SETBCS2CLRSCLK2POP06HRET********A/DTLC549CP*****************ADREAD:LCALLOFFDISSETB Pl.4CLR Pl.4SETBPl.3TLC:LCALL TLC549DUMOV R7,AMOV B,#100DIV ABMOV 79H,AMOV A,BMOV B,#10DIV ABMOV 78H,AMOV 77H,BMOV A,R7;顯示測量模擬電壓數(shù)字值符號位MOVR2,#2Oh;R2=階碼D7-最高位符號D6D5D4D3D2D1-階D0-尾數(shù)MOVR3,#0MOVR4,A;將A轉成3字節(jié)浮點數(shù)存到R0為地址3個單元中LCALLSU924MOV30H,R2MOV31H,R3MOV32H,R4;入口數(shù)據(jù)R2R3R4出口數(shù)據(jù)R2R3R4MOVR0,#30H因人=模擬電壓數(shù)字值元中MOV33H,#06HMOV34H,#0A0HMOV35H,#00H;將數(shù)5轉成3字節(jié)浮點數(shù)=06A000H存到R1為地址3個單MOVR1,#33H;XB=5LCALLSATBMOV30H,R2MOV31H,R3;XA*XB->R2R3R4實現(xiàn)5*測量模擬電壓數(shù)字值
MOV32H,R4MOVR0,#30H ;XA=5*測量模擬電壓數(shù)字值MOV33H,#IOH ;將數(shù)255轉成3字節(jié)浮點數(shù)=10FF00H存到R1為地址3個單元中MOV34H,#0FFHMOV35H,#00HMOVR1,#33H ;XB=255LCALLSADB ;XA/XB->R2R3R4=實現(xiàn)5*測量模擬電壓數(shù)字值/255=測量模擬電壓MOV30H,R2MOV31H,R3MOV32H,R4MOVR0,#30HLCALLFDHEX;將浮點數(shù)(正數(shù))轉化為16進制r0為地址的3字節(jié)浮點數(shù)?>r2r3(整數(shù))r4r5(小數(shù))MOVR0,#40HMOVR7,#2LCALLBINXSBCD;將r4r5中2進制小數(shù)轉化為bcd->rO為地址的RAM中即40H41HLCALLBINBCD ;將r2r3中2進制整數(shù)轉化為bcd->r4r5r6MOV7EH,R6 ;顯示測量模擬電壓MOV7DH,#1AHMOV7CH,40HMOV7BH,41HLCALLDISPLAYLCALLDELAY.ISJNB00H,TLCRETTLC549DU:MOV R3,#O8H ;計數(shù)器CLR ACLR CSETBCS1NOPCLR CS1 ;開啟芯片READ:CLR SCL1 ;讀549芯片數(shù)據(jù)NOP ;MOV C,SDA1RLC A ;先讀高位再讀低位SETBSCL1NOPDJNZR3,READCLR SCL1
SETBCS1RET************串行通訊發(fā)送****************TONGXIF: MOVTMOD,#20H;tl工作在2MOVTHL#OE8HMOVTLL#0E8HSETBTRICLRET1MOVSCON,#50HMOVPCON,#OOHMOVR1,#30HPQO: MOVR7,#8MOV50H,#2;波特率=1200PQ1: MOVA,50H;送值MOVSBUF,A;啟動發(fā)送PQ2: JBCTLPQ3AJMPPQ2PQ3: INC50HLCALLDELAY10DJNZR7,PQ1LCALLYAN300SETBEXICLROOHJNB00HTQ0RET;判發(fā)送中斷標志位RECIVE: JBCRIJIESOUOQQUT: RETIJIESOUO: MOVA,SBUFMOV@R1,AINCRIRETI******************串行通訊接收****************************TONGXIS: MOVTMOD#20H;tl工作在2MOVTH1,#OE8HMOVTL1,#OE8HSETBTRICLRETIMOVSCON,#50HMOVPCON,#OOHPSO: MOVR7,#8MOVR0,#30H;波特率=1200PSI: JBCRI,PS2AJMPPSI;判發(fā)送中斷標志位
PS2: MOVA,SBUFMOV@R0,AINCRODJNZR7,PS1SETBEXIJNBOOH,PSORET.************^£>^^^1^^^***********************MEM: MOV47H,#0A0H;寫命令0A0H=1010000(頁地址)0(寫)MOV48H,#0;地址OOH存記錄個數(shù)MOV49H,#OA1H;讀命令0AlH=1010000(頁地址)1(讀)LCALLRDDATA;讀地址00H記錄個數(shù)->AMOVDATA_F,AADDA,#lMOV49H,ALCALLDELAY10;數(shù)據(jù)LCALLWRDATA;記錄個數(shù)+1MOVA,DATA_FMOVB,#12;一個存儲記錄=12字節(jié)=年(2)、月、日、時、分、秒、星期、溫度(2)、濕度(2)MULAB;計算存儲記錄的地址ADDA,#lMOV48H,A;A=頁內(nèi)的地址B=頁地址XCHA,B;AB互換RLA;將頁地址*2ADDA,47HMOV47H,AMOVR0,#40HMOVR7,#7;將頁地址+命令中SETBFLAG;FLAG=1讀日期和時間存到R0間接尋址的RAM中LCALLRWRTCLCALLTIAOZ;將年、月、日、時、分、秒、星期存到R0間接尋址的RAM中;MOVRO,#38HLCALLMEASTEMP;測量溫度結果在B(6位整數(shù))A(8位小數(shù))中LCALLDISTEMP;在50H51HMOV38H,50HMOV39H,51H;存到RO間接尋址的RAM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF(陜) 034-2020 條碼水準標尺校準規(guī)范
- 《教學課件急性胃炎》課件
- 初中數(shù)學解題方法-配方法課件
- 提升外部合作伙伴關系的管理措施計劃
- 水資源保護與社區(qū)發(fā)展的融合計劃
- 節(jié)水型城市的建設標準計劃
- 長期項目跟進的秘書工作計劃
- 帶式壓榨過濾機相關項目投資計劃書
- 醫(yī)療儀器設備制造相關行業(yè)投資方案
- 智慧城市相關行業(yè)投資規(guī)劃報告范本
- 我是記憶小達人(課件)-心理健康六年級
- YBT 6266-2024《高溫純化爐》規(guī)范要求
- 環(huán)境化學智慧樹知到期末考試答案章節(jié)答案2024年南開大學
- 美國文學概論智慧樹知到期末考試答案章節(jié)答案2024年吉林師范大學
- 模擬電子技術基礎(山東理工大學)智慧樹知到期末考試答案章節(jié)答案2024年山東理工大學
- 幼兒園跳繩活動方案及總結大班
- (高清版)WST 408-2024 定量檢驗程序分析性能驗證指南
- 人工智能原理與方法智慧樹知到期末考試答案章節(jié)答案2024年哈爾濱工程大學
- 流行病學-廈門大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 全屋定制合同范本下載
- 2021-2022學年浙江省杭州市錢塘區(qū)人教版六年級上冊期末測試數(shù)學試卷【含答案】
評論
0/150
提交評論