單片機(jī)技術(shù)萬年歷項目設(shè)計方案_第1頁
單片機(jī)技術(shù)萬年歷項目設(shè)計方案_第2頁
單片機(jī)技術(shù)萬年歷項目設(shè)計方案_第3頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)技術(shù)萬年歷項目設(shè)計方案1 緒論1.1 背景及意義在當(dāng)代繁忙的工作生活中, 時間與我們每一個人都有非常密切的關(guān)系, 每個 人都受時間的影響。 隨著社會科技的發(fā)展, 人類得知時間, 能夠了解其他與人類 密切相關(guān)的信息,比如溫度,星期等。電子萬年歷誕生了,它集時間、日期、星 期和溫度功能于一身, 具有讀取方便、 電路簡潔等諸多優(yōu)點(diǎn)。 隨著大規(guī)模集成電 路的出現(xiàn),給人類生活帶來了許多改變。 尤其是單片機(jī)技術(shù), 嵌入式產(chǎn)品的普及, 各類應(yīng)用產(chǎn)品已經(jīng)走進(jìn)千家萬戶。 電子萬年歷的出現(xiàn)給人們的生活帶來了諸多的 方便,現(xiàn)在內(nèi)嵌于各種電子產(chǎn)品中,具有廣闊的市場前景。目前的萬年歷功能擴(kuò)展了諸如定時自動報警、

2、鬧鐘、定時廣播、 自動啟閉路 燈、定時開關(guān)烤箱、開斷各種家庭電氣等。但是所有的功能,都是以鐘表數(shù)字化 為基礎(chǔ)的。因此,萬年歷的擴(kuò)展功能及其應(yīng)用十分豐富。中國電子產(chǎn)業(yè)發(fā)展 出 現(xiàn)的問題中, 許多情況不容樂觀, 如產(chǎn)業(yè)結(jié)構(gòu)不合理, 產(chǎn)業(yè)集中于勞動密集型產(chǎn) 品。技術(shù)密集型產(chǎn)品明顯落后于發(fā)達(dá)國家。 生產(chǎn)要素決定性作用正在削弱, 產(chǎn)業(yè) 能源消耗大、產(chǎn)出率低、壞境污染等。隨著科技的快速發(fā)展,時間的流逝,從觀太陽,擺鐘到現(xiàn)在電子鐘,人類不 斷研究,不斷創(chuàng)新紀(jì)錄。它可以對年、月、日、時、分、秒進(jìn)行計時,還具有閏 年補(bǔ)償?shù)榷喾N功能。對于電子萬年歷采用直觀的LCD液晶顯示,可同時顯示年、月、日、時、分、秒和溫度等

3、信息,還具有時間校準(zhǔn)等功能。此萬年歷具有讀取方便,顯示直觀,功能多樣,電路簡潔,成本低廉等諸多 優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。1.2 設(shè)計主要工作萬年歷系統(tǒng)基本方案選擇與論證, 硬件電路的設(shè)計與實(shí)物制作, 各模塊軟件 編寫與調(diào)試等是設(shè)計的幾個主要工作。分別要對核心控制芯片、顯示器、溫濕度傳感器、時鐘芯片、控制鍵盤等進(jìn) 行選擇論證,得出最終總體設(shè)計方案。硬件電路以AT89S52單片機(jī)最小系統(tǒng)做基 礎(chǔ),外加多個相應(yīng)擴(kuò)展電路模塊, 構(gòu)成萬年歷系統(tǒng)。 外圍模塊分別是 ISP 下載模 塊、LCD12864液晶顯示器模塊、DS1302時鐘模塊、DHT11溫濕度傳感模塊、紅 外遙控模

4、塊(接收電路模塊 ,傳輸電路模塊 ,中央控制器 (8031), 信號調(diào)理電路模 塊,數(shù)據(jù)存儲和應(yīng)用程序)等。軟件采用C語言程序設(shè)計,對各模塊用Keil軟件 在計算機(jī)上分別進(jìn)行設(shè)計調(diào)試, 得出結(jié)果。 各模塊軟件設(shè)計成功之后, 再對其進(jìn) 行模塊化,最終將各模塊組合得到系統(tǒng)總的軟件設(shè)計程序。2 設(shè)計思想與方案2.1 設(shè)計思想 萬年歷是單片機(jī)控制技術(shù)的一個具體應(yīng)用,為了實(shí)現(xiàn)系統(tǒng)的大眾化,界面的 友好性出發(fā)。主要研究內(nèi)容包括以下幾個方面:(1)根據(jù)選用的萬年歷設(shè)計外圍電路確定單片機(jī)接口電路。(2)在硬件設(shè)計時,結(jié)構(gòu)要盡量簡單實(shí)用、易于實(shí)現(xiàn),使系統(tǒng)電路盡量簡 單。(3)在設(shè)計時盡可能減小硬件電路的復(fù)雜度,

5、 能用程序設(shè)計實(shí)現(xiàn)就采用程 序設(shè)計進(jìn)行。(4)根據(jù)硬件電路,在萬能板上完成器件的焊接。(5)根據(jù)單片機(jī)的接口電路,編寫控制 AT89S52芯片的程序。( 6) 通過編程、編譯、調(diào)試,把程序燒入單片機(jī)上運(yùn)行,并測試其功能。(7) 在軟件程序設(shè)計時,盡量考慮提高人機(jī)交互界面的友好,方便用戶操 作等因素。2.2 設(shè)計方案及原理按照系統(tǒng)設(shè)計的要求和功能, 將系統(tǒng)分為單片機(jī)模塊、 下載電路、 復(fù)位電路、晶振電路、LCD顯示模塊、電源電路幾個模塊,系統(tǒng)框圖如圖1所示。供電模塊/ LCD顯示模塊紅外模塊下載電路單片機(jī)模塊晶振電路復(fù)位電路圖1系統(tǒng)框架圖萬年歷系統(tǒng)的工作原理:單片機(jī)控制電路,顯示電路以及紅外遙控

6、電路。由 單片機(jī)控制的萬年歷以及時間顯示,當(dāng)時間及秒計數(shù)計滿60時就向分進(jìn)位,分計數(shù)器計滿60分后向時計數(shù)器進(jìn)位,小時計數(shù)器按“ 24翻1”規(guī)律計數(shù)。時、 分、秒的計數(shù)結(jié)果經(jīng)過數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計時發(fā)生誤差的時候可以用校時電路進(jìn)行校正。時計數(shù)器計滿 24小時后自動向日計數(shù)器進(jìn)一,日計數(shù) 器由平年、閏年的28/30/31對大、小月和二月的判斷應(yīng)與當(dāng)月相應(yīng)的日期相一 致,當(dāng)日計數(shù)器計滿時,向月計數(shù)器進(jìn)位,月計數(shù)器計滿12月向年計數(shù)器進(jìn)位, 當(dāng)年計數(shù)器計滿100時所以計數(shù)器清零。設(shè)計采用的是年、月、日和時、分、秒、 星期顯示,所以在單片機(jī)通過對數(shù)據(jù)處理進(jìn)行同時在液晶上顯示。3 系統(tǒng)硬件的

7、設(shè)計3.1 主要器件介紹3.1.1 AT89S52 單片機(jī)AT89S52單片機(jī)是Atmel公司制造的,其片內(nèi)ROM全部采用Flash存儲器, 具有8KBROM存儲空間,可以工作在3V的超低電壓環(huán)境中,并且與 MCS-51系列 單片機(jī)完全兼容, 它具備 ISP 在線編程技術(shù), 可以實(shí)現(xiàn)在設(shè)計中對修改后程序擦 除與燒入。設(shè)計采用的是雙列直插式 AT89S52單片機(jī),并運(yùn)用活扣鎖緊座,方便 對芯片進(jìn)行拔插,以防止對芯片的機(jī)械損壞,方便設(shè)計使用。AT89S52單片機(jī)共40個引腳,4個I/O 口線,每個口線都有8位,同時具有 3 個定時器 /計數(shù)器, 2 個數(shù)據(jù)指針,串行通信線路形式是全雙工形式。除此之

8、外,單片機(jī)還有兩種節(jié)電模式。在空閑模式情況下,CPL是停止工作的,但是其內(nèi)部模塊仍然可以繼續(xù)工作,如RAM定時器/計數(shù)器、串口以及中斷等都可以工作。在使用掉電保護(hù)情況下,單片機(jī)會把RAM的內(nèi)容保存好,振蕩 器將會停止工作, 這就意味著單片機(jī)會停止所有工作, 要想重新開始工作就要等 到下一個中斷或者硬件復(fù)位信號到來。如圖 2為AT89S52單片機(jī)的引腳圖。fl.:.1PLl RHRM£UPl.CfT7GXD MCU 2D3%PJ JKL1P3 7P1 0?0 2PL1PO.JPl_2Pti.4PI3Pll.5P1APD.fiP:.5T0.7Pl .6Pl.7P2.0P2.LP'

9、-P2.2P23 P2AP3.4(T0P2_5P3.5CTI)P2.fiP2.7X2XLPJOiKXD) 蘆:iTXD)RESCETvccF-.7( KU JALEPRCXiPSEXAT89Si:圖2 AT89S52單片機(jī)的引腳圖0 41 ? P9 PSENPJ-?Q PO.C5 Pi-I -/ PU.2P2.0ED尹-10 PO 匕P£L IJ 1 .L3.1.2 LCD12864液晶顯示屏LCD12864顯示屏是FYD12864-0402B型一種,它本身不能發(fā)光顯示,顯示原 理是反射自然光而形成字符顯示。液晶顯示模塊有多種接口方式,如:2線或3線串行以及4位或8位并行等接口方式,

10、它的PSB引腳可控制并行和串行通信方 式,PSB引腳接高電平進(jìn)行并行通信,接低電平進(jìn)行串口通信,通過對其靈活的 接線和指令操作就能完成。內(nèi)部配置了 16 * 16點(diǎn)的漢字共8192個,此外,還配 置了 8個6 * 8分ASCII字符集、內(nèi)部存在的簡化漢字點(diǎn)陣圖形都是屬于國家一 級和二級標(biāo)準(zhǔn)的,顯示分辨率為128*64。液晶顯示屏顯示字符方便人們清晰地觀 察,并可對其軟硬件進(jìn)行方便的調(diào)試工作。 通過各方面比較,其硬件電路的搭建 也比其他相同類型的顯示器電路要簡單,價格也較便宜,并且它還具有低電壓、 低功耗、高清顯示等顯著優(yōu)點(diǎn)。實(shí)物圖外觀如圖3所示。圖3 LCD12864液晶顯示屏3.1.3 DS

11、1302 時鐘芯片DS1302芯片來產(chǎn)自DALLAS公司,設(shè)計中使用3.6 V鋰電池對其涓流充電提 供電源。它共有八個引腳,各引腳分別是供電、連接外部時鐘信號、接收復(fù)位信 號、與單片機(jī)進(jìn)行串口通信等功能,與單片機(jī)相連的引腳有三個,分別是CE復(fù)位引腳,I/O數(shù)據(jù)線引腳和CLK串行時鐘引腳。它內(nèi)部具有完整的時鐘和日歷以 及31字節(jié)靜態(tài)RAM等信息,通過單片機(jī)與其通信,采集時間數(shù)據(jù),然后對數(shù)據(jù) 進(jìn)行處理,就能得到各種時間信息。時鐘有12/24小時格式,通過對AM/PM!行 指示,就能選擇想要設(shè)定的格式,一般選用 24小時制。DS1302時鐘芯片的最大 特點(diǎn)之一,是它除了能對每個月的天數(shù)進(jìn)行調(diào)整,還能

12、對閏年天數(shù)進(jìn)行自動調(diào)整, 這樣就減少了軟硬件上的復(fù)雜度。硬件設(shè)計比較簡單,只需給DS1302芯片提供工作的正常電壓和正常時鐘信號即可。并且它還具有高精度、低功耗等特點(diǎn),在 進(jìn)行工作時功耗小于1mW/它的引腳圖排列如圖4所示。22343.1.4 HS0038紅外接收頭Vccldo" I SCID 1 2 N zv > J y- y (DS1302CLKI/OCE圖4 DS1302引腳圖紅外接收頭HS0038采用一體化設(shè)計,具有對信號放大、檢波、整形等一系 列功能,從而產(chǎn)生需要的TTL電平的編碼信號。它采用黑色環(huán)氧樹脂封裝,日光、紫外光、電燈熒光等自然光源對其一般產(chǎn)生不了干擾。 同

13、時它還具有磁屏蔽功能, 其周圍的磁場對其也沒有影響。 以上設(shè)計使它具有非常高的靈敏度, 還能接收較 遠(yuǎn)距離的信號,一般接收距離可達(dá)35m左右。它有三個引腳,分別是接5V電源、 接地以及解調(diào)信號輸出引腳。它的管腳排列如圖 5所示。圖5 HS0038 管腳圖圖 5 蜂鳴器3.2 硬件單元電路的設(shè)計3.2.1 直流穩(wěn)壓電源電路萬年歷系統(tǒng)的各個模塊的功能實(shí)現(xiàn)首先必須要有一個穩(wěn)定可靠的電源, 能夠 讓各個模塊穩(wěn)定的工作。為了能方便獲取所需電壓 +5V,采用變壓器將市電電壓 降壓至12V交流電,然后通過整流、濾波、穩(wěn)壓、濾波給系統(tǒng)提供穩(wěn)定的電源。 電路原理圖詳見附錄。電源電路先選用電源變壓器變比 K=22

14、0V/12V將電網(wǎng)電壓降到12V,降壓后 的交流電壓通過整流電路變換為單向脈動電壓。 其整流元件如: 晶體二極管、 電 子二極管或晶閘管等構(gòu)成整流橋(選取全橋正向電流為2A,耐壓值為25V即可)。 整流后的電壓再經(jīng)過濾波器減小其脈動程度以符合負(fù)載的需要。 濾波電路一般由 電容(取2200pF即可)組成,利用電容充放電的原理把脈動電壓中大部分紋波 加以濾除得到較平滑的直流電壓。 將濾波后的直流電壓通過穩(wěn)壓電路, 一般采用 穩(wěn)壓芯片(LM7805等)的方式以得到穩(wěn)定的直流輸出電壓。最后在經(jīng)過一道濾 波電路(一般取0.1 yF電容)使得電壓的紋波更加穩(wěn)定。3.2.2 AT89S52 單片機(jī)最小系統(tǒng)

15、一塊單片機(jī)的最小系統(tǒng)包括:一個可靠的電源(直流穩(wěn)壓電源) 、一個穩(wěn)定的晶體震蕩電路、 復(fù)位電路、 下載電路。 通過以上組合的單片機(jī)系統(tǒng)才能正常的 按照所寫的程序來執(zhí)行操作。( 1 )下載電路萬年歷系統(tǒng)選擇的單片機(jī)是AT89S52所以下載方式為ISP下載,即在線編 程,可直接將單片機(jī)電路制作好, 通過計算機(jī)完成燒寫程序。 同時也可以采用下 載電路對系統(tǒng)供電。ISP下載是基于串行傳輸方式,并且符合 SPI協(xié)議。下載電 路如圖 6 所示。vcc<iND圖6 ISP下載電路(2)晶振電路單片機(jī)只有滿足相應(yīng)的時鐘信號才能進(jìn)行工作,晶振電路結(jié)合單片機(jī)內(nèi)部的電路,產(chǎn)生單片機(jī)所必須的時鐘頻率,單片機(jī)的一

16、切指令的執(zhí)行都是建立在這個 基礎(chǔ)上的,晶振的提供的時鐘頻率越高,那單片機(jī)的運(yùn)行速度也就越快。 通過在 AT89S52的XI、X2引腳上接入12MHZ勺石英晶振外加兩個負(fù)載電容器(電容器根 據(jù)經(jīng)驗一般取30pF)組成的電路為單片機(jī)提供時鐘信號。采用12MHZ勺晶振能更 好的實(shí)現(xiàn)對萬年歷的走時功能,所以使用12MHZ勺晶體晶振為系統(tǒng)單片機(jī)提供必 要的時鐘信號。時鐘電路如圖7所示。CICapXI33pF_rHviT 12MHZ X2fMC2rIICapGND33pF圖7晶振電路(3)復(fù)位電路單片機(jī)復(fù)位有上電復(fù)位、按鍵復(fù)位,當(dāng)出現(xiàn)死機(jī)和運(yùn)行錯誤的時候一般采用 按鍵方式對單片機(jī)進(jìn)行復(fù)位操作。萬年歷的復(fù)位

17、信號產(chǎn)生使用上電加按鍵復(fù)位, 當(dāng)系統(tǒng)上電時,按鍵并聯(lián)的電解電容(取 22卩F)開始充電,單片機(jī)復(fù)位引腳為 高電平,電容充電完成后由于電容的特性,復(fù)位引腳被下拉電阻(取1KQ)拉為低電平。根據(jù)電容容值的選擇可確定電容充電時間,完成復(fù)位操作。往后系統(tǒng)正常運(yùn)行,可使用按下按鍵由電阻(200Q和1KQ)分壓得到約4.17V的電壓, 符合TTL (Transistor-Transistor Logic,晶體管-晶體管邏輯電平)邏輯高,使得復(fù)位引腳進(jìn)行復(fù)位操作。復(fù)位電路圖如圖 8所示圖8復(fù)位電路323 紅外模塊電路紅外模塊電路由紅外發(fā)射電路、紅外接收電路和紅外遙控器組成。紅外發(fā)射 電路部分由一個發(fā)射管、2

18、個9012三極管和4個4.7K的電阻組成,發(fā)射管在發(fā) 射數(shù)據(jù)的過程中,將會達(dá)到幾十mA的電流,也就是說發(fā)射功率會達(dá)到mW級。但 是其自身并不能達(dá)到發(fā)射功率的要求,還需要借助9012三極管,放大電流驅(qū)動紅外發(fā)射管,才能達(dá)到基本發(fā)射要求。一般情況下,信號會被調(diào)制在38KHZ的載 波上,然后,由紅外發(fā)射管將已調(diào)制的信號發(fā)送出去。故載波由單片機(jī)定時器產(chǎn) 生提供。紅外接收電路部分由1個紅外接收器、1個100UF電解電容、1個200Q電 阻和1個100UF的瓷片電容組成。其采用的集成紅外接收器,即一體化紅外信號 接收頭HS0038它集紅外接收、放大信號、信號整形與處理功能于一身。通常 不需要外部其他設(shè)備,

19、就能實(shí)現(xiàn)紅外接收等工作。例如:輸出TTL電平。它只有3個引腳,分別是電源、公共地以及脈沖信號輸出。紅外接收器將接收到的紅外 信號進(jìn)行解調(diào),然后直接送至單片機(jī)進(jìn)行信號處理。INFIN引腳與單片機(jī)P3.2相連,通過單線傳輸接收到的紅外信號。紅外鍵盤即為紅外遙控器,它及多種模塊電路和程序存儲器于一體, 通過計 算機(jī)編程技術(shù)就能在系統(tǒng)中實(shí)現(xiàn)相應(yīng)的鍵值功能,其具有遠(yuǎn)距離操作、操作簡單、 傳輸信號快等特點(diǎn)。紅外模塊電路如圖 9所示。圖9紅外模塊電路324顯示電路12864 液晶是一種具有4位/8位并行,2線或3線串行多種接口方式,內(nèi)部 含有國標(biāo)一級,二級簡體文字庫的點(diǎn)陣圖形液晶顯示模塊:其顯示分辨率為12

20、8X 64,內(nèi)置128個16*16點(diǎn)文字,和128個16*8點(diǎn)ASCII字符集,利用該模塊 靈活的接口方式和簡單,方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。 可 以顯示8X 4行16X 16點(diǎn)陣的漢字,也可完成圖形顯示。低電壓低功耗是其又一 其基本特性如下:低電源電壓(VDD +3.0+5.5V)顯示分辨率:128X 64點(diǎn)內(nèi)置漢字字庫,提供8192個16X 16點(diǎn)陣漢字內(nèi)置128個16X 8點(diǎn)陣字符2MHZ寸鐘頻率顯示方式:STN,半透,正顯驅(qū)動方式:1/32DUTY 1/5BIAS視角方向:6點(diǎn)背光方式:側(cè)部高亮白色LED功耗僅為普通的LED的1/5 1/10通訊方向:串行,并行可選內(nèi)

21、置DC DC轉(zhuǎn)換電路,無需外加負(fù)壓無需片選信號,簡化軟件設(shè)計工作溫度:零度到55度,存儲溫度:負(fù)20度到60度。而本設(shè)計將采用的是并行接口,及見圖10所示。圖10 128 X 64液晶電路我們用單片機(jī)來進(jìn)行控制。它可以很直觀的用來顯示年、月、日、時、分、秒及 星期,單片機(jī)與LCD的接口電路如圖11所示。'XFAI1xrALJRS7P1.0IT2 pi irraEM P1J2P1JPI 4PI .5PI .is PI I罰 O JADD PaiJApI paan? 闔U嵐M 30 4JAM 刊土uaSO fl JADEPCI7JAP7P?DM6 P2IA9P2咖IP2 iW ? i=2

22、5fA13 P2咖斗 S=2TW15P3.MXDP3.MXD FJ.21NT0 對4llPS.t/ARR3H莎3Z亠35膽£32ttrrrrrrH圖11接口電路3.3 原理圖見附錄A3.4 元器件清單 見附錄C4 系統(tǒng)的軟件設(shè)計4.1 主程序設(shè)計軟件部分主要有以下模塊程序設(shè)計:LCD12864液晶顯示程序、日期及時間 顯示程序、時間調(diào)整程序、紅外接收程序等。設(shè)計主程序包括系統(tǒng)初始化、 判按鍵狀態(tài)、 日期及時間設(shè)置等。 主程序流程 圖如圖 12 所示圖12主程序流程圖4.2 子程序設(shè)計在進(jìn)行程序開發(fā)時,不可以隨意設(shè)計,需要對系統(tǒng)進(jìn)行整體分析,考慮系統(tǒng) 板上的硬件資源,得出多種方案,以最

23、優(yōu)方案進(jìn)行設(shè)計。在軟件設(shè)計過程中,選 擇模塊化的設(shè)計方法,依次為每一個模塊進(jìn)行軟件設(shè)計,這樣不僅方便設(shè)計者對 程序設(shè)計和修改,還方便閱讀者讀懂程序。接下來將分別介紹各個模塊的程序設(shè) 計。4.2.1 液晶顯示程序設(shè)計液晶顯示LCD12864有兩種工作方式:并行通信方式和串行通信方式。設(shè)計采用串行通信工作方式。軟件設(shè)計包括系統(tǒng)初始化、液晶初始化、液晶讀/寫時圖13液晶顯示流程圖422 日期及時間程序的設(shè)計單片機(jī)從DS1302時鐘芯片的寄存器中讀取數(shù)據(jù),通過LCD12864將數(shù)據(jù)顯示 出來。在軟件設(shè)計的過程中,需要編寫DS1302的初始化程序,讀/寫時序和液晶顯 示模塊程序。單片機(jī)與時鐘芯片通信過程

24、中,時鐘周期表現(xiàn)為上升沿時序 ,緊隨 其后的是一個下降沿。數(shù)據(jù)在上升沿期間輸入,在下降沿期間輸出。數(shù)據(jù)需保持 正確。復(fù)位端為低電平時,將終止所有數(shù)據(jù)的傳輸。I/O 口線呈高阻態(tài)。日期及 時間程序設(shè)計流程圖如圖14所示。4.2.3 紅外接收程序設(shè)計系統(tǒng)程序設(shè)計要求就是把接收到的紅外信號進(jìn)行解碼,采用軟件編程把接收到的信息解碼。解碼系統(tǒng)分別由單片機(jī)定時器、夕卜部中斷以及軟件的紅外遙控接 收等程序組成。測量兩個脈沖串間的間隔由單片機(jī)的定時器來完成,紅外脈沖信號接收由接收器完成,利用外部中斷觸發(fā)定時器,之后接收管接收到脈沖信號, 觸發(fā)外部中斷可用程序?qū)崿F(xiàn)。外部中斷啟動定時器,在時間間隔的同時,進(jìn)行采

25、樣,采樣脈沖代碼存儲到RAM變量中。紅外接收器使用集成 HS0038接收頭。程 序設(shè)計部分分別是中斷初始化、接收數(shù)據(jù)及鍵碼處理等。紅外接收流程圖如圖15所示。開始讀取DS130秒值Y ID丁2|時鐘芯片關(guān)閉.N寫入允許寫入初始化時間寫入禁止r獲取時鐘芯片時間T時間、日期轉(zhuǎn)化為液晶顯示J圖14日期及時間程序設(shè)計流程圖圖15紅外接收流程圖4.2.4 時間調(diào)整程序的設(shè)計時間調(diào)整用紅外鍵盤控制, 就需要編寫相應(yīng)的調(diào)整程序。 當(dāng)要對時間調(diào)整時, 首先進(jìn)入設(shè)置時間程序,按數(shù)字鍵“ 1”則就可以進(jìn)入,通過按鍵“ EQ就可以 對相應(yīng)的年、月、日、時、分、秒、星期等具體時間進(jìn)行選擇,按 10個數(shù)字鍵 0、1、2

26、、3、4、5、6、7、8、9 就可對其具體調(diào)整,調(diào)整完成后可選擇按鍵“ CH” 確認(rèn)進(jìn)入顯示程序,或者按鍵“ -”返回設(shè)置和運(yùn)行程序。為了保證以上指令的 有效實(shí)現(xiàn), 還需要在程序設(shè)計中屏蔽掉紅外鍵盤上其他沒有用到的按鍵, 否則會 對操作產(chǎn)生一定的影響。在時間調(diào)整的過程中, 為了與沒有調(diào)整的時間區(qū)別開來, 還設(shè)置了調(diào)整閃爍 的功能, 直到調(diào)到下一位, 才取消閃爍。 閃爍功能的原理是根據(jù)每個調(diào)整位的需 要,對其送亮滅的指令信息。間隔時間為50ms禾I用定時器的溢出標(biāo)志位,當(dāng)發(fā)現(xiàn)定時器溢出時,送“熄滅”字符指令,等到下一次溢出時,再送“亮”的字 符指令,這樣,依次進(jìn)行不斷交替循環(huán),直到調(diào)整位結(jié)束。時

27、間調(diào)整程序流程圖 如圖 16 所示。5系統(tǒng)調(diào)試及結(jié)果分析5.1 系統(tǒng)調(diào)試隨后在計算把每個電路模塊與單片機(jī)最小系統(tǒng)連接起來,組成萬年歷系統(tǒng)機(jī)上安裝ISP在線下載器驅(qū)動,把萬年歷系統(tǒng)板與計算機(jī)通過下載線相連, 給系 統(tǒng)上電,打開程序下載軟件(progisp),選擇單片機(jī)AT89S52并調(diào)入Flash文 件,點(diǎn)擊自動,程序就被下載進(jìn)入單片機(jī)了。拔掉下載線,使用 USE電源線給系 統(tǒng)板供電。觀察現(xiàn)象,得出結(jié)論。5.2 系統(tǒng)調(diào)試結(jié)果系統(tǒng)上電后,液晶顯示器上顯示主界面“”等字符,接著自動跳入菜單欄界 面。顯示主界面如圖17所示。歷歷歷 iWF年示 萬萬萬顯仃歷 養(yǎng)運(yùn)農(nóng) 12 3圖17顯示主界面圖通過紅外遙

28、控器選擇對系統(tǒng)進(jìn)行時間校正,按數(shù)字鍵 1進(jìn)入萬年歷設(shè)置界面,按數(shù)字鍵2可進(jìn)入萬年歷運(yùn)行界面,按數(shù)字鍵3可進(jìn)入萬年歷農(nóng)歷顯示界面按下數(shù)字鍵1,進(jìn)入設(shè)置萬年歷,對現(xiàn)有的時間顯示進(jìn)行調(diào)整,完成后按確認(rèn)鍵“CH。返回菜單欄界面,按下數(shù)字鍵2,進(jìn)入運(yùn)行萬年歷就能顯示所有的信息。 設(shè)置和運(yùn)行界面如圖22所示。200901 月 EIL 日 陽時BO分師秒 星期J f 確認(rèn)CH EQ劈滋月ZS日15時32分2妙嚴(yán)護(hù)日圖18 設(shè)置和運(yùn)行界面5.3 設(shè)計結(jié)論萬年歷系統(tǒng)經(jīng)調(diào)試,測試后,完成了年、月、日、時、分、秒的顯示和走時, 而且可以任意設(shè)置成想要的日期和時間。 并且還額外添加了溫度檢測,溫度上限 報警的功能。由

29、上述運(yùn)行結(jié)果分析來看各項要求足以滿足設(shè)計任務(wù)書的要求。5.4 設(shè)計課題的誤差缺陷和改進(jìn)分析在萬年歷系統(tǒng)中的走時模塊是使用的單片機(jī)內(nèi)部的定時計數(shù)器,所以系統(tǒng)的時間在經(jīng)過校正后還是有一定誤差。所以在實(shí)際應(yīng)用中最好是使用一塊實(shí)時時鐘 芯片進(jìn)行走時。相對于定時器誤差較小。系統(tǒng)的時間一旦掉電后就會造成丟失, 也是可以通過一塊實(shí)時時鐘芯片解決。萬年歷系統(tǒng)中歡迎界面的持續(xù)時間存在一定誤差, 系統(tǒng)中歡迎界面的維持是 通過純延時的方式實(shí)現(xiàn),所以有一定誤差。在高級應(yīng)用中添加實(shí)時時鐘芯片進(jìn)行走時誤差還是存在,這是不允許的,這 時還可以添加自動校正時間模塊。目前自動校正的方法大致有:使用 WiFi 無線 網(wǎng)絡(luò)獲取網(wǎng)絡(luò)

30、時間、使用有線網(wǎng)絡(luò)獲取網(wǎng)絡(luò)時間、使用GPS獲取當(dāng)?shù)貢r間、使用 FM調(diào)頻收音機(jī)獲取整點(diǎn)時間等等。通過以上方式獲取的時間與系統(tǒng)運(yùn)行的時間 進(jìn)行校正。5.5 設(shè)計體會萬年歷系統(tǒng)的設(shè)計是對課堂學(xué)習(xí)效果的檢驗, 同時也是對自身自學(xué)能力的檢 驗?;仡櫰鸫舜螁纹瑱C(jī)課程設(shè)計,至今我仍感慨頗多,從理論到實(shí)踐,可以學(xué)到 很多很多的的東西, 同時不僅可以鞏固了以前所學(xué)過的知識, 而且學(xué)到了很多在 書本上所沒有學(xué)到過的知識。 通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是 很重要的, 只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來, 從理論中得出結(jié)論, 才能 真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。結(jié)束語通過

31、對設(shè)計進(jìn)行了研究背景及意義的分析, 了解了研究的主要工作, 論證了 系統(tǒng)的基本方案并進(jìn)行了方案選擇, 還給出了硬軟件各模塊的設(shè)計方案, 得出了 總體設(shè)計方案。在研究的過程中通過對硬件設(shè)計仿真, 模塊調(diào)試,最終設(shè)計出了系統(tǒng)硬件實(shí) 物。對各模塊編寫了相應(yīng)的程序軟件并對其進(jìn)行調(diào)試, 分別得出各模塊結(jié)果。 把 各模塊軟件組合成了萬年歷系統(tǒng)軟件, 下載到實(shí)物中, 得出了最終結(jié)果。 系統(tǒng)能 顯示基本時間信息, 并能較準(zhǔn)確的對時間進(jìn)行調(diào)整, 還能顯示出實(shí)時環(huán)境的溫濕 度,基本滿足了設(shè)計要求。 但是由于知識水平和時間等各方面的局限, 在系統(tǒng)設(shè) 計的過程中還存在一些不足, 如陰陽歷的轉(zhuǎn)換及顯示, 溫濕度報警設(shè)定

32、等其他一 些模塊,都未能實(shí)現(xiàn)??傮w來說,設(shè)計基本完成了設(shè)計任務(wù)。參考文獻(xiàn)1 蔣敏.單片微機(jī)萬年歷設(shè)計J.職大學(xué)報,2000.81872 王銳.基于單片機(jī)的萬年歷設(shè)計J.信息技術(shù),2014.2132163 查榮.基于單片機(jī)的多功能萬年歷的設(shè)計 J. 信息技術(shù), 2012.1371394 周杏鵬. 現(xiàn)代檢測技術(shù) M. 第二版. 北京:高等教育出版社, 189 張俊.匠人手記M.北京:北京航空航天大學(xué)出版社,20084155170 宋雪松.手把手教你學(xué)51單片機(jī)M.北京:清華大學(xué)出版社,2014.1882387 李廣弟. 單片機(jī)基礎(chǔ) M. 第3版.北京:北京航空航天大學(xué)出版社, 2003.6.99

33、1568 李全利 . 單片機(jī)原理及應(yīng)用( C51 編程) M. 北京:高等教育出版社, 2012.12.115 2169 李鋼.1-Wire總線數(shù)字溫度傳感器 DS18B2C原理及應(yīng)用J.現(xiàn)代電子技術(shù), 2005.777910 馬忠梅.單片機(jī)的C語言應(yīng)用程序設(shè)計M.第4版.北京:北京航空航天大 學(xué)出版社, 2003.6.143 172致謝本設(shè)計是在賈雅瓊教授的悉心指導(dǎo)下完成的, 感謝老師表示忠心的感謝和崇 高的敬意。 感謝我的父母對我的培育。 同時還要感謝所有的同學(xué), 他們也給了我 很大的支持和幫助。 最后,感謝老師能在百忙之中對我的論文進(jìn)行審察, 由于本 人知識有限,不足之處在所難免,還請老

34、師指正。見下頁附錄原理圖附錄B:元器件清單表1萬年歷元器件清單元件名稱兀件參數(shù)數(shù)量時鐘電源3.6V1電解電容22uF2瓷片電容33pF2發(fā)光二極管1ISP下載口1排阻470 Q1溫濕度傳感器DHT111一體化紅外接收頭HS00381晶振12M1晶振32.678K1開關(guān)6角1按鍵1單片機(jī)AT89S521液晶LCD128641時鐘芯片DS13021電阻1K4電阻200 Q1電阻4.7K4排阻10K3電位器50K1附錄C: 萬年歷實(shí)物圖附錄D:程序清單/*課題名稱:萬年歷作 者:凌昇 完成時間: 2015年 7月功 能:完成萬年歷的時間顯示、農(nóng)歷轉(zhuǎn)換、調(diào)整時間等功能。使用說明:LCD12864陣SC

35、LK(E連至P37,點(diǎn)陣SID(RW連至P36,點(diǎn)陣CS(RS)連至P35,ds1302的SCk接單片機(jī)的P0A0,SDA接P0A1,RST接單片機(jī)的P0A2;型 號 :AT89S52 使用晶振為 12MHz main.c*/#include<reg52.h>#include<intrins.h>#include"lcd12864.h"#include"ds1302.h"#include"hongwai.h"#include"delay.h"#define uchar unsigned ch

36、ar#define uint unsigned intuchar IR_buf4;bit timer_flag;uchar timer_data7=13,6,4,17,23,58,46;/ 年周月日時分秒ucharfind_year3,find_month3,find_day3,find_hour3,find_minute3,fi nd_second3;uchar weektable14=" 一二三四五六日 "uchar week_scan3;ucharfind_hongwai10=0x16,0x0c,0x18,0x5e,0x08,0x1c,0x5a,0x42,0x52,0

37、x4a;uchar find_data3;/* 函數(shù)名 : void timer_chuli(void)*功能 :處理讀取的BCD碼轉(zhuǎn)換成十進(jìn)制* 輸入?yún)?shù):無* 輸出參數(shù):無*/void timer_chuli(void)find_year0=timer_data0/16+'0'find_year1=timer_data0%16+'0'find_year2='0'/ 年 分離出十位/ 年 分離出個位find_month0=timer_data2/16+'0' find_month1=timer_data2%16+'0&#

38、39; find_month2='0'/ 月 分離出個位/ 月 分離出十位find_day0=timer_data3/16+'0' find_day1=timer_data3%16+'0' find_day2='0'/ 日 分離出十位 / 日 分離出個位find_hour0=timer_data4/16+'0' /find_hour1=timer_data4%16+'0' /時 分離出個位 時 分離出十位find_hour2='0'find_minute0=timer_data5/1

39、6+'0'/ 分 分離出十位/ 分 分離出個位/ 秒 分離出個位/ 秒 分離出十位find_minute1=timer_data5%16+'0'find_minute2='0'find_second0=timer_data6/16+'0' find_second1=timer_data6%16+'0' find_second2='0'void find_zhuanhuan(void)timer_data0=(timer_data0/16)*10+timer_data0%16;timer_data1=

40、(timer_data1/16)*10+timer_data1%16;timer_data2=(timer_data2/16)*10+timer_data2%16;timer_data3=(timer_data3/16)*10+timer_data3%16;timer_data4=(timer_data4/16)*10+timer_data4%16;timer_data5=(timer_data5/16)*10+timer_data5%16;timer_data6=(timer_data6/16)*10+timer_data6%16;* 函數(shù)名* 功能 :* 輸入?yún)?shù): void InitTi

41、mer0(void) 初始化定時器 1無* 輸出參數(shù):無*'void InitTimer0(void)EA = 1;ET1 = 1;TMOD |= 0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;void data_chuli(uchar src)find_data0=src/16+'0'find_data1=src%16+'0'find_data2='0'year_panduan(void)uchar year;year=20*100+timer_data0;if( (0 = year%

42、4)&&(0 != year%100) |(0 = year %400) ) return 1;/ 滿足該條件的 yeat 就是閏年。return 0;uchar month_panduan(void)uchar M;M=timer_data2;switch(M)case 1: return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 5:return 5;case 6:return 6;case 7:return 7;case 8:return 8;case 9:return 9;case 10:return

43、10;case 11:return 11;case 12:return 12;return 0;void week_huansuan(void)uchar c,y,m,d,w;c=20;y=timer_data0;m=timer_data2;d=timer_data3;w=(c/4)-2*c+y+(y/4)+(26*(m+1)/10)+d-1)%7;timer_data1=w;week_scan0=weektable2*(timer_data1-1);week_scan1=weektable2*(timer_data1-1)+1;week_scan2='0'lcd12864_d

44、isplay(3,3,week_scan);*劉main()uchar k,cent,i,h,h1,Y,m; lcd12864_init(); init_INT0();InitTimer0(); Delay_ms(1800); send_command(0x01);TR1=1;while(1)k=IR_buf2;IR_buf2=0;switch(k)case 0x00:lcd12864_display(1,3,"lcd12864_display(2,2,"1.基本萬年歷 "); 設(shè)置萬年歷");lcd12864_display(3,2,"2.運(yùn)

45、行萬年歷");break;case 0x0c:send_command(0x01);read_rtc();lcd12864_display(1,1,"20lcd12864_display(2,3,"日"); 時 分 秒 ");年月lcd12864_display(3,1,"lcd12864_display(4,1,"星期"); 返回-");lcd12864_display(4,4,"確認(rèn) CH");lcd12864_display(4,8,"EQ");timer_c

46、huli();lcd12864_display(1,2,find_year);lcd12864_display(1,4,find_month);lcd12864_display(1,6,find_day);lcd12864_display(2,3,find_hour);lcd12864_display(2,5,find_minute);lcd12864_display(2,7,find_second);week_scan0=weektable2*(timer_data1-1);week_scan1=weektable2*(timer_data1-1)+1;week_scan2='0&#

47、39;find_zhuanhuan();lcd12864_display(3,3,week_scan);cent=0;switch(cent)while(1)case 0:while(1)send_command(0x81); send_command(0x0d); k=IR_buf2; IR_buf2=0;if(k=0x46)|(k=0x07) break; if(k=0x09)cent=1; break;for(i=0;i<10;i+)if(find_hongwaii=k) h<<=4; h+=i;data_chuli(h);lcd12864_display(1,2,fi

48、nd_data);timer_data0=(h/16)*10+h%16;Y=year_panduan();if(timer_data2=2)if(timer_data3>28)timer_data3=28;if(Y=0)week_huansuan();break;break;case 1: h=0;while(1)send_command(0x83);send_command(0x0d); k=IR_buf2; IR_buf2=0;if(k=0x46)|(k=0x07)break; if(k=0x09) cent=2; break; if(k=0x16)|(k=0x0c)|(k=0x18

49、)|(k=0x5e)|(k=0x08)|(k=0x1c)|(k=0x5a)|(k=0x42)|(k=0x52)|(k=0x4a)for(i=0;i<10;i+)if(find_hongwaii=k)h<<=4;h+=i;h1+; if(h1=2)h1=0;if(h>0x12)h=0x12;data_chuli(h);lcd12864_display(1,4,find_data);timer_data2=(h/16)*10+h%16;break;week_huansuan();break;case 2: h=0;while(1)if(k=0x46)|(k=0x07)sen

50、d_command(0x85); send_command(0x0d); k=IR_buf2; IR_buf2=0;break;if(k=0x09)cent=3;break;if(k=0x16)|(k=0x0c)|(k=0x18)|(k=0x5e)|(k=0x08)|(k=0x1c)|(k=0x5a)|(k=0x42)|(k=0x52)|(k=0x4a)for(i=0;i<10;i+)if(find_hongwaii=k)h<<=4; h+=i; h1+;if(h1=2)h1=0;m=month_panduan();if(m=1)|(m=3)|(m=5)|(m=7)|(m=8

51、)|(m=10)|(m=12) if(h>0x31)h=0x31;if(m=2)Y=year_panduan();if(Y=1)if(h>0x29)h=0x29;if(Y=0)if(h>0x28)h=0x28; if(m=4)|(m=6)|(m=9)|(m=11)if(h>0x30)h=0x30;data_chuli(h);lcd12864_display(1,6,find_data);timer_data3=(h/16)*10+h%16;week_huansuan();break; break;case 3: h=0;while(1)send_command(0x92); send_command(0x0d); k=IR_buf2;IR_buf2=0;if(k=0

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論