




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 . 泰 山 學 院本科畢業論文基于 STC89C52 單片機的家用紅外遙控系統所 在 學 院信息科學技術學院專 業 名 稱自動化申請學士學位所屬學科工 學完 成 日 期2013 年 5 月 1 日 . I / 74摘 要隨著科技的發展,特別是微電子技術的發展,單片機的應用已經深入到生活的各個領域。本文以 STCC89C52 為控制芯片,DS1302 為時鐘芯片,DS18B20 為溫度傳感器,HS0038 紅外一體接收頭作為紅外接收器,以此接收并處理遙控器按鍵信號并用來矯正時鐘時間。同時,本設計還加入了定時和設定溫度上下限的功能,當達到預設時間時執行開關燈命令,當溫度低于溫度下限或高于溫度上限
2、時執行開空調命令,開關器件為兩個大功率電磁繼電器。本設計中所有外設數據顯示于LCD12864 液晶,形成一個良好的用戶界面。硬件電路圖和 PCB 用 Protel99SE 繪制,軟件開發環境為 KeilV3,設計實物為萬用板焊接電路,經調試各項功能均已正常實現。關鍵詞:關鍵詞:紅外遙控,單片機,DS1302,DS18B20,LCD12864 . II / 74ABSTRACTWith the development of science and technology, especially the development of microelectronics technology, SCM
3、applications have been deeply into all areas of life. Taking STCC89C52 as control chip, for DS1302 clock chip, DS18B20 as temperature collector, HS0038 infrared receiving head as integrated infrared receiver, signal receiving and processing the remote control buttons, in order to correct the clock t
4、ime. At the same time, the project also joined the function of timing, and setting temperature of upper and lower, executive orders open to turn off the lights when preset time is reached, when the temperature lower than the temperature is lower or higher than the temperature limit command execution
5、 open air conditioning, for electromagnetic relay switch device. The whole project all the data shown in LCD12864 LCD, forming a good user interface. Made in Protel99SE, the hardware circuit diagram and PCB software development environment for KeilV3, project physical for universal plate welding cir
6、cuit, through debugging functions are normal.KeyKey wordswords:infrared remote control, microcontroller, DS1302, DS18B20, LCD12864 . III / 74目 錄1 1 緒論緒論 1 11.1 家用電器的發展與智能家電的前景 11.2 電子技術的發展對智能家電的推動 11.3 家用紅外遙控系統設計思路 22 2 硬件設計硬件設計 2 22.1 STC89C52 單片機介紹 22.2 DS18B20 溫度傳感器介紹 52.3 DS1302 時鐘芯片介紹 82.4 HS00
7、38 紅外一體接收器介紹 102.5 LCD12864 液晶介紹 112.6 其他硬件電路 133 3 軟件開發平臺與軟件軟件開發平臺與軟件 15153.1 開發環境介紹與程序總體結構 153.2 DS18B20 溫度程序模塊 153.3 DS1302 時間程序模塊 173.4 LCD12864 液晶驅動程序 203.5 HS0038 紅外解碼程序模塊 213.6 定時定溫功能的程序實現 244 4 系統調試與設計總結系統調試與設計總結 24244.1 系統調試 244.2 總結 26參考文獻參考文獻 2727致致 2828附錄附錄 2929 . 1 / 741 緒 論1.1 家用電器的發展與
8、智能家電的前景電器在國民日常生活和國防領域中占有舉足輕重的位置,有著不可或缺的作用,其中,家用電器與人們的生活的關系最為密切。家用電器問世已有百年歷史,美國人愛迪生發明了白熾燈,從此開創了家庭用電時代。19 世紀末電磁波被證實存在,奠定了電子學誕生的基礎。之后,二極電子管和三級電子管的發明使人們開始了真正的電子應用。50 年代電子工業迅速發展,晶體管尤其是集成電路的發明,使人們進入微電子時代同時家用電器的應用也提高到新的水平。隨著科技的發展家用電器也越來越智能化,家用電器的發展趨勢主要有高性能高可靠性,電路集成化功能多樣化,隨著現代電子技術的發展家用電器與多學科交叉融合向著網絡化與智能化發展。
9、總體看來現代家用電器具有更強大的功能,而實現強大功能的保障是具有良好的微處理器,一個智能家電可以實現多個傳統家電的功能。多功能是智能家電主要特點,同時,通信功能也是智能家電的發展方向。另外,新型家用電器在環保,審美以與安全性上也對人們提出了新要求。1.2 電子技術的發展對智能家電的推動20 世紀以來,電子技術發展迅速,特別是近幾年來,現代電子產品以與各種消費電子產品已經滲透到了生活各方面,電子技術的發展有力的推動了科技進步并且提高了人們的生活水平。以單片機為核心的多功能系統正在飛快的改變著人們的生活,特別是一些家用智能產品,不但方便了人們的生活,更加豐富了人們的生活方式。以本文中的家用紅外遙控
10、系統為例,該設計除了具有一般的日歷功能外,還增加了溫度檢測功能,但其能成為“智能”之處并不在于此,而是他可以通過遙控按鍵設定時間值和溫度值,程序會按照這些數值自動的控制繼電器,從而達到了定時開關燈,定溫開關空調的目的。在享受越來越智能化的電子產品的時候,我們還要再次感電子技術的發展,集成化的功能模塊已使編程和硬件設計變得非常方便。以溫度采集模塊為例,經典的溫度采集系統由溫度敏感器件采集到模擬量、經過 A/D 轉換和單片機電路組成。由于溫度傳感器輸出模擬量那么信號需要經過 A/D 轉換,轉換為數字量后才 . 2 / 74能與單片機等數字接口進行通信,從而使電路變得比較復雜,提高了成本。而DS18
11、B20 集成了模數轉換功能,通過封裝只留出一個數據接口,這樣就可以直接輸出數字量,從而與單片機連接變得非常簡單,提高了靈活度,降低了成本增加了應用價值。另外 HS0038 紅外一體接受頭,更是能把紅外信號直接轉變為電壓信號,省去了大量的外圍電路,方便了程序編寫。1.3 家用紅外遙控系統設計思路本設計主要應用于家庭,操作方便功能豐富,能很好的為人們的生活提供方便。家用紅外遙控系統要實現的功能主要有,顯示時間值,顯示溫度值,定時開關功能,設定溫度上下限功能,另外,由于采用紅外遙控器作為按鍵,還應具有紅外接收功能。根據以上功能要求,來選擇所需要的硬件,本設計中所用到的硬件主要有 STC89C52 單
12、片,DS1302 時間芯片,DS18B20 溫度傳感器,HS0038 紅外接收器,LCD 液晶屏,繼電器。在軟件設計上,各個模塊單獨編程,這樣能夠方便調試發現錯誤,也方便今后程序移植和升級。2 硬件設計2.1 STC89C52 單片機介紹2.1.1 STC89C52 引腳簡介STC89C52 管腳與實物圖如圖 2-1,圖 2-2 所示。電源引腳(2 根)GND(20 腳):接地線;VCC(40 腳):接5V 電源外接晶振引腳(2 根)XTAL0(18 腳):振蕩電路的輸入端;XTAL1(19 腳):振蕩電路的輸出端控制引腳(4 根)ALE/PROG(30 腳):地址鎖存允許信號;EA/VPP(
13、31 腳):片外程序存儲器選擇,低電平讀取外部存儲器指令,高電平讀片程序指令;RST/VPP(9 腳):復位引腳 2 個機器周期以上的高電平單片機復位;PSEN(29 腳):外部存儲器讀選通信號。 . 3 / 74圖 2-1 STC89C52 管腳圖圖 2-2 STC89C52 實物圖I/O 口(32 根)該單片機有 4 組(P0、P1、P2、P3)I/O 口,每組 8 位,共 32 根引腳。P0口(39 腳32 腳)是一個具有 8 位漏極開路的雙向 I/O 口。當做輸出口使用時,每組能驅動 8 路 TTL 電平。P1 口(1 腳8 腳)是一個 8 位雙向 I/O 口且具有上拉電阻。可以用來驅
14、動 . 4 / 74TLL 邏輯電平。P2 口(21 腳28 腳)是一個 8 位雙向 I/O 口且具有部上拉電阻,P2 口可以用來驅動 TTL 邏輯電平。P3 口(10 腳17 腳)是 8 位準雙向 I/O 口,同時 P3 口具有復用功能,P3.0 串行輸入(RXD)、P3.1 串行輸出(TXD) 、P3.2 外部中斷 0(INT0)、P3.3 外中斷1(INT1)、P3.4 定時/計數器 0、P3.5 定時/計數器 1、P3.6 外部數據存儲器寫選通、P3.7 外部數據存儲器讀選通。2.1.2 STC89C52RC 主要功能特點STC89C52 是宏晶科技生產的一種高性價比低功耗的 8 位單
15、片機,片集成8KFlash 程序存儲器,STC89C52 使用經典的 MCS-51 核,程序上完全兼容。但該單片機還是做了不少改進,縮短了指令執行周期,增加了定時器 2,增加了看門狗功能。在單芯片上,8 位的 CPU 配合 8K 的程序存儲器,使得 STC89C52 能滿足基本的控制需要而不需要再外擴存儲器。 以下是 STC89C52 的基本特點:(1) 相對于一個機器周期占 12 個時鐘周期的 8051 增加 6 時鐘/機器周期功能。(2) 工作電壓寬度在 5.5V - 3.4V。(3) 工作頻率 0 40 MHz 最高可達到 48MHz。(4) 片集成 8K 字節的程序存儲器和 512B
16、的 RAM。(5) 通用 I/O 口(32 個) ,復位后 P1P4 是準雙向口并帶有弱上拉電阻,P0口是開漏輸出,作為地址線使用時不用接上拉電阻而作為普通 I/O 口使用時必須使用上拉電阻。(6) 具有 3 個 16 位定時器/計數器,定時器 0 可以拆分成兩個 8 位使用。(7) 具有四個外部中斷,可以設置成下降沿或低電平模式觸發,掉電模式下外部中斷的低電平模式可以喚醒系統。(8) 具有一個通用同步串口,如有需要可以通過普通 I/O 口模擬串口進行擴展。(9) 正常工作溫度圍 0 - 75,封裝為 PLCC-44 和 PDIP-40 兩種,本設計為 . 5 / 74PDIP-40 封裝。
17、2.2 DS18B20 溫度傳感器介紹2.2.1 DS18B20 引腳與特點DS18B20 的引腳與封裝如圖 2-3 所示。圖 2-3 DS18B20 引腳與封裝DS18B20 的引腳:1.DQ 輸入/輸出端口;2. GND 為電源地;3. VDD +5V(寄生電源模式下該位接地即可)DS18B20 的主要特性有一下方面,DS18B20 適應的溫電壓圍為 3.05.5v,可以直接與 3v 或 5v 單片機相連,如果使用寄生電源模式兩個電源引腳可以直接接地,DS18B20 與單片機連接只需要一根數據線,通過一定的時序操作可以實現讀和寫的雙向通信,另外 DS18B20 還有一大特色,一條數據線可以
18、連接多個傳感器 ,在不增加 I/O 口的情況下實現多點測溫的需求,DS18B20 設計精巧實用方便,整個功能電路集成在只有三個引腳的芯片,形如三極管 ,其溫度測量圍55125,溫度測量分辨率為 912 位出廠設置為 12 位精度,這樣在 . 6 / 74默認設置下只要把測得并轉化后的溫度值乘以 0.0625 即可得實際溫度值。DS18B20 與單片機的連接有兩種方法,外部電源供電和寄生電源供電方式,在實際使用時只需要在數據線上接上 4.7k 的上拉電阻即可。本設計采用外部電源供電方式如圖 2-4 所示。圖 2-4 DS18B20 外部供電電路圖2.2.2 DS18B20 部結構與寄存器介紹DS
19、18B20 的部結構如圖 2-5 所示。圖 2-5 DS18B20 部結構圖DS18B20 的四大數據組成部分:光刻 ROM 中的 64 位序列號,用于實現一根總線上掛接多個 DS18B20 的目的。溫度靈敏原件,用于接收最初的溫度模擬量,即電阻隨溫度變化。 . 7 / 74非易失性溫度報警觸發器(EEPROM)TH 和 TL。可通過軟件寫入用戶報警上下限值。配置寄存器,通過 R0,R1 位設置,溫度分辨率,出廠時 R0=1,R1=1(即 12位分辨率)具體設置方法如圖 2-6 所示。圖 2-6 分辨率設置寄存器下面是對 DS18B20 高速暫存存儲器介紹:高速 RAM 由 9 個字節組成如表
20、 2-1 所示。表 2-1 DS18B20 存儲器映像溫度低位溫度高位THTL配置位保留保留保留CRC 校驗溫度轉換命令(44H)發出后在最長 750ms 的時間,二進制溫度值被存放于溫度高位和溫度低位(即高速 RAM 的第 0 和 1 字節) 。這時單片機按照低位在前,高位在后的方式讀取兩字節數據,就可以通過一定的轉換規則得到十進制溫度。在轉換時應注意,當 S=0(正溫度)時,根據分辨率位數直接轉換為十進制;當S=1(負溫度)時,應先將補碼取反加一,再進行十進制轉換。數據格式如圖 2-7所示。圖 2-7 溫度值格式圖 . 8 / 74DS18B20 與單片機的通信遵循著一定的時序,其時序如圖
21、 2-8 所示。圖 2-8 DS1302 時序圖由圖可知,使用 DS18B20 時首先對其復位,復位信號至少為 480us 的低電平,若 DS18B20 接收到復位信號則會在 1560us 發出一個回復脈沖,脈沖時間為60240us,此時控制器數據線應是高電平以便對其接收,至此,通信協議已經基本達成,接下來開始數據通信。2.3 DS1302 時鐘芯片介紹2.3.1 DS1302 引腳與部寄存器簡介DS1302 是美國達拉斯公司推出的一款功耗低功能全的實時時鐘芯片,RTC 寄存器可提供年、月、日、時、分、秒、與周的時間值,另有 31 字節靜態 RAM,采用串行三線接口與單片機進行通信,突發方式下
22、,可以一次性傳送多個字節的數據或時鐘信號。工作電壓寬度 2.55V ,用來保持片數據時功率控制在 1 毫瓦。具有備用電源引腳,也可以通過寄存器設置備用電源充電方式。DS1302 的引腳如圖 2-9 所示。圖 2-9 DS1302 引腳圖其中 X1、X2 外接 32.768KHz 晶振;GND 接地;CE 為信號使能端,數據傳輸時必須保持高電平,I/O 為數據輸入/輸出引腳;SCLK 為串行時鐘,Vcc1,Vcc2為電源供電管腳。DS1302 關于時間和日期的寄存器如圖 2-10 所示,共有 12 個,編程時注意讀 . 9 / 74和寫的地址有所不同。圖 2-10 DS1302RTC 寄存器DS
23、1302 控制字,如表 2-2 所示。表 2-2 DS1302 控制字1RAMA4A3A2A1A0RD/WR控制字最高字節應該為 1,為 0 時不能向芯片寫入數據,控制字從低位開始輸出,第 6 位為 0 表示讀取時鐘數據,為 1 表示讀 RAM 數據,A4A0 為操作地址。在下一個時鐘上升沿,寫入數據,而在指令后的下一個時鐘下降沿,讀出數據。2.3.2 DS1302 讀寫時序DS1302 讀寫時序如圖 2-11 所示。CE 高電平開啟數據傳送功能,數據傳輸時,數據在時鐘上升沿輸入,時鐘下降沿輸出。 . 10 / 74圖 2-11 DS1302 讀寫時序2.4 HS0038 紅外一體接收器介紹2
24、.4.1 HS0038 特點介紹紅外通信有紅外發射裝置和接收裝置組成,本設計的紅外發射裝置為載波38KHz 的普通紅外遙控器。HS0038 能夠接受紅外信號,并能對信號放大,檢波,整形輸出單片機可以識別的 TTL 電平。單片機經過一定的算法把接收到的數據進行解碼。便可以得到遙控器鍵值。應當注意 HS0038 輸出的數據正好和發射端的電平反向。2.4.2 HS0038 電路與應用HS0038 引腳與封裝如圖 2-12 所示。圖 2-12 HS0038 實物圖從左到右,引腳依次是:I/O 數據端口、GND 接地、VCC 接+5V 電源。 . 11 / 74HS0038 在單片機系統中常用的電路如圖
25、 2-13 所示。圖 2-13 HS0038 應用電路圖2.5 LCD12864 液晶介紹2.5.1 LCD12864 性能概述與引腳功能 本設計采用帶漢字字庫的液晶模塊,置 8192 個漢字 128 個字符還具有 64*256的 GDRAM 可以用來繪制圖形。液晶正常工作的電壓寬度為 3.35V,顯示分辨率為12864。應用中可以通過寫入命令字來實現多種功能,如:開關光標,反白顯示,屏幕移位,睡眠等。該液晶 20 個引腳與單片機的連接如圖 2-14 所示。LCD12864具有 20 個引腳其功能如表 2-3 所示。圖 2-14 LCD12864 與單片機連接圖由于本設計采用 8 位并行數據傳
26、輸方式,故其第 15 引腳 PSB 直接接高電平即可。此時,RS 引腳為指令/數據選擇引腳。另外,18 腳和 19 腳為背光燈,可以根據需要接上可調電阻來實現對背光亮度的調節。表 2-3 LCD12864 引腳功能圖 . 12 / 742.5.2 LCD12864 讀寫時序與用戶指令集對 LCD12864 液晶的操作不外乎通過單片機不斷進行讀寫,單片機寫數據到液晶模塊的時序圖如圖 2-15 所示。圖 2-15 單片機寫數據到液晶模塊單片機讀取液晶模塊數據的時序圖如圖 2-16 所示。 . 13 / 74圖 2-16 單片機讀取液晶模塊數據由圖 3-14 可知寫數據或命令的操作大致如下,RS 為
27、高時寫數據,RS 為低時寫指令;RW 引腳為低電平進行寫操作;E 引腳設置為高允許數據傳送,接著便把所傳數據放于數據引腳,E 引腳再次拉低便完成了寫操作。LCD12864 有兩種指令集,基本指令集(RE=0)和擴充指令集(RE=1) ,寫指令時 RS=0,RW=0。通過正確的時序寫指令可以設置 LCD12864 的很多功能,如寫入0 x01 指令即可清屏并把 DDRAM 地址計數器調整為“00H”,再如寫入指令“0 xc”即可打開顯示關閉游標。2.6 其他硬件電路2.6.1 STC89C52RC 最小系統的設計本設計的單片機最小系統主要包括,STC89C52 單片機,12M 外接晶振,上電復位
28、電路三個部分。最小系統晶振電路如圖 2-17 所示。圖 2-17 晶振電路晶振兩個引腳分別接于單片機的 XTAL0 和 XTAL1 引腳,電容值的選擇圍為530PF,電容對晶振頻率具有微調作用。最小系統復位電路如圖 2-18 所示。 . 14 / 74圖 2-18 上電復位電路單片機復位電路的設計必須能滿足上電震蕩穩定后,保持至少兩個周期的高電平。本最小系統采用 10uf 的電容,經驗證完全滿足要求。由于本電路上電即可以使單片機復位,又具有電源開關,故省去了按鍵復位開關。另外,由于本設計采用單片機部存儲器存儲程序,故單片機的第 31 引腳(EA)接高電平,用來訪問片程序。2.6.2 系統電源電
29、路的設計 由于所選用單片機為 5V 單片機,為得到較穩定的 5V 電壓,本設計采用了L7805cv 三端集成穩壓管。輸出電壓 4.75-5.25V,最大輸入電壓 35v,壓差 3-5v時工作在理想狀態。輸出電流可達 1.5A(需做好散熱) ,同時 L7805cv 部含有限流保護電路和過熱保護電路,防止負載過大溫度過高燒壞器件。本設計中L7805cv 的應用電路如圖 2-19 所示。圖 2-19 L7805cv 穩壓電路圖3 軟件開發平臺與軟件3.1 開發環境介紹與程序總體結構3.1.1 開發環境介紹本設計采用 KEIL C51 集成開發環境,它具良好用戶的界面,使用極為方便。支持匯編語言,C
30、語言與其混合編程,能夠兼容絕大多數 51 系列單片機的程序設計和仿真。在本設計中,所有的程序采用 C 語言編寫,最后把調試通過的程序編譯成二進制文件并通過串口下載到目標板。 . 15 / 743.1.2 程序總體結構由于整個系統涉與到的外設模塊較多,故采用了多文件模塊化編程,這樣大大提高了程序的可讀性,也為以后可能遇到的程序移植和升級提供了方便。整個設計的程序結構如圖 3-1 所示。圖 3-1 程序結構圖其中,main.c 是設計主函數包含了各種外設的初始化與其功能函數的調用,DS18B20.c、IR.c、DS1302.c、LCD12864.c 分別為溫度傳感器、紅外接收器、時鐘芯片和液晶的驅
31、動程序,SET.c 是用來定時、定溫的功能模塊。3.2 DS18B20 溫度程序模塊3.2.1 DS18B20 操作流程使用 DS18B20 時首先應遵循圖 2-8 所示的時序圖,然后按照流程進行具體操作。DS18B20 操作流程如圖 3-2 所示。 . 16 / 74初始化復位、發跳過 ROM 命令發溫度轉換命令、等待發讀取溫度命令復位、發跳過 ROM 命令調用顯示函數存儲并轉化數據圖 3-2 DS18B20 操作流程3.2.2 DS18B20 重點代碼與其分析DS18B20 程序的核心部分是利用單片機讀取芯片部的溫度值,其讀函數如下,/*從 DS1820 中讀出數據*/uchar DS18
32、20_RData()uchar i,j,Tmep;for(i=8;i0;i-) . 17 / 74Tmep=1;DS1820_bit=0; /低電平,產生讀信號for(j=2;j0;j-); /延時 4usDS1820_bit=1; /釋放總線,準備讀數據for(j=4;j0;j-); /延時if(DS1820_bit=1)Tmep|=0 x80;for(j=30;j0;j-); /延時DS1820_bit=1; /拉高數據線,準備讀下一位return(Tmep); /返回數據通過上面的讀函數,溫度值被保存到 Tmep 變量,接下來便可以按照一定的規則對 Tmep 的值進行轉化,最后顯示在液晶
33、屏上。另外,應當注意在每次獲取溫度值時都要對 DS18B20 進行復位操作。3.3 DS1302 時間程序模塊3.3.1 DS1302 總體操作與基本讀寫功能函數本設計中 DS1302 操作主要包括讀取部時間值和修改時間值兩部分,DS1302模塊總體操作如圖 3-3 所示。 . 18 / 74圖 3-3 DS1302 操作總流程DS1302 讀寫操作流程如圖 3-4 所示。開始結束設置 CE 為高上升沿,按位傳輸地址讀取或寫入相應地址的數據設 置 C E 為 低圖 3-4 DS1302 讀寫操作流程在對 DS1302 操作時,只要調用 Write1302_Cmd_Dat(),和 Read130
34、2()就可以實現其與單片機之間的數據交流。下面是讀寫函數的實現。/*/向 DS1302 寫地址和數據, Addr 地址,Dat 數據*/void Write1302_Cmd_Dat(unsigned char Addr, unsigned char Dat)DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302_WriteByte(Addr); / 地址,命令 DS1302_WriteByte(Dat); / 寫 1Byte 數據DS1302_CLK = 1;DS1302_RST = 0; /* . 19 / 74/讀取 DS1302 某地址的數
35、據,*/ uchar Read1302(unsigned char Addr)uchar Dat;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302_WriteByte(Addr|0 x01); / 以寫數據時的地址為參考,讀時應加1Dat = DS1302_ReadByte(); / 讀取數據到變量 DatDS1302_CLK = 1;DS1302_RST = 0;return(Dat);3.3.2 讀取時間數據并轉化成字符串由于時間數據包含年、月、日、時、分、秒、周,為了方便可以定義一個時間類型結構體,把轉換前后的數據都作為這個結構體的成
36、員。typedef struct unsigned char Week;unsigned char Second;unsigned char Hour;unsigned char Minute;unsigned char Hour;unsigned char Month;unsigned char Day;unsigned char Year;unsigned char Str_Time9;unsigned char Str_Year5;unsigned char Str_Month3;unsigned char Str_Day3;struct_TIM;然后,通過 Read1302()函數讀取
37、各個地址處的時間數據分別保存于Second、Minute 等變量中并轉換成十進制,如讀取并轉換秒值可以用以下兩個語句:temp = Read1302(0 x80);/低四位是秒的個位,高三位是秒的十位(原來是 . 20 / 74BCD 碼)Time-Second = (temp &0 x70)4)*10 + (temp &0 x0F);接著就可以把數值轉換成字符串了,仍以秒值為例轉換語句如下:Time-Str_Time0 = Time-Second/10 + 0;/十位Time-Str_Time1 = Time-Second%10 + 0;/個位至此,所得數據便可以方便的顯示在液晶屏上了。3.
38、4 LCD12864 液晶驅動程序3.4.1 LCD12864 初始化LCD12864 初始化流程如圖 3-5 所示。圖 3-5 12864 液晶初始化LCD12864 液晶屏使用前先要進行初始化,已設定不同的功能和模式,本設計中液晶初始化為基本指令集,開顯示關閉游標,光標從左向右加 1 移動,初始化通過 Init_12864()函數完成。 . 21 / 743.4.2 寫數據到 LCD12864 功能函數LCD12864 的功能函數主要是顯示從其他模塊采集到的并轉化后的數據,這里主要提供了兩種顯示函數,writestring()和 writedat()兩個函數,writestring()用來
39、顯示從一個地址開始的字符串,writedat()函數用來在某個地址顯示一個字符。下面是相應的實現代碼。/從地址 addr_12864 開始,寫字符串到 LCD void writestring(uchar addr_12864 ,uchar * str)uchar i = 0;Write12864_Cmd_Dat(addr_12864,0);while(stri != 0)Write12864_Cmd_Dat(stri+,1); /在地址 addr,寫一個字符到 LCDvoid writedat(uchar addr ,uchar dat)Write12864_Cmd_Dat(addr,0);
40、Write12864_Cmd_Dat(dat,1);3.5 HS0038 紅外解碼程序模塊3.5.1 紅外遙控器編碼介紹在進行紅外解碼之前首先要對本設計采用的紅外遙控器編碼方式進行簡要介紹。遙控器發送一組完整數據(如圖 3-6 所示) ,首先是 9ms 高電平和 4.5ms 低電平組成的前導碼,緊接著是 8 位地址碼與其反碼,最后便是 8 位操作碼與其反碼。具體的編碼方式為脈寬調制的串行碼,用 0.56ms 的高電平和 0.56ms 的低電平表示二進制 0,以 0.56ms 的高電平和 1.68ms 的低電平表示二進制 1,編碼形式如圖 3-7 所示。 . 22 / 74圖 3-6 遙控器發送
41、一組完整數據圖 3-7 遙控器編碼的 0 和 13.5.2 紅外解碼程序流程與重要代碼分析本設計中紅外遙控器作為控制單片機運行的按鍵,為了更好的實現按鍵功能紅外接收端接在了單片機的外部中斷 0 引腳,另外遙控器編碼采用脈寬調制方式,為了更精確的記錄脈寬時間需要啟用定時器功能,所以程序開始要進行中斷和定時器的初始化。為了保證精度,定時器初始化為工作方式 2 即 8 位自動重裝模式。中斷觸發方式采用下降沿觸發,中斷程序只需要記錄兩個中斷之間時間值并保存,然后對相應脈沖的時間值與標準的脈沖時間進行比較,這樣得出了是 0 還是 1。由于中斷函數盡量要短,進行解碼的工作盡量不要在中斷函數中進行。下面是中
42、斷函數。/*晶振 12M,一個機械周期為 12/12000000 為 1 微秒,則每一次中斷256*0.001ms=0.256ms*/void timer0() interrupt 1 timer+; . 23 / 74/*startflag 初始值位 0,第一次進入中斷標記為 1,同時時間清零,如果經判斷有引導碼出現,就開始記錄了。*/void int0() interrupt 0if(startflag)if( timer45) /9+4.5ms 的引導碼 13.5/0.256 =52 取低于 52 的數即可ir_num=0;ir_time_datair_num=timer;timer=0
43、;irnum+;if(ir_num=33) Ir_num=0;Ir_end=1; /一組接收完成elsestartflag=1; /第一次進來時被標記為 1,timer 清 0timer=0;另外,根據通過實際應用發現,外部光源特別是太對紅外通信干擾較大,為了避免光源干擾可能帶來的麻煩,這里采用了軟件解決的方式。按鍵按下后把得到的數據分別與操作碼和操作反碼比較,每次比較通過后要立即清零。下面是一段示例代碼:if(ircode2=0 x09) ircode2=0 x00;if (ircode3=0 xf6) ircode3=0 x00;具體功能代碼這樣就保證了即使干擾數據能進入第一層,但進不了第
44、二層,由于進入第一 . 24 / 74層后數據被清除,下一次連第一層也進不去了,從而避免了由于干擾出現隨機數對系統功能的影響。3.6 定時定溫功能的程序實現本系統具有隨時設定時間值和溫度值的功能,要達到這樣的目的需要滿足這樣幾個條件,第一、能進入設置模式,第二、能通過按鍵選擇要修改的項并能對其數值增大和減小,第三、能順利返回。該流程可以通過圖 3-8 表示。返回修改項切換增減修改設置模式圖 3-8 時間溫度設置流程以上工作完成后,設置功能已經能夠實現,只需要在主函數中調用Compare_temp_time()函數就可以通過比較設定值與實際值,來執行繼電器開關燈和開關空調動作了。4 系統調試與設
45、計總結4.1 系統調試4.1.1 最小系統調試本設計的電路圖由 Protel99SE 繪制,各功能模塊的實際電路由萬用板人工焊接。最小系統的正常運行是整個系統得以正常運行的前提。焊接完成最小系統后,首先用軟件平臺編寫一個能使 P2.0 口一秒間隔高低電平變化的 C 程序,然后把編譯生成的二進制文件通過串口下載到單片機。這時再在 P2.0 引腳連接發光二極管,上電復位后,發現二級管能夠一秒間隔出現亮滅循環。通過以上實驗能夠證明單片機最小系統已經正常運行,下面就可以焊接其他 . 25 / 74功能模塊了。4.1.2 其他各模塊調試過程由于本設計的所有數據都以可見方式顯示在液晶上,所以在焊接其他模塊
46、前需要使液晶屏能夠正常顯示。焊接好液晶模塊后,通過上面的方式下載程序使液晶顯示出幾個漢字和字符,液晶調試通過。接著焊接溫度傳感器和時鐘芯片,并通過各自的程序在液晶上顯示出數據。紅外模塊的調試是通過遙控繼電器開關來完成的,焊接好紅外和繼電器模塊后,通過編程使遙控器某按鍵每次鍵按下時 P2.0電平高低翻轉,把繼電器連接在 P2.0 引腳,上電復位后按下遙控器,繼電器發出啪啪的響聲,調試通過。在實際調試時鐘模塊時,時間數據經常發生抖動和隨機跳變,但在下一次刷新時又變正常,這說明時鐘芯片與單片機的通信是正常的。經過多次對電路的檢查懷疑是由于 DS1302 的 I/O 口驅動能力不足造成的,而且在焊接的
47、電路中從DS1302 到單片機之間的連線又很長,于是在 DS1302 的 I/O 口和 VCC 之間加了一個 10K 的上拉電阻,問題得到圓滿解決。 由此得出了一個結論 DS1302 的驅動能力很是有限的在和單片機的通信中,要考慮到加上拉電阻的可能。各個模塊調試通過后就可以把各模塊程序加以組合,實現整體功能了,由于采用了多文件編程要注意聲明全局變量。圖 5-1 即為調試用電路實物與顯示效果,各項功能均已正常。 . 26 / 74圖 4-1 實物電路與顯示效果4.2 總結綜合上面的介紹,本設計的硬件共有,電源模塊,最小系統,紅外模塊,溫度模塊,時鐘模塊,液晶模塊和繼電器模塊組成。軟件部分共有,m
48、ain.c(主函數模塊文件) ,DS18B20.c(溫度模塊文件) ,DS1302.c(時鐘模塊文件) ,IR.c(紅外模塊文件) ,LCD12864.c(液晶模塊文件) ,SET.c(設置功能文件)以與相應的頭文件組成。整個系統實現的功能有:(1) 實時溫度的測量和顯示。(2) 年月日時分秒時間信息的實時顯示以與調整。(3) 通過定時功能控制繼電器開關燈,也可以隨時遙控開關燈。(4) 通過設定溫度值利用繼電器開關空調。本設計還有以下有待升級之處:(1) 可以加裝移動電源,而不是通過電源適配器供電,這樣可以使產品移動更方便,使用更加靈活。(2) 由于液晶耗電量比較大,可以增加光敏電阻以與相應電
49、路達到根據外接光線變化自動調節背光亮度的效果,以節省電能。(3) 可以利用液晶的繪圖功能為時鐘模塊增加一個圖形時鐘界面,這樣可以使設計更加人性化。參考文獻1桑勝舉,丁.單片機原理與應用M.:中國鐵道,2010.8:11-20.2凌志浩.AT89C52 單片機原理與接口技術M:高等教育,2010:8-21.3郭循釗,鄺帆,邵平,許宏科.基于單片機的多功能交通燈控制系統設計與仿真實現J.公路交通技術, 2010:5-29.4林凌,剛,丁茹,小霞.新型單片機接口器件與技術M.:電子科技大學,2005:30-34.5邊春遠,王志強.MCS-51 單片機應用開發實用子程序M.人民郵電,2002:43-4
50、7.6友德,志英,徐時亮.單片微機原理應用與實驗M.復旦大學,2000:32-34.7朝青.單片機原理與接口技術(簡明修訂版)M.航空航天大學,1998:23-43.8黃河,曉,學瑞,黃艷秋.基于 DS18B20 單總線數字溫度計的設計與實現J.中國礦業大學 . 27 / 74信息與電氣工程學院.2009.9.15:3-5.9郝文化.Protel Dxp 電路原理圖與 PCB 設計M.機械工業.2004.3:23-25.10袁旭軍,莊松林.單片機復位電路的可靠性分析J.電子技術用.2002.11:19-21.致 本篇論文能夠得以順利完成,首先要感*老師對我的悉心指導。*老師在我著手做這個設計之
51、初就給我分析了可能遇到的困難,這使我在做設計和撰寫論文時更加有針對性,少走了不少彎路。宗棟老師帶人寬厚做事認真,在這段時間里老師的教導使我明白了,做事要嚴謹細致,要有克服困難的耐心和勇氣,當遇到技術瓶頸時沒有這點素質是萬萬不行的,同時,還要寬厚帶人,成功很大程度上來自他人直接或間接的幫助,只有與他人相處融洽我們才能得到別人更多的幫助才能更好地與他人合作。另外,在這里還要感一下從事編輯工作的我的舍友王坤同學,在論文編寫過程中他教會了我不少使用 Office 軟件的小技巧,帶著這些意外的收獲對他表示衷心的感。附 錄附錄附錄 1 1 整體電路原理圖整體電路原理圖 . 28 / 7412345U8RE
52、LAYP101P2728P112P2627P123P2526P134P2425P145P2324P156P2223P167P2122P178P2021P3010VCC40P3111P0039P3212P0138P3313P0237P3414P0336P3515P0435P3616P0534P3717P0633RSET9X218X119GND20PSEN39ALE30EA31P0732U4STC89C52132VVGNDINOUTU378L05VP10P11+12S5SwitchVCCVCC12X212MC425PC325PX1X2X1X2231Q1C8550P2012S6CON2VCCD0D1
53、VCCP21P2012D1IN4007+EC310UFREVCCRE12LED6LEDVCCC60.1UFVCCVCC1GND2I/O3U7HS0038+EC44.7UFVCCINT0INT0123S3CON3+1212R710K12R810K12R1147K12R910K12R132012R1010KVCC12LED4LED12LED5LEDVCC1I/O2GND3U6DS18B2012R124.7KVCCP21RESTP35P17P16PSBVCC8SCLK7RST5VCC21X12X23GND4IO6DS1302DS130221ATXLXTAL2P14P13P12VCCED5D6D7VC
54、CRSR/WED0D1D2D3D4D5D6D7PSBRESTVCCP10P11D2D3D4RSR/W1234567891011121314151617181920J?CON20P12P13P14P15 . 29 / 74附錄附錄 2 2 PCBPCB 版圖版圖 . 30 / 74附錄附錄 3 3 Protel99SEProtel99SE 生成的生成的 3D3D 效果圖效果圖 . 31 / 74附錄附錄 3 3 全部代碼全部代碼DS1302.cDS1302.c#include #includeLCD12864.h#includeLCD1602.h . 32 / 74#includeDS1302.
55、h#includeIR.h#include #define uint unsigned int#define uchar unsigned charuchar TempBuffer5,week_value2;/uchar ircode4;uchar code Year=年;uchar code Month=月;uchar code Day=日;uchar code Week=周;unsigned char Hour_out;unsigned char Minute_out;char done,count,temp,flag,up_flag,down_flag;char hide_sec,hid
56、e_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /秒,分,時到日,月,年位閃的計struct_TIM CurrentTime; /定義的時間類型#define DS1302_SECOND0 x80 /時鐘芯片的寄存器位置,存放時間#define DS1302_MINUTE0 x82#define DS1302_HOUR0 x84 #define DS1302_WEEK0 x8A#define DS1302_DAY0 x86#define DS1302_MONTH0 x88#define DS1302_YEAR0 x8C /*實時
57、時鐘寫入一字節*/void DS1302InputByte(unsigned char d) uchar i;ACC = d; . 33 / 74for(i=8; i0; i-) DS1302_IO = ACC0; /相當于匯編中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; /*實時時鐘讀取一字節*/unsigned char DS1302OutputByte(void) uchar i; for(i=8; i0; i-) ACC = ACC 1; /相當于匯編中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1
58、; DS1302_CLK = 0; return(ACC);/*/ucAddr: DS1302 地址, ucData: 要寫的數據*/void Write1302(unsigned char ucAddr, unsigned char ucDa) DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 寫 1Byte 數據 DS1302_CLK = 1; DS1302_RST = 0; . 34 / 74 /*/讀取 DS1302 某地址的
59、數據*/unsigned char Read1302(unsigned char ucAddr) uchar ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0 x01); / 地址,命令 ucData = DS1302OutputByte(); / 讀 1Byte 數據 DS1302_CLK = 1; DS1302_RST = 0; return(ucData);/*獲取時鐘芯片的時鐘數據到自定義的結構型數組*/void DS1302_GetTime(struct_TIM *Time
60、) uchar ReadValue;ReadValue = Read1302(DS1302_SECOND);Time-Second = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadVal
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年農作物種子知識試題及答案
- 智能化農田改造工程可行性研究報告(范文參考)
- 掌握監管要點2024籃球裁判員考試試題及答案
- 模具設計師資格考試階段性調整試題及答案
- 高端物流設施園區項目可行性研究報告
- 2024年模具設計師資格認證熱題及答案
- 理解農作物種子職業教育的試題及答案
- 2024年體育經紀人考試考生必看試題及答案
- 2024年體育經紀人考試核心考點試題及答案
- 2024年體育經紀人考試研究進展試題及答案
- 車輛采購合同模板.(2025版)
- 浙江省杭州市蕭山區2025年中考一模數學模擬試題(含答案)
- 浙江省麗水市發展共同體2024-2025學年高二下學期4月期中聯考地理試卷(PDF版含答案)
- 沈陽市東北大學非教師崗位招聘考試真題2024
- 工業互聯網標識解析 課件 項目1 了解工業互聯網標識解析體系
- 2025年貴州水城文旅(集團)有限責任公司招聘筆試參考題庫含答案解析
- 2025年甘肅省中考模擬英語試題(一)(含答案)
- 2025年網絡工程師職業技能測試卷:無線網絡部署與優化試題
- 2024年水利部珠江水利委員會所屬事業單位招聘考試真題
- 2025年北京市海淀區高三一模地理試卷(含答案)
- 建筑行業員工職業道德
評論
0/150
提交評論