單片機控制的熱爐溫度控制系統_第1頁
單片機控制的熱爐溫度控制系統_第2頁
單片機控制的熱爐溫度控制系統_第3頁
單片機控制的熱爐溫度控制系統_第4頁
單片機控制的熱爐溫度控制系統_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機控制的熱爐溫度控制系統 畢業設計說明書(論文) 設計(論文)題目: 單片機控制的熱爐溫度控制系統 專 業: 電子信息工程技術 班 級: xxx 學 號: xxx 姓 名: xxx 指導教師: xxx xx 年 x 月 x 日 目目 錄錄 摘摘 要要.1 第第 1 1 章章 緒論緒論.2 1.1 選題背景 .2 1.2 選題簡介 .2 第第 2 2 章章 系統總體設計及方案系統總體設計及方案.4 2.1 單片機的介紹 .4 2.1.1 單片機的特點.4 2.1.2 單片機的基本組成 .4 2.2 系統功能的確定 .5 2.3 溫度傳感器 ds18b20 的介紹 .5 2.3.1 ds18b

2、20 的特點.5 2.3.2 ds18b20 的內部結構.6 2.3.3 ds18b20 的引腳介紹.8 2.4 人機交互與串口通信 .9 第第 3 3 章章 硬件設計硬件設計.10 3.1 系統結構框圖 .10 3.2 人機交互與串口通信單元設計 .10 3.2.1 鍵盤輸入電路 .10 3.2.2 led 七段數碼動態顯示電路.12 3.2.3 串口通信電路 .14 3.3 控制執行單元設計 .15 第第 4 4 章章 軟件設計軟件設計.17 4.1 設計思路、主程序流程圖 .17 4.2 溫度采集子程序 .18 4.3 數據轉換子程序 .19 4.4 動態顯示子程序 .20 4.5 溫度

3、控制執行子程序 .21 4.6 鍵盤輸入中斷服務子程序 .23 第第 5 5 章章 結結 論論.26 參考文獻參考文獻.27 附錄附錄 1 1 程序代碼程序代碼 .28 附錄附錄 2 2 原理圖原理圖 .42 摘 要 隨著電子產品向智能化和微型化的不斷發展,單片機已成為電子產品研制和開發 中首選的控制器。為了更好地推廣單片機在實際生活和生產中的應用,本文介紹一種 應用 at89c52 單片機設計的熱爐溫度控制系統。 該熱爐溫度系統采用溫度傳感器ds18b20通過i2c總線通信來獲得當前溫度,并 與從3x4矩陣鍵盤輸入的溫度值進行驗證,系統自動控制升溫或降溫的操作,將溫 度穩定在所設定的溫度值。

4、 經實際制作表明該熱爐溫度控制系統具有體積小、操作靈活、可靠性高、實用、 成本低等特點,適合住宅和各類溫室溫度的控制,具有一定的實際意義。 關鍵詞 單片機;鍵盤;穩定溫度;顯示器;溫度控制 第 1 章 緒論 1.1 選題背景 在生產過程中,溫度的控制是十分常見的。溫度控制的傳統方法是人工儀表控 制,其重復性差,工藝要求難以保障,工作強度大,存在種種弊端。因此,對傳統 的溫度控制方法進行改造,用微機取代常規控制已成必然,國內已相繼出現各種以 微機為核心的溫度控制系統。這種系統控制精度高、重復性好、自動化程度高。 在日常生活中,人們為了擁有一個更舒適的生活環境,往往需要室內擁有一個 合適的溫度,而

5、單片機的準確性高、價格低、功耗低等一系列優點,可結合升溫和 降溫設備,有效的應用到實際生活中。 單片機溫度控制系統是單片機控制的一項簡單應用。近幾年來單片機因其獨特的, 方便,快捷的優勢被廣泛的應用于各個領域之中。 1.2 選題簡介 課題名稱:熱爐溫度控制系統。 主要任務:將溫度控制在設定的溫度值,設定范圍為2-98度,針對在生產和日 常生活中溫度智能化控制系統的實現。 開發環境:本熱爐溫度控制系統的軟件部分是通過keil進行編譯,并由proteus 7 professional進行仿真測試。技術指標: 以at89c52系列單片機為核心部件 以數字電路和模擬電路為硬件基礎 以匯編語言為軟件實現

6、語言 功能概述:在該熱爐溫度控制系統中,單片機作為核心部件進行檢測控制,增 強了設計的通用性,適時性。在該熱爐溫度控制系統中溫度檢測采用 ds18b20 溫度 傳感器,它不僅具有較高的精度,而且適用電壓寬。同時采用了 3x4 矩陣掃描鍵盤 輸入,顯示設備等外圍擴展芯片。溫度控制分為升溫和降溫控制,升溫控制和降溫 控制分別采用繼電器來控制外部的升溫和降溫設備。軟件部分采用流程圖來表示, 對各個子程序進行說明,包括控制算法,偏差計算等。控制是否升溫或降溫。 第 2 章 系統總體設計及方案 2.1 單片機的介紹 隨著大規模集成電路的出現及其發展,將計算機的 cpu 、ram 、 rom 、 定時/計

7、數器和多種 i/o 接口集成在一片芯片上,形成芯片級的計算機,因此單片機 早期的含義稱為單片微型計算機,直譯為單片機 。 2.1.1 單片機的特點 1具有優異的性能價格比 2集成度高、體積小、可靠性高 3控制功能強 4低電壓、低功耗 2.1.2 單片機的基本組成 它由 cpu 、存儲器(包括 ram 和 rom )、 i/o 接口、定時 / 計數器、 中斷控制功能等均集成在一塊芯片上,片內各功能通過內部總線相互連接起來。 輸入 / 輸出引腳 p0、p1、p2、p3 的功能 : p0.0p0.7(3239 腳):p0 口是一個 8 位漏極開路型雙向 i/o 端口。在訪問 片外存儲器時,它分時作低

8、 8 位地址和 8 位雙向數據總線用。在 eprom 編程時, 由 p0 輸入指令字節,而在驗證程序時,則輸出指令字節。驗證程序時,要求外接 上拉電阻。 p0 能以吸收電流的方式驅動 8 個 lsttl 負載。 p1.0p1.7(18 腳): p1 是一上帶內部上拉電阻的 8 位雙向 i/o 口。在 eprom 編程和驗證程序時,由它輸入低 8 位地址。 p1 能驅動 4 個 lsttl 負 載。 p2.0p2.7(2128 腳): p2 也是一上帶內部上拉電阻的 8 位雙向 i/o 口。在訪 問外部存儲器時,由它輸出高 8 位地址。在對 eprom 編程和程序驗證時,由它 輸入高 8 位地址

9、。 p2 可以驅動 4 個 lsttl 負載。 p3. 0 p3. 7 ( 1017 腳): p3 也是一上帶內部上拉電阻的雙向 i/o 口。 在 mcs-51 中,這 8 個引腳還用于專門的第二功能。 p3 能驅動 4 個 lsttl 負 載。 p3.0 rxd(串行口輸入) p3.1 txd(串行口輸出) p3.2 int0(外部中斷 0 輸入) p3.3 int1(外部中斷 1 輸入) p3.4 t0(定時器 0 的外部輸入) p3.5 t1(定時器 1 的外部輸入) p3.6 wr(片外數據存儲器寫選通) p3.7 rd(片外數據存儲器讀選通) 2.2 系統功能的確定 一個控制系統是否

10、能被大眾所接受,在于該控制系統是否擁有人性化的操作功 能。為了使本次設計的熱爐溫度控制系統具有操作簡單、靈活及高可靠性等特點, 確定了該系統功能: 3x4 矩陣鍵盤輸入。 由溫度采集。 溫度顯示。 溫度控制執行。 溫度測量范圍為 0-99 度,溫度有效范圍為 2-98 度,允許誤差為 1 度。 2.3 溫度傳感器 ds18b20 的介紹 ds18b20 溫度傳感器是 dallas 公司生產的 1wire,即單總線器件,具有線 路簡單,體積小的特點。因此用它來組成一個測溫系統,具有線路簡單,在一根通 信線,可以掛很多這樣的溫度傳感器,十分方便。 2.3.1 ds18b20 的特點 1.只要求一個

11、端口即可實現通信。 2.在 ds18b20 中的每個器件上都有獨一無二的序列號。 3.實際應用中不需要外部任何元器件即可實現測溫。 4.測量溫度范圍55 到125。 5.數字溫度計的分辨率用戶可以從 9 位到 12 位選擇。 6.內部有溫度上、下限告警設置。 2.3.2 ds18b20 的內部結構 ds18b20 采用 3 腳 pr-35 封裝或 8 腳 soic 封裝,其內部結構框圖如圖 2.1 所 示。 64 位 rom 的位結構如圖 2.2 所示。開始 8 位是產品類型的編號;接著是每個 器件的唯一的序號,共有 48 位;最后 8 位是前面 56 位的 crc 檢驗碼,這也是多個 ds1

12、8b20 可以采用單線進行通信的原因。非易失性溫度報警觸發器 th 和 tl,可通 過軟件寫入用戶報警上下限數據。 圖 2.2 64 位 rom 的位結構圖 ds18b20 溫度傳感器的內部存儲器還包括一個高速暫存 ram 和一個非易失性的可 電擦除的 e2prom。 高速暫存 ram 的結構為 9 字節的存儲器,結構如圖 2.3 所示。前 2 字節包含測 得的溫度信息。第 3 和第 4 字節是 th 和 tl 的拷貝,是易失的,每次上電復位時被 刷新。第 5 字節為配置寄存器,其內容用于確定溫度值的數字轉換分辨率, ds18b20 工作時按此寄存器中的分辨率將溫度轉換為相應精度的數值。該字節

13、各位 的定義如圖 2.4 所示,其中,低 5 位一直為 1;tm 是測試模式位,用于設置 64 位 rom 和 單線接口 存儲器與控制邏輯 高 速 緩 存 溫度傳感器 高溫觸發器 th 低溫觸發器 tl 配置寄存器 8 位 crc 發生 器 圖 2.1 ds18b20 內部結構框圖 8 位檢驗 crc48 位序列號8 位工廠代碼 (10h) msb lsb msb lsb msb lsb ds18b20 在工作模式還是在測試模式,在 ds18b20 出廠時,該位被設置為 0,用戶 不要去改動;r1 和 r0 決定溫度轉換的精度位數,即用來設置分辨率,其定義方法 見表 2.1。 溫度 lsb 溫

14、度 msb th 用戶字節 1 tl 用戶字節 2 配置寄存器 保留 保留 保留 crc r1r0 分辨率/ 位 溫度最大 轉換時間 /ms 00993.75 0110187.5 1011375 1112750 th 用戶字節 11 tl 用戶字節 2 e2prom 圖 2.3 高速暫存 ram 結構圖 表 2.1 ds18b20 分辨率的定義和規定 tm r1 r0 1 1 1 1 1 1 由表可見,ds18b20 溫度轉換的時間比較長,而且廟宇的分辨率越高,所需要 的溫度數據轉換時間就越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。 高速暫存 ram 的第 6、7、8 字節保留未用,

15、表現為全邏輯 1。第 9 字節是前面 8 字節的 crc 碼,可用來檢驗數據,從而保證通信數據的正確性。 當 ds18b20 接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以 16 位帶符號擴展的二進制補碼形式存儲在高速暫存 ram 的第 1、2 字節中。 單片機可以通過單線接口讀出該數據。讀數據時,低位在先,高位在后,數據 格式以 0.0625c/lsb 形式表示。 溫度值格式如圖 2.5 所示: 低字節 232221202-12-22-32-4 高字節 sssss262524 2.3.3 ds18b20 的引腳介紹 to92 封裝的 ds18b20 的引腳排列見圖 2.6,其引腳

16、功能描述見表 2.2。 圖 2.6(底視圖) 表 2.2 ds18b20 詳細引腳功能描述 序號名稱引腳功能描述 1gnd地信號 圖 2.4 配置寄存器 位定義 圖 2.5 溫度數值格式 2dq數據輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生 電源下,也可以向器件提供電源。 3vdd可選擇的 vdd 引腳。當工作于寄生電源時,此引腳必須接 地。 2.4 人機交互與串口通信 該熱爐溫度控制系統由溫度采集、3x4矩陣鍵盤輸入、溫度顯示、溫度控制執行 等四大模塊組成。 溫度采集:由溫度傳感器ds18b20完成,并通過串口通信技術與單片機進行 數據傳輸,使用單片機p3.7端口。 3x4矩陣鍵盤輸

17、入:采用外部中斷0來判斷是否擁有輸入請求,并通過鍵盤 掃描技術來獲取所輸入的溫度值和偏差溫度值,輸入更靈活、更方便,使 用單片機p0口和p3.2端口。 溫度顯示:通過4個7段led數碼顯示管顯示當前溫度值和設定的溫度值,及 時反應當前溫度的變化與設置溫度的關系,使用單片機p1.0p1.5端口。 溫度控制執行:系統根據當前溫度與設置的溫度自動進行相應的升溫或降 溫的操作,在系統自動進行升溫或降溫處理的同時顯示相應的指示燈,讓 使用者知道系統正在進行的操作,使用單片機p2.2p2.3端口。 第 3 章 硬件設計 3.1 系統結構框圖 圖 at89c52 溫度顯示電路 溫度控制電路 鍵盤輸入電路 溫

18、度采集電路 3.1 系統硬件總體框圖 該系統由核心部件at89c52來處理從鍵盤輸入電路和溫度采集電路送入的數據, 并通過溫度顯示電路進行溫度顯示,由溫度控制電路來進行相應的升溫或降溫的操 作。 3.2 人機交互與串口通信單元設計 在該系統中,人機交互技術主要應用在恒定溫度與偏差溫度的設置,以及當前 溫度與設置溫度的顯示;串口通信技術應用在對溫度的采集。 3.2.1 鍵盤輸入電路 在本系統中,采用外部中斷0控制鍵盤輸入請求,鍵盤輸入主要采用3x4矩陣鍵 盤掃描技術。如圖3.2所示,當按下“設置/切換”鍵時,進入恒定溫度的設置,可從 鍵盤中自由輸入09的數字,如果輸入錯誤可按“刪除(*)”鍵進行

19、刪除,如果要 設置偏差溫度,再按一下“設置/切換”鍵,可進入偏差溫度的設置,按“確定 (#)”鍵,保存設置并退出鍵盤輸入,進入溫度控制狀態。 123 456 789 0# 1 2 3 a b c d sa sb sc sd s1s2s3 s1 s2 s3 sa sb sc sd r11 4.7k r12 4.7k r13 4.7k r14 4.7k +5 ss int0 r10 4.7k d1 led-red d2 led-red r16 300 r17 300 led_aled_b 設置溫度偏差溫度 設置/切換 刪除確定 圖 3.2 鍵盤輸入原理圖 為了避免從鍵盤輸入的數據錯誤,該鍵盤輸入電

20、路還為判斷按鍵是否釋放的功 能做了鋪墊,如圖3.3所示,該電路由3個與門構成,當有鍵按下時 sa、sb、sc、sd端中將會有一個為低電平,此時與門的ss端將會輸出低電平,同 時控制了單片機的p0.7端口,再通過軟件控制按鍵是否釋放。 1 2 3 u7:a 74ls08 4 5 6 u7:b 74ls08 9 10 8 u7:c 74ls08 sa sb sc sd ss 圖 3.3 判斷鍵盤是否有鍵按下 at89c52 p0 口 3.2.2 led 七段數碼動態顯示電路 在本系統中采用了led七段數碼動態顯示電路來顯示溫度值,顯示范圍在0-99 之間,該電路由顯示、片選、譯碼三部分組成。 顯示

21、部分:由兩個兩位的led七段共陰數碼管構成,分別用來顯示當前溫 度和設置溫度,如圖3.4所示。 l1l2l3l4l5l6l7l1l2l3l4l5l6l7l10 l11l8l9 當前溫度恒定溫度 圖 3.4 led 七段共陰數碼管 片選部分:如圖3.5所示,由一片2-4譯碼器(74ls139)構成,單片機的 p1.4和p1.5輸出兩位片選信號到2-4譯碼器的a、b端口,進行譯碼后輸出到 led七段數碼管的片選端口,其譯碼功能如表3.1所示。 a 2 y0 4 b 3 y1 5 y2 6 e 1 y3 7 u3:a 74ls139 ka kb l8 l9 l10 l11 圖 3.5 動態顯示片選電

22、路(2-4 譯碼器) 表 3.1 74ls139 功能表 at89c52 p1.4 p1.5 輸入 選通端地址輸入端 輸出 eaby0y1y2y3 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 譯碼部分:該電路由led七段數碼管顯示譯碼器(4511)來完成,如圖3.6 所示,單片機將要顯示的十進制數據轉換成8421bcd編碼,對應的譯碼值 如表3.2所示,再分別送到led七段數碼管顯示譯碼器的a、b、c、d引腳 進行譯碼,最后輸出到led七段數碼管的相引腳。 l1 l3 l2 l4 l5 l6 l7 r1 1

23、k r2 1k r3 1k r4 1k r5 1k r6 1k r7 1k +5 a 7 b 1 c 2 d 6 lt 3 bi 4 le/stb 5 qa 13 qb 12 qc 11 qd 10 qe 9 qf 15 qg 14 u6 4511 圖 3.6 led 七段數碼顯示譯碼電路 表 3.2 4511 譯碼表 8421bcd 碼十進制數 00000 00011 00102 00113 01004 01015 01106 01117 10008 10019 3.2.3 串口通信電路 為了使測得的溫度更準確,在本系統中采用了溫度傳感器ds18b20來獲取當前 溫度,而ds18b20是采用

24、i2c總線進行通信的,如圖3.7所示,單片機使用p3.7端口與 ds18b20的數據通訊端口相連接,并通過軟件實現p3.7控制ds18b20的讀和寫。 +5 32.0 dq 2 vcc 3 gnd 1 u8 ds18b20 圖 3.7 單片機與 ds18b20 的通信 at89c52 p3.7 3.3 控制執行單元設計 該電路的主要任務是完成單片機所發出的升溫或降溫操作,來控制外部的升溫 或降溫設備。如圖3.8所示,電路的gk1和gk2端分別與單片機的p2.2和p2.3端相連 接,其工作原理如下: 在通常情況下,gk1和gk2均為低電平,當單片機向溫度控制執行電路發送降 溫命令時,gk1為高電

25、平,gk2為低電平,使三極管q1飽和導通,此時使繼電器 rl1閉合控制外部的降溫設備進行工作,同時發光二極管d9將被點亮,提醒使用者 溫度過高正在進行降溫操作。 當單片機向溫度控制執行電路發送升溫命令時,gk1為高低平,gk2為高電平, 使三極管q2飽和導通,此時使繼電器rl2閉合控制外部的升溫設備進行工作,同時 發光二極管d4將被點亮,提醒使用者溫度過低正在進行升溫操作。 +5 gk1 gk2 d9 led-red 溫度過低 溫度過高 rl1 g2rl-1ab-dc5 q1 mps6514 r8 300 q2 mps6514 rl2 g2rl-1ab-dc5 d4 led-birg r9 3

26、00 圖 3.8 溫度控制及相應顯示電路 第 4 章 軟件設計 4.1 設計思路、主程序流程圖 根據所學知識,實現本系統的軟件部分將使用匯編語言,要配合硬件部分實現 輸入一個需要恒定的溫度值和偏差溫度,與從溫度傳感器所獲取的當前實際溫度相 比較,并向溫度控制執行電路發出升溫或降溫的命令,在這一過程中將隨時顯示當 前溫度值和設置的溫度值。其主要實現的部分包括:鍵盤輸入、溫度采集、數據轉 換、動態顯示、溫度控制等。主程序流程圖如圖4.1所示。 開始 系統初始化 發送溫度讀取指 令 讀出溫度值 數據轉換 16 進制10 進制 溫度控制執行 顯示當前溫度和 設置溫度 是否有外部中 斷 0 請求? 鍵盤

27、輸入中斷服務子程序 結束 斷點 y n 圖 4.1 主程序流程圖 4.2 溫度采集子程序 溫度采集子程序主要負責驅動力外部的溫度傳感器ds18b20進行工作,通過串 口通信方式向ds18b20寫入rom命令,并讀取當前溫度值,將讀取的數據存放在 26h-2eh存儲單元,其中26h單元存放溫度值的低位,27h單元存放溫度值的高位, 程序流程圖如圖4.2所示。 開始 ds18b20 復位 向 ds18b20 寫入相 應的 rom 命令 讀出溫度值 并進行校驗 結束 圖 4.2 溫度采集子程序流程圖 4.3 數據轉換子程序 數據轉換子程序功能是將從溫度采集子程序中采集的十六進制溫度數據,轉換 成十進

28、制的數值并存儲在指定的存儲單元內。由于該恒溫系統設計的溫度檢測有效 為0-99,所以數據轉換原理為:將獲取到的十六進制溫度值除以十進制數10,所得 到的商為相應十進制數的十位,并存入31h單元,余數則為相應十進制數的個位, 并存入30h單元,其程序流程圖如圖4.3所示。 開始 合并溫度值的高 位和低位存入 a a 除以 10 商送 31h 單元 余數送 30h 單 元 結束 圖 4.3 數據轉換流程圖 4.4 動態顯示子程序 在該恒溫系統中使用了兩個兩位的led七段數碼管來顯示系統所采集的當前溫 度值和設置的溫度值,為了不占用更多的單片機端口,在針對顯示電路的設計時采 用了動態顯示的方案,而動

29、態顯示子程序的主要任務就是控制顯示電路的掃描規律, 其程序流程圖如圖4.4所示。 開始 當前溫度高位送入 a 片選信號初始化 orl a,#30h 當前溫度高位片選信號 anl a,#0cfh 顯示輸出 mov p1,a 延時 1ms 當前溫度低位送入 a 片選信號初始化 orl a,#30h 當前溫度低位片選信號 anl a,#0dfh 顯示輸出 mov p1,a 延時 1ms 設置溫度高位送入 a 片選信號初始化 orl a,#30h 設置溫度高位片選信號 anl a,#0efh 顯示輸出 mov p1,a 延時 1ms 設置溫度低位送入 a 片選信號初始化 orl a,#30h 設置溫度

30、低位片選信號 anl a,#0ffh 顯示輸出 mov p1,a 延時 1ms 結束 圖 4.4 動態顯示子程序流程圖 4.5 溫度控制執行子程序 溫度控制執行子程序的任務是檢測由溫度當前溫度值是否在設置溫度值的允許 范圍內,若當前溫度大于設置溫度的允許范圍,表明當前溫度過高,立及向溫度控 制電路發出降溫命令(p2.2 為高電平,p2.3 為低電平);若當前溫度小于設置溫度 的允許范圍,表明當前溫度過低,立及向溫度控制電路發出升溫命令(p2.2 為低電 平,p2.3 為高電平) ,程序流程圖如圖 4.5 所示。 開始 當前溫度加偏差溫度 設置溫度加偏差溫度 判斷溫度是否過高 (設置溫度加偏差溫

31、度 再減當前溫度) 判斷溫度是否過低 (當前溫度加偏差溫度 再減設置溫度) 初始溫度控制端 p2.2 和 p2.3 置低電平 發出降溫命令 p2.2 高電平 p2.3 低電平 發出升溫命令 p2.2 低電平 p2.3 高電平 結束 y y n n 圖 4.5 溫度控制執行子程序流程圖 4.6 鍵盤輸入中斷服務子程序 在本系統中鍵盤輸入請求使用 int0(外部中斷 0)來實現,int0 采用電平觸發 方式,當按下鍵盤中的“設置/切換”鍵時,int0(p3.2)端為低電平時,進入鍵盤 輸入中斷服務子程序,此時可以設置要恒定溫度的,“刪除(*)”鍵為刪除鍵,點 擊一次可刪除輸入的一位數據,在輸入過程

32、中通過 p0.7 端口判斷每次按鍵后是否釋 放,當按下“確定(#)”號鍵時,則保存設置并退出中斷服務子程序,返回到主程 序,其程序流程圖如圖 4.6 所示。 int0 請求 設置控制、溫度控 制初始化 設置切換輸入 p0.7=低電平? 設置第一列鍵碼 和第一列掃描端 (p0.0)為低電平 延時 20ms 消除抖動 鍵按第二行掃描 p0.4=低電平? 鍵按第三行掃描 p0.5=低電平? 鍵按第四行掃描 p0.6=低電平? 設置第二列鍵碼 和第二列掃描端 (p0.1)為低電平 延時 20ms 消除抖動 設置第三列鍵碼 和第三列掃描端 (p0.2)為低電平 延時 20ms 消除抖動 第一列是否掃描過

33、? 第二列是否掃描過? 第三列是否掃描過? 輸入顯示 鍵值相加,并存儲數據 輸入確定? 返回主程序 鍵按第一行掃描 p0.3=低電平? 按鍵是否釋放? 設置切換 y n y y n n y y n n y n y n y n y n y n 圖 4.6 鍵盤輸入中斷服務子程序流程 圖 第 5 章 結 論 在設計該系統的過程中我充分應用了在課堂上所學的相關理論知識,當把理論 知識通過自己的雙手變成實際后,使我對電路設計有了更多的了解,同時又產生了 更濃厚的興趣。 本系統的核心技術表現在溫度采集、3x4 矩陣鍵盤輸入和動態顯示部分,其中 溫度采集的硬件部分使用溫度傳感器 ds18b20,通過軟件控

34、制與 ds18b20 的串口 通訊來進行溫度采集;3x4 矩陣鍵盤輸入采用鍵碼的掃描來實現.。 為了實現這一系列功能我主動與指導老師交流,并且查閱了大量相關的書籍,在此 過程中進一步鍛煉了自己思考問題與解決問題的能力,鞏固并提高了自己的單片機、 數字電路、模擬電路等相關知識。 該系統實現的最終功能是控制外界溫度,使溫度恒定在一定的范圍內,統所能 測量溫度的范圍在 0-99 度之間,能恒定的范圍是在 1-98 度之間,所以該系統在日 常生活與生產中有較大的應用空間,特別是運用在養值業方面。而在一些特殊的生 產環境中,其需要恒溫的范圍遠遠超過了該系統,該恒溫系統是不適用的,這也是 該系統有待完善的

35、地方。 參考文獻 1 劉高鏁編著.單片機實用技術.清華大學出版社; 2 樊明龍,任麗靜編著.單片機原理與應用.化學工業出版社; 3 徐光翔編著.單片機原理接口及應用.南京大學出版社 4 楊文龍編著.單片機原理及應用.西安電子科技大學出版社 5 樓然苗,李光飛編著.51 系列單片機設計實例.北京航空航天大學出版社 附錄 1 程序代碼 org 0000h ljmp main org 0003h ;外部中斷 int0 入口地址 ljmp skey ;轉外部中斷 int0 org 1000h main: clr p2.2 ;初始控制端,溫度過高/降溫 clr p2.3 ;溫度過低/升溫 tempdin

36、 bit p3.7 ;ds18b20 通信端口 templequ24h ;溫度低位存儲單元 temphequ25h ;溫度高位存儲單元 tempheadequ26h ;ds18b20 9 位數據存儲單元(26h-2eh) showgetlequ30h ;當前溫度低位 showgethequ31h ;當前溫度高位 showsetlequ32h ;設置溫度低位 showsethequ33h ;設置溫度高位 tempckequ34h ;偏差溫度存儲單元 mov tempck,#03h ;設置系統允許的偏差溫度 mov showgetl,#00h ;當前溫度低位初值 mov showgeth,#00h

37、 ;當前溫度高位初值 mov showsetl,#00h ;設置溫度低位初值 mov showseth,#00h ;設置溫度高位初值 loop: mov ie,#00h acallreadtemp ;發送溫度讀取指令 acallreadtemp1 ;讀出溫度值子程序 acall datas ;數據轉換(將 16 進制數據轉換成 10 進制數據) acall setout ;溫度數據處理,溫度控制執行 acall show ;顯示當前溫度和設置溫度 clr it0 ;電平觸發方式 setb ea ;cup 開放中斷 setb ex0 ;允許外部中斷 0 ajmp loop ;- ;下面是主程序所

38、用到的子程序 ;- ; reset ds18b20 復位 initds1820: setbtempdin nop nop clrtempdin movr6, #0a0h; delay 480us djnzr6, $ movr6, #0a0h djnzr6, $ setbtempdin movr6, #showsetl; delay 70us djnzr6, $ mov r6,#3ch loop1820: movc, tempdin jc initds1820out djnz r6,loop1820 mov r6, #064h; delay 200us djnzr6, $ sjmpinitds1

39、820 ret initds1820out:setbtempdin ret ;- ;讀 ds18b20 的程序, 從 ds18b20 中讀出一個字節的數據 readds1820:movr7, #08h setbtempdin nop nop readds1820loop:clrtempdin nop nop nop setb tempdin mov r6, #07h; delay 15us djnz r6, $ mov c, tempdin movr6, #3ch; delay 120us djnz r6, $ rrc a setb tempdin djnz r7, readds1820loo

40、p movr6, #3ch; delay 120us djnzr6, $ ret ;- ; 寫 ds18b20 的子程序, 向 ds18b20 中寫一個字節的數據 writeds1820: movr7, #08h setbtempdin nop nop writeds1820lop:clrtempdin mov r6, #07h; delay 15us djnz r6, $ rrc a movtempdin, c movr6, #34h; delay 104us djnzr6, $ setbtempdin djnz r7, writeds1820lop ret ;- ; 向 ds18b20 寫

41、入相應的 rom 命令 readtemp:lcall initds1820 mova, #0cch lcall writeds1820; 寫入 rom 命令 skip rom movr6, #34h; delay 104us djnzr6, $ mova, #44h lcall writeds1820; 寫入 rom 命令 start conversion movr6, #34h; delay 104us djnzr6, $ ret ;- ;讀出溫度值子程序 readtemp1:lcallinitds1820 mova, #0cch lcall writeds1820; 寫入 rom 命令 s

42、kip rom movr6, #34h; delay 104us djnzr6, $ mova, #0beh lcall writeds1820; 寫入 rom 命令 scratchpad movr6, #34h; delay 104us djnzr6, $ movr5, #09h movr0, #temphead mov b,#00h readtemp2:lcallreadds1820;開始讀出溫度 movr0, a incr0 readtemp21:lcall crc8cal djnzr5, readtemp2 mova, b jnzreadtempout mova, temphead +

43、 0 movtempl, a mova, temphead + 1 movtemph, a readtempout:ret ;- ;ds18b20 crc-8 校驗程序 crc8cal:pushacc movr7, #08h crc8loop1:xrla, b rrca mova, b jnccrc8loop2 xrla, #18h crc8loop2:rrca movb, a popacc rr a pushacc djnzr7, crc8loop1 popacc ret ;- ;數據轉換(將 16 進制數據轉換成 10 進制數據) datas: mov a,templ anl a,#0f0

44、h ;屏蔽低位 swap a mov b,a mov a,temph swap a orl a,b mov b,#10 div ab mov showgeth,a mov showgetl,b ret ;- ;溫度數據處理 setout:mov a,showgetl ;設置偏差溫度,當前溫度+tempck add a,tempck mov 50h,a mov 51h,showgeth subb a,#0ah jc ssz_5 mov 50h,a inc 51h ssz_5: mov a,showsetl ;設置偏差溫度,設置溫度+tempck add a,tempck mov 52h,a mo

45、v 53h,showseth subb a,#0ah jc sd1 mov 52h,a inc 53h sd1: mov a,52h ;設置溫度+tempck 減 當前溫度(判斷溫度是否過高) subb a,showgetl mov a,53h subb a,showgeth jc jiang mov a,50h ;當前溫度+tempck 減 設置溫度(判斷溫度是否過低) subb a,showsetl mov a,51h subb a,showseth jc sheng clr p2.2 ;初始控制端,溫度過高/降溫 clr p2.3 ;溫度過低/升溫 ajmp over jiang: se

46、tb p2.2 ;溫度過高/降溫處理 clr p2.3 ;溫度過低/升溫 ajmp over sheng: setb p2.3 ;溫度過低/升溫處理 clr p2.2 ;初始控制端,溫度過高/降溫 over: ret ;- ;3x4 矩陣鍵盤輸入中斷子程序 skey: mov r0,#00h clr p2.2 ;初始控制端,溫度過高/降溫 clr p2.3 ;初始控制端,溫度過低/升溫 ls1: jb p3.2,sk1 mov a,r0 cpl a mov r0,a jnb p3.2,$ sk1: mov acc,#0ffh clr acc.0 setb acc.1 setb acc.2 mo

47、v p0,acc acall delay1 ;調用兩次 10ms 延時,消除抖動 acall delay1 mov acc,p0 mov 40h,#01h ajmp hs1 ls2: mov acc,#0ffh setb acc.0 clr acc.1 setb acc.2 mov p0,acc acall delay1 acall delay1 mov acc,p0 mov 40h,#02h ajmp hs1 ls3: mov acc,#0ffh setb acc.0 setb acc.1 clr acc.2 mov p0,acc acall delay1 acall delay1 mov acc,p0 mov 40h,#03h ajmp hs1 hs1: jb acc.3,hs2 mov a,#00h add a,40h ajmp ksok hs2: jb acc.4,hs3 mov a,#03h add a,40h ajmp ksok hs3: jb acc.5,hs4 mov a,#06h add a,40h ajmp ksok hs4: jb acc.6,fh1 mov a

溫馨提示

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

評論

0/150

提交評論