基于STC89C52單片機(jī)的家用紅外遙控系統(tǒng)畢業(yè)論文_第1頁
基于STC89C52單片機(jī)的家用紅外遙控系統(tǒng)畢業(yè)論文_第2頁
基于STC89C52單片機(jī)的家用紅外遙控系統(tǒng)畢業(yè)論文_第3頁
基于STC89C52單片機(jī)的家用紅外遙控系統(tǒng)畢業(yè)論文_第4頁
基于STC89C52單片機(jī)的家用紅外遙控系統(tǒng)畢業(yè)論文_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、泰 山 學(xué) 院本科畢業(yè)論文基于 STC89C52 單片機(jī)的家用紅外遙控系統(tǒng)所 在 學(xué) 院信息科學(xué)技術(shù)學(xué)院專 業(yè) 名 稱自動化申請學(xué)士學(xué)位所屬學(xué)科工 學(xué)年 級2009 級學(xué) 生 姓 名、學(xué) 號 指導(dǎo)教師姓名 、職稱 完 成 日 期2013 年 5 月 1 日摘 要隨著科技的發(fā)展,特別是微電子技術(shù)的發(fā)展,單片機(jī)的應(yīng)用已經(jīng)深入到生活的各個(gè)領(lǐng)域。本文以 STCC89C52 為控制芯片,DS1302 為時(shí)鐘芯片,DS18B20 為溫度傳感器,HS0038 紅外一體接收頭作為紅外接收器,以此接收并處理遙控器按鍵信號并用來矯正時(shí)鐘時(shí)間。同時(shí),本設(shè)計(jì)還加入了定時(shí)和設(shè)定溫度上下限的功能,當(dāng)達(dá)到預(yù)設(shè)時(shí)間時(shí)執(zhí)行開關(guān)

2、燈命令,當(dāng)溫度低于溫度下限或高于溫度上限時(shí)執(zhí)行開空調(diào)命令,開關(guān)器件為兩個(gè)大功率電磁繼電器。本設(shè)計(jì)中所有外設(shè)數(shù)據(jù)顯示于 LCD12864 液晶,形成一個(gè)良好的用戶界面。硬件電路圖和 PCB 用Protel99SE 繪制,軟件開發(fā)環(huán)境為 KeilV3,設(shè)計(jì)實(shí)物為萬用板焊接電路,經(jīng)調(diào)試各項(xiàng)功能均已正常實(shí)現(xiàn)。關(guān)鍵詞:關(guān)鍵詞:紅外遙控,單片機(jī),DS1302,DS18B20,LCD12864ABSTRACTWith the development of science and technology, especially the development of microelectronics techno

3、logy, SCM 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 t

4、he clock time. 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

5、 execution 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 w

6、elding circuit, through debugging functions are normal.Key words:infrared remote control, microcontroller, DS1302, DS18B20, LCD12864目 錄1 緒緒 論論.1 家用電器的發(fā)展及智能家電的前景.1 電子技術(shù)的發(fā)展對智能家電的推動.1 家用紅外遙控系統(tǒng)設(shè)計(jì)思路.22 硬件設(shè)計(jì)硬件設(shè)計(jì).22.1 STC89C52 單片機(jī)介紹 .22.2 DS18B20 溫度傳感器介紹.52.3 DS1302 時(shí)鐘芯片介紹 .82.4 HS0038 紅外一體接收器介紹 .102.5 LCD

7、12864 液晶介紹 .11 其他硬件電路.133 軟件開發(fā)平臺及軟件軟件開發(fā)平臺及軟件.15 開發(fā)環(huán)境介紹及程序總體結(jié)構(gòu).153.2 DS18B20 溫度程序模塊.153.3 DS1302 時(shí)間程序模塊 .173.4 LCD12864 液晶驅(qū)動程序 .203.5 HS0038 紅外解碼程序模塊 .21 定時(shí)定溫功能的程序?qū)崿F(xiàn).244 系統(tǒng)調(diào)試及設(shè)計(jì)總結(jié)系統(tǒng)調(diào)試及設(shè)計(jì)總結(jié).24 系統(tǒng)調(diào)試.244.2 總結(jié).26參考文獻(xiàn)參考文獻(xiàn).27致致 謝謝.28附附 錄錄.291 緒 論1.1 家用電器的發(fā)展及智能家電的前景電器在國民日常生活和國防領(lǐng)域中占有舉足輕重的位置,有著不可或缺的作用,其中,家用電器

8、與人們的生活的關(guān)系最為密切。家用電器問世已有百年歷史,美國人愛迪生發(fā)明了白熾燈,從此開創(chuàng)了家庭用電時(shí)代。19 世紀(jì)末電磁波被證實(shí)存在,奠定了電子學(xué)誕生的基礎(chǔ)。之后,二極電子管和三級電子管的發(fā)明使人們開始了真正的電子應(yīng)用。50 年代電子工業(yè)迅速發(fā)展,晶體管尤其是集成電路的發(fā)明,使人們進(jìn)入微電子時(shí)代同時(shí)家用電器的應(yīng)用也提高到新的水平。隨著科技的發(fā)展家用電器也越來越智能化,家用電器的發(fā)展趨勢主要有高性能高可靠性,電路集成化功能多樣化,隨著現(xiàn)代電子技術(shù)的發(fā)展家用電器與多學(xué)科交叉融合向著網(wǎng)絡(luò)化與智能化發(fā)展。總體看來現(xiàn)代家用電器具有更強(qiáng)大的功能,而實(shí)現(xiàn)強(qiáng)大功能的保障是具有良好的微處理器,一個(gè)智能家電可以實(shí)

9、現(xiàn)多個(gè)傳統(tǒng)家電的功能。多功能是智能家電主要特點(diǎn),同時(shí),通信功能也是智能家電的發(fā)展方向。另外,新型家用電器在環(huán)保,審美以及安全性上也對人們提出了新要求。1.2 電子技術(shù)的發(fā)展對智能家電的推動20 世紀(jì)以來,電子技術(shù)發(fā)展迅速,特別是近幾年來,現(xiàn)代電子產(chǎn)品以及各種消費(fèi)電子產(chǎn)品已經(jīng)滲透到了生活各方面,電子技術(shù)的發(fā)展有力的推動了科技進(jìn)步并且提高了人們的生活水平。以單片機(jī)為核心的多功能系統(tǒng)正在飛快的改變著人們的生活,特別是一些家用智能產(chǎn)品,不但方便了人們的生活,更加豐富了人們的生活方式。以本文中的家用紅外遙控系統(tǒng)為例,該設(shè)計(jì)除了具有一般的日歷功能外,還增加了溫度檢測功能,但其能成為“智能”之處并不在于此,

10、而是他可以通過遙控按鍵設(shè)定時(shí)間值和溫度值,程序會按照這些數(shù)值自動的控制繼電器,從而達(dá)到了定時(shí)開關(guān)燈,定溫開關(guān)空調(diào)的目的。在享受越來越智能化的電子產(chǎn)品的時(shí)候,我們還要再次感謝電子技術(shù)的發(fā)展,集成化的功能模塊已使編程和硬件設(shè)計(jì)變得非常方便。以溫度采集模塊為例,經(jīng)典的溫度采集系統(tǒng)由溫度敏感器件采集到模擬量、經(jīng)過 A/D 轉(zhuǎn)換和單片機(jī)電路組成。由于溫度傳感器輸出模擬量那么信號需要經(jīng)過 A/D 轉(zhuǎn)換,轉(zhuǎn)換為數(shù)字量后才能與單片機(jī)等數(shù)字接口進(jìn)行通信,從而使電路變得比較復(fù)雜,提高了成本。而DS18B20 集成了模數(shù)轉(zhuǎn)換功能,通過封裝只留出一個(gè)數(shù)據(jù)接口,這樣就可以直接輸出數(shù)字量,從而與單片機(jī)連接變得非常簡單,提

11、高了靈活度,降低了成本增加了應(yīng)用價(jià)值。另外 HS0038 紅外一體接受頭,更是能把紅外信號直接轉(zhuǎn)變?yōu)殡妷盒盘枺∪チ舜罅康耐鈬娐?,方便了程序編寫?.3 家用紅外遙控系統(tǒng)設(shè)計(jì)思路本設(shè)計(jì)主要應(yīng)用于家庭,操作方便功能豐富,能很好的為人們的生活提供方便。家用紅外遙控系統(tǒng)要實(shí)現(xiàn)的功能主要有,顯示時(shí)間值,顯示溫度值,定時(shí)開關(guān)功能,設(shè)定溫度上下限功能,另外,由于采用紅外遙控器作為按鍵,還應(yīng)具有紅外接收功能。根據(jù)以上功能要求,來選擇所需要的硬件,本設(shè)計(jì)中所用到的硬件主要有 STC89C52 單片,DS1302 時(shí)間芯片,DS18B20 溫度傳感器,HS0038 紅外接收器,LCD 液晶屏,繼電器。在軟件設(shè)

12、計(jì)上,各個(gè)模塊單獨(dú)編程,這樣能夠方便調(diào)試發(fā)現(xiàn)錯(cuò)誤,也方便今后程序移植和升級。2 硬件設(shè)計(jì)2.1 STC89C52 單片機(jī)介紹2.1.1 STC89C52 引腳簡介STC89C52 管腳及實(shí)物圖如圖 2-1,圖 2-2 所示。電源引腳(2 根)GND(20 腳):接地線;VCC(40 腳):接5V 電源外接晶振引腳(2 根)XTAL0(18 腳):振蕩電路的輸入端;XTAL1(19 腳):振蕩電路的輸出端控制引腳(4 根)ALE/PROG(30 腳):地址鎖存允許信號;EA/VPP(31 腳):片內(nèi)外程序存儲器選擇,低電平讀取外部存儲器指令,高電平讀片內(nèi)程序指令;RST/VPP(9 腳):復(fù)位引

13、腳 2 個(gè)機(jī)器周期以上的高電平單片機(jī)復(fù)位;PSEN(29 腳):外部存儲器讀選通信號。圖 2-1 STC89C52 管腳圖圖 2-2 STC89C52 實(shí)物圖I/O 口(32 根)該單片機(jī)有 4 組(P0、P1、P2、P3)I/O 口,每組 8 位,共 32 根引腳。P0口(39 腳32 腳)是一個(gè)具有 8 位漏極開路的雙向 I/O 口。當(dāng)做輸出口使用時(shí),每組能驅(qū)動 8 路 TTL 電平。P1 口(1 腳8 腳)是一個(gè) 8 位雙向 I/O 口且具有上拉電阻??梢杂脕眚?qū)動TLL 邏輯電平。P2 口(21 腳28 腳)是一個(gè) 8 位雙向 I/O 口且具有內(nèi)部上拉電阻,P2 口可以用來驅(qū)動 TTL

14、邏輯電平。P3 口(10 腳17 腳)是 8 位準(zhǔn)雙向 I/O 口,同時(shí) P3 口具有復(fù)用功能,P3.0 串行輸入(RXD)、P3.1 串行輸出(TXD) 、P3.2 外部中斷 0(INT0)、P3.3 外中斷1(INT1)、P3.4 定時(shí)/計(jì)數(shù)器 0、P3.5 定時(shí)/計(jì)數(shù)器 1、P3.6 外部數(shù)據(jù)存儲器寫選通、P3.7 外部數(shù)據(jù)存儲器讀選通。2.1.2 STC89C52RC 主要功能特點(diǎn)STC89C52 是宏晶科技生產(chǎn)的一種高性價(jià)比低功耗的 8 位單片機(jī),片內(nèi)集成8KFlash 程序存儲器,STC89C52 使用經(jīng)典的 MCS-51 內(nèi)核,程序上完全兼容。但該單片機(jī)還是做了不少改進(jìn),縮短了指

15、令執(zhí)行周期,增加了定時(shí)器 2,增加了看門狗功能。在單芯片上,8 位的 CPU 配合 8K 的程序存儲器,使得 STC89C52 能滿足基本的控制需要而不需要再外擴(kuò)存儲器。 以下是 STC89C52 的基本特點(diǎn):(1) 相對于一個(gè)機(jī)器周期占 12 個(gè)時(shí)鐘周期的 8051 增加 6 時(shí)鐘/機(jī)器周期功能。(2) 工作電壓寬度在 5.5V - 3.4V。(3) 工作頻率 0 40 MHz 最高可達(dá)到 48MHz。(4) 片內(nèi)集成 8K 字節(jié)的程序存儲器和 512B 的 RAM。(5) 通用 I/O 口(32 個(gè)) ,復(fù)位后 P1P4 是準(zhǔn)雙向口并帶有弱上拉電阻,P0口是開漏輸出,作為地址線使用時(shí)不用接

16、上拉電阻而作為普通 I/O 口使用時(shí)必須使用上拉電阻。(6) 具有 3 個(gè) 16 位定時(shí)器/計(jì)數(shù)器,定時(shí)器 0 可以拆分成兩個(gè) 8 位使用。(7) 具有四個(gè)外部中斷,可以設(shè)置成下降沿或低電平模式觸發(fā),掉電模式下外部中斷的低電平模式可以喚醒系統(tǒng)。(8) 具有一個(gè)通用同步串口,如有需要可以通過普通 I/O 口模擬串口進(jìn)行擴(kuò)展。(9) 正常工作溫度范圍 0 - 75,封裝為 PLCC-44 和 PDIP-40 兩種,本設(shè)計(jì)為 PDIP-40 封裝。 2.2 DS18B20 溫度傳感器介紹2.2.1 DS18B20 引腳及特點(diǎn)DS18B20 的引腳及封裝如圖 2-3 所示。 圖 2-3 DS18B20

17、 引腳及封裝DS18B20 的引腳:1.DQ 輸入/輸出端口;2. GND 為電源地;3. VDD +5V(寄生電源模式下該位接地即可)DS18B20 的主要特性有一下方面,DS18B20 適應(yīng)的溫電壓范圍為 3.05.5v,可以直接與 3v 或 5v 單片機(jī)相連,如果使用寄生電源模式兩個(gè)電源引腳可以直接接地,DS18B20 與單片機(jī)連接只需要一根數(shù)據(jù)線,通過一定的時(shí)序操作可以實(shí)現(xiàn)讀和寫的雙向通信,另外 DS18B20 還有一大特色,一條數(shù)據(jù)線可以連接多個(gè)傳感器 ,在不增加 I/O 口的情況下實(shí)現(xiàn)多點(diǎn)測溫的需求,DS18B20 設(shè)計(jì)精巧實(shí)用方便,整個(gè)功能電路集成在只有三個(gè)引腳的芯片內(nèi),形如三極

18、管 ,其溫度測量范圍55125,溫度測量分辨率為 912 位出廠設(shè)置為 12 位精度,這樣在默認(rèn)設(shè)置下只要把測得并轉(zhuǎn)化后的溫度值乘以 0.0625 即可得實(shí)際溫度值。DS18B20 與 的上拉電阻即可。本設(shè)計(jì)采用外部電源供電方式如圖 2-4 所示。圖 2-4 DS18B20 外部供電電路圖2.2.2 DS18B20 內(nèi)部結(jié)構(gòu)及寄存器介紹DS18B20 的內(nèi)部結(jié)構(gòu)如圖 2-5 所示。圖 2-5 DS18B20 內(nèi)部結(jié)構(gòu)圖DS18B20 的四大數(shù)據(jù)組成部分:光刻 ROM 中的 64 位序列號,用于實(shí)現(xiàn)一根總線上掛接多個(gè) DS18B20 的目的。溫度靈敏原件,用于接收最初的溫度模擬量,即電阻隨溫度變

19、化。非易失性溫度報(bào)警觸發(fā)器(EEPROM)TH 和 TL。可通過軟件寫入用戶報(bào)警上下限值。配置寄存器,通過 R0,R1 位設(shè)置,溫度分辨率,出廠時(shí) R0=1,R1=1(即 12位分辨率)具體設(shè)置方法如圖 2-6 所示。圖 2-6 分辨率設(shè)置寄存器下面是對 DS18B20 高速暫存存儲器介紹:高速 RAM 由 9 個(gè)字節(jié)組成如表 2-1 所示。表 2-1 DS18B20 存儲器映像溫度低位溫度高位THTL配置位保留保留保留CRC 校驗(yàn)溫度轉(zhuǎn)換命令(44H)發(fā)出后在最長 750ms 的時(shí)間內(nèi),二進(jìn)制溫度值被存放于溫度高位和溫度低位(即高速 RAM 的第 0 和 1 字節(jié)) 。這時(shí)單片機(jī)按照低位在前

20、,高位在后的方式讀取兩字節(jié)數(shù)據(jù),就可以通過一定的轉(zhuǎn)換規(guī)則得到十進(jìn)制溫度。在轉(zhuǎn)換時(shí)應(yīng)注意,當(dāng) S=0(正溫度)時(shí),根據(jù)分辨率位數(shù)直接轉(zhuǎn)換為十進(jìn)制;當(dāng) S=1(負(fù)溫度)時(shí),應(yīng)先將補(bǔ)碼取反加一,再進(jìn)行十進(jìn)制轉(zhuǎn)換。數(shù)據(jù)格式如圖2-7 所示。圖 2-7 溫度值格式圖DS18B20 與單片機(jī)的通信遵循著一定的時(shí)序,其時(shí)序如圖 2-8 所示。圖 2-8 DS1302 時(shí)序圖由圖可知,使用 DS18B20 時(shí)首先對其復(fù)位,復(fù)位信號至少為 480us 的低電平,若 DS18B20 接收到復(fù)位信號則會在 1560us 內(nèi)發(fā)出一個(gè)回復(fù)脈沖,脈沖時(shí)間為60240us,此時(shí)控制器數(shù)據(jù)線應(yīng)是高電平以便對其接收,至此,通信

21、協(xié)議已經(jīng)基本達(dá)成,接下來開始數(shù)據(jù)通信。2.3 DS1302 時(shí)鐘芯片介紹2.3.1 DS1302 引腳及內(nèi)部寄存器簡介DS1302 是美國達(dá)拉斯公司推出的一款功耗低功能全的實(shí)時(shí)時(shí)鐘芯片,RTC寄存器可提供年、月、日、時(shí)、分、秒、及周的時(shí)間值,另有 31 字節(jié)靜態(tài)RAM,采用串行三線接口與單片機(jī)進(jìn)行通信,突發(fā)方式下,可以一次性傳送多個(gè)字節(jié)的數(shù)據(jù)或時(shí)鐘信號。工作電壓寬度 2.55V ,用來保持片內(nèi)數(shù)據(jù)時(shí)功率控制在1 毫瓦內(nèi)。具有備用電源引腳,也可以通過寄存器設(shè)置備用電源充電方式。DS1302 的引腳如圖 2-9 所示。圖 2-9 DS1302 引腳圖其中 X1、X2 外接 32.768KHz 晶振

22、;GND 接地;CE 為信號使能端,數(shù)據(jù)傳輸時(shí)必須保持高電平,I/O 為數(shù)據(jù)輸入/輸出引腳;SCLK 為串行時(shí)鐘,Vcc1,Vcc2為電源供電管腳。DS1302 關(guān)于時(shí)間和日期的寄存器如圖 2-10 所示,共有 12 個(gè),編程時(shí)注意讀和寫的地址有所不同。圖 2-10 DS1302RTC 寄存器DS1302 控制字,如表 2-2 所示。表 2-2 DS1302 控制字1RAMA4A3A2A1A0RD/WR控制字最高字節(jié)應(yīng)該為 1,為 0 時(shí)不能向芯片寫入數(shù)據(jù),控制字從低位開始輸出,第 6 位為 0 表示讀取時(shí)鐘數(shù)據(jù),為 1 表示讀 RAM 數(shù)據(jù),A4A0 為操作地址。在下一個(gè)時(shí)鐘上升沿,寫入數(shù)據(jù)

23、,而在指令后的下一個(gè)時(shí)鐘下降沿,讀出數(shù)據(jù)。2.3.2 DS1302 讀寫時(shí)序DS1302 讀寫時(shí)序如圖 2-11 所示。CE 高電平開啟數(shù)據(jù)傳送功能,數(shù)據(jù)傳輸時(shí),數(shù)據(jù)在時(shí)鐘上升沿輸入,時(shí)鐘下降沿輸出。圖 2-11 DS1302 讀寫時(shí)序2.4 HS0038 紅外一體接收器介紹2.4.1 HS0038 特點(diǎn)介紹紅外通信有紅外發(fā)射裝置和接收裝置組成,本設(shè)計(jì)的紅外發(fā)射裝置為載波38KHz 的普通紅外遙控器。HS0038 能夠接受紅外信號,并能對信號放大,檢波,整形輸出單片機(jī)可以識別的 TTL 電平。單片機(jī)經(jīng)過一定的算法把接收到的數(shù)據(jù)進(jìn)行解碼。便可以得到遙控器鍵值。應(yīng)當(dāng)注意 HS0038 輸出的數(shù)據(jù)正

24、好和發(fā)射端的電平反向。2.4.2 HS0038 電路及應(yīng)用HS0038 引腳及封裝如圖 2-12 所示。圖 2-12 HS0038 實(shí)物圖從左到右,引腳依次是:I/O 數(shù)據(jù)端口、GND 接地、VCC 接+5V 電源。HS0038 在單片機(jī)系統(tǒng)中常用的電路如圖 2-13 所示。圖 2-13 HS0038 應(yīng)用電路圖2.5 LCD12864 液晶介紹2.5.1 LCD12864 性能概述及引腳功能 本設(shè)計(jì)采用帶漢字字庫的液晶模塊,內(nèi)置 8192 個(gè)漢字 128 個(gè)字符還具有64*256 的 GDRAM 可以用來繪制圖形。液晶正常工作的電壓寬度為 3.35V,顯示分辨率為 12864。應(yīng)用中可以通過

25、寫入命令字來實(shí)現(xiàn)多種功能,如:開關(guān)光標(biāo),反白顯示,屏幕移位,睡眠等。該液晶 20 個(gè)引腳與單片機(jī)的連接如圖 2-14 所示。LCD12864 具有 20 個(gè)引腳其功能如表 2-3 所示。圖 2-14 LCD12864 與單片機(jī)連接圖由于本設(shè)計(jì)采用 8 位并行數(shù)據(jù)傳輸方式,故其第 15 引腳 PSB 直接接高電平即可。此時(shí),RS 引腳為指令/數(shù)據(jù)選擇引腳。另外,18 腳和 19 腳為背光燈,可以根據(jù)需要接上可調(diào)電阻來實(shí)現(xiàn)對背光亮度的調(diào)節(jié)。表 2-3 LCD12864 引腳功能圖2.5.2 LCD12864 讀寫時(shí)序及用戶指令集對 LCD12864 液晶的操作不外乎通過單片機(jī)不斷進(jìn)行讀寫,單片機(jī)寫

26、數(shù)據(jù)到液晶模塊的時(shí)序圖如圖 2-15 所示。圖 2-15 單片機(jī)寫數(shù)據(jù)到液晶模塊單片機(jī)讀取液晶模塊數(shù)據(jù)的時(shí)序圖如圖 2-16 所示。圖 2-16 單片機(jī)讀取液晶模塊數(shù)據(jù)由圖 3-14 可知寫數(shù)據(jù)或命令的操作大致如下,RS 為高時(shí)寫數(shù)據(jù),RS 為低時(shí)寫指令;RW 引腳為低電平進(jìn)行寫操作;E 引腳設(shè)置為高允許數(shù)據(jù)傳送,接著便把所傳數(shù)據(jù)放于數(shù)據(jù)引腳,E 引腳再次拉低便完成了寫操作。LCD12864 有兩種指令集,基本指令集(RE=0)和擴(kuò)充指令集(RE=1) ,寫指令時(shí) RS=0,RW=0。通過正確的時(shí)序?qū)懼噶羁梢栽O(shè)置 LCD12864 的很多功能,如寫入 0 x01 指令即可清屏并把 DDRAM

27、地址計(jì)數(shù)器調(diào)整為“00H”,再如寫入指令“0 xc”即可打開顯示關(guān)閉游標(biāo)。2.6 其他硬件電路2.6.1 STC89C52RC 最小系統(tǒng)的設(shè)計(jì)本設(shè)計(jì)的單片機(jī)最小系統(tǒng)主要包括,STC89C52 單片機(jī),12M 外接晶振,上電復(fù)位電路三個(gè)部分。最小系統(tǒng)晶振電路如圖 2-17 所示。圖 2-17 晶振電路晶振兩個(gè)引腳分別接于單片機(jī)的 XTAL0 和 XTAL1 引腳,電容值的選擇范圍為 530PF,電容對晶振頻率具有微調(diào)作用。最小系統(tǒng)復(fù)位電路如圖 2-18 所示。圖 2-18 上電復(fù)位電路單片機(jī)復(fù)位電路的設(shè)計(jì)必須能滿足上電震蕩穩(wěn)定后,保持至少兩個(gè)周期的高電平。本最小系統(tǒng)采用 10uf 的電容,經(jīng)驗(yàn)證

28、完全滿足要求。由于本電路上電即可以使單片機(jī)復(fù)位,又具有電源開關(guān),故省去了按鍵復(fù)位開關(guān)。另外,由于本設(shè)計(jì)采用單片機(jī)內(nèi)部存儲器存儲程序,故單片機(jī)的第 31 引腳(EA)接高電平,用來訪問片內(nèi)程序。2.6.2 系統(tǒng)電源電路的設(shè)計(jì) 由于所選用單片機(jī)為 5V 單片機(jī),為得到較穩(wěn)定的 5V 電壓,本設(shè)計(jì)采用了L7805cv 三端集成穩(wěn)壓管。輸出電壓,最大輸入電壓 35v,壓差 3-5v 時(shí)工作在理想狀態(tài)。輸出電流可達(dá) 1.5A(需做好散熱) ,同時(shí) L7805cv 內(nèi)部含有限流保護(hù)電路和過熱保護(hù)電路,防止負(fù)載過大溫度過高燒壞器件。本設(shè)計(jì)中 L7805cv 的應(yīng)用電路如圖 2-19 所示。圖 2-19 L7

29、805cv 穩(wěn)壓電路圖3 軟件開發(fā)平臺及軟件3.1 開發(fā)環(huán)境介紹及程序總體結(jié)構(gòu)3.1.1 開發(fā)環(huán)境介紹本設(shè)計(jì)采用 KEIL C51 集成開發(fā)環(huán)境,它具良好用戶的界面,使用極為方便。支持匯編語言,C 語言及其混合編程,能夠兼容絕大多數(shù) 51 系列單片機(jī)的程序設(shè)計(jì)和仿真。在本設(shè)計(jì)中,所有的程序采用 C 語言編寫,最后把調(diào)試通過的程序編譯成二進(jìn)制文件并通過串口下載到目標(biāo)板。3.1.2 程序總體結(jié)構(gòu)由于整個(gè)系統(tǒng)涉及到的外設(shè)模塊較多,故采用了多文件模塊化編程,這樣大大提高了程序的可讀性,也為以后可能遇到的程序移植和升級提供了方便。整個(gè)設(shè)計(jì)的程序結(jié)構(gòu)如圖 3-1 所示。圖 3-1 程序結(jié)構(gòu)圖設(shè)計(jì)主函數(shù)包含

30、了各種外設(shè)的初始化及其功能函數(shù)的調(diào)用,DS18B20.c、IR.c、DS1302.c、LCD12864.c 分別為溫度傳感器、紅外接收器、時(shí)鐘芯片和液晶的驅(qū)動程序,SET.c 是用來定時(shí)、定溫的功能模塊。3.2 DS18B20 溫度程序模塊3.2.1 DS18B20 操作流程使用 DS18B20 時(shí)首先應(yīng)遵循圖 2-8 所示的時(shí)序圖,然后按照流程進(jìn)行具體操作。DS18B20 操作流程如圖 3-2 所示。初始化復(fù)位、發(fā)跳過 ROM 命令發(fā)溫度轉(zhuǎn)換命令、等待發(fā)讀取溫度命令復(fù)位、發(fā)跳過 ROM 命令調(diào)用顯示函數(shù)存儲并轉(zhuǎn)化數(shù)據(jù)圖 3-2 DS18B20 操作流程3.2.2 DS18B20 重點(diǎn)代碼及其

31、分析DS18B20 程序的核心部分是利用單片機(jī)讀取芯片內(nèi)部的溫度值,其讀函數(shù)如下,/*從 DS1820 中讀出數(shù)據(jù)*/uchar DS1820_RData()uchar i,j,Tmep;for(i=8;i0;i-)Tmep=1;DS1820_bit=0; /低電平,產(chǎn)生讀信號for(j=2;j0;j-); /延時(shí) 4usDS1820_bit=1; /釋放總線,準(zhǔn)備讀數(shù)據(jù)for(j=4;j0;j-); /延時(shí)if(DS1820_bit=1)Tmep|=0 x80;for(j=30;j0;j-); /延時(shí)DS1820_bit=1; /拉高數(shù)據(jù)線,準(zhǔn)備讀下一位return(Tmep); /返回?cái)?shù)據(jù)

32、通過上面的讀函數(shù),溫度值被保存到 Tmep 變量內(nèi),接下來便可以按照一定的規(guī)則對 Tmep 的值進(jìn)行轉(zhuǎn)化,最后顯示在液晶屏上。另外,應(yīng)當(dāng)注意在每次獲取溫度值時(shí)都要對 DS18B20 進(jìn)行復(fù)位操作。3.3 DS1302 時(shí)間程序模塊3.3.1 DS1302 總體操作及基本讀寫功能函數(shù)本設(shè)計(jì)中 DS1302 操作主要包括讀取內(nèi)部時(shí)間值和修改時(shí)間值兩部分,DS1302 模塊總體操作如圖 3-3 所示。 圖 3-3 DS1302 操作總流程DS1302 讀寫操作流程如圖 3-4 所示。開始結(jié)束設(shè)置 CE 為高上升沿,按位傳輸?shù)刂纷x取或?qū)懭胂鄳?yīng)地址的數(shù)據(jù)設(shè) 置 C E 為 低圖 3-4 DS1302 讀

33、寫操作流程在對 DS1302 操作時(shí),只要調(diào)用 Write1302_Cmd_Dat(),和 Read1302()就可以實(shí)現(xiàn)其與單片機(jī)之間的數(shù)據(jù)交流。下面是讀寫函數(shù)的實(shí)現(xiàn)。/*/向 DS1302 寫地址和數(shù)據(jù), Addr 地址,Dat 數(shù)據(jù)*/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 數(shù)據(jù)DS1302

34、_CLK = 1;DS1302_RST = 0; /*/讀取 DS1302 某地址的數(shù)據(jù),*/ uchar Read1302(unsigned char Addr)uchar Dat;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302_WriteByte(Addr|0 x01); / 以寫數(shù)據(jù)時(shí)的地址為參考,讀時(shí)應(yīng)加 1Dat = DS1302_ReadByte(); / 讀取數(shù)據(jù)到變量 DatDS1302_CLK = 1;DS1302_RST = 0;return(Dat);3.3.2 讀取時(shí)間數(shù)據(jù)并轉(zhuǎn)化成字符串由于時(shí)間數(shù)據(jù)包含年、月、日、

35、時(shí)、分、秒、周,為了方便可以定義一個(gè)時(shí)間類型結(jié)構(gòu)體,把轉(zhuǎn)換前后的數(shù)據(jù)都作為這個(gè)結(jié)構(gòu)體的成員。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 c

36、har Str_Day3;struct_TIM;然后,通過 Read1302()函數(shù)讀取各個(gè)地址處的時(shí)間數(shù)據(jù)分別保存于Second、Minute 等變量中并轉(zhuǎn)換成十進(jìn)制,如讀取并轉(zhuǎn)換秒值可以用以下兩個(gè)語句:temp = Read1302(0 x80);/低四位是秒的個(gè)位,高三位是秒的十位(原來是BCD 碼)Time-Second = (temp &0 x70)4)*10 + (temp &0 x0F);接著就可以把數(shù)值轉(zhuǎn)換成字符串了,仍以秒值為例轉(zhuǎn)換語句如下:Time-Str_Time0 = Time-Second/10 + 0;/十位Time-Str_Time1 = Time

37、-Second%10 + 0;/個(gè)位至此,所得數(shù)據(jù)便可以方便的顯示在液晶屏上了。3.4 LCD12864 液晶驅(qū)動程序3.4.1 LCD12864 初始化LCD12864 初始化流程如圖 3-5 所示。圖 3-5 12864 液晶初始化LCD12864 液晶屏使用前先要進(jìn)行初始化,已設(shè)定不同的功能和模式,本設(shè)計(jì)中液晶初始化為基本指令集,開顯示關(guān)閉游標(biāo),光標(biāo)從左向右加 1 移動,初始化通過 Init_12864()函數(shù)完成。3.4.2 寫數(shù)據(jù)到 LCD12864 功能函數(shù)LCD12864 的功能函數(shù)主要是顯示從其他模塊采集到的并轉(zhuǎn)化后的數(shù)據(jù),這里主要提供了兩種顯示函數(shù),writestring()

38、和 writedat()兩個(gè)函數(shù),writestring()用來顯示從一個(gè)地址開始的字符串,writedat()函數(shù)用來在某個(gè)地址顯示一個(gè)字符。下面是相應(yīng)的實(shí)現(xiàn)代碼。/從地址 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,寫一個(gè)字符到 LCDvoid writedat(uchar addr ,uchar

39、 dat)Write12864_Cmd_Dat(addr,0);Write12864_Cmd_Dat(dat,1);3.5 HS0038 紅外解碼程序模塊3.5.1 紅外遙控器編碼介紹在進(jìn)行紅外解碼之前首先要對本設(shè)計(jì)采用的紅外遙控器編碼方式進(jìn)行簡要介紹。遙控器發(fā)送一組完整數(shù)據(jù)(如圖 3-6 所示) ,首先是 9ms 高電平和 4.5ms 低電平組成的前導(dǎo)碼,緊接著是 8 位地址碼及其反碼,最后便是 8 位操作碼及其反碼。具體的編碼方式為脈寬調(diào)制的串行碼,用 0.56ms 的高電平和 0.56ms 的低電平表示二進(jìn)制 0,以 0.56ms 的高電平和 1.68ms 的低電平表示二進(jìn)制 1,編碼形

40、式如圖 3-7 所示。 圖 3-6 遙控器發(fā)送一組完整數(shù)據(jù)圖 3-7 遙控器編碼的 0 和 13.5.2 紅外解碼程序流程及重要代碼分析本設(shè)計(jì)中紅外遙控器作為控制單片機(jī)運(yùn)行的按鍵,為了更好的實(shí)現(xiàn)按鍵功能紅外接收端接在了單片機(jī)的外部中斷 0 引腳,另外遙控器編碼采用脈寬調(diào)制方式,為了更精確的記錄脈寬時(shí)間需要啟用定時(shí)器功能,所以程序開始要進(jìn)行中斷和定時(shí)器的初始化。為了保證精度,定時(shí)器初始化為工作方式 2 即 8 位自動重裝模式。中斷觸發(fā)方式采用下降沿觸發(fā),中斷程序只需要記錄兩個(gè)中斷之間時(shí)間值并保存,然后對相應(yīng)脈沖的時(shí)間值與標(biāo)準(zhǔn)的脈沖時(shí)間進(jìn)行比較,這樣得出了是 0 還是 1。由于中斷函數(shù)盡量要短,進(jìn)

41、行解碼的工作盡量不要在中斷函數(shù)中進(jìn)行。下面是中斷函數(shù)。/*晶振 12M,一個(gè)機(jī)械周期為 12/12000000 為 1 微秒,則每一次中斷*/void timer0() interrupt 1 timer+; /*startflag 初始值位 0,第一次進(jìn)入中斷標(biāo)記為 1,同時(shí)時(shí)間清零,如果經(jīng)判斷有引導(dǎo)碼出現(xiàn),就開始記錄了。*/void int0() interrupt 0if(startflag)if( timer45) /9+4.5ms 的引導(dǎo)碼 13.5/0.256=52 取低于 52 的數(shù)即可ir_num=0;ir_time_datair_num=timer;timer=0;irnum

42、+;if(ir_num=33) Ir_num=0;Ir_end=1; /一組接收完成elsestartflag=1; /第一次進(jìn)來時(shí)被標(biāo)記為 1,timer 清 0timer=0;另外,根據(jù)通過實(shí)際應(yīng)用發(fā)現(xiàn),外部光源特別是太陽光對紅外通信干擾較大,為了避免光源干擾可能帶來的麻煩,這里采用了軟件解決的方式。按鍵按下后把得到的數(shù)據(jù)分別與操作碼和操作反碼比較,每次比較通過后要立即清零。下面是一段示例代碼:if(ircode2=0 x09) ircode2=0 x00;if (ircode3=0 xf6) ircode3=0 x00;具體功能代碼這樣就保證了即使干擾數(shù)據(jù)能進(jìn)入第一層,但進(jìn)不了第二層,由

43、于進(jìn)入第一層后數(shù)據(jù)被清除,下一次連第一層也進(jìn)不去了,從而避免了由于干擾出現(xiàn)隨機(jī)數(shù)對系統(tǒng)功能的影響。3.6 定時(shí)定溫功能的程序?qū)崿F(xiàn)本系統(tǒng)具有隨時(shí)設(shè)定時(shí)間值和溫度值的功能,要達(dá)到這樣的目的需要滿足這樣幾個(gè)條件,第一、能進(jìn)入設(shè)置模式,第二、能通過按鍵選擇要修改的項(xiàng)并能對其數(shù)值增大和減小,第三、能順利返回。該流程可以通過圖 3-8 表示。返回修改項(xiàng)切換增減修改設(shè)置模式圖 3-8 時(shí)間溫度設(shè)置流程以上工作完成后,設(shè)置功能已經(jīng)能夠?qū)崿F(xiàn),只需要在主函數(shù)中調(diào)用Compare_temp_time()函數(shù)就可以通過比較設(shè)定值與實(shí)際值,來執(zhí)行繼電器開關(guān)燈和開關(guān)空調(diào)動作了。4 系統(tǒng)調(diào)試及設(shè)計(jì)總結(jié)4.1 系統(tǒng)調(diào)試4.1

44、.1 最小系統(tǒng)調(diào)試本設(shè)計(jì)的電路圖由 Protel99SE 繪制,各功能模塊的實(shí)際電路由萬用板人工焊接。最小系統(tǒng)的正常運(yùn)行是整個(gè)系統(tǒng)得以正常運(yùn)行的前提。焊接完成最小系統(tǒng)后,首先用軟件平臺編寫一個(gè)能使 P2.0 口一秒間隔高低電平變化的 C 程序,然后把編譯生成的二進(jìn)制文件通過串口下載到單片機(jī)。這時(shí)再在 P2.0 引腳連接發(fā)光二極管,上電復(fù)位后,發(fā)現(xiàn)二級管能夠一秒間隔出現(xiàn)亮滅循環(huán)。通過以上實(shí)驗(yàn)?zāi)軌蜃C明單片機(jī)最小系統(tǒng)已經(jīng)正常運(yùn)行,下面就可以焊接其他功能模塊了。4.1.2 其他各模塊調(diào)試過程由于本設(shè)計(jì)的所有數(shù)據(jù)都以可見方式顯示在液晶上,所以在焊接其他模塊前需要使液晶屏能夠正常顯示。焊接好液晶模塊后,通

45、過上面的方式下載程序使液晶顯示出幾個(gè)漢字和字符,液晶調(diào)試通過。接著焊接溫度傳感器和時(shí)鐘芯片,并通過各自的程序在液晶上顯示出數(shù)據(jù)。紅外模塊的調(diào)試是通過遙控繼電器開關(guān)來完成的,焊接好紅外和繼電器模塊后,通過編程使遙控器某按鍵每次鍵按下時(shí) P2.0電平高低翻轉(zhuǎn),把繼電器連接在 P2.0 引腳,上電復(fù)位后按下遙控器,繼電器發(fā)出啪啪的響聲,調(diào)試通過。在實(shí)際調(diào)試時(shí)鐘模塊時(shí),時(shí)間數(shù)據(jù)經(jīng)常發(fā)生抖動和隨機(jī)跳變,但在下一次刷新時(shí)又變正常,這說明時(shí)鐘芯片與單片機(jī)的通信是正常的。經(jīng)過多次對電路的檢查懷疑是由于 DS1302 的 I/O 口驅(qū)動能力不足造成的,而且在焊接的電路中從DS1302 到單片機(jī)之間的連線又很長,

46、于是在 DS1302 的 I/O 口和 VCC 之間加了一個(gè) 10K 的上拉電阻,問題得到圓滿解決。 由此得出了一個(gè)結(jié)論 DS1302 的驅(qū)動能力很是有限的在和單片機(jī)的通信中,要考慮到加上拉電阻的可能。各個(gè)模塊調(diào)試通過后就可以把各模塊程序加以組合,實(shí)現(xiàn)整體功能了,由于采用了多文件編程要注意聲明全局變量。圖 5-1 即為調(diào)試用電路實(shí)物及顯示效果,各項(xiàng)功能均已正常。圖 4-1 實(shí)物電路及顯示效果4.2 總結(jié)綜合上面的介紹,本設(shè)計(jì)的硬件共有,電源模塊,最小系統(tǒng),紅外模塊,溫度模塊,時(shí)鐘模塊,液晶模塊和繼電器模塊組成。軟件部分共有,main.c(主函數(shù)模塊文件) ,DS18B20.c(溫度模塊文件)

47、,DS1302.c(時(shí)鐘模塊文件) ,IR.c(紅外模塊文件) ,LCD12864.c(液晶模塊文件) ,SET.c(設(shè)置功能文件)以及相應(yīng)的頭文件組成。整個(gè)系統(tǒng)實(shí)現(xiàn)的功能有:(1) 實(shí)時(shí)溫度的測量和顯示。(2) 年月日時(shí)分秒時(shí)間信息的實(shí)時(shí)顯示以及調(diào)整。(3) 通過定時(shí)功能控制繼電器開關(guān)燈,也可以隨時(shí)遙控開關(guān)燈。(4) 通過設(shè)定溫度值利用繼電器開關(guān)空調(diào)。本設(shè)計(jì)還有以下有待升級之處:(1) 可以加裝移動電源,而不是通過電源適配器供電,這樣可以使產(chǎn)品移動更方便,使用更加靈活。(2) 由于液晶耗電量比較大,可以增加光敏電阻以及相應(yīng)電路達(dá)到根據(jù)外接光線變化自動調(diào)節(jié)背光亮度的效果,以節(jié)省電能。(3) 可

48、以利用液晶的繪圖功能為時(shí)鐘模塊增加一個(gè)圖形時(shí)鐘界面,這樣可以使設(shè)計(jì)更加人性化。參考文獻(xiàn)1桑勝舉,沈丁.單片機(jī)原理及應(yīng)用M.北京:中國鐵道出版社,2010.8:11-20.2凌志浩.AT89C52 單片機(jī)原理與接口技術(shù)M北京:高等教育出版社,2010:8-21.3郭循釗,鄺帆,邵平,許宏科.基于單片機(jī)的多功能交通燈控制系統(tǒng)設(shè)計(jì)與仿真實(shí)現(xiàn)J.公路交通技術(shù), 2010:5-29.4林凌,李剛,丁茹,李小霞.新型單片機(jī)接口器件與技術(shù)M.西安:西安電子科技大學(xué)出版社,2005:30-34.5邊春遠(yuǎn),王志強(qiáng).MCS-51 單片機(jī)應(yīng)用開發(fā)實(shí)用子程序M.人民郵電出版社,2002:43-47.6張友德,趙志英,

49、徐時(shí)亮.單片微機(jī)原理應(yīng)用與實(shí)驗(yàn)M.復(fù)旦大學(xué)出版社,2000:32-34.(簡明修訂版)M.北京航空航天大學(xué)出版社,1998:23-43.8黃河,李曉,劉學(xué)瑞,黃艷秋.基于 DS18B20 單總線數(shù)字溫度計(jì)的設(shè)計(jì)與實(shí)現(xiàn)J.中國礦業(yè)大學(xué)信息與電氣工程學(xué)院.2009.9.15:3-5.9郝文化.Protel Dxp 電路原理圖與 PCB 設(shè)計(jì)M.機(jī)械工業(yè)出版社.2004.3:23-25.10袁旭軍,莊松林.單片機(jī)復(fù)位電路的可靠性分析J.電子技術(shù)用.2001:19-21.致 謝本篇論文能夠得以順利完成,首先要感謝*老師對我的悉心指導(dǎo)。*老師在我著手做這個(gè)設(shè)計(jì)之初就給我分析了可能遇到的困難,這使我在做設(shè)

50、計(jì)和撰寫論文時(shí)更加有針對性,少走了不少彎路。宗棟老師帶人寬厚做事認(rèn)真,在這段時(shí)間里老師的教導(dǎo)使我明白了,做事要嚴(yán)謹(jǐn)細(xì)致,要有克服困難的耐心和勇氣,當(dāng)遇到技術(shù)瓶頸時(shí)沒有這點(diǎn)素質(zhì)是萬萬不行的,同時(shí),還要寬厚帶人,成功很大程度上來自他人直接或間接的幫助,只有與他人相處融洽我們才能得到別人更多的幫助才能更好地與他人合作。另外,在這里還要感謝一下從事編輯工作的我的舍友王坤同學(xué),在論文編寫過程中他教會了我不少使用 Office 軟件的小技巧,帶著這些意外的收獲對他表示衷心的感謝。附 錄附錄附錄 1 整體電路原理圖整體電路原理圖12345U8RELAYP101P2728P112P2627P123P2526P

51、134P2425P145P2324P156P2223P167P2122P178P2021P3010VCC40P3111P0039P3212P0138P3313P0237P3414P0336P3515P0435P3616P0534P3717P0633RSET9X218X119GND20PSEN39ALE30EA31P0732U4STC89C52132VVGNDINOUTU378L05VP10P11+12S5SwitchVCCVCC12X212MC425PC325PX1X2X1X2231Q1C8550P2012S6CON2VCCD0D1VCCP21P2012D1IN4007+EC310UFREVC

52、CRE12LED6LEDVCCC60.1UFVCCVCC1GND2I/O3U7HS0038+EC44.7UFVCCINT0INT0123S3CON3+1212R710K12R810K12R1147K12R910K12R132012R1010KVCC12LED4LED12LED5LEDVCC1I/O2GND3U6DS18B2012R124.7KVCCP21RESTP35P17P16PSBVCC8SCLK7RST5VCC21X12X23GND4IO6DS1302DS130221ATXLXTAL2P14P13P12VCCED5D6D7VCCRSR/WED0D1D2D3D4D5D6D7PSBRESTV

53、CCP10P11D2D3D4RSR/W1234567891011121314151617181920J?CON20P12P13P14P15附錄附錄 2 PCB 版圖版圖附錄附錄 3 Protel99SE 生成的生成的 3D 效果圖效果圖附錄附錄 3 全部代碼全部代碼#include #includeLCD12864.h#includeLCD1602.h#includeDS1302.h#includeIR.h#include #define uint unsigned int#define uchar unsigned charuchar TempBuffer5,week_value2;/uch

54、ar 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,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /秒,分,時(shí)到日,月,年位閃的計(jì)struct_TIM CurrentTime; /定義的時(shí)間類型#de

55、fine DS1302_SECOND0 x80 /時(shí)鐘芯片的寄存器位置,存放時(shí)間#define DS1302_MINUTE0 x82#define DS1302_HOUR0 x84 #define DS1302_WEEK0 x8A#define DS1302_DAY0 x86#define DS1302_MONTH0 x88#define DS1302_YEAR0 x8C /*實(shí)時(shí)時(shí)鐘寫入一字節(jié)*/void DS1302InputByte(unsigned char d) uchar i;ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相當(dāng)于匯編中的

56、RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; /*實(shí)時(shí)時(shí)鐘讀取一字節(jié)*/unsigned char DS1302OutputByte(void) uchar i; for(i=8; i0; i-) ACC = ACC 1; /相當(dāng)于匯編中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC);/*/ucAddr: DS1302 地址, ucData: 要寫的數(shù)據(jù)*/void Write1302(unsigned char ucAddr, unsigned char

57、 ucDa) DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 寫 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; /*/讀取 DS1302 某地址的數(shù)據(jù)*/unsigned char Read1302(unsigned char ucAddr) uchar ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(

58、ucAddr|0 x01); / 地址,命令 ucData = DS1302OutputByte(); / 讀 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; return(ucData);/*獲取時(shí)鐘芯片的時(shí)鐘數(shù)據(jù)到自定義的結(jié)構(gòu)型數(shù)組*/void DS1302_GetTime(struct_TIM *Time) uchar ReadValue;ReadValue = Read1302(DS1302_SECOND);Time-Second = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValu

59、e = 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);ReadValue = Read1302(DS1302_DAY);Time-Day = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Rea

60、d1302(DS1302_WEEK);Time-Week = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_MONTH);Time-Month = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);Hour_out=Time-Hour; /定義了外部變量,用于向定時(shí)函數(shù)傳遞比較值Minute_out=Time-Minute;/*將日期值轉(zhuǎn)換成字符,用于液晶顯示*/

溫馨提示

  • 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

提交評論