版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 第1章 概述</b></p><p> 1.1 數(shù)字溫度計簡介</p><p> 隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術入手,一切向著數(shù)字化控制
2、,智能化控制方向發(fā)展。</p><p> 此次課程設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用單片機AT89S51,測溫傳感器使用DS18B20,用3位共陽極LED數(shù)碼管以串口傳送數(shù)據(jù),實現(xiàn)溫度顯示,能準確達到以上要求。</p><p> 1.2 設計內容及要求
3、</p><p> 本次單片機課程設計將以51系列單片機為核心,以開發(fā)板為平臺;設計一個數(shù)字式溫度計,要求使用溫度傳感器(可以采用DS18B20或采用AD590)測量溫度,再經單片機處理后,由LED數(shù)碼管顯示測量的溫度值。測溫范圍為0~100℃,精度誤差在0.5℃以內。</p><p> 第2章 系統(tǒng)總體方案設計</p><p> 2.1數(shù)字溫度計設計的方案&
4、lt;/p><p> 在做數(shù)字溫度計的單片機電路中,對信號的采集電路大多都是使用傳感器,這是非常容易實現(xiàn)的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。采集之后,通過使用51系列的單片機,可以對數(shù)據(jù)進行相應的處理,再由LED顯示電路對其數(shù)據(jù)進行顯示。</p><p><b> 2.2系統(tǒng)設計框圖</b>
5、;</p><p> 溫度計電路設計總體設計方框圖如圖2.1所示,控制器采用單片機AT89S51,溫度傳感器采用DS18B20,用6位LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。此外,還添加了報警系統(tǒng),對溫度實施監(jiān)控。</p><p> 圖2.1 數(shù)字溫度計框圖</p><p> 第3章 硬件設計</p><p> 3.1主控器8
6、051 芯片 </p><p> 對于單片機的選擇,可以考慮使用8031與8051系列,由于8031沒有內部RAM,系統(tǒng)又需要大量內存存儲數(shù)據(jù),因而不適用。AT89C51 以低價位單片機可為提供許多高性價比的應用場合,可靈活應用于各種控制領域,對于簡單的測溫系統(tǒng)已經足夠。單片機AT89C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要該器件是INT
7、EL公司生產的MCS一5l系列單片機中的基礎產品,采用了可靠的CMOS工藝制造技術,具有高性能的8位單片機,屬于標準的MCS—51的CMOS產品。其主要特征有如下幾個:</p><p> ● 與MCS-51 兼容 </p><p> ● 4K字節(jié)可編程FLASH存儲器 </p><p> ● 壽命:1000寫/擦循環(huán) </p><
8、;p> ● 數(shù)據(jù)保留時間:10年 </p><p> ● 全靜態(tài)工作:0Hz-24MHz </p><p> ● 三級程序存儲器鎖定 </p><p> ● 128×8位內部RAM </p><p> ● 32可編程I/O線 </p><p> ● 兩個16位定時器/計數(shù)
9、器 </p><p> ● 5個中斷源 </p><p> ● 可編程串行通道 ·</p><p> ● 低功耗的閑置和掉電模式 </p><p> ● 片內振蕩器和時鐘電路</p><p> AT8951的管腳如下圖所示:</p><p> 圖3.1
10、 AT89C51芯片管腳圖</p><p> 各管腳功能:VCC:供電電壓。 GND:接地。 P0~P3:為輸入/輸出口線,其各有的功能,而P3口每一位還有特殊功能。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。 /PSEN:外部程序
11、存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。 XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。</p><p> 3.1.1 時鐘電
12、路80C51時鐘有兩種方式產生,即內部方式和外部方式。80C51中有一個構成內部震蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。本次采用內部震蕩電路,瓷片電容采用22PF,晶振為12MHZ。</p><p> 圖3.1.1 震蕩電路圖</p><p> 3.1.2 復位電路單片機系統(tǒng)的
13、復位電路在這里采用的是上電+按鈕復位電路形式,其中電阻R采用10KΩ的阻值 ,電容采用10μF的電容值。</p><p> 圖3.1.2 復位電路</p><p><b> 3.2 溫度傳感器</b></p><p> DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電
14、壓更寬、更經濟。DALLAS 半導體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55~+125 攝氏度,可編程為9位~12 位轉換精度,測溫分辨率可達0.0625攝氏度,分辨率設定參數(shù)以及用戶設定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20
15、 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。 </p><p> 表3.1 DS18B20分辯率的定義規(guī)定</p><p> 由表3.1可見,DS18B20溫度轉換的時間比較長,而且設定的分辯率越高,所需要的溫度數(shù)據(jù)轉換
16、時間就越長。因此,在實際應用中要將分辯率和轉換時間權衡考慮。</p><p> DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地,如下圖
17、所示。 </p><p> 圖3.2 DS18B20管腳圖</p><p> DS18B20的初始化: </p><p> (1) 先將數(shù)據(jù)線置高電平“1”。 </p><p> ?。?) 延時(該時間要求的不是很嚴格,但是盡可能的短一點) </p><p> ?。?) 數(shù)據(jù)線拉到低電平“0”。
18、 </p><p> ?。?) 延時750微秒(該時間的時間范圍可以從480到960微秒)。 </p><p> ?。?) 數(shù)據(jù)線拉到高電平“1”。 </p><p> (6) 延時等待(如果初始化成功則在15到60毫秒時間之內產生一個DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環(huán),所
19、以要進行超時控制)。 </p><p> ?。?) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。 </p><p> ?。?) 將數(shù)據(jù)線再次拉高到高電平“1”后結束。 </p><p> DS18B20的寫操作: </p><p> ?。?) 數(shù)據(jù)線
20、先置低電平“0”。 </p><p> ?。?) 延時確定的時間為15微秒。 </p><p> ?。?) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。 </p><p> (4) 延時時間為45微秒。 </p><p> ?。?) 將數(shù)據(jù)線拉到高電平。 </p><p> ?。?) 重復上(
21、1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。 </p><p> ?。?) 最后將數(shù)據(jù)線拉高。 </p><p> 3.3 顯示電路</p><p> 對于數(shù)字溫度的顯示,我們采用6位LED數(shù)碼管。足夠顯示0~100中各位數(shù),并且還能顯示一位小數(shù)部分。</p><p> 圖3.3 6位LED數(shù)碼顯示管</p>
22、<p> 3.4 溫度報警電路</p><p> 對于數(shù)字溫度計的設計,除了溫度的數(shù)字顯示功能外還加入了報警系統(tǒng),如果我們所設計的系統(tǒng)用來監(jiān)控某一設備,當設備的溫度超過我們所設定的溫度值時,系統(tǒng)會產生報警。我們便能很好的對設備進行處理,就不會應溫度的變化而造成不必要的損失。</p><p> 當溫度高于100度時,報警時由單片機產生一定頻率的脈沖,由P3.7引腳輸出,
23、P3.7外接一只NPN的三極管來驅動楊聲器發(fā)出聲音,以便操作員來維護,從而達到報警的目的。其電路圖如下所示。</p><p> 圖3.4(a) 揚聲器報警系統(tǒng)電路圖</p><p> 當溫度低于0度時,亮紅燈報警,以便操作員來維護,從而達到報警的目的。其電路圖如下所示。</p><p> 圖3.4(b) 紅燈報警系統(tǒng)電路圖</p>
24、<p> 第4章 軟件設計及調試</p><p><b> 4.1 概述</b></p><p> 本次課程設計采用的是proteus軟件仿真,用Keil軟件進行編譯。Protues軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及
25、外圍器件的工具,也是世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺。</p><p> 由單片機AT89C51為核心而設計的數(shù)字溫度計,對其進行軟件程序的仿真時,我們采用單片機匯編語言來編寫。系統(tǒng)程序主要包括主程序、讀出溫度子程序、顯示數(shù)據(jù)子程序、報警子程序等等。</p><p> 然而整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型后,軟件的功能
26、也就基本定下來了。</p><p> 從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個控制系統(tǒng)的核心,專門用來協(xié)調各執(zhí)行模塊和操作者的關系。二是執(zhí)行軟件(子程序),它是用來完成各種實質性的功能如測量、計算、顯示、通訊等。每一個執(zhí)行軟件是一個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種
27、最合適的監(jiān)控程序結構,然后根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調度關系。</p><p><b> 4.2 主程序</b></p><p> 主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內測量一次被測溫度。</p><p> 圖4.1 主
28、程序流程</p><p> 4.3讀出溫度子程序</p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,檢驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖4.2所示。</p><p> 圖4.2 讀出溫度子程序流程圖</p><p> 4.4 溫度轉換命令子程序</p><p
29、> 溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。</p><p> 4.5計算溫度子程序</p><p> 計算溫度子程序將RAM值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖4.3所示。</p><p><b> N</
30、b></p><p><b> Y</b></p><p> 圖4.3 計算溫度子程序流程圖</p><p> 第5章 系統(tǒng)聯(lián)調及操作說明</p><p> 對于此次的數(shù)字溫度計設計,我們采用匯編語言來實現(xiàn)51單片機的運行,首先,根據(jù)設計所需,可以用偉福軟件來編寫匯編程序。編寫完畢檢查無誤后,接下來便是原
31、理圖的繪制。首先運行Proteus ISIS軟件,新建一個模板后,就可以開始繪制原理圖工作。原理圖的繪制過程如下:</p><p> 1.將所需元器件加入到對象選擇器窗口。</p><p> 單擊選擇菜單欄“庫”選項下的“拾取元件/符號選項”,然后在彈出的“Pick device”對話框的“關鍵字”欄輸入要找的器件英文名稱,如“AT89C51”,系統(tǒng)就會自動將搜索結果顯示在“結果”欄中
32、,如圖1所示,單擊選擇“AT89C51”,再點“確定”即可。</p><p> 用類似的方法可將將電阻“RES” 、電容“CAP”、發(fā)光二極管“LED”、溫度傳感器“DS18B20”、晶振“CRYSTAL”和數(shù)碼管組“7SEG-MPX4-CC”( 因為任務中要求顯示兩位溫度值,故選用四個數(shù)碼管的數(shù)碼管組,其中兩個用來顯示攝氏度符號“℃”)添加到對象選擇器窗口中。</p><p> 2.
33、放置元器件至圖形編輯窗口。</p><p> 在對象選擇器窗口中,選中AT89C51,在圖形編輯窗口合適位置處點擊鼠標左鍵,該對象被完成放置。用類似的方法可將將電阻RES 、排阻RESPACK-8、電容CAP、發(fā)光二極管LED、溫度傳感器DS18B20、晶振CRYSTAL和數(shù)碼管組7SEG-MPX4-CC。 電源和地可以在工作界面點擊鼠標右鍵,選擇“放置”選項下的“POWER”和“GROUND”。</p&
34、gt;<p> 3.元器件之間的連線</p><p> Proteus具有線路自動路徑功能(簡稱WAR),當選中兩個連接點后,WAR將選擇一個合適的路徑連線。WAR可通過使用標準工具欄里的“WAR”命令按鈕來關閉或打開,也可以在菜單欄的“Tools”下到這個圖標。由于本次設計所用到的器件較少,所有連線均采用手工連線方法。</p><p><b> 4.導線標簽
35、的使用</b></p><p> 單擊繪圖工具欄中的導線標簽“LBL”按鈕,將鼠標置于圖形編輯窗口的欲標標簽的導線上,跟著鼠標的指針就會出現(xiàn)一個“×”號,表明找到了可以標注的導線,單擊鼠標左鍵,彈出編輯導線標簽窗口,在“標號”欄中,輸入標簽名稱(如ds1),單擊“確定”按鈕,結束對該導線的標簽標定。同理,可以標注其他導線的標簽。由于本次設計所用到的器件和所需連線較少,因此未采用標簽標注的方
36、法。</p><p> 電路的核心是單片機AT89C51,單片機的P1口八個引腳分別對應接七段數(shù)碼組的八個引腳,排阻RESPACK-8和電源完成P1口輸出的上拉作用,P3口的P3.0~P3.3分別控制對應的數(shù)碼管,P3.4用來輸入溫度傳感器DS18DS20的轉化數(shù)據(jù),P3.5口用來控制溫度報警指示燈D1。</p><p> 該單片機系統(tǒng)采用12MHZ石英晶振和30pF的微調電容構成的自
37、激振蕩器作為時鐘電路,并采用簡單的上電復位電路。 最后便可以實現(xiàn)聯(lián)調,在protues軟件里的源代碼選項中點擊添加源文件,把已編好的匯編語言添加進去。確定后就可以執(zhí)行模擬的軟硬件仿真。若仿真結果符合所需要求,那么就可以根據(jù)此原理圖以及結合實際所需來制作數(shù)字溫度計實物。</p><p><b> 第6章 總結</b></p><p> 本次課
38、程設計我們進行了兩個課程設計:一是單片機的學習與應用;二是新器件的學習。這里主要敘述和第一個課設題目——單片機的學習與應用相關的總結與體會。在課設過程中,我們不僅鞏固了平時所學習的單片機知識,而且通過不斷查閱相關資料,學習新的知識,可以說,通過這次單片機的實踐學習,我們學到了很多,而且對單片機的有關知識以及其在現(xiàn)實生活中的多方面應用有了更深層次的認識,這對于我們以后的學習和步入社會后參加工作都有很大的幫助。</p><
39、;p> 在此次課程設計的進程中,我們遇到了很多問題,例如,一開始我們在確定課設題目后,在編寫程序時,由于思路不太清晰,而且設計要求中需要使用新器件DS18B20智能測溫,而其相關知識我們很模糊甚至可以說一無所知,不過后來,我們通過查找一些相關的資料書以及尋求輔導老師的幫助,又經過我們的主動思考,理清思路,終于將程序修改正確。在仿真時,由于我們有了之前的數(shù)模電課設仿真經驗,所以此時我們課設進行的很順利,并沒有受到什么大的阻礙。&l
40、t;/p><p> 通過此次單片機課程設計,我們明白了很多,理論指導實踐,但是理論也需要實踐給予證明,不能盲目的相信書本,凡事都要通過自己的思考推敲,否則自己不會取的大的進步。而且在平時的學習生活中應該多和周圍的同學相互學習,交流經驗,遇到不會的東西時,切忌焦躁,首先要經過自己的獨立思考,有了一定想法后,可以去查找相關的資料書刊或者找同學討論,如果實在解釋不了,再去找輔導老師,在這個遇到問題解決問題的過程中,不斷加
41、強自我的動腦能力,進而去指導動手能力,也只有這樣,在思路清晰,條理順暢的時候,再去進行軟件編寫和硬件操作工作,才有可能起到事半功倍的效果。</p><p><b> 參考文獻</b></p><p> 1、王迎旭編.《單片機原理與應用》[M].機械工業(yè)出版社.2004.</p><p> 2、樓然苗編.《51系列單片機設計實例》[M].北
42、京航空航天大學出版社.</p><p> 3、黃勤編.《計算機硬件技術基礎實驗教程》[M].重慶大學出版社.</p><p> 4、劉樂善編.《微型計算機接口技術及應用》[M].華中科技大學出版社.</p><p> 5、陳光東編.《單片微型計算機原理及接口技術》[M].華中科技大學出版社.</p><p> 附錄A 系統(tǒng)硬件原理圖&
43、lt;/p><p><b> 附錄B 程序清單</b></p><p> DQ BITP3.0 ;從DS18B20向8051傳送的數(shù)據(jù)端口</p><p> FLAG BIT00H</p><p> FLAG_NEGBIT01H ;溫度正負值標志位<
44、;/p><p> TEMP_LEQU 30H ;所設報警最低值溫度值</p><p> TEMP_HEQU31H ;所設報警最高值溫度值</p><p> TEMP_INTEQU 32H</p><p> TEMP_DPEQU 33H</p>
45、;<p> TEMP_100EQU34H ;</p><p> TEMP_10EQU35H</p><p> TEMP_1EQU36H</p><p> C0BIT P3.1 ;負溫度標志位</p><p> C1BIT P3.2 ;超過100
46、標志位</p><p> C2BIT P3.3 ;超過10 標志位</p><p> C3BIT P3.4 ;超過1 標志位</p><p> C4BIT P3.5 ;超過0 標志位</p><p> ;*******************************</p&g
47、t;<p> ;************主函數(shù)*************</p><p><b> ORG 0000H</b></p><p> LJMP START</p><p><b> ORG 1000H</b></p><p> START:MOV SP,#60H
48、</p><p> MAIN: LCALL READ_TEMP ;調用函數(shù)讀DS18B20所示溫度</p><p> LCALL PROC_TEMP ;調用函數(shù)對溫度進行處理</p><p><b> LJMP MAIN</b></p><p> ;*
49、********************************</p><p> ;*********************************</p><p> READ_TEMP:</p><p> LCALL INI_DQ</p><p> JB FLAG,RE_0</p><p><b&
50、gt; RET</b></p><p> RE_0:MOV A,#0CCH</p><p> LCALL WRITE_DQ ;讀出傳感器所示溫度</p><p> MOV A,#44H</p><p> LCALL WRITE_DQ</p><p> LCALL DISP_L
51、ED;調用LED顯示程序</p><p> LCALL INI_DQ</p><p> MOV A,#0CCH</p><p> LCALL WRITE_DQ</p><p> MOV A,#0BEH</p><p> LCALL WRITE_DQ</p><p> LCALL
52、READ_DQ</p><p><b> RET</b></p><p> ;************DS18B20初始化程序***************</p><p><b> INI_DQ:</b></p><p><b> SETBDQ</b></p&
53、gt;<p> NOP ;</p><p> NOP ;空操作 PC值加2</p><p><b> CLRDQ</b></p><p> MOV R1,#3</p><p> INI_0: MOV
54、 R0,#80</p><p> DJNZ R0,$</p><p> DJNZ R1,INI_0</p><p><b> SETB DQ</b></p><p> NOP ;</p><p> NOP
55、 ;</p><p> NOP ;空操作 PC值加3</p><p> MOVR7,#25</p><p> INI_1: JNB DQ,INI_2 ;DQ為0則轉</p><p> DJNZ R7,INI_1 ;延時</p>&l
56、t;p> LJMP INI_3</p><p> INI_2: SETB FLAG ;標志位</p><p> LJMP INI_4</p><p> INI_3: CLR FLAG</p><p> LJMP INI_5</p><p> INI_4: MOV
57、R0,#80</p><p> DJNZ R0,$ ;時序要求延時一段時間</p><p> INI_5: SETB DQ</p><p><b> RET</b></p><p> ;**************DS18B20寫命令******************</p><
58、;p><b> WRITE_DQ:</b></p><p> MOVR6,#8</p><p><b> CLR C</b></p><p> Tloop:CLRDQ</p><p><b> MOV R2,#6</b></p><p
59、><b> DJNZ R2,$</b></p><p> RRCA;最低位移到C中</p><p><b> MOV DQ,C</b></p><p> MOV R2,#23</p><p><b> DJNZ R2,$</b></p>&
60、lt;p><b> SETB DQ</b></p><p><b> NOP</b></p><p> DJNZ R6,Tloop</p><p><b> SETB DQ</b></p><p><b> RET</b></p>
61、;<p> ;**************讀DS18B20數(shù)據(jù)函數(shù)*************</p><p><b> READ_DQ:</b></p><p> MOV R5,#2</p><p> MOV R0,#30H</p><p> READ_0:MOV R6,#8</p
62、><p> READ_1:CLRC</p><p><b> SETB DQ</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLRDQ</b>&l
63、t;/p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> SETBDQ<
64、;/b></p><p> MOV R2,#9</p><p> DJNZ R2,$</p><p><b> MOV C,DQ</b></p><p> MOV R3,#23</p><p> DJNZ R3,$</p><p><b>
65、; RRCA</b></p><p> DJNZR6,READ_1</p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> DJNZ R5,READ_0</p><p><b> SETB DQ<
66、;/b></p><p><b> RET</b></p><p> ;***************溫度數(shù)據(jù)處理程序*****************</p><p> PROC_TEMP:</p><p> CLR FLAG_NEG</p><p> MOV A,TEMP_L&
67、lt;/p><p> SWAP A ; A中高低四位互換</p><p> ORL A,#0F0H</p><p> MOV TEMP_INT,A</p><p> MOV A,TEMP_H</p><p><b> SWAP A</b></p>
68、<p> ORL A,#0FH</p><p> ANL TEMP_INT,A</p><p> MOV A,TEMP_H</p><p> CLR P3.6</p><p> CLR P3.7</p><p> JB ACC.7,BAOJING1 ;低于零度亮紅燈報
69、警</p><p> ;JBACC.7,NEGTIVE</p><p> MOV A,TEMP_L</p><p> ANL A,#0FH</p><p> MOV DPTR,#TAB3</p><p> MOVC A,@A+DPTR</p><p> MOV TEMP_DP,A
70、</p><p> LJMP PRO_0</p><p> ;***********報警函數(shù)********************</p><p> BAOJING1: SETB P3.6</p><p><b> RET</b></p><p> ;NEGTIVE:
71、 ;溫度值為負時處理程序,按實際情況,處理過程比較復雜</p><p> ;SETB FLAG_NEG</p><p> ;MOV A,TEMP_L</p><p><b> ;CPL A</b></p><p> ;ANL A,#0FH</p><p> ;MOV R1,A
72、</p><p> ;CJNE R1,#0FH,PRO_1</p><p> ; ;低于0°則調用報警函數(shù)</p><p> ;PUSH ACC</p><p> ;MOV A,TEMP_INT</p><p> ;SUBB A,#1</p><p>
73、 ;MOV TEMP_INT,A</p><p><b> ;POP ACC</b></p><p> ;MOV TEMP_DP,#00H</p><p> ; LJMP PRO_2</p><p> PRO_1: ADD A,#1</p><p> MOV DPT
74、R,#TAB3</p><p> MOVC A,@A+DPTR</p><p> MOV TEMP_DP,A</p><p> PRO_2:MOV A,TEMP_INT</p><p><b> CPL A</b></p><p> MOV TEMP_INT,A</p>
75、<p> PRO_0:MOV A,TEMP_INT</p><p> MOV B,#100</p><p><b> DIV AB</b></p><p> MOV TEMP_100,A</p><p><b> MOV A,B</b></p><p>
76、<b> MOV B,#10</b></p><p><b> DIV AB</b></p><p> MOV TEMP_10,A</p><p> MOV TEMP_1,B</p><p><b> RET</b></p><p> ;**
77、************LED初始化********************</p><p><b> CLR_LED:</b></p><p><b> CLR C0</b></p><p><b> CLR C1</b></p><p><b> CLR
78、C2</b></p><p><b> CLR C3</b></p><p><b> CLR C4</b></p><p><b> RET</b></p><p> ;**************LED顯示***********************&
79、lt;/p><p><b> DISP_LED:</b></p><p> LCALL CLR_LED</p><p><b> SETB C0</b></p><p> JNB FLAG_NEG,DL_0</p><p> MOV P1,#0BFH</p>
80、<p> LCALL DELAY_10MS</p><p><b> LJMP DL_1</b></p><p><b> DL_0:</b></p><p> MOV P1,#0FFH</p><p> LCALL DELAY_10MS</p><p&g
81、t; DL_1:LCALL CLR_LED</p><p> SETB C1 ;顯示百位</p><p> MOV A,TEMP_100</p><p> MOV DPTR,#TAB4</p><p> MOVC A,@A+DPTR</p><p><
82、;b> MOV P1,A</b></p><p> CJNE A,#0F9H,CESHI</p><p> LCALL BAOJING2 ;超過一百啟動揚聲器報警</p><p> CESHI:LCALL DELAY_10MS</p><p> LCALL CLR_LED</p
83、><p> SETB C2 ;顯示十位</p><p> MOV A,TEMP_10</p><p> MOV DPTR,#TAB4</p><p> MOVC A,@A+DPTR</p><p><b> MOV P1,A</b><
84、/p><p> LCALL DELAY_10MS</p><p> LCALL CLR_LED</p><p><b> SETB C3</b></p><p> MOV A,TEMP_1 ;顯示 個位</p><p> MOV DPTR,#TAB5&
85、lt;/p><p> MOVC A,@A+DPTR</p><p><b> MOV P1,A</b></p><p> LCALL DELAY_10MS</p><p> LCALL CLR_LED</p><p> SETB C4 ;顯示
86、小數(shù)點后的數(shù)</p><p> MOV A,TEMP_DP</p><p> MOV DPTR,#TAB4</p><p> MOVC A,@A+DPTR</p><p><b> MOV P1,A</b></p><p><b> RET</b></p>
87、;<p> ;******************</p><p> BAOJING2: SETB P3.7</p><p> RET </p><p> ;*********延時函數(shù)*************</p><p> DELAY_10MS:</p><
88、p> MOV R3,#20</p><p> DEL_1:MOV R4,#248</p><p><b> DJNZ R4,$</b></p><p> DJNZ R3,DEL_1</p><p><b> RET</b></p><p> ;******
89、****小數(shù)位轉換********************</p><p> TAB3:DB00H,01H,01H,02H</p><p> DB02H,03H,04H,04H</p><p> DB05H,06H,06H,07H</p><p> DB07H,08H,09H,09H</p><p>
90、 ;************無小數(shù)點位的段碼******************</p><p> TAB4:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H</p><p> ;*****************有小數(shù)點**********************</p><p> TAB5:DB40H,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--數(shù)字溫度計
- 單片機課程設計-數(shù)字溫度計
- 單片機課程設計—數(shù)字溫度計
- 單片機數(shù)字溫度計課程設計
- 單片機課程設計---數(shù)字溫度計
- 單片機課程設計-數(shù)字溫度計
- 單片機課程設計—數(shù)字溫度計
- 單片機課程設計——數(shù)字溫度計
- 單片機課程設計—數(shù)字溫度計
- 單片機課程設計-數(shù)字溫度計
- 數(shù)字溫度計--單片機課程設計
- 數(shù)字溫度計課程設計---基于51單片機數(shù)字溫度計設計
- 單片機課程設計--數(shù)字溫度計設計
- 單片機課程設計--數(shù)字溫度計設計
- 溫度計課程設計---基于51單片機數(shù)字溫度計設計
- 單片機課程設計---單片機數(shù)字顯示溫度計
- 數(shù)字溫度計課程設計---基于51單片機數(shù)字溫度計設計
- 單片機課程設計數(shù)字溫度計
- 單片機課程設計報告--數(shù)字溫度計
- 單片機課程設計報告數(shù)字溫度計
評論
0/150
提交評論