版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、東 北 石 油 大 學(xué) 課 程 設(shè) 計 課 程 單片機(jī)課程設(shè)計 題 目 單片機(jī)控制的 LCD 時鐘設(shè)計 院 系 電氣信息工程學(xué)院測控系 專業(yè)班級 學(xué)生姓名 學(xué)生學(xué)號 指導(dǎo)教師 2011 年 4 月 6 日 東北石油大學(xué)課程設(shè)計任務(wù)書 課程 單片機(jī)課程設(shè)計 題目 單片機(jī)控制的 LCD 時鐘設(shè)計 專業(yè) 姓名 學(xué)號 一、任務(wù)一、任務(wù) 設(shè)計一款基于 STC89C52RC 單片機(jī)的 LCD 數(shù)字時鐘,實現(xiàn)顯示當(dāng)前時間以及具 有調(diào)整日期與時間的功能。 二、設(shè)計要求二、設(shè)計要求 1 使用集成數(shù)字電路或單片機(jī)作為主控制芯片。 2 使用 LCD 來顯示現(xiàn)在的時間,顯示格式為: 上行顯示:年-月-日; 下行顯示:
2、時時:分分:秒秒。 3 使用時鐘芯片 DS1302 實現(xiàn)時鐘定時。 4 具有調(diào)整日期與時間的功能。 5 寫出詳細(xì)的設(shè)計報告。 6 給出全部電路和源程序。 三、參考資料三、參考資料 1 求是科技. 單片機(jī)典型模塊設(shè)計實例導(dǎo)航. 北京:人民郵電出版社. 2005.8 2 徐淑華, 程退安等.單片微型機(jī)原理及應(yīng)用. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社. 2005.1 3 孫余凱. 精選實用電子電路 260 例. 北京:電子工業(yè)出版社. 2007.6 4 殷春浩, 崔亦飛. 電磁測量原理及應(yīng)用. 徐州:中國礦業(yè)大學(xué)出版社. 2003.7 5 LCD1602A 數(shù)據(jù)手冊 6 DS1302 數(shù)據(jù)手冊 完成期限
3、2011.3.28 至 2011.4.8 指導(dǎo)教師 專業(yè)負(fù)責(zé)人 2011 年 3 月 28 日 目 錄 第 1 章 緒 論 3 1.1 STC89C52RC 單片機(jī)概 述 3 1.2 LCD 概 述 3 1.3 DL1302 簡 介 4 1.4 本設(shè)計任 務(wù) 4 第 2 章 總體方案論證與設(shè) 計 5 2.1 顯示部 分 5 2.2 數(shù)字時 鐘 5 2.3 溫度采 集 6 2.4 總體硬件組成框 圖 6 第 3 章 系統(tǒng)硬件設(shè) 計 7 3.1 STC89C52RC 單片機(jī)最小系 統(tǒng) 7 3.2 溫度測量模 塊 7 3.3 時鐘模 塊 8 3.4 LCD 液晶顯示模 塊 8 3.5 鍵盤模 塊 9
4、 3.6 整體電 路 9 第 4 章 系統(tǒng)的軟件設(shè) 計 11 4.1 主程序設(shè) 計 11 4.2 時間設(shè)定程序流 程 11 4.3 溫度測量流程 圖 12 第 5 章 系統(tǒng)調(diào)試與測試結(jié)果分 析 14 5.1 使用的儀器儀 表 14 5.2 系統(tǒng)調(diào) 試 14 5.3 測試結(jié) 果 14 結(jié) 論 15 參考文 獻(xiàn) 16 附錄 1 程 序 17 附錄 2 仿真效果 圖 27 第 1 章 緒論 在新的世紀(jì)我們已經(jīng)步入了第二個十年,隨著全球經(jīng)濟(jì)的復(fù)蘇和發(fā)展,由于在世 界范圍內(nèi)人類需求的巨大釋放,以及消費結(jié)構(gòu)的升級,同時傳統(tǒng)能源的稀缺以及帶來 的環(huán)境的破壞,都將帶來新一輪的科技革命的巨變。因此,更適合人類社
5、會協(xié)調(diào)、健 康、可持續(xù)發(fā)展的新能源、新材料等便應(yīng)運而生。LCD 作為一種新的材料,LCD 的設(shè)計 制造技術(shù)與應(yīng)用水平上都得到了迅速的提高,生產(chǎn)也得到了迅速的發(fā)展,并逐步形成 產(chǎn)業(yè),成為光電子行業(yè)的新興產(chǎn)業(yè)領(lǐng)域。 然而隨著人們生活節(jié)奏的加快,時間對人們的重要性也越來越重要,因此,擁有 一個不錯的時鐘對人們的生活將帶來很大的方便。時鐘,自從它發(fā)明的那天起,就成 為人類的朋友,但隨著時間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要 求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥 發(fā)青春呢?這就要求人們不斷設(shè)計出新型時鐘。 1.1STC89C52RC 單片機(jī)概述 ST
6、C89C52RC 單片機(jī)采用高性能的靜態(tài) 80C51 設(shè)計,并采用先進(jìn)工藝制造,還帶有 非易失去性 FLASH 程序儲器。它是一種高性能、低功耗的 8 位 CMOS 微處理芯片,市場 上應(yīng)用最多。其主要性能如下: 8KB Flash ROM,可以擦除 1000 次以上,數(shù)據(jù)保存 10 年。 256 字節(jié)內(nèi)部 RAM。 電源控制模式: -時鐘可停止和恢復(fù); -空閑模式; -掉電模式。 6 個中斷源。 4 個中斷優(yōu)先級。 4 個 8 位 I/O 口。 全雙工增強型 UART。 3 個 16 位定時器/計數(shù)器:T0、T1、T2。 全靜態(tài)工作方式:0-24MHz 1.2 LCD 概述 LCD 液晶顯示
7、器是 Liquid Crystal Display 的簡稱,LCD 的構(gòu)造是在兩片平行 的玻璃當(dāng)中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細(xì)小電線,透過通電 與否來控制桿狀水晶分子改變方向,將光線折射出來產(chǎn)生畫面。LCD 可以分為為兩種 類型,一種是文字模式 LCD,一種是繪圖模式 LCD。 LCD1602 屬于字符型液晶,能夠同時顯示 16x2 即 32 個字符??梢耘c 8 位 CPU 相 聯(lián),指令功能強可以組合成各種輸入、顯示、移位方式以滿足不同要求。顯示黃綠帶 背光,顯示對比度可以調(diào)節(jié),正常工作電壓(VDD)為+5V,工作電流約為 2mA(不計背 光功耗),同時可靠性高壽命達(dá) 50
8、,000 小時(25) 。 1.3 DS1302 簡介 DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗、帶 RAM 的實時時鐘芯片, 它可以對年、月、日、周日、時、分、秒進(jìn)行計時,且具有閏年補償功能,工作電壓 寬達(dá) 2.55.5V。時鐘可工作在 24 小時格式或 12 小時(AM/PM)格式。 DS1302 與單 片機(jī)的接口使用同步串行通信,僅用 3 條線與之相連接。可采用一次傳送一個字節(jié)或 突發(fā)方式一次傳送多個字節(jié)的時鐘信號或 RAM 數(shù)據(jù)。DS1302 內(nèi)部有一個 318 的用于 臨時性存放數(shù)據(jù)的 RAM 寄存器。DS1302 是 DS1202 的升級產(chǎn)品,與 DS120
9、2 兼容,但增 加了主電源后背電源雙電源引腳,同時提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。 1.4本設(shè)計任務(wù) 本系統(tǒng)以單片機(jī)芯片為核心部件,利用合理的程序控制,在液晶顯示屏上實現(xiàn)各 個功能并且顯示等功能,使其顯示直觀、功能多樣、電路簡潔等諸多優(yōu)點,符合電子 儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。 第 2 章 總體方案論證與設(shè)計 本設(shè)計采用 STC89C52RC 單片機(jī)作為本系統(tǒng)的控制模塊。單片機(jī)可把由 DS18B20、DS1302、AT24C02 中的數(shù)據(jù)利用軟件來進(jìn)行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模 塊,實現(xiàn)溫度、日歷和鬧鈴的顯示。以 LCD 液晶顯示器為顯示模塊,把單片機(jī)傳來的 數(shù)據(jù)顯示出來
10、,并且顯示多樣化。在顯示電路中,主要靠按鍵來實現(xiàn)各種顯示要求的 選擇與切換。下面對各模塊的設(shè)計逐一進(jìn)行論證比較。 2.1 顯示部分 顯示部分是本次設(shè)計的重要部分,一般有以下兩種方案: 方案一:采用 LED 顯示,分靜態(tài)顯示和動態(tài)顯示。對于靜態(tài)顯示方式,所需的譯 碼驅(qū)動裝置很多,引線多而復(fù)雜,且可靠性也較低。而對于動態(tài)顯示方式,雖可以避 免靜態(tài)顯示的問題,但設(shè)計上如果處理不當(dāng),易造成亮度低,有閃爍等問題。 方案二:采用 LCD 顯示。LCD 液晶顯示具有豐富多樣性、靈活性、電路簡單、易 于控制而且功耗小等優(yōu)點,對于信息量多的系統(tǒng),是比較適合的。 鑒于上述原因,我們采用方案二。 2.2 數(shù)字時鐘
11、數(shù)字時鐘是本設(shè)計的核心的部分。根據(jù)需要可采用以下兩種方案實現(xiàn): 方案一:方案完全用軟件實現(xiàn)數(shù)字時鐘。原理為:在單片機(jī)內(nèi)部存儲器設(shè)三個字 節(jié)分別存放時鐘的時、分、秒信息。利用定時器與軟件結(jié)合實現(xiàn) 1 秒定時中斷,每產(chǎn) 生一次中斷,存儲器內(nèi)相應(yīng)的秒值加 1;若秒值達(dá)到 60,則將其清零,并將相應(yīng)的分 字節(jié)值加 1;若分值達(dá)到 60,則清零分字節(jié),并將時字節(jié)值加 1;若時值達(dá)到 24,則 將時字節(jié)清零。該方案具有硬件電路簡單的特點,但當(dāng)單片機(jī)不上電,程序?qū)⒉粓?zhí)行。 而且由于每次執(zhí)行程序時,定時器都要重新賦初值,所以該時鐘精度不高。 方案二:方案采用 Dallas 公司的專用時鐘芯片 DS1302。該
12、芯片內(nèi)部采用石英晶 體振蕩器,其芯片精度不大于 10ms/年,且具有完備的時鐘鬧鐘功能,因此,可直接 對其以用于顯示或設(shè)置,使得軟件編程相對簡單。為保證時鐘在電網(wǎng)電壓不足或突然 掉電等突發(fā)情況下仍能正常工作,芯片內(nèi)部包含鋰電池。當(dāng)電網(wǎng)電壓不足或突然掉電 時,可使系統(tǒng)自動轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時, 鋰電池也能保證芯片的正常運行,以備隨時提供正確的時間。 基于時鐘芯片的上述優(yōu)點,本設(shè)計采用方案二完成數(shù)字時鐘的功能。 2.3 溫度采集 由于現(xiàn)在用品追求多樣化,多功能化,給系統(tǒng)加上溫度測量顯示模塊,能夠方便 人們的生活,使該設(shè)計具有人性化。 方案一:采用熱敏電阻,可滿
13、足 40 攝氏度至 90 攝氏度測量范圍,但熱敏電阻精度重 復(fù)性、可靠性較差,對于檢測小于 1 攝氏度的信號是不適用的。 方案二:采用溫度傳感器 DS18B20。DS18B20 可以滿足從-55 攝氏度到+125 攝氏度測量 范圍,且 DS18B20 測量精度高,增值量為 0.5 攝氏度,在一秒內(nèi)把溫度轉(zhuǎn)化成數(shù)字, 測得的溫度值的存儲在兩個八位的 RAM 中,單片機(jī)直接從中讀出數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制就 是溫度,使用方便。 基于 DS18B20 的以上優(yōu)點,我們決定選取 DS18B20 來測量溫度。 2.4總體硬件組成框圖 圖 2-1 總體硬件組成框圖 第 3 章 系統(tǒng)硬件設(shè)計 3.1 STC89C5
14、2RC 單片機(jī)最小系統(tǒng) 最小系統(tǒng)包括晶體振蕩電路、復(fù)位開關(guān)和電源部分。圖 3-1 為 STC89C52RC 單片機(jī) 的最小系統(tǒng)。 圖 3-1 最小系統(tǒng)電路 3.2 溫度測量模塊 溫度測量傳感器采用 DALLAS 公司 DS18B20 的單總線數(shù)字化溫度傳感器,測溫范圍 為-55125,可編程為 9 位12 位 A/D 轉(zhuǎn)換精度,測溫分辨率達(dá)到 0.0625,采用 寄生電源工作方式,CPU 只需一根口線便能與 DS18B20 通信,占用 CPU 口線少,可節(jié) 省大量引線和邏輯電路。接口電路如圖 3-2 所示。 圖 3-2 DS18B20 測量電路 3.3 時鐘模塊 時鐘模塊采用 DS1302 芯
15、片,DS1302 是 DALLAS 公司推出的涓流充電時鐘芯片內(nèi)含 有一個實時時鐘/日歷和 31 字節(jié)靜態(tài) RAM 通過簡單的串行接口與單片機(jī)進(jìn)行通信實時 時鐘/日歷電路提供秒分時日日期月年的信息每月的天數(shù)和閏年的天數(shù)可自動調(diào)整時鐘 操作可通過 AM/PM 指示決定采用 24 或 12 小時格式 DS1302 與單片機(jī)之間能簡單地采用 同步串行的方式進(jìn)行通信僅需用到三個口線: RST 復(fù)位、I/O 數(shù)據(jù)線、SCLK 串行時鐘。時鐘/RAM 的讀/寫數(shù)據(jù)以一個字節(jié)或多達(dá) 31 個字節(jié)的字符組方式通信。DS1302 工作時功耗很低,保持?jǐn)?shù)據(jù)和時鐘信息時功率小 于 1mW,其接線電路如圖 3-3。
16、圖 3-3 時鐘電路 3.4 LCD 液晶顯示模塊 LCD 液晶顯示模塊采用 LCD1602 型號,具有很低的功耗,正常工作時電流僅 2.0mA/5.0V。通過編程實現(xiàn)自動關(guān)閉屏幕能夠更有效的降低功耗。LCD1602 分兩行顯 示,每行可顯示多達(dá) 16 個字符。LCD1602 液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM) 已經(jīng)存儲了 160 個不同的點陣字符圖形,通過內(nèi)部指令可實現(xiàn)對其顯示多樣的控制, 并且還能利用空余的空間自定義字符。其接線如圖 3-4。 圖 3-4 LCD 顯示電路 3.5 鍵盤模塊 它是整個系統(tǒng)中最簡單的部分,根據(jù)功能要求,本系統(tǒng)共需四個按鍵:功能移位 鍵、功能加鍵、功能減
17、鍵、立刻跳出調(diào)整模式鍵采用獨立式按鍵。 3.6 整體電路 系統(tǒng)整體電路如圖 3-5 所示: 圖 3-5 系統(tǒng)總體電路圖 第 4 章 系統(tǒng)的軟件設(shè)計 4.1 主程序設(shè)計 主流程圖說明:程序開始運行時先初始化時鐘控制器件 DS1302、溫度采集器件 18B20 和顯示器件 LCD1302,然后打開 LCD1602,再讀取溫度、時間,把讀取的數(shù)據(jù)送 入 LCD1602 進(jìn)行顯示,期間可以對溫度和時間進(jìn)行調(diào)整。其主程序流程如圖 4-1 所示。 圖 4-1 主程序流程圖 4.2 時間設(shè)定程序流程 時間設(shè)定流程圖說明:程序開始后初始化 DS1302,然后從 DS1302 中讀出數(shù)據(jù), 放入 RAM 中,然
18、后調(diào)用顯示子程序,使 LCD1602 相應(yīng)的模塊顯示溫度,其間也可對溫 度進(jìn)行設(shè)置,設(shè)置完成后把數(shù)據(jù)重新送入 RAM 中,再由 LCD1602 相應(yīng)模塊顯示,整個 過程由此反復(fù)進(jìn)行。 圖 4-2 顯示時間子程序流程 4.3 溫度測量流程圖 溫度測量流程圖說明:程序開始后先對 DS18B20 進(jìn)行初始化,然后從 DS18B20 中 讀出數(shù)據(jù)放入 RAM 中,再調(diào)用子程序使 LCD1602 的相應(yīng)模塊進(jìn)行顯示。 圖 4-3 溫度測量程序流程圖 第 5 章 系統(tǒng)調(diào)試與測試結(jié)果分析 5.1 使用的儀器儀表 數(shù)字萬用表、秒表、電源、溫度表 5.2 系統(tǒng)調(diào)試 根據(jù)系統(tǒng)設(shè)計方案,本系統(tǒng)的調(diào)試共分為三大部分:
19、硬件調(diào)試,軟件調(diào)試和軟硬 件聯(lián)調(diào)。由于在系統(tǒng)設(shè)計中采用模塊設(shè)計法,所以方便對各電路模塊功能進(jìn)行逐級測 試:溫度測量模塊的調(diào)試,時鐘模塊的調(diào)試,LCD 液晶顯示模塊的調(diào)試等,最后將各 模塊組合后進(jìn)行整體測試。 5.2.1 硬件調(diào)試 對各個模塊的功能進(jìn)行調(diào)試,主要調(diào)試各模塊能否實現(xiàn)指定的功能。 5.2.2 軟件調(diào)試 軟件調(diào)試采用單片機(jī)仿真器 WAVE6000L 及微機(jī),將編好的程序進(jìn)行調(diào)試,主要是 檢查語法錯誤。 5.2.3 硬件軟件聯(lián)調(diào) 將調(diào)試好的硬件和軟件進(jìn)行聯(lián)調(diào),主要調(diào)試系統(tǒng)的實現(xiàn)功能。 5.3 測試結(jié)果 此次系統(tǒng)設(shè)計結(jié)果較好,能動態(tài)顯示實時時鐘的時、分、秒,數(shù)據(jù)顯示,能夠?qū)?現(xiàn)時鐘的定時,
20、并且具有調(diào)整日期與時間的功能。 結(jié) 論 目前,市面上已有現(xiàn)成的數(shù)字鐘集成電路芯片出售,價格便宜、使用也方便,但 鑒于數(shù)字鐘電路的基本組成包含了數(shù)字電路的主要組成部分,因此進(jìn)行數(shù)字鐘的設(shè)計 是必要的,研究數(shù)字鐘以及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實的意義。 單片機(jī)控制的 LCD 時鐘,它具有編程靈活,便于電子鐘功能的擴(kuò)充,精度高等特 點,同時可以用該電子鐘發(fā)出各種控制信號。本設(shè)計采用 STC89C52RC 單片機(jī)作為本系 統(tǒng)的控制模塊。單片機(jī)可把由 DS18B20、DS1302、AT24C02 中的數(shù)據(jù)利用軟件來進(jìn)行處 理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實現(xiàn)溫度、日歷和鬧鈴的顯示。 參考文獻(xiàn) 1 求是科技.
21、單片機(jī)典型模塊設(shè)計實例導(dǎo)航. 北京:人民郵電出版社. 2005.8 2 徐淑華, 程退安等.單片微型機(jī)原理及應(yīng)用. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社. 2005.1 3 孫余凱. 精選實用電子電路 260 例. 北京:電子工業(yè)出版社. 2007.6 4 殷春浩, 崔亦飛. 電磁測量原理及應(yīng)用. 徐州:中國礦業(yè)大學(xué)出版社. 2003.7 5LCD1602A 數(shù)據(jù)手冊 6DS1302 數(shù)據(jù)手冊 7DS18B20 數(shù)據(jù)手冊 附錄 1 程序 #include #include /#include LCD1602.h /#include DS1302.h #define uint unsigned int
22、#define uchar unsigned char sbit DS1302_CLK = P17; /實時時鐘時鐘線引腳 sbit DS1302_IO = P16; /實時時鐘數(shù)據(jù)線引腳 sbit DS1302_RST = P15; /實時時鐘復(fù)位線引腳 sbit wireless_1 = P30; sbit wireless_2 = P31; sbit wireless_3 = P32; sbit wireless_4 = P33; sbit ACC0 = ACC0; sbit ACC7 = ACC7; char hide_sec,hide_min,hide_hour,hide_day,h
23、ide_week,hide_month,hide_year; /秒,分,時 到日,月,年位閃的計數(shù) sbit Set = P20; /模式切換鍵 sbit Up = P21; /加法按鈕 sbit Down = P22; /減法按鈕 sbit out = P23; /立刻跳出調(diào)整模式按鈕 sbit DQ = P10; /溫度傳送數(shù)據(jù) IO 口 char done,count,temp,flag,up_flag,down_flag; uchar temp_value; /溫度值 uchar TempBuffer5,week_value2; void show_time(); /液晶顯示程序 /*
24、液晶顯示部分子程序*/ /Port Definitions sbit LcdRs= P25; sbit LcdRw= P26; sbit LcdEn = P27; sfr DBPort = 0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0 xB0.數(shù)據(jù)端口 /內(nèi)部等待函數(shù) * unsigned char LCD_Wait(void) LcdRs=0; LcdRw=1;_nop_(); LcdEn=1;_nop_(); LcdEn=0; return DBPort; /向 LCD 寫入命令或數(shù)據(jù) #define LCD_COMMAND0 / Command #defi
25、ne LCD_DATA1 / Data #define LCD_CLEAR_SCREEN 0 x01 / 清屏 #define LCD_HOMING 0 x02 / 光標(biāo)返回原點 void LCD_Write(bit style, unsigned char input) LcdEn=0; LcdRs=style; LcdRw=0;_nop_(); DBPort=input;_nop_();/注意順序 LcdEn=1;_nop_();/注意順序 LcdEn=0;_nop_(); LCD_Wait(); /設(shè)置顯示模式 #define LCD_SHOW0 x04 /顯示開 #define LCD
26、_HIDE0 x00 /顯示關(guān) #define LCD_CURSOR0 x02 /顯示光標(biāo) #define LCD_NO_CURSOR0 x00 /無光標(biāo) #define LCD_FLASH0 x01 /光標(biāo)閃動 #define LCD_NO_FLASH0 x00 /光標(biāo)不閃動 void LCD_SetDisplay(unsigned char DisplayMode) LCD_Write(LCD_COMMAND, 0 x08|DisplayMode); /設(shè)置輸入模式 #define LCD_AC_UP0 x02 #define LCD_AC_DOWN0 x00 / default #def
27、ine LCD_MOVE0 x01 / 畫面可平移 #define LCD_NO_MOVE0 x00 /default void LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_COMMAND, 0 x04|InputMode); /初始化 LCD void LCD_Initial() LcdEn=0; LCD_Write(LCD_COMMAND,0 x38); /8 位數(shù)據(jù)端口,2 行顯示,5*7 點 陣 LCD_Write(LCD_COMMAND,0 x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSO
28、R); /開啟顯示, 無光標(biāo) LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC 遞增, 畫面不動 /液晶字符輸入的位置 void GotoXY(unsigned char x, unsigned char y) if(y=0) LCD_Write(LCD_COMMAND,0 x80|x); if(y=1) LCD_Write(LCD_COMMAND,0 x80|(x-0 x40); /將字符輸出到液晶顯示 void Print(unsigned char *str) whi
29、le(*str!=0) LCD_Write(LCD_DATA,*str); str+; /*DS1302 時鐘部分子程序*/ typedef struct _SYSTEMTIME_ unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString11; unsigned char TimeString9; SYSTEMTIME
30、;/定義的時間類型 SYSTEMTIME CurrentTime; #define AM(X) X #define PM(X)(X+12) / 轉(zhuǎn)成 24 小時制 #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 void DS1302InputByte(u
31、nsigned char d) /實時時鐘寫入一字節(jié)(內(nèi)部函數(shù)) unsigned char i; ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相當(dāng)于匯編中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void) /實時時鐘讀取一字節(jié)(內(nèi)部函數(shù)) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相當(dāng)于匯編中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1;
32、DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa) /ucAddr: DS1302 地址, ucData: 要寫的數(shù)據(jù) DS1302_RST = 0;/Write1302(0 x8e,0 x00); DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 寫 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; unsigne
33、d char Read1302(unsigned char ucAddr)/讀取 DS1302 某地址的數(shù)據(jù) unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0 x01); / 地址,命令 ucData = DS1302OutputByte(); / 讀 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; return(ucData); void DS1302_GetTime(SYSTEMTIME *Time) /獲取時鐘芯片的
34、時鐘數(shù)據(jù)到自定義的 結(jié)構(gòu)型數(shù)組 unsigned char ReadValue; ReadValue = Read1302(DS1302_SECOND); Time-Second = (ReadValue /高三位取出讀出 乘 ReadValue = Read1302(DS1302_MINUTE); Time-Minute = (ReadValue ReadValue = Read1302(DS1302_HOUR); Time-Hour = (ReadValue ReadValue = Read1302(DS1302_DAY); Time-Day = (ReadValue ReadValue
35、= Read1302(DS1302_WEEK); Time-Week = (ReadValue ReadValue = Read1302(DS1302_MONTH); Time-Month = (ReadValue ReadValue = Read1302(DS1302_YEAR); Time-Year = (ReadValue void DateToStr(SYSTEMTIME *Time) /將時間年,月,日,星期數(shù)據(jù)轉(zhuǎn)換成液晶顯示字 符串,放到數(shù)組里 DateString if(hide_yearDateString0 = 2; Time-DateString1 = 0; Time-Da
36、teString2 = Time-Year/10 + 0; Time-DateString3 = Time-Year%10 + 0; else Time-DateString0 = ; Time-DateString1 = ; Time-DateString2 = ; Time-DateString3 = ; Time-DateString4 = /; if(hide_monthDateString5 = Time-Month/10 + 0; Time-DateString6 = Time-Month%10 + 0; else Time-DateString5 = ; Time-DateStr
37、ing6 = ; Time-DateString7 = /; if(hide_dayDateString8 = Time-Day/10 + 0; Time-DateString9 = Time-Day%10 + 0; else Time-DateString8 = ; Time-DateString9 = ; if(hide_weekWeek%10 + 0; /星期的數(shù)據(jù)另外放到 week_value數(shù) 組里,跟年,月,日的分開存放,因為等一下要在最后顯示 else week_value0 = ; week_value1 = 0; Time-DateString10 = 0; /字符串末尾加
38、0 ,判斷結(jié)束字符 void TimeToStr(SYSTEMTIME *Time) /將時,分,秒數(shù)據(jù)轉(zhuǎn)換成液晶顯示字符放到數(shù)組 TimeString; if(hide_hourTimeString0 = Time-Hour/10 + 0; Time-TimeString1 = Time-Hour%10 + 0; else Time-TimeString0 = ; Time-TimeString1 = ; Time-TimeString2 = :; if(hide_minTimeString3 = Time-Minute/10 + 0; Time-TimeString4 = Time-Min
39、ute%10 + 0; else Time-TimeString3 = ; Time-TimeString4 = ; Time-TimeString5 = :; if(hide_secTimeString6 = Time-Second/10 + 0; Time-TimeString7 = Time-Second%10 + 0; else Time-TimeString6 = ; Time-TimeString7 = ; Time-DateString8 = 0; void Initial_DS1302(void) /時鐘芯片初始化 unsigned char Second=Read1302(D
40、S1302_SECOND); if(Second /寫入允許 Write1302(0 x8c,0 x07); /以下寫入初始化時間 日期:07/07/25.星期: 3. 時間: 23:59:55 Write1302(0 x88,0 x07); Write1302(0 x86,0 x25); Write1302(0 x8a,0 x07); Write1302(0 x84,0 x23); Write1302(0 x82,0 x59); Write1302(0 x80,0 x55); Write1302(0 x8e,0 x80); /禁止寫入 /*ds18b20 子程序*/ /*ds18b20 延遲
41、子函數(shù)(晶振 12MHz )*/ void delay_18B20(unsigned int i) while(i-); /*ds18b20 初始化函數(shù)*/ void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ 復(fù)位 delay_18B20(8); /稍做延時 DQ = 0; /單片機(jī)將 DQ 拉低 delay_18B20(80); /精確延時 大于 480us DQ = 1; /拉高總線 delay_18B20(14); x=DQ; /稍做延時后 如果 x=0 則初始化成功 x=1 則初始化失敗 delay_18B20(20); /*d
42、s18b20 讀一個字節(jié)*/ unsigned char ReadOneChar(void) uchar i=0; uchar dat = 0; for (i=8;i0;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0 x80; delay_18B20(4); return(dat); /*ds18b20 寫一個字節(jié)*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat delay_18B20(5); DQ = 1; dat=1; /*讀取 ds18b20 當(dāng)前溫度*/ void ReadTemp(void) unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0 xCC); / 跳過讀序號列號的操作 WriteOneChar(0 x44); / 啟動溫度轉(zhuǎn)換 delay_18B20(100); / this message is wery important Init_DS18B20(); Wri
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)生物學(xué)(遺傳學(xué))試題及答案
- 2025年大學(xué)水利環(huán)境化學(xué)(水利工程環(huán)保)試題及答案
- 2025年高職水產(chǎn)養(yǎng)殖學(xué)(水產(chǎn)動物營養(yǎng))試題及答案
- 2025年大學(xué)(農(nóng)學(xué))植物生理學(xué)代謝階段測試題及解析
- 2025年中職歷史(世界近現(xiàn)代史)試題及答案
- 2025年高職秘書學(xué)(商務(wù)秘書實務(wù))試題及答案
- 2025年大學(xué)消防工程(消防設(shè)計)試題及答案
- 2025年中職飛機(jī)機(jī)電設(shè)備維修(航電系統(tǒng)故障排除)試題及答案
- 2025年大學(xué)(機(jī)械電子工程)液壓與氣動技術(shù)模擬試題及解析
- 2025年高職(云計算技術(shù)應(yīng)用)云遷移技術(shù)試題及解析
- 2025年及未來5年市場數(shù)據(jù)中國別墅電梯市場發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報告
- 2026年中級注冊安全工程師之安全實務(wù)化工安全考試題庫300道及答案【考點梳理】
- 2025至2030中國生物芯片(微陣列和和微流控)行業(yè)運營態(tài)勢與投資前景調(diào)查研究報告
- 請人收錢辦事協(xié)議書
- 結(jié)核性支氣管狹窄的診治及護(hù)理
- 2025年融資融券業(yè)務(wù)模擬考試題庫及答案
- 2025年北京大學(xué)招聘真題(行政管理崗)
- 急腹癥的識別與護(hù)理
- 初二歷史上冊期末真題試卷附答案解析
- 八年級上冊語文期末重難點文言文字詞梳理
- 藥品零售監(jiān)管培訓(xùn)課件
評論
0/150
提交評論