基于單片機的電子萬年歷設(shè)計_第1頁
基于單片機的電子萬年歷設(shè)計_第2頁
基于單片機的電子萬年歷設(shè)計_第3頁
基于單片機的電子萬年歷設(shè)計_第4頁
基于單片機的電子萬年歷設(shè)計_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGEII基于單片機的電子萬年歷設(shè)計編號:畢業(yè)設(shè)計(論文)說明書課題名稱:基于單片機的電子萬年歷設(shè)計 院(系):計算機工程系專業(yè):通信工程班級:通信072班學(xué)生姓名:學(xué)號:指導(dǎo)教師:基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第1頁。2011基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第1頁。PAGE20指導(dǎo)老師袁浩浩講師通信072黃董摘要電子萬年歷是一種應(yīng)用非常廣泛日常計時工具,對現(xiàn)代社會越來越重要。此電子萬年歷在硬件方面主要采用STC89C52單片機作為主控核心,由DS1302時鐘芯片提供時鐘、1602LCD液晶顯示屏顯示。STC89C52單片機是由Atmel公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時鐘芯片是美國DALLAS公司推出的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差小;對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,數(shù)字顯示是采用的1602LED液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。此外,該電子萬年歷還具有時間校準等功能。在軟件方面,主要包括日歷程序、時間調(diào)整程序,顯示程序等。所有程序編寫完成后,在Keil軟件中進行調(diào)試,確定沒有問題后,燒寫到單片機上進行測試。此設(shè)計主要由時鐘芯片DS1302和溫度傳感器DS18B20采集數(shù)據(jù)到單片機進行處理再通過LCD1602顯示出來,本論文主要研究了液晶顯示器LCD及時鐘芯片DS1302,溫度傳感器DS18B20與單片機之間的硬件互聯(lián)及通信,對數(shù)種硬件連接方案進行了詳盡的比較,在軟件方面對日歷算法也進行了論述。關(guān)鍵詞:單片機;DS1302;DS18B20;LCD1602基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第2頁。基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第2頁。AbstractElectroniccalendarisawidelyusedtoolforthedailytime,moreandmoreimportantinmodernsociety.TheelectroniccalendarintermsofhardwareasthemaincontrolmainlySTC89C52microcontrollercore,providedbytheDS1302clockchipclock,1602LCDLCDdisplay.STC89C52microcontrollerbyAtmelintroduced,thepowerconsumption,voltagecanbeselected4~6Vvoltagepowersupply;DS1302clockchipintroducedintheUnitedStatesDALLASlow-powerrealtimeclockchip,whichcanbeyear,month,day,week,hours,minutesandsecondstime,butalsohasleap-yearcompensation,andotherfunctions,andtheDS1302'slonglife,smallerror;fordigitalelectroniccalendarusinganintuitivedigitaldisplay,digitaldisplayisused1602LEDLCDscreentodisplay,youcanalsoshowsyear,month,day,week,hours,minutes,secondsandotherinformation.Inaddition,theelectroniccalendarisalsoatimecalibrationandotherfunctions.Intermsofsoftware,includingcalendar,timetoadjustprocedures,displayprocedures.Allprogrammingiscompleted,theKeilsoftwaredebugging,makesurethatnoproblem,programmedintothemicrocontrollerfortesting.

ThisdesignmainlybytheclockchipDS1302temperaturesensortothemicrocontrollerDS18B20collectdataforprocessingandthenthroughtheLCD1602display,thisthesis,theliquidcrystaldisplayLCDandclockchipDS1302,temperaturesensorandmicrocontrollerDS18B20interconnectionandcommunicationbetweenthehardwareonSeveralhardwareconnectionschemeforadetailedcomparisonofalgorithmsinsoftwareonthecalendarhavealsobeendiscussed.Keywords:SCM;DS1302;DS18B20;LCD1602

基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第3頁。基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第3頁。目錄摘要 IAbstract II第1章緒論 11.1課題背景 11.2課題意義 11.3國內(nèi)外現(xiàn)狀及水平 1第2章基于單片機萬年歷的方案研究 22.1系統(tǒng)基本方案選擇和論證 22.1.1單片機芯片的選擇 22.1.2顯示模塊選擇方案和論證 32.1.3時鐘芯片的選擇方案和論證 32.1.4溫度傳感器的選擇方案與論證 32.2電路設(shè)計最終方案決定 42.3DS1302,DS18B20和LCD1602的原理及說明 42.3.1LCD1602工作原理及說明 42.3.2DS1302原理及說明 52.3.3DS18B20工作原理及說明 6第3章系統(tǒng)的硬件設(shè)計與實現(xiàn) 73.1電路設(shè)計框圖 73.2系統(tǒng)硬件概述 83.3主要模塊電路的設(shè)計 83.3.1STC89C52單片機主控制模塊的設(shè)計 83.3.2時鐘電路模塊的設(shè)計 103.3.3溫度采集模塊設(shè)計 113.3.4顯示模塊的設(shè)計 123.4各模塊電路原理圖 123.4.1電源電路 123.4.2復(fù)位電路 123.4.3振蕩電路 133.4.4溫度采集電路 133.4.5通信電路 143.4.6顯示電路 153.4.7鍵盤電路 15第4章系統(tǒng)的軟件設(shè)計 164.1程序流程框圖: 16第5章系統(tǒng)測試 185.1硬件測試 185.2軟件測試 18結(jié)束語 19致謝 19參考文獻 20附錄1:程序 22基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第4頁?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第4頁。第1章緒論1.1課題背景在當代繁忙的工作與生活中,時間與我們每一個人都有非常密切的關(guān)系,每個人都受到時間的影響,隨著社會、科技的發(fā)展,人類得知時間,從觀太陽、擺鐘到現(xiàn)在電子鐘,不斷研究、創(chuàng)新。為了在觀測時間的同時,能夠了解其它與人類密切相關(guān)的信息,比如溫度、星期、日期等,電子萬年歷誕生了,它集時間、日期、星期和溫度功能于一身,具有讀取方便、顯示直觀、功能多樣、電路簡潔等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢。伴隨著電子技術(shù)的迅速發(fā)展,特別是隨大規(guī)模集成電路出現(xiàn),給人類生活帶來了根本性的改變。由其是單片機技術(shù)的應(yīng)用產(chǎn)品已經(jīng)走進了千家萬戶。電子萬年歷的出現(xiàn)給人們的生活帶來的諸多方便,作為一種附加功能,現(xiàn)在越來越廣泛的被應(yīng)用于各種電子產(chǎn)品中,具有廣闊的市場前景。1.2課題意義電子萬年歷作為電子類小產(chǎn)品不僅是市場上的寵兒,也是是單片機設(shè)計培訓(xùn)中一個很實用的題目。因為這個課題有很好的開放性和可發(fā)揮性,對制作者的要求比較高,不僅考察了對單片機的掌握能力更加強調(diào)了對單片機擴展的應(yīng)用。而且要求設(shè)計的電子萬年歷在操作上力求簡潔,功能上盡量齊全,顯示界面也要出色。所以,電子萬年歷制作無論從實用目的,還是從培養(yǎng)能力的角度來看都是很有價值的畢業(yè)設(shè)計課題。本電子萬年歷的設(shè)計在硬件方面主要采用STC89C52單片機作為主控核心,由DS1302時鐘芯片提供時鐘、1602LCD液晶顯示屏顯示。STC89C52單片機是由Atmel公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時鐘芯片是美國DALLAS公司推出的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,而且DS1302的使用壽命長,誤差小;數(shù)字顯示是采用的LED液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒等信息。此外,該電子萬年歷還具有時間校準等功能。在軟件方面,主要包括日歷程序、時間調(diào)整程序,顯示程序等。所有程序編寫完成后,在Keil軟件中進行調(diào)試,確定沒有問題后,燒寫到單片機上進行測試。最后在老師同學(xué)的幫助以及自己的努力下完成了此次電子萬年歷的設(shè)計。1.3國內(nèi)外現(xiàn)狀及水平基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第5頁。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,但是所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究萬年歷及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。它可以對年、月、日、周日、時、分、秒進行計時,對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒等信息,還具有時間校準等功能?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第5頁。綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。近些年我國也開始重視對電子萬年歷的開發(fā)與設(shè)計,讓更多的電子時鐘能夠走進人民生活,跟多人能夠應(yīng)用到功能強大,精度高的電子時鐘。但是仍然存在很多問題。中國電子萬年歷產(chǎn)業(yè)發(fā)展出現(xiàn)的問題中,許多情況不容樂觀,如產(chǎn)業(yè)結(jié)構(gòu)不合理、產(chǎn)業(yè)集中于勞動力密集型產(chǎn)品;技術(shù)密集型產(chǎn)品明顯落后于發(fā)達工業(yè)國家;生產(chǎn)要素決定性作用正在削弱;產(chǎn)業(yè)能源消耗大、產(chǎn)出率低、環(huán)境污染嚴重、對自然資源破壞力大;企業(yè)總體規(guī)模偏小、技術(shù)創(chuàng)新能力薄弱、管理水平落后等。

從什么角度分析中國電子萬年歷產(chǎn)業(yè)的發(fā)展狀況?以什么方式評價中國電子萬年歷產(chǎn)業(yè)的發(fā)展程度?中國電子萬年歷產(chǎn)業(yè)的發(fā)展定位和前景是什么?中國電子萬年歷產(chǎn)業(yè)發(fā)展與當前經(jīng)濟熱點問題關(guān)聯(lián)度如何……諸如此類,都是電子萬年歷產(chǎn)業(yè)發(fā)展必須面對和解決的問題——中國電子萬年歷產(chǎn)業(yè)發(fā)展已到了岔口;中國電子萬年歷產(chǎn)業(yè)生產(chǎn)企業(yè)急需選擇發(fā)展方向。

中國電子萬年歷產(chǎn)業(yè)發(fā)展研究報告闡述了世界電子萬年歷產(chǎn)業(yè)的發(fā)展歷程,分析了中國電子萬年歷產(chǎn)業(yè)發(fā)展現(xiàn)狀與差距,開創(chuàng)性地提出了“新型電子萬年歷產(chǎn)業(yè)”及替代品產(chǎn)業(yè)概念,在此基礎(chǔ)上,從四個維度即“以人為本”、“科技創(chuàng)新”、“環(huán)境友好”和“面向未來”準確地界定了“新型電子萬年歷產(chǎn)業(yè)”及替代產(chǎn)品的內(nèi)涵。根據(jù)“新型電子萬年歷產(chǎn)業(yè)”及替代品的評價體系和量化指標體系,從全新的角度對中國電子萬年歷產(chǎn)業(yè)發(fā)展進行了推演和精準預(yù)測,在此基礎(chǔ)上,對中國的行政區(qū)劃和四大都市圈的電子萬年歷產(chǎn)業(yè)發(fā)展進行了全面的研究。第2章基于單片機萬年歷的方案研究2.1系統(tǒng)基本方案選擇和論證2.1.1單片機芯片的選擇基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第6頁。本設(shè)計采用STC89C52芯片作為硬件核心,該芯片采用FlashROM,內(nèi)部具有8KBROM存儲空間,相對于本設(shè)計而言程序空間完全夠用。能于5V電壓工作,而且與MCS-51系列單片機完全兼容,而且運用于電路設(shè)計中時具備ISP在線編程技術(shù),當在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,避免芯片的多次拔插對芯片造成的損壞?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第6頁。2.1.2顯示模塊選擇方案和論證方案一:采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。方案二:采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格雖適中,對于顯示數(shù)字也最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少。但是由于數(shù)碼管動態(tài)掃描需要借助74LS164移位寄存器進行移位,該芯片在電路調(diào)試時往往會有很多障礙,所以不采用LED數(shù)碼管作為顯示。方案三:采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,對于電子萬年歷而言,一個1602的液晶屏即可,價格也還能接受,需要的接口線較多,但會給調(diào)試帶來諸多方便,所以此設(shè)計中采用LCD1602液晶顯示屏作為顯示模塊。2.1.3時鐘芯片的選擇方案和論證方案一:直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然可以減少時鐘芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。方案二:采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。因此,本設(shè)計中采用DS1302提供時鐘。2.1.4溫度傳感器的選擇方案與論證方案一:基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第7頁。使用熱敏電阻作為傳感器,用熱敏電阻與一個相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進行A/D轉(zhuǎn)換。此設(shè)計方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產(chǎn)生較大的測量誤差?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第7頁。方案二:采用數(shù)字式溫度傳感器DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,易于與單片機連接,可以避免A/D模數(shù)轉(zhuǎn)換模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點。因此,本設(shè)計DS18B20溫度傳感器作為溫度采集模塊。2.2電路設(shè)計最終方案決定綜上各模塊的選擇方案與論證,確定最后的主要硬件資源如下:采用STC89C52作為主控制系統(tǒng);DS1302提供時鐘;DS18B20作為數(shù)字式溫度傳感器;LCD1602液晶屏作為顯示。2.3DS1302,DS18B20和LCD1602的原理及說明2.3.1LCD1602工作原理及說明(1)寄存器選擇控制1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符,圖形寄存器選擇控制表如表2.1所示:表2.1LCD1602寄存器選擇控制表RSR/W操作說明00寫入指令寄存器(清屏指令等)01讀busyflag,以及讀取位址計數(shù)器(DB0~DB6)的值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)(2)指令集基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第8頁。1602通過D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。顯示模式設(shè)置(初始化)00111000[0x38]設(shè)置16×2顯示,5×7點陣,8位數(shù)據(jù)接口;顯示開關(guān)及光標設(shè)置:(初始化)00001DCBD顯示(1有效)、C光標顯示(1有效)、B光標閃爍(1有效)。000001NSN=1(讀或?qū)懸粋€字符后地址指針加1并且光標加1),N=0(讀或?qū)懸粋€字符后地址指針減1并且光標減1),S=1且N=1(當寫一個字符后,整屏顯示左移),S=0當寫一個字符后,整屏顯示不移動。數(shù)據(jù)指針設(shè)置:數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)。其他設(shè)置:01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車,數(shù)據(jù)指針=0)。基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第8頁。2.3.2DS1302原理及說明(1)時鐘芯片DS1302的工作原理DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置“0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖2.2所示。圖2.1為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數(shù)據(jù)。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表2.2為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標志位,當該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位為0時,時鐘開始運行?!癢P”是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當“WP(2)DS1302的控制字DS1302的控制字如圖2.1所示。控制字節(jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。圖2.1DS1302的控制字(3)數(shù)據(jù)輸入輸出基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第9頁。在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖2.2所示:基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第9頁。圖2.2DS1302讀與寫的時序圖DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表2.2。表2.2DS1302的日歷、時間寄存器此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。2.3.3DS18B20工作原理及說明基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第10頁。DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s減為750ms。DS18B20測溫原理如圖2.3所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖2.3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預(yù)置值?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第10頁。

圖2.3DS18B20測溫原理框圖第3章系統(tǒng)的硬件設(shè)計與實現(xiàn)3.1電路設(shè)計框圖本系統(tǒng)的電路系統(tǒng)框圖如圖3.1所示。STC89C52單片機對DS1302和DS18B20寫入控制字并讀取相應(yīng)的數(shù)據(jù),繼而控制LCD1602作出對應(yīng)的顯示。LCD1602液晶顯示模塊STC89CLCD1602液晶顯示模塊STC89C52主控模塊按鍵控制模塊DS1302時鐘模塊溫度采集模塊DS1302時鐘模塊溫度采集模塊圖3.1系統(tǒng)硬件框圖3.2系統(tǒng)硬件概述基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第11頁。本電路是由STC89C52單片機作為控制核心,能在5V電壓工作,STC89C52是一個低功耗,高性能CMOS8位單片機,片內(nèi)含8kBytesISP(In-systemprogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及80C52引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的STC89C52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案;時鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31*8的用于臨時性存放數(shù)據(jù)的RAM寄存器。可產(chǎn)生年、月、日、周、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;溫度的采集由DS18B20完成,它具有獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊,測溫范圍-55℃~+125℃,固有測溫分辨率0.5℃,支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定,實現(xiàn)多點測溫,工作電源:3基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第11頁。3.3主要模塊電路的設(shè)計3.3.1STC89C52單片機主控制模塊的設(shè)計STC系列單片機是由STMicroelectronics公司生產(chǎn),并有宏晶公司做大陸代理的。本設(shè)計使用STC89C52作為控制核心,其管腳兼容其他51系列的單片機,以下對STC89C52進行簡單講解。

STC89C52單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。采用40Pin封裝的雙列直接DIP結(jié)構(gòu),圖3.2是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在對各引腳功能說明如下(圖3.2):圖3.2圖3.2STC89C52單片機管腳圖Vcc:接+5V電源正端?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第12頁。Vss:接+5V電源地端?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第12頁。(2)輸入/輸出引腳P.0~P0.7:P0口的8個引腳。在不接片外存儲器與不擴展I/O接口時,可作為準雙向輸入/輸出接口。在接有片外存儲器或擴展I/O接口時,P0口分時復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。P1.0~P1.7:P1口的8個引腳??勺鳛闇孰p向I/O接口使用。對于52子系列,P1.0與P1.1還有第二種功能:P1.0可用作定時器/計數(shù)器2的計數(shù)脈沖輸入端T2。P1.1可用作定時器/計數(shù)器2的外部控制端T2EX。P2.0~P2.7:P2口的8個引腳??勺鳛闇孰p向I/O接口;有接有片外存儲器或擴展I/O接口且尋址范圍超過256個字節(jié)時,P2口用作高8位地址總線。P3.0~P3.7:P3口的8個引腳。除作為準雙向I/O接口使用外,還具有第二種功能,詳見表3.1。表3.1P3口第二功能表引腳引腳第二功能P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXD(串行口輸入)TXD(串行口輸出)ˉˉˉˉ(外部中斷0輸入)ˉˉˉˉ(外部中斷1輸入)T0(定時器0的外部輸入)T1(定時器1的外部輸入)ˉˉ(片外數(shù)據(jù)存儲器寫控制信號)ˉˉ(片外數(shù)據(jù)存儲器讀控制信號)(3)控制總線ALE/PROG:地址鎖存有效信號輸出端。在訪問片外程序存儲器期間,每機器周期該信號出現(xiàn)兩次,其下降沿用于控制鎖存P0口輸出的低8位地址。對于片內(nèi)含EPROM的機型,在編程期間,此引腳用作編程脈沖PROG的輸入端。PSEN:片外程序存儲器讀選通信號輸出端,或稱片外取指信號輸出端。在向片外程序存儲器讀取指令或常數(shù)期間,每個機器周期該信號兩次有效(低電平),以通過數(shù)據(jù)總線P0口讀回指令或常數(shù)。在訪問片外數(shù)據(jù)存儲器期間,PSEN信號將不出現(xiàn)。RST/V:(RST是RETET簡略寫法。)是復(fù)位端。單片機的振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平就可實現(xiàn)復(fù)位操作,使單片機回復(fù)到初始狀態(tài)。上電時,考慮到振蕩器有一定的起振時間,該引腳上高電平必須持續(xù)10ms以上才能保證有效復(fù)位。Vcc掉電期間,該引腳如接備用電源VPD(電壓范圍+4.5V至+5.5V),可用于保存片內(nèi)RAM中的數(shù)據(jù)。當Vcc下降到某規(guī)定值以下VPD,便向片內(nèi)RAM供電。EA/VDD:片外程序存儲器選用端。該引腳有效(低電平)時只選用片外程序存儲器,否則計算機上電或6復(fù)位后先選用片內(nèi)程序存儲器。(4)外接晶振引腳基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第13頁。XTAL1:片內(nèi)反相放大器輸入端?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第13頁。XTAL2:片內(nèi)反相放大器輸出端。外接晶體時,XTAL1和XTAL2各接晶體的一端,借外接晶體與片內(nèi)反相放大器構(gòu)成振蕩器。圖3.3單片機最小系統(tǒng)3.3.2時鐘電路模塊的設(shè)計DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘芯片,它可以對年、月、日、周、時、分、秒進行計時,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第14頁。DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK為時鐘輸入端。DS1302的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。實際上,在調(diào)試程序時可以不加電容器,只加一個32.768kHz的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要占用CPU一個口線即可?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第14頁。3.3.3溫度采集模塊設(shè)計采用數(shù)字式溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測量精度高,電路連接簡單特點,此類傳感器僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,使用P3.5與DS18B20的I/O口連接加一個上拉電阻,Vcc接電源,Vss接地。獨特的一線接口,只需要一條口線通信多點能力,簡化了分布式溫度傳感應(yīng)用無需外部元件可用數(shù)據(jù)總線供電,電壓范圍為3.0V至5.5V無需備用電源測量溫度范圍為-55度至+125度。-10度至+85度范圍內(nèi)精度為±0.5度溫度傳感器可編程的分辨率為9~12位。3.3.4顯示模塊的設(shè)計基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第15頁。采用LCD1602液晶顯示器,單片機P0口作為數(shù)據(jù)輸出口,通過10R的上拉電阻連接到VCC,VCC接5V電源,GND接地。GND為液晶顯示器對比度調(diào)整端,可以通過滑動變阻器RH1調(diào)顯示器的對比度(對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。R/W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數(shù)據(jù)總線,同時最高位DB7也是忙信號檢測位。BLA、BLK分別為顯示器背光燈的正、負極?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第15頁。3.4各模塊電路原理圖3.4.1電源電路由USB接口供5V電壓,此電源電路能夠給單片機提供穩(wěn)定的電壓,使系統(tǒng)能夠穩(wěn)定工作如圖3.7所示圖3.7電源電路3.4.2復(fù)位電路無論用戶使用哪種類型的單片機,總要涉及到單片機復(fù)位電路的設(shè)計。而單片機復(fù)位電路設(shè)計的好壞,直接影響到整個系統(tǒng)工作的可靠性。許多用戶在設(shè)計完單片機系統(tǒng),并在實驗室調(diào)試成功后,在現(xiàn)場卻出現(xiàn)了“死機”、“程序走飛”等現(xiàn)象,這主要是單片機的復(fù)位電路設(shè)計不可靠引起的,本電路設(shè)計采用可靠的手動復(fù)位方式,單片機復(fù)位電路如圖3.8所示基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第16頁?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第16頁。圖3.8復(fù)位電路3.4.3振蕩電路對于一個高可靠性的系統(tǒng)設(shè)計,晶體的選擇非常重要。在振蕩回路中,晶體既不能過激勵(容易產(chǎn)生高次諧波)也不能欠激勵(不容易起振)。晶體的選擇至少必須考慮:諧振頻點,負載電容,激勵功率,溫度特性,長期穩(wěn)定性。在本設(shè)計中采用了11.0592MHZ的晶振。這樣有利于得到?jīng)]有誤差的波特率。特別是用于串口通信時,選用這種晶振比較好。單片機振蕩電路如圖圖3.9所示。圖3.9震蕩電路3.4.4溫度采集電路單片機使用VCC與上拉電阻RDS1相連,再與DS18B20的2號引腳相接,上拉電阻取值4.7K。溫度傳感器采用外部供電方案,由1、3引腳提供電源。電路圖如下圖3.10:基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第17頁。圖3.10溫度采集電路基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第17頁。3.4.5通信電路通信電路主要由MAX232芯片構(gòu)成,如下圖3.11所示。MAX232的T1IN引腳接在單片機TXD的P3.1引腳控制。TTL電平從單片機的TXD端發(fā)出,經(jīng)過MAX232轉(zhuǎn)換為RS-232電平后從MAX232的T1OUT引腳發(fā)出,再經(jīng)過隨板配送的交叉串口線后,連接至PC機的串口座的第二引腳RXD端,至此計算機收到數(shù)據(jù)。PC機發(fā)送數(shù)據(jù)時從PC機串口座第三腳TXD端發(fā)出數(shù)據(jù),再逆向流向單片機的RXD端P3.0接收數(shù)據(jù)。圖3.11串口通信電路3.4.6顯示電路基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第18頁。顯示電路由1602液晶接口插槽組成,如下圖3.12所示。液晶顯示器R/W端直接接地,表示只允許寫入,而不可以從中讀取。使能端E由單片機P0.7引腳控制,數(shù)據(jù)/命令選擇端由單片機的P2.6引腳控制。偏壓信號VL端與滑動變阻器RH1相連,通過RH1可以調(diào)節(jié)顯示器的顯示對比度。RD1主要用于限流作用,起到一定的保護作用。顯示器數(shù)據(jù)端口與單片機的P0對應(yīng)相連,單片機通過P0口可以向顯示器中輸入控制命令或要顯示的字符?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第18頁。圖3.12顯示電路3.4.7鍵盤電路按鍵電路由3個按鍵組成,主要是用于調(diào)節(jié)時間,日期和星期如圖3.13所示。圖3.13按鍵電路基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第19頁。

第4章系統(tǒng)的軟件設(shè)計基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第19頁。4.1程序流程框圖:開始開始初始化DS1302,溫度初始化DS1302,溫度鍵盤掃描鍵盤掃描是否有是否有按鍵按下時鐘停止Y時鐘停止功能調(diào)節(jié)功能調(diào)節(jié) N FFlag=1?時鐘顯示獲取溫度并顯示溫度結(jié)束 Y Y N圖4.1主程序流程圖主程序流程圖如上圖4.1所示。由于LCD1602,DS18B20,DS1302的數(shù)據(jù)讀取及指令寫入函數(shù)均已在各自的頭文件中完成,在主程序中只須引用即可。基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第20頁。由于在硬件電路方面上設(shè)計了時間調(diào)整按鍵和開關(guān),因此應(yīng)有對應(yīng)的時間調(diào)整程序。時間調(diào)整程序的流程圖如圖4.2所示?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第20頁?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第21頁。圖4.2時間調(diào)整程序流程圖基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第21頁。第5章系統(tǒng)測試5.1硬件測試在調(diào)試硬件時遇到過很多問題,但只要細心、認真檢查這些問題都是可以避免的,主要問題及解決辦法現(xiàn)列如下:認真檢查電路是否有短路的地方,線與線之間,管腳刺破鄰近的漆包線之間是否連接在一起,有的話要用刀劃開,或者重新焊接。檢查完畢后接通電源后LCD1602沒有正確的顯示。在不通電狀態(tài)下用萬用表檢測電路是否正常連接,在檢查回路時發(fā)現(xiàn)有的點之間看似連接,但由于虛焊導(dǎo)致其并無電氣連接,只能對焊腳進行在加工直到解決問題。5.2軟件測試由于本系統(tǒng)涉及到多個子程序,多個芯片的編程。首先必須對可編程芯片的控制字即其控制指令要熟記于心。其次,芯片很多都有時鐘輸入端,需要晶振支持。對芯片的讀寫都需要在相應(yīng)的觸發(fā)沿到來時才能進行。由于DS18B20是串行通信數(shù)據(jù),只用一個口線傳輸,在處理采集的模擬信號時需要一定的時間,會對延時有較高要求。所以在調(diào)用溫度子程序時,先關(guān)閉定時器1中斷允許,在溫度子程序反回時再打開定時器1中斷允許?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第22頁?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第22頁。結(jié)束語以上所述即是基于單片機電子萬年歷的設(shè)計全過程,經(jīng)過多次的反復(fù)測試與分析,對電路的原理及功能更加熟悉,同時提高了設(shè)計能力與及對電路的分析能力.經(jīng)過此設(shè)計,基本完成了設(shè)計任務(wù)的要求。硬件層面而言操作相對簡單,界面比較友好。在硬件電路方面,詳盡解析了各個獨立元件的選擇依據(jù),對數(shù)種方案進行了全面的比較。在時鐘芯片的選擇上,若直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然可以減少時鐘芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。因此采用專業(yè)的時鐘芯片DS1302,它可以對年、月、日、周日、時、分、秒進行計時,主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能;在顯示模塊的選擇上,若采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格雖適中,對于顯示數(shù)字也最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少。但是由于數(shù)碼管動態(tài)掃描需要借助74LS164移位寄存器進行移位,該芯片在電路調(diào)試時往往會有很多障礙,因此本次設(shè)計選擇了LCD1602,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見;在溫度采集模塊的選擇上,沒有采用熱敏電阻,因為設(shè)計方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產(chǎn)生較大的測量誤差。最后選擇了DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,易于與單片機連接,可以避免A/D模數(shù)轉(zhuǎn)換模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點。從元件性能和組裝電路后的測試結(jié)果來看,硬件電路的設(shè)計是比較成功的,各個功能都能實現(xiàn)了?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第23頁?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第23頁。致謝在廣西工學(xué)院的四年學(xué)習(xí)時間即將過去,四年時間并不算長,但對我而言,是磨礪青春、揮灑書生意氣的四年,也是承受師恩、增長才干、提高學(xué)識的四年。我將以積極的面貌重新投入到火熱的工作和事業(yè)中。在此,謹對培育我的母校、教導(dǎo)我的老師、幫助我的同學(xué)們致予最誠摯的謝意和敬意。這次課程設(shè)計,我一直很努力地去做,過程中得到了老師的悉心指導(dǎo)和同學(xué)們大力支持和熱心幫助,并對我的設(shè)計提出許多有益的建議,在此對他們表示衷心的感謝。同時也要感謝學(xué)校能給我這次機會去嘗試自己設(shè)計一些東西,使自己所學(xué)專業(yè)知識與實踐相結(jié)合。最后也要感謝有關(guān)我參考過的文獻的作者,是他們?yōu)槲姨峁┲R的源泉,使我最終能順利地完成這次課程設(shè)計。在畢業(yè)之際,我衷心地同學(xué)和朋友們在以后的人生道路上越走越寬廣,也深深相信在未來的日子里我們將一路攜手前行,會遇到很多的碰撞和交流,我們將始終記得我們曾在廣西工學(xué)院同窗學(xué)習(xí),這將是我克服困難、不斷前進的精神動力?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第24頁?;趩纹瑱C的電子萬年歷設(shè)計全文共41頁,當前為第24頁。參考文獻[1]胡乾斌,李光斌,李玲,喻紅.單片微型計算機原理與應(yīng)用.華中科技大學(xué)出版社,1996.[2]劉勇.數(shù)字電路.電子工業(yè)出版社,2004.[3]陳正振.電子電路設(shè)計與制作.廣西交通職業(yè)技術(shù)學(xué)院信息工程系,2007.[4]楊子文.單片機原理及應(yīng)用.西安電子科技大學(xué)出版社,2006.[5]王萍.電子技術(shù)實驗教程.機械工業(yè)出版社,2009.[6]沈紅衛(wèi).單片機應(yīng)用系統(tǒng)設(shè)計實例與分析,北京:北京航空航天大學(xué)出版社.2003[7]李光飛.單片機課程設(shè)計實例指導(dǎo),北京:北京航空航天大學(xué)出版社.2004[8]王法能.單片機原理及應(yīng)用,科學(xué)出版社.2004[9]樓然苗,李光飛.51系列單片機設(shè)計實例[M].北京航空航天大學(xué)出版社,2003.[10]朱定華,戴汝平.單片微機原理與應(yīng)用[M].清華大學(xué)出版社,2003.[11]胡漢才.單片機原理與接口技術(shù)[M].清華大學(xué)出版社,2004.[12]余家春.Protel99SE電路設(shè)計實用教程[M].中國鐵道出版社,2004.[13]張培仁.基于匯編語言編程MCS-51單片機原理與應(yīng)用.北京:清華大學(xué)出版社,2003.[14]T.Someya,J.Small,P.Kim,C.Nuckolls,J.T.Yardley.Alcoholvaporsensorsbasedonsingle-walledcarbonnanotubefieldeffecttransistors[M].NanoLetters,2003.[15]M.Penzaetal.Alcoholdetectionusingcarbonnanotubesacousticandopticalsensors[M].AppliedPhysicsLetters,2004.[16]F.Rettig,R.Moos.DirectthermoelectricgassensorsDesignaspectsandfirstgassensors[M].SensActuatorsB,2007.基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第25頁。

附錄1:程序基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第25頁。#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitlcden=P2^4;//1602管腳定義sbitlcdrs=P2^6;sbitlcdws=P2^5;sbitds=P3^5;//ds18b20信號線sbitbeep=P2^3;//蜂鳴器管腳定義sbitACC_7=ACC^7;//位尋址寄存器定義sbitSCLK=P3^2;//DS1302時鐘信號sbitDIO=P3^3;//DS1302數(shù)據(jù)信號sbitCE=P3^4;//DS1302片選sbitkey3=P1^0;//功能鍵定義sbitkey4=P1^1;//增大鍵定義sbitkey5=P1^2;//減小鍵定義ucharshi,fen,miao,year,month,day,week;ucharflag,s1num;uinttemp; floatf_temp;uinti;uintd;ucharcodetable2[]={0x20,0x20,0x2e,0x20,0xdf,0x43};ucharcodetable[]="20--";ucharcodetable1[]="::";voiddelay(uintz)//延時1ms{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidwrite_com(ucharcom)//1602寫命令{基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第26頁。 lcdrs=0;基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第26頁。 lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }voidwrite_data(uchardate)//1602寫數(shù)據(jù){ lcdrs=1; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; }voiddsreset(void)//DS18B20,初始化函數(shù){ uinti; ds=0; i=103; while(i>0)i--; ds=1; i=4; while(i>0)i--;}bittempreadbit(void)//讀1位數(shù)據(jù)函數(shù){ uinti; bitdat; ds=0;i++; ds=1;i++;i++;//i++起到延時作用 dat=ds; i=8;while(i>0)i--;基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第27頁。 return(dat);基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第27頁。}uchartempread(void)//讀一個字節(jié)數(shù)據(jù)函數(shù){ uchari,j,dat; dat=0; for(i=1;i<=8;i++) { j=tempreadbit(); dat=(j<<7)|(dat>>1); } return(dat);}voidtempwritebyte(uchardat)//向DS18B20寫一個字節(jié)數(shù)據(jù)函數(shù){ uinti; ucharj; bittestb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb)//寫1 { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0;//寫0 i=8;while(i>0)i--; ds=1; i++;i++; } }基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第28頁。}基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第28頁。voidtempchange(void)//DS18B20開始獲取溫度并轉(zhuǎn)換{ dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0x44); }uintget_temp()//獲取溫度{ uchara,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread();//讀高8位 b=tempread();//讀低8位 temp=b; temp<<=8;//兩個字節(jié)組合成1個字節(jié) temp=temp|a; f_temp=temp*0.0625; temp=f_temp*10+0.5; f_temp=f_temp+0.05;//溫度在寄存器中為12位,分辨率為0.0625^ returntemp;}voiddisplay(ucharaddr,uchardat){ write_com(0x80+0x40+addr); write_data(0x30+dat); delay(5); }voiddis_temp(uintt){ uchari; i=t/100; display(10,i);基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第29頁。 i=t%100/10;基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第29頁。 display(11,i); i=t%100%10; display(13,i);}voidinit()//初始化程序{ ucharnum; flag=1; lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++) { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<8;num++) { write_data(table1[num]); delay(5); } write_com(0x80+0x40+10); for(num=0;num<6;num++) { write_data(table2[num]); delay(10); }}//地址、數(shù)據(jù)發(fā)送子程序voidwrite_1302(ucharaddr,uchardat){基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第30頁。uchari,temp;基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第30頁。CE=0;//CE引腳為低,數(shù)據(jù)傳送中止SCLK=0;//清零時鐘總線CE=1;//CE引腳為高,邏輯控制有效//發(fā)送地址for(i=8;i>0;i--)//循環(huán)8次移位{SCLK=0;temp=addr;DIO=(bit)(temp&0x01);//每次傳輸?shù)妥止?jié)addr>>=1;//右移一位SCLK=1;} //發(fā)送數(shù)據(jù)for(i=8;i>0;i--){SCLK=0;temp=dat;DIO=(bit)(temp&0x01);dat>>=1;SCLK=1;}CE=0;}//數(shù)據(jù)讀取子程序ucharRead1302(ucharaddr){unsignedchari,temp,dat1,dat2;CE=0;SCLK=0;CE=1;//發(fā)送地址for(i=8;i>0;i--)//循環(huán)8次移位{SCLK=0;temp=addr;基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第31頁。DIO=(bit)(temp&0x01);//每次傳輸?shù)妥止?jié)基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第31頁。addr>>=1;//右移一位SCLK=1;}//讀取數(shù)據(jù)for(i=8;i>0;i--){ACC_7=DIO;SCLK=1;ACC>>=1;SCLK=0;}CE=0;dat1=ACC;dat2=dat1/16;//數(shù)據(jù)進制轉(zhuǎn)換//十六進制轉(zhuǎn)十進制 dat1=dat1%16;dat1=dat1+dat2*10;return(dat1);}//初始化DS1302voidInitial(void)//初始化13022010年09月30日23點58分56秒星期一{write_1302(0x8e,0x00);//允許寫保護 write_1302(0x80,0x56); //秒位初始化write_1302(0x82,0x58);//分鐘初始化 write_1302(0x84,0x23);//小時初始化write_1302(0x86,0x30);//日初始化write_1302(0x88,0x09);//月初始化 write_1302(0x8c,0x10);//年初始化write_1302(0x8a,0x01);//日期始化 write_1302(0x8e,0x80); //禁止寫保護}voiddi()//蜂鳴器響函數(shù){基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第32頁。 beep=0;基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第32頁。 delay(100); beep=1;}voidwrite_sfm(ucharadd,uchardate){ ucharshi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge);}voidwrite_nyrz(ucharadd,uchardate)//顯示年,月,日,周{ ucharshi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_data(0x30+shi); write_data(0x30+ge);}voiddisplay_week(ucharwe){ write_com(0x80+12); switch(we) { case1:write_data('M');delay(5); write_data('O');delay(5); write_data('N'); break; case2:write_data('T');delay(5); write_data('U');delay(5); write_data('E'); break; case3:write_data('W');delay(5);基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第33頁。 write_data('E');delay(5);基于單片機的電子萬年歷設(shè)計全文共41頁,當前為第33頁。 write_data('D'); break; case4:write_data('T');delay(5); write_data('H');delay(5); write_data('U'); break; case5:write_data('F');delay(5); write_data('R');delay(5); write_data('T'); break; case6:write_data('S');delay(5); write_data('A');delay(5); write_data('T'); break; case7:write_data('S');delay(5); write_data('U');delay(5); write_data('N'); break; } }voidkeyscan()//按鍵設(shè)置{ if(key3==0)//功能鍵按下 { flag=0; delay(5); if(key3==0) { s1num++; while(!key3); di(); switch(s1num)//光標閃爍定位 { cas

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論