單片機(jī)課程設(shè)計(jì)--空調(diào)溫度控制_第1頁
單片機(jī)課程設(shè)計(jì)--空調(diào)溫度控制_第2頁
單片機(jī)課程設(shè)計(jì)--空調(diào)溫度控制_第3頁
單片機(jī)課程設(shè)計(jì)--空調(diào)溫度控制_第4頁
單片機(jī)課程設(shè)計(jì)--空調(diào)溫度控制_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、燕山大學(xué)課程設(shè)計(jì)說明書 課程名稱 單片機(jī)原理及應(yīng)用技術(shù) 題 目 空調(diào)溫度控制 學(xué)院(系) 電氣工程學(xué)院 年級專業(yè) 2011級檢測技術(shù)與儀器一班 學(xué) 號 110103020024 學(xué)生姓名 余 焊 威 指導(dǎo)教師 吳 希 軍 教師職稱 副教授 燕山大學(xué)課程設(shè)計(jì)(論文)任務(wù)書院(系):電氣工程學(xué)院 基層教學(xué)單位:儀器科學(xué)與工程系 學(xué) 號110103020024學(xué)生姓名余焊威專業(yè)(班級)檢測11-1設(shè)計(jì)題目空調(diào)溫度控制設(shè)計(jì)技術(shù)參數(shù)利用實(shí)驗(yàn)儀上顯示電路、鍵盤或開關(guān)電路、A/D轉(zhuǎn)換電路,模擬空調(diào)恒溫控制??梢岳脤?shí)驗(yàn)儀上的電位器模仿溫度變化,制冷可以用發(fā)光二極管模擬,也可以控制直流電機(jī)模仿壓縮機(jī)的運(yùn)行。要

2、求可以用鍵盤或開關(guān)設(shè)定恒溫溫度,當(dāng)外界溫度超過設(shè)定溫度1時(shí),就要啟動加熱或制冷壓縮機(jī)。設(shè)計(jì)要求顯示電路、鍵盤或開關(guān)電路、A/D轉(zhuǎn)換電路的硬件電路設(shè)計(jì);編制相應(yīng)的程序。工作量設(shè)計(jì)的內(nèi)容滿足課程設(shè)計(jì)的教學(xué)目的與要求,設(shè)計(jì)題目的難度和工作量適合學(xué)生的知識和能力狀況,工作量飽滿。工作計(jì)劃查閱資料進(jìn)行設(shè)計(jì)準(zhǔn)備、設(shè)計(jì)硬件電路、編制程序,編制程序、驗(yàn)證設(shè)計(jì)、撰寫任務(wù)書。參考資料單片微型計(jì)算機(jī)接口技術(shù)及其應(yīng)用 張淑清 國防工業(yè)出版社單片機(jī)原理及應(yīng)用技術(shù) 張淑清 國防工業(yè)出版社單片機(jī)應(yīng)用技術(shù)匯編指導(dǎo)教師簽字基層教學(xué)單位主任簽字說明:此表一式四份,學(xué)生、指導(dǎo)教師、基層教學(xué)單位、系部各一份。2014年 7 月 6

3、日 目錄引言3摘要4第一章 設(shè)計(jì)說明51.1 設(shè)計(jì)要求51.2 設(shè)計(jì)目的51.3設(shè)計(jì)過程5第二章 設(shè)計(jì)總體說明6第三章 各個(gè)模塊介紹73.1 總體模塊介紹73.2 8051單片機(jī)介紹73.3 可調(diào)模擬輸入電路介紹83.4 A/D轉(zhuǎn)換器模塊介紹93.5 8255與LED顯示介紹103.6 數(shù)碼管與鍵盤工作介紹12第四章 硬件連接15第五章 程序流程圖16第七章 程序設(shè)計(jì)19總結(jié)25參考文件26燕山大學(xué)課程設(shè)計(jì)評審意見表27引 言 溫度是表示物體冷熱程度的物理量,微觀上來講是物體分子熱運(yùn)動的劇烈程度。溫度只能通過物體隨溫度變化的某些特性來間接測量,而用來量度物體溫度數(shù)值的標(biāo)尺叫溫標(biāo)。它規(guī)定了溫度的

4、讀數(shù)起點(diǎn)(零點(diǎn))和測量溫度的基本單位。國際單位為熱力學(xué)溫標(biāo)(K)。目前國際上用得較多的其他溫標(biāo)有華氏溫標(biāo)(°F)、攝氏溫標(biāo)(°C)和國際實(shí)用溫標(biāo)。從分子運(yùn)動論觀點(diǎn)看,溫度是物體分子運(yùn)動平均動能的標(biāo)志。溫度是大量分子熱運(yùn)動的集體表現(xiàn),含有統(tǒng)計(jì)意義。對于個(gè)別分子來說,溫度是沒有意義的。 在現(xiàn)代社會中,溫度控制不僅應(yīng)用在工廠生產(chǎn)方面,其作用也體現(xiàn)到了各個(gè)方面,隨著人們生活質(zhì)量的提高,酒店廠房及家庭生活中都會見到溫度控制的影子,溫度控制將更好的服務(wù)于社會.而今,空調(diào)等家用電器隨著生產(chǎn)技術(shù)的發(fā)展和生活水平的提高越來越普及,一個(gè)簡單,穩(wěn)定的溫度控制系統(tǒng)能更好的適應(yīng)市場。摘 要 在現(xiàn)代自

5、動控制領(lǐng)域中,溫度檢測占據(jù)這至關(guān)重要的作用。溫度檢測系統(tǒng)在科研領(lǐng)域、安全監(jiān)控以及人們的日常生活發(fā)揮著無可替代的作用。溫度控制系統(tǒng)正從模擬式向數(shù)字式飛速發(fā)展。本論文概述了空調(diào)溫度控制系統(tǒng)的原理及特性,在此基礎(chǔ)上描述了系統(tǒng)研制的理論基礎(chǔ),溫度采集等部分的電路設(shè)計(jì),并對測溫系統(tǒng)的一些主要參數(shù)進(jìn)行了討論。針對測溫系統(tǒng)溫度采集、接收、處理、顯示部分的總體設(shè)計(jì)方案進(jìn)行了論證,進(jìn)一步介紹了單片機(jī)在系統(tǒng)中的應(yīng)用,分析了系統(tǒng)各部分的硬件及軟件實(shí)現(xiàn)。本空調(diào)溫度控制系統(tǒng)采用以MCS51單片機(jī)為核心,以控制室內(nèi)溫度穩(wěn)定為目的。通過單片機(jī)處理經(jīng)A/D轉(zhuǎn)換后的模擬信號,控制制冷制熱電機(jī)的運(yùn)轉(zhuǎn),以達(dá)到控制室內(nèi)溫度穩(wěn)定的目的

6、。關(guān)鍵字:51單片機(jī) 溫度控制第一章 設(shè)計(jì)說明 1.1 設(shè)計(jì)要求 利用實(shí)驗(yàn)儀上顯示電路、鍵盤或開關(guān)電路、A/D轉(zhuǎn)換電路,模擬空調(diào)恒溫控制??梢岳脤?shí)驗(yàn)儀上的電位器模仿溫度變化,制冷可以用發(fā)光二極管模擬,也可以控制直流電機(jī)模仿壓縮機(jī)的運(yùn)行。要求可以用鍵盤或開關(guān)設(shè)定恒溫溫度,當(dāng)外界溫度超過設(shè)定溫度1時(shí),就要啟動加熱或制冷壓縮機(jī)。而且要求顯示電路、鍵盤或開關(guān)電路、A/D轉(zhuǎn)換電路的硬件電路設(shè)計(jì),編制相應(yīng)的程序。1.2 設(shè)計(jì)目的溫度是科學(xué)技術(shù)中最基本的物理量之一,物理、化學(xué)、生物等學(xué)科都離不開溫度。在工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力、流量、流速和開關(guān)量都是常用的主要被控參數(shù)。其中,溫度控制越來越重要,

7、沒有合適的溫度,許多電子設(shè)備就不能正常的工作。由此可見,溫度影響的各方各面,而溫度的控制也顯得日益重要。傳統(tǒng)的人工操作控制溫度,效率低,精度小,誤差大,操作受到很大的人為因素的影響。為了提高工業(yè)生產(chǎn)效率,減小誤差,基于單片機(jī)的智能化的溫度控制是主流。現(xiàn)代的智能空調(diào),不僅利用了數(shù)字電路技術(shù)和模擬電子技術(shù),而且采用了單片機(jī)技術(shù),實(shí)現(xiàn)了軟硬件的結(jié)合,既完善了空調(diào)的功能,又簡化了空調(diào)的控制與操作,不僅滿足了不同用戶對溫度的不同要求,而且能全智能調(diào)節(jié)室內(nèi)溫度。單片機(jī)是一種集CPU、RAM、ROM、I/O接口和中斷系統(tǒng)等部分于一體的器件,只需要外加電源和晶振就可實(shí)現(xiàn)對數(shù)字信息的處理和控制。因此,單片機(jī)廣泛

8、用于現(xiàn)代工業(yè)生產(chǎn)控制中。本次課程設(shè)計(jì)的目的是,圍繞為了熟悉WAVE開發(fā)軟件及在電子信息課程中的應(yīng)用課程,學(xué)習(xí)WAVE軟件的使用,使我們能熟練的應(yīng)用WAVE軟件實(shí)現(xiàn)對80C51單片機(jī)的編程,了解程序開發(fā)過程中用到的一些基礎(chǔ)知識,同時(shí)使我們熟悉應(yīng)用程序開發(fā)過程,使我們從學(xué)校學(xué)習(xí)到參加工作之間有一個(gè)良好的過渡,為今后處理相應(yīng)領(lǐng)域的專業(yè)問題打下堅(jiān)實(shí)的程序基礎(chǔ)。 1.3 設(shè)計(jì)過程本設(shè)計(jì)采用51單片機(jī)為控制芯片,用偉福實(shí)驗(yàn)箱上的電位器來模仿溫度傳感器,將電位器輸出的電壓輸入A/D轉(zhuǎn)換芯片,再將轉(zhuǎn)換后的模擬信號輸入單片機(jī),通過單片機(jī)擴(kuò)展的顯像管、LED燈、矩陣鍵盤等來實(shí)現(xiàn)其功能。 第二章 設(shè)計(jì)總體說明本次單

9、片機(jī)課程設(shè)計(jì)空調(diào)溫度控制,采用MCS-51單片機(jī)作為控制芯片,要求利用實(shí)驗(yàn)儀上顯示電路、鍵盤、或開關(guān)電路、A/D轉(zhuǎn)換電路,模擬空調(diào)恒溫控制,可以實(shí)現(xiàn)鍵位與數(shù)字動態(tài)顯示的一種設(shè)定溫度可變的空調(diào)溫度控制系統(tǒng)。本系統(tǒng)功能由硬件和軟件兩大部分協(xié)調(diào)完成,硬件部分主要完成電位器對溫度的電壓模擬、溫度的設(shè)定、溫度信息的顯示等功能;而軟件主要完成對模擬輸出的溫度信號進(jìn)行數(shù)字化處理及數(shù)碼顯示管的顯示控制等功能。電位器通過改變電壓模仿溫度傳感器輸出,經(jīng)A/D轉(zhuǎn)換變成0-255的數(shù)字信號從而輸入單片機(jī),單片機(jī)執(zhí)行運(yùn)算程序。由于要設(shè)定溫度,我們需要用鍵盤或開關(guān)輸入溫度數(shù)值,初始設(shè)定溫度值由程序?qū)懭?,用戶可通過外接鍵盤

10、改變初始設(shè)定溫度。單片機(jī)對鍵盤進(jìn)行掃描,確定那個(gè)鍵按下。然后顯像管顯示實(shí)際和設(shè)定溫度。實(shí)際溫度大于設(shè)定溫度,則紅燈亮;實(shí)際溫度小于設(shè)定溫度,則綠燈亮。根據(jù)以上設(shè)計(jì)思想,可設(shè)計(jì)功能如下:利用偉福試驗(yàn)箱的六位數(shù)碼管,后兩位顯示設(shè)定溫度,初定為10-30攝氏度;第三到第五位顯示實(shí)際溫度,初定為-40-50攝氏度。另通過設(shè)置鍵盤上的兩個(gè)鍵位,實(shí)現(xiàn)溫度+1和-1功能,用來調(diào)控設(shè)定溫度,初定為NEXT、LAST鍵。再利用L1(紅燈)和L2(綠燈)來模仿加熱和制冷的電機(jī)驅(qū)動動態(tài)數(shù)碼管實(shí)際溫度LED82558051鍵盤設(shè)定溫度電位器A/D圖1 空調(diào)溫度控制系統(tǒng)總系統(tǒng)框圖第三章 各個(gè)模塊介紹3.1 總體模塊介紹

11、本設(shè)計(jì)共分為四個(gè)模塊,分別為溫度測量、按鍵控制、數(shù)碼管溫度顯示、LED燈模仿制冷和制熱系統(tǒng)。1) 溫度測量模塊是以電壓器輸出的電壓模仿溫度傳感器通過A/D轉(zhuǎn)換后進(jìn)入單片機(jī)進(jìn)行程序運(yùn)算。2) 按鍵控制模塊是通過鍵盤上NEXT、LAST鍵來升高或降低設(shè)定溫度,通過比較與實(shí)際溫度的大小來控制制冷和制熱系統(tǒng)的運(yùn)行。3) 數(shù)碼管溫度顯示模塊用來顯示設(shè)定溫度以及實(shí)際溫度。4) LED燈模塊用來模仿制冷和加熱電動機(jī)的動作。 3.2 8051單片機(jī)介紹圖2 8051單片機(jī)引腳圖單片機(jī)就是在一塊硅片上集成了微處理器、存儲器和各種輸入輸出接口電路的微型計(jì)算機(jī),簡稱單片機(jī)。單片機(jī)以其較高的性能價(jià)格比受到了人們的重視

12、和關(guān)注。它的優(yōu)點(diǎn)就是體積小、重量輕、抗干擾能力強(qiáng)、對環(huán)境要求不高、價(jià)格低廉、可靠性高、靈活性好、開發(fā)較為容易。由于單片機(jī)具有較高的性能比,國內(nèi)MCS-51系列單片機(jī)得到了廣泛的應(yīng)用。單片機(jī)根據(jù)其基本操作處理的位數(shù)可分為4、8、16、32位單片機(jī),應(yīng)用最為廣泛的是八位單片機(jī)。根據(jù)本次設(shè)計(jì)的實(shí)際情況和要求,在本次設(shè)計(jì)中采用80C51作為系統(tǒng)的控制芯片。單片機(jī)的40個(gè)引腳大致可分為4類:電源、時(shí)鐘、控制和I/O引腳。 電源: VCC - 芯片電源,接+5V; VSS - 接地端; 時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 控制線:控制線共有4根, ALE/PROG:地址鎖存

13、允許/片內(nèi)EPROM編程脈沖 ALE功能:用來鎖存P0口送出的低8位地址 PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 PSEN:外ROM讀選通信號。 RST/VPD:復(fù)位/備用電源。 RST(Reset)功能:復(fù)位信號輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。 EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 EA功能:內(nèi)外ROM選擇端。 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 I/O線80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。P3口還具有第二功能,用于特殊信號輸

14、入輸出和控制信號(屬控制總線)。P0口輸入時(shí)需要接上拉電阻才能置1;3.3 可調(diào)模擬量輸入電路介紹 溫度是一個(gè)非電量物理量,需要將之轉(zhuǎn)化為電信號才能進(jìn)行后續(xù)的測量和控制。由于電位器電路用于產(chǎn)生可變的模擬量,為此,在此課程設(shè)計(jì)中,利用了實(shí)驗(yàn)儀器上的電位器來模擬溫度變化,將溫度這個(gè)非物理量轉(zhuǎn)化為電壓信號輸出。電位器結(jié)構(gòu)圖如所示。圖3 電位器示意圖 圖4 電位器與A/D轉(zhuǎn)換器連接圖3.4 A/D轉(zhuǎn)換器模塊介紹A/D轉(zhuǎn)換電路是將從電位器輸出的模擬電信號轉(zhuǎn)換為數(shù)字電信號的電路結(jié)構(gòu)。目前A/D轉(zhuǎn)換器的種類很多,有計(jì)數(shù)比較型、逐次逼近型、雙積分型等等。選擇A/D轉(zhuǎn)換器件主要從轉(zhuǎn)換速度、精度和價(jià)格上考慮。逐次

15、逼近型A/D轉(zhuǎn)換器,在精度、速度和價(jià)格上都比較適中,是最常用的A/D轉(zhuǎn)換器。雙積分A/D轉(zhuǎn)換器,具有精度高、抗干擾性好、價(jià)格低廉等優(yōu)點(diǎn),但轉(zhuǎn)換速度慢。近年來在微機(jī)應(yīng)用領(lǐng)域中也得到了廣泛的應(yīng)用。本次設(shè)計(jì)采用八路模擬輸入通道的逐次逼近型的八位A/D轉(zhuǎn)換器ADC0809。采用ADC0809作為與單片機(jī)的接口電路,它的結(jié)構(gòu)比較簡單,轉(zhuǎn)換速度較高。采用ADC0809作為A/D轉(zhuǎn)換器具有與單片機(jī)連接簡單的優(yōu)點(diǎn),它是八位的轉(zhuǎn)換器可以與八位的單片機(jī)直接連接,這樣就簡化了系統(tǒng)的連接電路也有利于系統(tǒng)軟件的編寫。是目前國內(nèi)應(yīng)用最廣泛的8位通用A/D芯片。ADC0809芯片的接口及其外接電路如下圖所示。圖5 A/D轉(zhuǎn)

16、換內(nèi)部結(jié)構(gòu)圖圖6 ADC0809芯片 圖7 ADC0809A/D轉(zhuǎn)換電路ADC0809芯片,內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。圖中多路開關(guān)可選8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,這是一種經(jīng)濟(jì)的多路數(shù)據(jù)采集方法。地址鎖存與譯碼電路完成A、B、C3個(gè)地址位進(jìn)行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉(zhuǎn)換結(jié)果通過三態(tài)輸出鎖存器存放、輸出,因此可以直接與系統(tǒng)數(shù)據(jù)總線相連,下表為通道選擇表。表1 通道選擇表C B A 被選擇的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31

17、 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN73.5 8255與LED顯示介紹一、8255介紹51系列單片機(jī)沒有專用的對外地址總線和數(shù)據(jù)總線,其P0口和P2口既是通用I/O口,同時(shí)P0口還是分時(shí)復(fù)用的雙向數(shù)據(jù)總線和低8位地址總線(一般需要加一級鎖存器),而P2口則是高8位地址總線。在單片機(jī)的I/O口線不夠用的情況下,可以借助外部器件對I/O口進(jìn)行擴(kuò)展。8255芯片是可編程并行I/O接口芯片,它具有三個(gè)8位并行口PA, PB和PC,一個(gè)8位的數(shù)據(jù)口D0D7 ,PC口分高4位和低4位。高4位可與PA口合為一組(A組),低4位可與PB口合為一組(B組) ,PC口可按位置位/復(fù)

18、位。40條引腳,DIP封裝。 引腳圖如圖所示圖8 8255引腳圖 圖9 LED顯示電路圖10 MCS-51單片機(jī)外擴(kuò)8255A芯片的電路原理圖二、LED顯示介紹在此空調(diào)溫度控制的設(shè)計(jì)中,我們用到了發(fā)光二極管LED,用紅色的燈來表示加熱,用綠色的燈來表示制冷。實(shí)驗(yàn)儀上裝有8只發(fā)光二極管及相應(yīng)驅(qū)動電路,其發(fā)光二極管的電路原理圖如下示: 圖11 發(fā)光二極管電路原理圖3.6 數(shù)碼管與鍵盤工作介紹一、鍵盤與數(shù)碼管使用介紹本課設(shè)中用到的實(shí)驗(yàn)儀已經(jīng)將LED顯示電路和鍵盤電路集成到一個(gè)集成電路中。LED顯示和鍵盤的等效電路如圖12示。顯示控制的位碼由74HC374輸出,經(jīng)MC1413反向驅(qū)動后,做LED的位選

19、通信號。位選通信號也可作為鍵盤列掃描碼,鍵盤掃描的行數(shù)據(jù)從74HC245讀回,74HC374輸出的列掃描碼經(jīng)74HC245讀入后,用來判斷是否有鍵被按下,以及按下的是什么鍵。如果沒有鍵按下,由于上拉電阻的作用,經(jīng)74HC245讀回的值為高電平,如果有鍵按下,74HC374輸出的低電平經(jīng)過按鍵被接到74HC245的端口上,這樣從74HC245讀回的數(shù)據(jù)就會有低位,根據(jù)74HC374輸出的列信號和74HC245讀回的行信號,就可以判斷哪個(gè)鍵被按下。LED顯示的段碼由另一個(gè)74HC374輸出。鍵盤和LED顯示的地址譯碼見圖5,做鍵盤和LED實(shí)驗(yàn)時(shí),需將KEY/LED_CS接到相應(yīng)的地址譯碼上。位碼輸

20、出的地址為0X002H,段碼輸出的地址為0X004H,鍵盤行碼讀回的地址為0X001H,此處X是由KEY/LED_CS決定。圖12 數(shù)碼管與鍵盤連線圖二、矩陣式鍵盤掃描方式本設(shè)計(jì)采用的是6×4矩陣式鍵盤,鍵盤的行線X0X3通過電阻接+5V,當(dāng)鍵盤沒有鍵閉合時(shí),所有的行線和列線斷開,行線X0X3均呈高電平。掃描法是在判定有鍵按下后逐列(或行)置低電平,同時(shí)讀入行(或列)狀態(tài),如果行(或列)狀態(tài)出現(xiàn)非全1狀態(tài),這時(shí)與狀態(tài)行,列交叉點(diǎn)的鍵就是所按下的鍵。掃描法的特點(diǎn)是逐列(或行)掃描查詢。這時(shí),相應(yīng)的行(或列)應(yīng)有上拉電阻接高電平。當(dāng)鍵盤上某一鍵閉合時(shí),該鍵所對應(yīng)的行線與列線短路,此時(shí)該行

21、線的電平將由被短路的列線電平所決定。如果將行線接至單片機(jī)的輸入端口,列線接至單片機(jī)的輸出端口,則在單片機(jī)的控制下使列線Y0為低電平,其余五根列線Y1、Y2、Y3、Y4、Y5均為高電平,然后單片機(jī)讀輸入口狀態(tài)(即鍵盤行線狀態(tài)),若X0、X1、X2、X3均為高電平,則Y0這一列上沒有鍵閉合,如果讀出的行線狀態(tài)不全為高電平,則為低電平的行線和Y0相交的鍵處于閉合狀態(tài)。如果Y0這一列沒有鍵閉合,緊接著使列線Y1為低電平,其余列線為高電平,用同樣的方法檢查Y1這一列有無鍵閉合,如此類推。CPU對鍵盤的掃描可以采取程序控制的隨機(jī)方式,CPU空閑時(shí)才掃描鍵盤;也可以采取定時(shí)控制方式,每隔一段時(shí)間,CPU對鍵

22、盤掃描一次;還可以采用中斷方式,當(dāng)鍵盤上有鍵閉合時(shí),向CPU請求中斷,CPU響應(yīng)鍵盤發(fā)出的中斷請求,對鍵盤進(jìn)行掃描,以識別哪一個(gè)鍵處于閉合狀態(tài),并對鍵輸入信息作相應(yīng)處理。圖13 鍵盤電路圖三、動態(tài)數(shù)碼管掃描方式由于8051單片機(jī)本身提供的I/O口有限,因此我們選擇動態(tài)掃描方式。所謂動態(tài)顯示,就是單片機(jī)定時(shí)地對顯示模塊件掃描。在這種方法中,顯示模塊件分時(shí)工作,每次只能有一個(gè)器件顯示。但由于人視覺的暫留現(xiàn)象,所以仍感覺所有的器件都在顯示。如許多單片機(jī)的開發(fā)系統(tǒng)及仿真器上的6位顯示模塊即采用這類顯示方法。此種顯示方法的優(yōu)點(diǎn)是使用硬件少,因而價(jià)格低。但它占用機(jī)時(shí)長,只要單片機(jī)不執(zhí)行顯示程序,就立刻停止

23、顯示。由此可見,這種顯示將使計(jì)算機(jī)的開銷增大。掃描方式中在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫,盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。節(jié)約了電能,節(jié)省 了I/O口。 圖14 八位數(shù)碼管原理圖 圖15 數(shù)碼顯示管電路圖表2 數(shù)碼管顯示數(shù)字-共陰極字符碼對照表顯示數(shù)字1234共陰極字符碼06H5BH4FH66H顯示數(shù)字5678共陰極字符碼6DH7DH07H7FH顯示數(shù)字90AB共陰極字符碼6FH3FH77H7CH顯示數(shù)字CDEF共陰極字符碼39H5EH79H71H第四章 硬件連接 一、地址譯碼插孔譯碼插孔地址范圍CS

24、008000H08FFFHCS109000H09FFFHCS20A000H0AFFFHCS30B000H0BFFFHCS40C000H0CFFFHCS50D000H0DFFFHCS60E000H0EFFFHCS70F000H0FFFFH二、硬件連線連 線插 孔 1插 孔 21CS08255-CS2CS1KET/LED-CS3CS2AD-CS4PA0L15PA1L26IN0電位器輸出第五章 程序流程圖一、主程序總體設(shè)計(jì)流程圖當(dāng)前溫度和設(shè)定溫度相比較高1度低1度溫度初始化當(dāng)前溫度和設(shè)定溫度送顯示緩沖顯示溫度采樣當(dāng)前溫度相等制冷不變加熱讀鍵盤向下鍵向上鍵設(shè)定溫度減1設(shè)定溫度加1開始鍵盤值當(dāng)前溫度和設(shè)

25、定溫度相比較低1度圖16 主程序流程圖二、其他各模塊程序流程圖 圖17 A/D轉(zhuǎn)換程序流程圖 圖18 鍵盤程序流程圖 圖29 數(shù)碼管程序流程圖第六章 程序設(shè)計(jì)LowTemp equ -40 ; A/D 0傳感器最低值設(shè)定HighTemp equ 50 ; A/D 255傳感器最高值設(shè)定Heat equ 1Cool equ 2LowLimit equ 10HighLimit equ 30ORG 0000H ;程序起始地址為0000Hljmp Start ;長跳轉(zhuǎn)到Start主程序段處Delay: ;延時(shí)函數(shù) mov r7, #0ffhAA: djnz r7,AA ;DJNZ命令為寄存器減一不為0

26、則跳轉(zhuǎn) ret ;延時(shí)255TestKey: ;檢測KEY有沒有被按下函數(shù) mov dptr,#09002h ;將鍵盤列地址9002H送入數(shù)據(jù)指針DPTR中 mov a, #0 ;A清0 movx dptr, a ;所有列為低電平檢測 mov dptr,#09001h ;將鍵盤行地址9001h送入DPTR中, movx a, dptr ;9001h中的內(nèi)容送入A中,按下的鍵為低電平 cpl a ;累加器取反,按下的鍵為高電平 anl a, #0fh ;低四位顯示高電平為按下鍵的行數(shù) ret ;從子程序返回KeyTable: ;鍵值表 db 16h, 15h, 14h, 0ffh db 13h,

27、 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hGetKey: ;讀取鍵值 mov dptr,#09002h ;將立即數(shù)9002H送入DPTR中,鍵盤列地址 mov P2, dph ;將DPTR中的高8位送入P2端口 mov r0, #Low(09001h) ;送入立即數(shù),取9001h低字節(jié)內(nèi)容 mov r1, #00100000b mov r2, #6KLoop: ;檢測按下鍵的位置 mov a, r1 ;將R1中的內(nèi)容送入A中 cpl

28、a ;累加器取反 movx dptr, a ;檢測哪列,哪列為低電平 cpl a ;累加器取反 rr a ;累加器循環(huán)右移 mov r1, a movx a, r0 ;行地址內(nèi)容返回給a cpl a ;累加器取反,高電平的為選中行 anl a, #0fh ;立即數(shù)0fH和A中的內(nèi)容與 jnz L1 ;累加器非0則轉(zhuǎn)移,有鍵按下 djnz r2, KLoop ;寄存器R2減1不為0則轉(zhuǎn)移到KLoop程序段 mov r2, #0ffh sjmp Exit ;短跳轉(zhuǎn)到 Exit程序段處L1: ;檢測到某列r2 mov r1, a mov a, r2 dec a ;累加器A自減1 rl a rl a

29、mov r2, a ; r2 = (r2-1)*4 mov a, r1 mov r1, #4LpC: rrc a ;經(jīng)過進(jìn)位位的累加器循環(huán)右移 jc Exit ;如果進(jìn)位位為1則轉(zhuǎn)移到程序Exit inc r2 djnz r1, LpC ;寄存器R1減1,不為0則轉(zhuǎn)移到LpC程序段Exit: ;讀取鍵盤表中值,鍵值=(列值-1)*4+行值 mov a, r2 mov dptr, #KeyTable movc a, a+dptr mov r2, aWaitRelease: ;等待釋放 mov dptr,#09002h mov a,#0 movx dptr, a call Delay call T

30、estKey jnz WaitRelease ;未釋放繼續(xù)等待 mov a, r2 RetReadAD: ;讀A/D值 mov dptr,#0A000h ;將A/D地址A000H送入DPTR中 clr a ;累加器A清0 movx dptr, a ; 啟動 A/D In0通道 mov a, #0 ;A清0 djnz acc, $ ;如果A中的內(nèi)容不為0則在此處一直循環(huán) movx a, dptr ;將DPTR中的內(nèi)容送入A中,讀取A/D的值 retReadTemp: mov r1, #0 ;將立即數(shù)0送入寄存器R1中 mov r2, #0 ;將立即數(shù)0送入寄存器R2中 mov r0, #16 ;

31、將立即數(shù)16送入寄存器r0中RLoop: call ReadAD ;調(diào)用ReadAD程序段,讀取A/D輸出值 add a, r2 mov r2, a ;將累加器A中的內(nèi)容送入R2中 jnc L01 ;如果進(jìn)位位為0則轉(zhuǎn)移到L01程序段 inc r1 ;r1寄存器中的內(nèi)容增1L01: djnz r0, RLoop ;寄存器R0內(nèi)容減一不為0則轉(zhuǎn)移,累加16次 mov a, r2 ;將寄存器R2中的內(nèi)容送入累加器A中 swap a ;累加器內(nèi)高低半字節(jié)交換 anl a, #0fh ; 高四位清零,相當(dāng)于/16 xch a, r1 ;寄存器與累加器內(nèi)容交換 swap a ;累加器內(nèi)高低半字節(jié)交換 a

32、nl a, #0f0h ;立即數(shù)0FH與到累加器A,低四位清零 orl a, r1 ; a = r1r2/16 mov b, #(HighTemp-LowTemp);將立即數(shù)(HighTemp-LowTemp)送入寄存器B中 mul ab ;a和b相乘,結(jié)果低位在A中,高位在B中 mov a, b ;將B中的內(nèi)容送入A中,相當(dāng)于右移8位 即/256 add a, #LowTemp;將立即數(shù)LowTemp送入到寄存器A中 mov 51h, a; A/D值轉(zhuǎn)換為實(shí)際溫度送入51h中, retDisplayResult: ;顯示結(jié)果 mov a,51h ;A/D轉(zhuǎn)換溫度值的顯示地址 jnb acc.

33、7,G0 ;如果acc.7位為0,為正數(shù) mov 60h, #40h ;第一個(gè)數(shù)碼管顯示“-” dec a cpl a ;累加器取反,求原碼運(yùn)算 ajmp Goon ;跳轉(zhuǎn)指令G0: mov 60h, #0Goon: mov b, #10 div ab ;累加器A中的內(nèi)容除以寄存器B中的內(nèi)容 mov dptr, #LEDMAP movc a, a+dptr mov 61h, a ;實(shí)際溫度十位 mov a, b movc a, a+dptr mov 62h, a ;實(shí)際溫度個(gè)位 mov 63h, #0 mov a,50h ;鍵盤設(shè)定溫度地址 mov b, #10 div ab ;累加器A中的內(nèi)

34、容除以寄存器B中的內(nèi)容 movc a, a+dptr ;設(shè)定溫度十位代碼字節(jié)傳送到累加器 mov 64h, a mov a, b movc a, a+dptr ;設(shè)定溫度個(gè)位代碼字節(jié)傳送到累加器 mov 65h, a ret ;子程序返回LEDMAP: db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h;定義字節(jié)命令 db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h;定義字節(jié)命令DisplayLED: ;LED 顯示 mov r0,#60h ;數(shù)碼管顯示內(nèi)容地址 mov r1, #6 mov r2, #00100000bLoop

35、: mov dptr,#09002h ;數(shù)碼管位選地址 mov a, #0 ;A清0 movx dptr, a ;外部寄存器置0,松片選信號 mov a, r0 ;將以R0中為地址60h的數(shù)據(jù)傳給A mov dptr,#09004h ;段選地址 movx dptr, a ;60h輸出至段碼地址以顯示 mov dptr,#09002h mov a, r2 movx dptr, a ;第i管顯示6ih的內(nèi)容 call Delay ;調(diào)用Delay函數(shù) mov a, r2 rr a ;累加器循環(huán)右移 數(shù)碼管右移顯示 mov r2, a inc r0 djnz r1, Loop ; R1減1不為0則轉(zhuǎn)

36、移,循環(huán)6次 mov dptr,#09002h mov a, #0 movx dptr, a ;釋放位選 retStart: mov sp, #70h;將立即數(shù)70H送入堆棧指針 mov a,#082h;將立即數(shù)82H送入累加器A中 mov dptr,#08003h;將立即數(shù)8003H送入數(shù)據(jù)指針DPTR中 movx dptr, a;將累加器A中的內(nèi)容送入數(shù)據(jù)指針DPTR中 mov 50h, #20;將立即數(shù)20H送入地址50H的存儲器中MLoop: call TestKey;調(diào)用TestKey程序檢測是否有鍵按下 jnz KeyPressed;累加器非0轉(zhuǎn)移,有鍵按下調(diào)整設(shè)定溫度 call

37、ReadTemp;調(diào)用讀取采樣值程序段 call DisplayResult;調(diào)用顯示結(jié)果程序 call DisplayLED;調(diào)用LED顯示程序 mov a,51h;將立即數(shù)51H送人累加器A中 jb acc.7, LE0;如果直接尋址為為1則轉(zhuǎn)移,負(fù)數(shù) clr c ;進(jìn)位C清零 mov b,50h;將立即數(shù)50H送入寄存器B dec b;寄存器B中的數(shù)自減1 subb a, b ;累加器A中的數(shù)減去寄存器B中的內(nèi)容(帶借位) jnc L02;如果進(jìn)位為0則轉(zhuǎn)移LE0: mov a, #Heat;將Heat=1送入累加器A 紅燈亮 加熱 mov dptr,#08000h;將8255PA口地址

38、8000H送入16位數(shù)據(jù)指針DPTR movx dptr, a;將1送入以DPTR內(nèi)容為地址的外部空間 sjmp L04 ;短轉(zhuǎn)移L02: mov a,51h;將51H為地址的中的內(nèi)容送入累加器A中實(shí)際溫度 setb c;進(jìn)位位置1 mov b,50h;將以50為地址的中的內(nèi)容送入B中設(shè)定溫度 inc b;寄存器B中的數(shù)自加1 subb a, b ;累加器A中的內(nèi)容減去寄存器B中的內(nèi)容比較大小 jc L03;如果進(jìn)位位為1則轉(zhuǎn)移 mov a, #Cool;將Cool=送入累加器A中 mov dptr,#08000h;將立即數(shù)8000H送入16位數(shù)據(jù)指針中 movx dptr, a ;將累加器A

39、中的內(nèi)容送入08000H地址中 sjmp L04 ;短跳轉(zhuǎn)到L04L03: mov a, #0 mov dptr,#08000h movx dptr, aL04: sjmp MLoop ;短跳轉(zhuǎn)到MLoop程序段處KeyPressed: ;KeyPressed程序段 call GetKey ;調(diào)用GetKey程序段 mov b, a ;將累加器A中的內(nèi)容送入寄存器B中 xrl a,#15h ;立即數(shù)15h異或到累加器A中 jnz Key0 ;累加器非0則轉(zhuǎn)移到Key0程序段 mov a,50h ;將50H中的內(nèi)容送入累加器A中 xrl a,#LowLimit ;最低限制溫度 jz Key1 ;累加器為0則轉(zhuǎn)移表示達(dá)到最低限制溫度 dec 50h ;50H中的內(nèi)容自減 sjmp Key1 ;短跳轉(zhuǎn)到Key1程序段處Key0: mov a, b ;將寄存器B中的內(nèi)容送入累加器A中 xrl a,#16h ;累加器A中的內(nèi)容與立即數(shù)16H異或 jnz Key1 ;累加器非0則轉(zhuǎn)移,與16h不同 mov

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論