基于單片機(jī)的萬年歷實習(xí)報告.doc
《基于單片機(jī)的萬年歷實習(xí)報告.doc》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的萬年歷實習(xí)報告.doc(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
桂 林 理 工 大 學(xué) 信 息 科 學(xué) 與 工 程 學(xué) 院 “ 電 子 系 統(tǒng) 設(shè) 計 創(chuàng) 新 與 實 踐 ” 課程設(shè)計(實習(xí))報告 題 目: 具有溫濕度測量功能的萬年歷設(shè)計 專業(yè)(方向): 電子信息工程 班 級: 電信二班 指導(dǎo)老師 : 蔣存波 2016年3月27日 目 次 1. 緒論----------------------------------------------- 1 2. 總體設(shè)計方案--------------------------------------- 2 2.1 技術(shù)方案比較------------------------------------- 2 2.2總體技術(shù)方案------------------------------------- 3 3. 硬件系統(tǒng)設(shè)計---------------------------------------- 4 3.1 硬件總體原理框圖--------------------------------- 4 3.2關(guān)鍵元件介紹-------------------------------------- 4 3.2.1 LCD602顯示屏-------------------------------- 4 3.2.3 DS1302時鐘芯片------------------------------ 7 3.2.2 SHT10溫濕度感應(yīng)器--------------------------- 9 3.3 硬件設(shè)計------------------------------------------ 10 3.3.1 復(fù)位電路設(shè)計-------------------------------- 10 3.3.2 晶振電路設(shè)計-------------------------------- 10 3.3.3 時鐘芯片電路設(shè)計---------------------------- 10 3.3.4 溫濕度感應(yīng)器模塊電路設(shè)計-------------------- 11 3.3.5 按鍵模塊電路設(shè)計---------------------------- 11 3.3.6 LCD1602顯示模塊電路設(shè)計--------------------- 11 3.3.7 電量檢測報警電路設(shè)計------------------------- 12 3.3.8 蜂鳴器報警電路設(shè)計-------------------------- 12 3.3.6 總體電路原理圖------------------------------- 12 4. 軟件系統(tǒng)設(shè)計------------------------------------------ 13 4.1 軟件功能設(shè)計-------------------------------------- 13 4.2 程序設(shè)計總體方案---------------------------------- 13 4.2.1 總體設(shè)計思路--------------------------------- 13 4.2.2 程序流程框圖--------------------------------- 13 4.3 程序的實現(xiàn)-------------------------------------- 14 5. 裝置樣機(jī)的制作與調(diào)試--------------------------------- 22 6. 實驗測試--------------------------------------------- 23 7. 總結(jié)-------------------------------------------------- 24 參考文獻(xiàn)------------------------------------------------- 25 1. 緒論 二十一世紀(jì)的今天,最具代表性的計時產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機(jī)數(shù)碼計時技術(shù)的應(yīng)用(電子萬年歷),使計時產(chǎn)品的走時 日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期、溫度以及其 他日常附屬信息的顯示功能,它更符合消費(fèi)者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進(jìn)步。 如今電子萬年歷飛 入了尋常百姓家,而且以不斷智能的方式增加著,大多數(shù)都添加了溫度和濕度檢測顯示功能,通過利用單片機(jī)的控制還可以設(shè)計出各種各樣的顯示或報警功能等。掛式、臺式以及帶裝飾畫面等豐富的電子萬年歷數(shù)不勝數(shù),不但滿足了精準(zhǔn)的計時需求,還將計時帶上了科技時尚的味道。單片機(jī)技術(shù)所應(yīng)用的功 能控制芯片可進(jìn)行多種功能的設(shè)置,如鬧鐘、報時、日歷查詢、語音等;并改善了很多原有石英鐘不能解決的問題,例如:數(shù)字夜光顯示、數(shù)據(jù)存儲以及全自動溫度 檢測等功能;這給傳統(tǒng)計時消費(fèi)帶來了新的動力,越來越多的消費(fèi)者選擇了電子萬年歷。 1.1 題目 具有溫濕度測量功能的萬年歷設(shè)計 1.2 研究目標(biāo)與意義 (1)總體目標(biāo) 1)實現(xiàn)萬年歷功能; 2) 具有鬧鐘功能,能設(shè)定三個鬧鐘時間,每個時間都可以設(shè)定一周的那一 天報警; 3)具有溫度和濕度測量功能; 4)利用LCD顯示:年、月、日、星期、時間、溫度、濕度; 5)具有年、月、日、星期、時間、鬧鐘等設(shè)定功能,盡量方便且使用最少 的按鍵完成功能; 6)具有電池電量檢測、低電量報警功能; 7)電池供電; (2)研究意義 設(shè)計電子萬年歷不僅能在生活中得到實用,而且還可以增加自己的動手能力和實踐能力,往里面增加不少功能還可以學(xué)到很多東西,不斷地提高自己的知識面,不斷地將實際理論知識應(yīng)用到生活中,真正地做到理論與實踐相結(jié)合,更具有實習(xí)設(shè)計研究意義。 1.3 相關(guān)技術(shù)的現(xiàn)狀 萬年歷是采用獨立芯片控制內(nèi)部數(shù)據(jù)運(yùn)行,以LED夜光數(shù)碼或LCD顯示日期、時間、星期、節(jié)氣倒計,以及溫度等日常信息,糅合了多項先進(jìn)電子技術(shù)及現(xiàn)代經(jīng)典工藝打造的現(xiàn)代 數(shù)碼計時產(chǎn)品。其內(nèi)部電子板硬件與軟件,硬件與硬件之間的兼容性,表現(xiàn)為LED數(shù)碼的驅(qū)動是靜態(tài)或動態(tài),顯示為是否出現(xiàn)閃動,斷筆等情況;具有防震,防 火,防暴等情況;產(chǎn)品有多種系列,多種規(guī)格,產(chǎn)品的材料也分有玻璃,塑料,鋁合金等。電子萬年歷技術(shù)已經(jīng)進(jìn)入了優(yōu)化人-家庭-環(huán)境的整體關(guān)系的階段,它向 著超微型、超高效以及集成電路的微型化方向發(fā)展。目前,市場上出售的數(shù)字萬年歷品種很多, 其中大部分是基于單片機(jī)技術(shù)設(shè)計的電子系統(tǒng)。它們一般由輸入脈沖電路、單片機(jī)、晶振和復(fù)位電路、外路存儲器電路和LED顯示電路組成。當(dāng)今,數(shù)字萬年歷主要用于計時、自動報時,定時,日期查詢以及自動控制等方面。由于單片機(jī)技術(shù)以及數(shù)字集成電路技術(shù)的發(fā)展,如今的數(shù)字萬年歷系統(tǒng)具有體積小、計時準(zhǔn)確、耗電省、維護(hù)方便、性能穩(wěn)定、走時準(zhǔn)確、攜帶方便等優(yōu)點。另外,現(xiàn)在市場上已有現(xiàn)成的數(shù)字萬年歷集成電路芯片出售而且價格便宜,使用也很方便。 2. 總體技術(shù)方案 2.1 技術(shù)方案比較 2.1.1 單片機(jī)芯片 方案一 MSP430系列單片機(jī)是是美國德州儀器(TI)1996年開始推向市場的一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器,是一個16位的單片機(jī),具有豐富的尋址方式(7 種源操作數(shù)尋址、4 種目的操作數(shù)尋址)、簡潔的 27 條內(nèi)核指令以及大量的模擬指令;大量的寄存器以及片內(nèi)數(shù)據(jù)存儲器都可參加多種運(yùn)算;還有高效的查表處理指令。這些特點保證了可編制出高效率的源程序。適用于一些低功耗、集成度高的設(shè)計適用。 方案二 89C52系列單片機(jī)是INTEL公司MCS-51系列單片機(jī)中基本的產(chǎn)品,它采用ATMEL公司可靠的CMOS工藝技術(shù)制造的高性能8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51的HCMOS產(chǎn)品。它結(jié)合了CMOS的高速和高密度技術(shù)及CMOS的低功耗特征,它基于標(biāo)準(zhǔn)的MCS-51單片機(jī)體系結(jié)構(gòu)和指令系統(tǒng),屬于89C51增強(qiáng)型單片機(jī)版本,集成了時鐘輸出和向上或向下計數(shù)器等更多的功能,適合于類似馬達(dá)控制等應(yīng)用場合。89C52內(nèi)置8位中央處理單元、512字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、8k片內(nèi)程序存儲器(ROM)32個雙向輸入/輸出(I/O)口、3個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路。此外,89C52還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內(nèi)其它功能。89C52有PDIP(40pin)和PLCC(44pin)兩種封裝形式。對于一些基本日常生活實用功能比較方便。 所以這里我選擇了方案二89C51系列單片機(jī)。 2.1.2 時鐘芯片 方案一 直接采用單片機(jī)內(nèi)部定時計數(shù)器提供秒信號,利用軟件程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。 方案二 DS1302是由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實時時鐘芯片,它可以對年、月、日、周、時、分、秒進(jìn)行計時,且具有閏年補(bǔ)償?shù)榷喾N功能,精確度比較高。 所以采用方案二DS1302S時鐘芯片 2.1.3 顯示模塊 方案一 LED的發(fā)光顏色和發(fā)光效率與制作LED的材料和工藝有關(guān) ,燈球剛開始全是藍(lán)光的,后面再加上熒光粉,根據(jù)用戶的不同需要,調(diào)節(jié)出不同的光色,廣泛使用的有紅、綠、藍(lán)、黃四種。由于LED工作電壓低(僅 1.2~4.0V),能主動發(fā)光且有一定亮度 ,亮度又能用電壓(或電流)調(diào)節(jié),本身又耐沖擊、抗振動、壽命長(10 萬小時),所以在大型的顯示設(shè)備中,尚無其他的顯示方式與LED顯示方式匹敵。 方案二 液晶顯示屏(LCD)用于數(shù)字型鐘表和許多便攜式計算機(jī)的一種顯示器類型。LCD顯示使用了兩片極化材料,在它們之間是液體水晶溶液。電流通過該液體時會 使水晶重新排列,以使光線無法透過它們。因此,每個水晶就像百葉窗,既能允許光線穿過又能擋住光線。液晶顯示器(LCD)目前科技信息產(chǎn)品都朝著輕、薄、 短、小的目標(biāo)發(fā)展,在計算機(jī)周邊中擁有悠久歷史的顯示器產(chǎn)品當(dāng)然也不例外。在便于攜帶與搬運(yùn)為前題之下,傳統(tǒng)的顯示方式如CRT映像管顯示器及LED顯示 板等等,皆受制于體積過大或耗電量甚巨等因素,無法達(dá)成使用者的實際需求。而液晶顯示技術(shù)的發(fā)展正好切合目前信息產(chǎn)品的潮流,無論是直角顯示、低耗電量、 體積小、還是零輻射等優(yōu)點,都能讓使用者享受最佳的視覺環(huán)境。 由上比較我們選擇了方案二LCD液晶顯示屏。 2.1.4 溫濕度感應(yīng)器 方案一 使用熱敏電阻作為傳感器,用熱敏電阻與一個相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換。。此設(shè)計方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會產(chǎn)生較大的測量誤差。 方案二 采用SHT10作為溫度和濕度的檢測,該儀器具有測量精度較高、硬件電路簡單、并能很好的進(jìn)行顯示,可測試不同環(huán)境溫濕度的特點。另外和控制電路相連,可以進(jìn)行加濕電路和除濕電路的控制,使溫度和濕度參數(shù)在預(yù)先設(shè)定的范圍內(nèi),不需要人的直接參與。 所以我們選用了方案二采用SHT10溫濕度傳感器。 2.2 總體技術(shù)方案 綜上比較陳述,這次的具有溫濕度的萬年歷設(shè)計我們使用STC89C52RC芯片作為MCU,SHT10溫濕度感應(yīng)器芯片作為溫度和濕度的測量;DS1302用來提供時鐘、日期;LCD1602作為顯示屏顯示溫濕度時鐘鬧鐘;使用NE555定時器的電量檢測報警電路作為電量不足報警功能。 3. 硬件系統(tǒng)設(shè)計 3.1 硬件總體原理框圖 以STC89C52RC單片機(jī)為核心,起著控制作用。系統(tǒng)包括LCD1602液晶顯示電路、復(fù)位電路、時鐘電路、溫濕度采集電路、按鍵調(diào)整子函數(shù)、按鍵提示音電路、時鐘芯片電路。設(shè)計思路分為九個模塊:復(fù)位電路、晶振電路模塊、STC89C52RC、LCD1602液晶顯示電路、溫濕度采集電路、按鍵調(diào)整及設(shè)置子函數(shù)、按鍵提示音及鬧鐘電路、電量檢測報警電路和時鐘芯片電路這九個模塊。 復(fù)位電路 液晶顯示電路 STC89C52單片機(jī) 溫濕度電路 晶振電路 提示鬧鐘電路 時鐘芯片電路 按鍵電路 電量檢測電路 3.1.1 硬件總體原理框圖 工作原理說明:復(fù)位電路能夠使單片機(jī)重新開始從頭執(zhí)行工作;晶振電路由12.0MHZ為單片機(jī)及其他模塊運(yùn)行提供工作頻率,保證程序的正常運(yùn)行;單片機(jī)從DS1302時鐘芯片讀取年月日、時分秒、星期的值送給LCD1602顯示,以及從SHT10溫濕度感應(yīng)器芯片讀取溫度和濕度的值并送給LCD1602顯示,其中讀取到時鐘芯片的值可以通過按鍵模塊設(shè)置調(diào)整時間、日期和周;通過按鍵還可以設(shè)置多個鬧鐘時間,當(dāng)你設(shè)置的鬧鐘時間跟時鐘芯片讀取的值一致的時候就會觸發(fā)提示鬧鐘電路使蜂鳴器響。最后用電量檢測電路檢測電量,如果電量過低就會觸發(fā)蜂鳴器報警。 3.2 關(guān)鍵元件介紹 3.2.1 LCD1602液晶顯示屏 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖3.2.1所示: 圖3.2.1:LCD1602 1602LCD主要技術(shù)參數(shù): 顯示容量:162個字符 芯片工作電壓:4.5—5.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.954.35(WH)mm (1)功能引腳說明: 1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表3.2.2所示: 編號 符號 引腳說明 編號 符號 引腳說明 1 VSS 電源地 9 D2 數(shù)據(jù) 2 VDD 電源正極 10 D3 數(shù)據(jù) 3 VL 液晶顯示偏壓 11 D4 數(shù)據(jù) 4 RS 數(shù)據(jù)/命令選擇 12 D5 數(shù)據(jù) 5 R/W 讀/寫選擇 13 D6 數(shù)據(jù) 6 E 使能信號 14 D7 數(shù)據(jù) 7 D0 數(shù)據(jù) 15 BLA 背光源正極 8 D1 數(shù)據(jù) 16 BLK 背光源負(fù)極 表3.2.2:引腳接口說明表 第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負(fù)極。 (2) 1602LCD的指令說明及時序 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.2.3所示: 序號 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清顯示 0 0 0 0 0 0 0 0 0 1 2 光標(biāo)返回 0 0 0 0 0 0 0 0 1 * 3 置輸入模式 0 0 0 0 0 0 0 1 I/D S 4 顯示開/關(guān)控制 0 0 0 0 0 0 1 D C B 5 光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符發(fā)生存貯器地址 0 0 0 1 字符發(fā)生存貯器地址 8 置數(shù)據(jù)存貯器地址 0 0 1 顯示數(shù)據(jù)存貯器地址 9 讀忙標(biāo)志或地址 0 1 BF 計數(shù)器地址 10 寫數(shù)到CGRAM或DDRAM) 1 0 要寫的數(shù)據(jù)內(nèi)容 11 從CGRAM或DDRAM讀數(shù) 1 1 讀出的數(shù)據(jù)內(nèi)容 表3.2.3:控制命令表 (3)讀寫操作時序如圖3.2.4和3.2.5所示: 圖3.2.4 圖3.2.5 3.2.2 DS1302時鐘芯片 DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實時時鐘芯片,附加31字節(jié)靜態(tài) RAM ,采用 SPI三線接口與 CPU進(jìn)行和 同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和 RAM數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31 天時可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~ ~5.5V 。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。其引腳圖如下: (1) 引腳的功能說明:Vcc1 :主電源;Vcc2 :備份電源。當(dāng) Vcc2>Vcc1+0.2V 時,由 Vcc2向 向DS1302 供電Vcc2< Vcc1 時,由 Vcc1向 向 DS1302 供電。SCLK :串行時鐘,輸入,控制數(shù)據(jù)的輸入與輸出; I/O :三線接口時的雙向數(shù)據(jù)線;CE :輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一,CE 開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā? (2) (2)寄存器說明:DS1302有日歷、時間的寄存器共有12 個,其中有7 個寄存器(讀時81h ~8Dh ,寫時80h ~8Ch ),存放的數(shù)據(jù)格式為 BCD 碼形式, 小時寄存器(85h 、84h )的位7 用于定義 DS1302 是運(yùn)行于12 小時模式還是24 小時模式。當(dāng)為高時,選擇12 小時模式。在12 小時模式時,位5是,當(dāng)為1時,表示 PM 。在24 小時模式時,位5 是第二個10 小時位。秒寄存器(81h 、80h )的位7 定義為時鐘暫停標(biāo)志(CH )。當(dāng)該位置為1 時,時鐘振蕩器停止,DS1302 處于低功耗狀態(tài);當(dāng)該位置為0 時,時鐘開始運(yùn)行??刂萍拇嫫鳎?Fh 、8Eh )的位 位7位 是寫保護(hù)位( WP ),其它7 位均置為0。在任何的對時鐘和 RAM的寫操作之前,WP 位必須為0 。當(dāng)WP位為1 時,寫保護(hù)位防止對任一寄存器的寫操作。其讀寫時序操作3.2.6如下: 3.2.6讀寫時序操作 3.2.3 SHT10溫濕度傳感器 SHHT10傳感器將傳感元件和信號處理電路集成在一塊微型電路板上,輸出完全標(biāo)定的數(shù)字信號;傳感器采用專利的 CMOSens 技術(shù),確保產(chǎn)品具有極高可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與14 位的 A/D 轉(zhuǎn)換器以及串行接口電路實現(xiàn)無縫連接。因此,該產(chǎn)品具有品質(zhì)卓越、響應(yīng)迅速、抗干擾能力強(qiáng)、性價比高等優(yōu)點。期引腳圖如下: (1) 引腳說明:引腳1:接地(GND);引腳2:串行數(shù)據(jù)雙向(DATA);引腳3:串行時鐘輸入口(SCK);引腳4:電源(VDD);引腳NC:必須為空 (2) 溫濕度測量:發(fā)布一組測量命令(‘00000101’表示相對濕度RH,‘00000011’表示溫度T)后,控制器要等待測量結(jié)束。這個過程需要大約20/80/320ms,分別對應(yīng)8/12/14bit 測量。確切的時間隨內(nèi)部晶振速度,最多可能有-30%的變化。SHT1x 通過下拉DATA 至低電平并進(jìn)入空閑模式,表示測量的結(jié)束??刂破髟谠俅斡|發(fā)SCK 時鐘前,必須等待這個“數(shù)據(jù)備妥”信號來讀出數(shù)據(jù)。檢測數(shù)據(jù)可以先被存儲,這樣控制器可以繼續(xù)執(zhí)行其它任務(wù)在需要時再讀出數(shù)據(jù)。接著傳輸2個字節(jié)的測量數(shù)據(jù)和1 個字節(jié)的CRC 奇偶校驗(可選擇讀?。C 需要通過下拉DATA 為低電平,以確認(rèn)每個字節(jié)。所有的數(shù)據(jù)從MSB 開,右值有效(例如:對于12bit 數(shù)據(jù),從第5個SCK 時鐘起算作MSB;而對于8bit 數(shù)據(jù),首字節(jié)則無意始義)。在收到 CRC 的確認(rèn)位之后,表明通訊結(jié)束 。如果不使用 CRC-8 校驗,控制器可以在測量值LSB 后,通過保持ACK高電平終止通訊。在測量和通訊完成后,SHT10自動轉(zhuǎn)入休眠模式。 3.3 硬件設(shè)計 3.3.1 時鐘芯片電路設(shè)計 3.3.1 時鐘芯片電路設(shè)計 3.3.2 復(fù)位電路設(shè)計 3..3.2 復(fù)位電路設(shè)計 3.3.3 晶振電路設(shè)計 3.3.3 晶振電路設(shè)計 3.3.4 SHT10溫濕度感應(yīng)器電路設(shè)計 3.3.4 SHT10溫濕度感應(yīng)器電路設(shè)計 3.3.5 LCD顯示模塊電路設(shè)計 3.3.5 LCD顯示模塊電路設(shè)計 3.3.6 按鍵模塊電路設(shè)計 3.3.6 按鍵模塊電路設(shè)計 3.3.7 蜂鳴器報警電路設(shè)計 3.3.7 蜂鳴器報警電路設(shè)計 3.3.8 電量檢測電路設(shè)計 3.3.8 電量檢測電路設(shè)計 3.3.9 總體電路原理圖 3.3.9 總體電路原理圖 4. 軟件系統(tǒng)設(shè)計 4.1 軟件功能介紹 軟件具有對SHT10溫濕度傳感器芯片進(jìn)行讀寫和溫濕度補(bǔ)償功能,對LCD1602液晶顯示器進(jìn)行讀寫操作控制LCD顯示功能,對DS1302時鐘芯片的年、月、日、周、時 、分、秒等寄存器進(jìn)行讀寫操作,將讀到的數(shù)值送往LCD顯示,并且能通過按鍵設(shè)置其值等功能;具有蜂鳴器驅(qū)動功能。 4.2 程序設(shè)計總體方案 4.2.1 總體設(shè)計思路 先定義好用到的管腳,然后分別對LCD模塊顯示程序初始化、LCD讀寫操作程序初始化,DS1302模塊讀寫程序初始化,SHT10模塊讀寫程序初始化,讀取SHT10溫濕度的值送往LCD顯示,讀取DS1302的時鐘日期送往LCD顯示, 接著開啟按鍵掃描子程序等待著按鍵的輸入讀取對時間日期和鬧鐘的設(shè)置調(diào)整,將設(shè)置好的鬧鐘子程序與DS1302所讀取的時間進(jìn)行比較,如是一致則調(diào)用蜂鳴器子程序進(jìn)行報警。 4.2.2 程序流程框圖 開始 初始化 Y 是否按鍵k1 讀寫時間日期 N 讀寫溫濕度 N 是否按鍵k2 Y Y N 進(jìn)入時間日期調(diào)整 是否k2有效 進(jìn)入鬧鐘設(shè)置 N 是否按鍵k3 N N 是否按鍵k3 是否按鍵k4 Y Y Y 多個鬧鐘設(shè)置 相應(yīng)位加1 相應(yīng)位減1 N N 是否與時間 是否按鍵 相等 k4 Y Y 返回 LCD顯示 蜂鳴器觸發(fā) 相應(yīng)位加1 返回 4.3 程序的實現(xiàn) 我們使用的是C語言編程并利用Keil軟件編譯連接生成Hex文件后(如圖4.3.1)利用STC燒錄軟件(如圖4.3.2)將Hex代碼下載到單片機(jī)里面; 圖4.3.1 Keil軟件編譯c程序 圖4.3.2 燒錄軟件 以下為部分程序分析: 4.3.1 檢查LCD1602忙位子函數(shù) void LCD1602_busy() // 檢查LCD1602忙位子函數(shù) { uchar i=0; RS=0; RW=1; E=1; P0=0xff; i=0; while(((P0&0x80)==0x80)&&i<150) i++; E=0; } 4.3.2 LCD1602寫指令子函數(shù) void write_com(uchar com) // LCD1602寫指令子函數(shù) { LCD1602_busy(); RS=0; RW=0; P0=com; E=1; E=0; } 4.3.3 LCD1602寫數(shù)據(jù)子函數(shù) void write_date(uchar date) // LCD1602寫數(shù)據(jù)子函數(shù) { LCD1602_busy(); RS=1; RW=0; P0=date; E=1; E=0; } 4.3.4 LCD1602初始化子函數(shù) void LCD1602_init() //LCD1602初始化設(shè)置 { uchar i; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(i=0;i<16;i++) { write_date(table1[i]); delay(500); } write_com(0xc0); for(i=0;i<16;i++) { write_date(table2[i]); delay(500); } a=35; b=10; c=65; d=40; } 4.3.5 SHT10寫字節(jié)子函數(shù) char s_write_byte(uchar value) { uchar i,error=0; for(i=0x80;i>0;i>>=1) //高位為1,循環(huán)右移 { if(i&value) DATA=1; //和要發(fā)送的數(shù)相與,結(jié)果為發(fā)送的位 else DATA=0; SCK=1; _nop_(); _nop_(); _nop_();//延時3us SCK=0; } DATA=1; //釋放數(shù)據(jù)線 SCK=1; error=DATA; //檢查應(yīng)答信號,確認(rèn)通訊正常 _nop_(); _nop_(); _nop_(); SCK=0; DATA=1; return error; //error=1 通訊錯誤 } 4.3.6 SHT10讀字節(jié)子函數(shù) char s_read_byte(uchar ack) { uchar i,val=0; DATA=1; //釋放數(shù)據(jù)線 for(i=0x80;i>0;i>>=1) //高位為1,循環(huán)右移 { SCK=1; if(DATA) val=(val|i); //讀一位數(shù)據(jù)線的值 SCK=0; } DATA=!ack; //如果是校驗,讀取完后結(jié)束通訊; SCK=1; _nop_(); _nop_(); _nop_();//延時3us SCK=0; _nop_(); _nop_(); _nop_(); DATA=1; //釋放數(shù)據(jù)線 return val; } 4.3.7 SHT10溫濕度檢測子函數(shù) char s_measure(uchar *p_value,uchar *p_checksum,uchar mode) { unsigned error=0; uint i; s_transstart(); //啟動傳輸 switch(mode) //選擇發(fā)送命令 { case TEMP: error+=s_write_byte(0x03); break; //測量溫度 case HUMI: error+=s_write_byte(0x05); break; //測量濕度 default: break; } for(i=0;i<65535;i++) if(DATA==0) break; //等待測量結(jié)束 if(DATA) error+=1; // 如果長時間數(shù)據(jù)線沒有拉低,說明測量錯誤 *(p_value)=s_read_byte(1); //讀第一個字節(jié),高字節(jié) (MSB) *(p_value+1)=s_read_byte(1); //讀第二個字節(jié),低字節(jié) (LSB) *p_checksum=s_read_byte(0); //read CRC校驗碼 return error; // error=1 通訊錯誤 } 4.3.8 DS1302 時鐘芯片相關(guān)子函數(shù) void inputbyte(uchar add) //往DS1302時鐘芯片寫入一字節(jié)子函數(shù) { uint i; ACC=add; for(i=8;i>0;i--)//8個SCLK周期后,接下來的8個SCLK周期的上升沿數(shù)據(jù)字節(jié) 被輸入 { IO=ACC0; SCLK=1; SCLK=0; ACC=ACC>>1; } } //DS1302時鐘芯片輸出一字節(jié)子函數(shù) uchar outputbyte() { uint i; for(i=8;i>0;i--)//8個SCLK周期后,接下來的8個SCLK周期的下降沿數(shù)據(jù)字節(jié) 被輸出 { ACC=ACC>>1; ACC7=IO; SCLK=1; SCLK=0; } return ACC; } //往DS1302時鐘芯片寫入數(shù)據(jù)子函數(shù) void write_ds(uchar add,uchar ucda) { RST=0; SCLK=0; RST=1; inputbyte(add); inputbyte(ucda); SCLK=1; RST=0; } //從DS1302時鐘芯片讀出數(shù)據(jù)子函數(shù) uchar read_ds(uchar add) { uchar ucda; RST=0; SCLK=0; RST=1; inputbyte(add); ucda=outputbyte(); SCLK=1; RST=0; return(ucda); } //設(shè)置DS1302時鐘芯片子函數(shù) void write_setds(uchar addr,uchar date) { write_ds(0x8e,0x00); write_ds(addr,date); write_ds(0x8e,0x80); } 5. 裝置樣機(jī)的制作與調(diào)試 先利用Altium Designer軟件畫好原理圖(圖5.1),然后生成PCB圖(圖5.2); 圖5.1:原理圖 圖5.2:PCB圖 然后接著將PCB打印在墨紙上,利用熱熨斗或者其他工具將圖印刷在銅板,然后就是打孔、腐蝕電路板,接著就能得到以上電路圖的效果了,剩下的就是放元器件接著就是焊接電路板(圖5.3),調(diào)試電路(圖5.4)。 圖5.3:焊接電路板 圖5.4:調(diào)試電路圖 6. 實驗測試 6.1 實驗測試目的 總體目的:滿足基本的顯示萬年歷功能要求并且具有鬧鐘功能、溫濕度測量顯示功能、低電量報警功能、按鍵設(shè)置功能等,每一塊功能都能正常運(yùn)行,顯示時間和溫濕度誤差要足夠小,運(yùn)行比較精確等。 6.2 溫濕度和時間日期測試 6.2.1溫濕度測試方法與步驟 (1)測試方法 溫濕度的測試主要是通過單片機(jī)控制溫濕度芯片的運(yùn)行工作,讀取它的溫濕度并且通過溫濕度補(bǔ)償調(diào)整來降低誤差,精度達(dá)到小數(shù)點后一位,將讀到的溫濕度用LCD顯示出來;所以,我們測試溫濕度的時候就是將它拿到幾個不同的環(huán)境,如室外和室內(nèi)分別測量溫濕度。 (2) 測量數(shù)據(jù) 分別在不同的地方環(huán)境測試LCD顯示的數(shù)據(jù)略有變化 (3) 數(shù)據(jù)分析 不同環(huán)境測量溫濕度有不同變化且通過天氣預(yù)報查看當(dāng)?shù)氐臏貪穸扰c自己LCD顯示的溫濕度的值相差無幾,在其預(yù)報的范圍之內(nèi);這就說明了我們的溫濕度測試還算比較準(zhǔn)確,雖然有時顯示跳動得不是很明顯,但在其誤差范圍內(nèi)還是可行的。 6.2.2 時間日期測試方法和步驟 (1) 測試方法 時間日期的測試方法主要是通過單片機(jī)控制DS1302時鐘芯片進(jìn)行讀寫工作,讀取它的時間日期的值并通過LCD顯示出來,還通過按鍵方法來設(shè)置它的時間日期以及鬧鐘的值,所以我們先通過按鍵設(shè)置顯示時間日期的值以及鬧鐘的值通過對比實際時間運(yùn)行和設(shè)置的鬧鐘響與不響來判斷其功能測試是否成功。 (2) 測試數(shù)據(jù) 將LCD上顯示的時間實際的時鐘運(yùn)行對比,發(fā)現(xiàn)兩者運(yùn)行一致,分秒運(yùn)行相同,當(dāng)運(yùn)行到的時間與自己所設(shè)置的鬧鐘的時分值相等時,蜂鳴器響,過了一分鐘后時分值不一致,蜂鳴器不行。 (3) 數(shù)據(jù)分析 通過以上的顯示數(shù)據(jù)對比可知,雖然用眼睛對比分析時間的正確性還存在一些人為因素誤差,但是在其誤差范圍內(nèi)還是允許的,通過對比鬧鐘的響與不響可以證明了鬧鐘模塊的正確性。 6.3 測試結(jié)果 通過了上面的測試基本滿足了顯示萬年歷功能要求并且具有鬧鐘功能、溫濕度測量顯示功能、低電量報警功能、按鍵設(shè)置功能等,每一塊功能都能正常運(yùn)行,顯示時間和溫濕度誤差比較小,運(yùn)行比較精確。 7. 總結(jié) 通過了這次具有溫濕度測量功能的萬年歷設(shè)計,使我懂得了很多,其中最為深刻的是在設(shè)計程序的時候要緊緊的利用好你所連接的接口,并且通過其引腳來控制單片機(jī)輸出的是高電平還是低電平,進(jìn)而控制各個模塊的協(xié)調(diào)工作,這一點是非常重要的思想對于我來說,這是我個人認(rèn)為的想法,雖然不是很正規(guī),這僅是我的個人總結(jié);總的來說這次實習(xí)給了我很多思考的空間去思考;同時還要感謝老師在我遇到困難時給了我們及時的解答,使我們更為深刻地明白了設(shè)計的思想和思路,懂得了很多在課堂內(nèi)得不到的知識,通過動手實踐證實了經(jīng)驗的重要性,做到理論與實踐相結(jié)合才是唯一真理。 在設(shè)計過程中,我通過查閱大量有關(guān)資料,與同學(xué)交流經(jīng)驗和自學(xué),并向老師請教等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個設(shè)計中我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。雖然這個設(shè)計做的也不太好,但是在設(shè)計過程中所學(xué)到的東西是這次實習(xí)的最大收獲和財富,使我終身受益。 參考文獻(xiàn) [1] 高頻電子線路(第五版) 張肅文 主編 [2] 數(shù)字電子技術(shù)簡明教程(第三版) 余孟嘗 主編 [3] 電路(第五版) 邱關(guān)源 原著 [4] 模擬電子技術(shù)基礎(chǔ)簡明教程(第三版) 楊素行 主編 [5] 新概念51單片機(jī)c語言教程 郭天詳 編著- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 單片機(jī) 萬年歷 實習(xí) 報告
鏈接地址:http://www.3dchina-expo.com/p-6497336.html