單片機(jī)實(shí)現(xiàn)鬧鐘設(shè)計(jì)_第1頁
單片機(jī)實(shí)現(xiàn)鬧鐘設(shè)計(jì)_第2頁
單片機(jī)實(shí)現(xiàn)鬧鐘設(shè)計(jì)_第3頁
單片機(jī)實(shí)現(xiàn)鬧鐘設(shè)計(jì)_第4頁
單片機(jī)實(shí)現(xiàn)鬧鐘設(shè)計(jì)_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河北工程大學(xué)科信學(xué)院目錄1.緒 論31.1 課題研究背景31.2 課題研究意義31.3 本文的主要內(nèi)容41.4 本文的結(jié)構(gòu)42總體設(shè)計(jì)42.1 設(shè)計(jì)要求42.2設(shè)計(jì)內(nèi)容52.3 設(shè)計(jì)方案的確定52.3.1單片機(jī)芯片52.3.2顯示部分52.3.3時(shí)鐘部分52.3.4鬧鈴部分62.3.5 鍵盤部分62.3.6電源部分62.4總體方案62.5工作原理62.6總體設(shè)計(jì)圖73硬件設(shè)計(jì)73.1 stc89c52介紹73.1.1 stc89c52主要功能及pdip封裝73.1.2 stc-89c52引腳介紹83.2 ds1302時(shí)鐘芯片介紹93.2.1 ds1302概述93.2.2 ds1302引腳介紹9

2、3.2.3 ds1302使用方法103. 3 1602字符液晶介紹123.3.1 1602液晶概述123.3.2 1602引腳介紹123.3.3 1602字符液晶使用方法133.4系統(tǒng)電路設(shè)計(jì)153.4.1 單片機(jī)主控部分153.4.2 時(shí)鐘系統(tǒng)電路設(shè)計(jì)163.4.3 顯示系統(tǒng)電路設(shè)計(jì)173.4.4 鍵盤調(diào)控系統(tǒng)電路設(shè)計(jì)183.4.5鬧鈴系統(tǒng)電路設(shè)計(jì)183.5整體電路圖194系統(tǒng)軟件設(shè)計(jì)194.1主程序設(shè)計(jì)204.2子程序設(shè)計(jì)204.2.1實(shí)時(shí)時(shí)鐘子程序設(shè)計(jì)204.2.2顯示子程序設(shè)計(jì)214.2.3鍵盤掃描子程序224.2.4鬧鈴子程序設(shè)計(jì)235系統(tǒng)調(diào)試245.1 硬件調(diào)試255.2軟件調(diào)試2

3、56結(jié)論256.1 課程設(shè)計(jì)中遇到的問題集解決方案256.2 經(jīng)驗(yàn)教訓(xùn)26參考文獻(xiàn)26附件271.緒 論單片計(jì)算機(jī)即單片微型計(jì)算機(jī)(single-chip microcomputer),是集cpu、ram、rom、定時(shí)、計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次畢業(yè)設(shè)計(jì)通過對(duì)它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。計(jì)算機(jī)的產(chǎn)生加快了人類改造世界的步伐,但是它畢竟體積大。單片機(jī)在這種情況下誕生了。截止今日,單片機(jī)應(yīng)用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個(gè)領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置

4、,到飛機(jī)上各種儀表的控制,從計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能ic卡、電子寵物等,這些都離不開單片機(jī)。本實(shí)驗(yàn)通過對(duì)一個(gè)基于單片機(jī)的能實(shí)現(xiàn)時(shí)間,鬧鐘等功能的電子時(shí)鐘的設(shè)計(jì)學(xué)習(xí),詳細(xì)介紹了單片機(jī)應(yīng)用中的數(shù)據(jù)轉(zhuǎn)換顯示,液晶顯示原理。從而達(dá)到學(xué)習(xí)、了解單片機(jī)相關(guān)指令在各方面的應(yīng)用。系統(tǒng)由stc89c52、lcd1602、ds1302等部分構(gòu)成,能進(jìn)行年、月、日、周、時(shí)、分、秒的顯示,也具有定時(shí)時(shí)間報(bào)警等功能。1.1 課題研究背景人類的生活和工作均離不開時(shí)鐘。從古代的滴漏更鼓到近代的機(jī)械鐘,從電子表到目前的數(shù)字時(shí)鐘,為了準(zhǔn)確的測(cè)量和記錄時(shí)間

5、,人們一直在努力改進(jìn)著計(jì)時(shí)工具。鐘表的數(shù)字化,大力推動(dòng)了計(jì)時(shí)的精確性和可靠性。在單片機(jī)構(gòu)成的裝置中,數(shù)字時(shí)鐘是必不可少的部件。它的用途十分廣泛,只要有計(jì)時(shí)的存在,便要用到數(shù)字時(shí)鐘的原理及結(jié)構(gòu);同時(shí)在日期中,它以其小巧,價(jià)格低廉,走時(shí)精度高,使用方便,功能多,便于集成化而受廣大消費(fèi)的喜愛。隨著人類科技文明的發(fā)展,人們對(duì)于時(shí)鐘的要求在不斷地提高。時(shí)鐘已不僅僅被看成一種用來顯示時(shí)間的工具,在很多實(shí)際應(yīng)用中它還需要能夠?qū)崿F(xiàn)更多其它的功能。高精度、多功能、小體積、低功耗,是現(xiàn)代時(shí)鐘發(fā)展的趨勢(shì)。在這種趨勢(shì)下,時(shí)鐘的數(shù)字化、多功能化已經(jīng)成為現(xiàn)代時(shí)鐘生產(chǎn)研究的主導(dǎo)設(shè)計(jì)方向。1.2 課題研究意義基于mcs-51

6、、mcs-52單片機(jī)的數(shù)字時(shí)鐘系統(tǒng)具有顯示準(zhǔn)確、直觀、易于調(diào)整等特點(diǎn)。單片機(jī)自誕生以來給全世界人類的生活和工作起到了劇烈的變化,而mcs-51單片機(jī)是我國(guó)使用最早、最易掌握和應(yīng)用的一款單片機(jī)。通過該系統(tǒng)的設(shè)計(jì),對(duì)單片機(jī)的原理和功能有個(gè)較系統(tǒng)和全面的掌握,初步學(xué)習(xí)到有關(guān)工程設(shè)計(jì)的方法和思路。這樣以后的就業(yè)面會(huì)更加寬廣,也可以滿足當(dāng)今社會(huì)對(duì)單片機(jī)開發(fā)人才的大量需求。縱觀傳統(tǒng)的電路設(shè)計(jì),大部分是采用分立元件進(jìn)行設(shè)計(jì),既復(fù)雜成本又高。隨著集成化的發(fā)展,現(xiàn)在系統(tǒng)的設(shè)計(jì)都是在模塊化的基礎(chǔ)上設(shè)計(jì)系統(tǒng)的。本課題是基于智能化和模塊化的前提下設(shè)計(jì)數(shù)字時(shí)鐘的,通過對(duì)設(shè)計(jì)目標(biāo)的分析,分立出各個(gè)模塊,然后根據(jù)各個(gè)模塊的

7、功能,選擇適當(dāng)?shù)男酒M(jìn)行設(shè)計(jì)的。本課題的研究,對(duì)智能化、模塊化設(shè)計(jì)具有較強(qiáng)的推廣應(yīng)用價(jià)值。1.3 本文的主要內(nèi)容本文的主要內(nèi)容是利用51單片機(jī)設(shè)計(jì)一個(gè)數(shù)字時(shí)鐘系統(tǒng),使其實(shí)現(xiàn)以下功能:1在lcd液晶顯示時(shí)間的功能;2具有實(shí)現(xiàn)系統(tǒng)時(shí)間的調(diào)整與設(shè)置;3鬧鈴定時(shí)功能。通過對(duì)系統(tǒng)功能的分析,該系統(tǒng)主要包括按鍵電路、顯示電路、鬧鈴電路等。然后對(duì)系統(tǒng)進(jìn)行了硬件設(shè)計(jì)和軟件設(shè)計(jì),通過利用proteus和keil軟件,對(duì)系統(tǒng)進(jìn)行調(diào)試,實(shí)現(xiàn)系統(tǒng)的功能。本設(shè)計(jì)中的數(shù)字鬧鐘是以單片機(jī)為控制核心,從各個(gè)控制模塊介紹電路的設(shè)計(jì),經(jīng)過單片機(jī)將時(shí)間數(shù)據(jù)在lcd液晶屏上顯示,系統(tǒng)中有按鍵可以進(jìn)行定時(shí),定時(shí)時(shí)間到時(shí),蜂鳴器發(fā)出1分

8、鐘的提示信號(hào)。1.4 本文的結(jié)構(gòu)報(bào)告從六個(gè)方面介紹了這一設(shè)計(jì):(1)簡(jiǎn)單介紹了課題背景及現(xiàn)狀;(2)第二部分對(duì)電子時(shí)鐘功能與方案等作了較詳細(xì)的闡述;(3)第三部分介紹了系統(tǒng)硬件設(shè)計(jì);(4)第三部分介紹了系統(tǒng)軟件設(shè)計(jì);(5)第四部分介紹了系統(tǒng)調(diào)試。(6)第五部分寫出程序中遇到的問題,解決方案,經(jīng)驗(yàn)教訓(xùn)。2總體設(shè)計(jì)2.1 設(shè)計(jì)要求(1)使用集成數(shù)字電路或單片機(jī)作為主控制芯片;(2)使用lcd來顯示現(xiàn)在的時(shí)間,顯示格式為:顯示:20年份-月份-日期 week x時(shí)時(shí):分分:秒秒;(3)使用時(shí)鐘芯片ds1302實(shí)現(xiàn)時(shí)鐘定時(shí);(4)具有鬧鈴功能,一旦時(shí)間到則發(fā)出1分鐘提示聲;(5)具有調(diào)整時(shí)間的功能。2

9、.2設(shè)計(jì)內(nèi)容(1)查閱相關(guān)資料,整體構(gòu)思,(2)進(jìn)行調(diào)研和總體設(shè)計(jì),并繪制系統(tǒng)方框圖和主程序流程圖等;(3)詳細(xì)設(shè)計(jì):1)lcd顯示電路的設(shè)計(jì)及功能實(shí)現(xiàn) 2)實(shí)時(shí)時(shí)鐘電路的設(shè)計(jì)及其功能實(shí)現(xiàn)3)按鍵設(shè)置電路的設(shè)計(jì)及其功能實(shí)現(xiàn)2.3 設(shè)計(jì)方案的確定2.3.1單片機(jī)芯片采用stc89c52,片內(nèi)rom全都采用flash rom;能以3v的超底壓工作;同時(shí)也與mcs-51系列單片機(jī)完全該芯片內(nèi)部存儲(chǔ)器為8kb rom 存儲(chǔ)空間,同樣具有89c51的功能,且具有在線編程可擦除技術(shù),對(duì)所下載的程序能夠加密,比較安全。當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對(duì)芯片多次

10、拔插,所以不會(huì)對(duì)芯片造成損壞。所以選擇采用stc89c52作為主控制系統(tǒng)做此實(shí)驗(yàn)比較合理。2.3.2顯示部分顯示部分是本次設(shè)計(jì)的重要部分,一般有以下兩種方案:方案一:采用led顯示,分靜態(tài)顯示和動(dòng)態(tài)顯示。對(duì)于靜態(tài)顯示方式,所需的譯碼驅(qū)動(dòng)裝置很多,引線多而復(fù)雜,且可靠性也較低。而對(duì)于動(dòng)態(tài)顯示方式,雖可以避免靜態(tài)顯示的問題,但設(shè)計(jì)上如果處理不當(dāng),易造成亮度低,有閃爍等問題。方案二:采用lcd顯示。lcd液晶顯示具有豐富多樣性、靈活性、電路簡(jiǎn)單、易于控制而且功耗小等優(yōu)點(diǎn),對(duì)于信息量多的系統(tǒng),是比較適合的。鑒于上述原因,我們組采用方案二。2.3.3時(shí)鐘部分?jǐn)?shù)字時(shí)鐘是本設(shè)計(jì)的核心的部分。根據(jù)需要可采用以

11、下兩種方案實(shí)現(xiàn):方案一:方案完全用軟件實(shí)現(xiàn)數(shù)字時(shí)鐘。原理為:在單片機(jī)內(nèi)部存儲(chǔ)器設(shè)三個(gè)字節(jié)分別存放時(shí)鐘的時(shí)、分、秒信息。利用定時(shí)器與軟件結(jié)合實(shí)現(xiàn)1秒定時(shí)中斷,每產(chǎn)生一次中斷,存儲(chǔ)器內(nèi)相應(yīng)的秒值加1;若秒值達(dá)到60,則將其清零,并將相應(yīng)的分字節(jié)值加1;若分值達(dá)到60,則清零分字節(jié),并將時(shí)字節(jié)值加1;若時(shí)值達(dá)到24,則將時(shí)字節(jié)清零。年月日的設(shè)計(jì)也是如此方法。該方案具有硬件電路簡(jiǎn)單的特點(diǎn),但當(dāng)單片機(jī)不上電,程序?qū)⒉粓?zhí)行。而且由于每次執(zhí)行程序時(shí),定時(shí)器都要重新賦初值,所以該時(shí)鐘精度不高。方案二:方案采用dallas公司的專用時(shí)鐘芯片ds1302。該芯片內(nèi)部采用石英晶體振蕩器,其芯片精度不大于10ms/年

12、,且具有完備的時(shí)鐘鬧鐘功能,因此,可直接對(duì)其以用于顯示或設(shè)置,使得軟件編程相對(duì)簡(jiǎn)單。為保證時(shí)鐘在電網(wǎng)電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內(nèi)部包含鋰電池。當(dāng)電網(wǎng)電壓不足或突然掉電時(shí),可使系統(tǒng)自動(dòng)轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時(shí),鋰電池也能保證芯片的正常運(yùn)行,以備隨時(shí)提供正確的時(shí)間。基于時(shí)鐘芯片的上述優(yōu)點(diǎn),本課程設(shè)計(jì)采用方案二完成數(shù)字時(shí)鐘的功能。2.3.4鬧鈴部分鬧鈴部分是采用蜂鳴器來進(jìn)行提示,用蜂鳴器成本低,電路結(jié)構(gòu)簡(jiǎn)單,而且體積小。一個(gè)引腳接地另一個(gè)引腳在鬧鈴時(shí)間設(shè)置于數(shù)字鐘時(shí)間一致時(shí),給引腳一個(gè)高點(diǎn)平,驅(qū)動(dòng)蜂鳴器發(fā)出提示音,提示進(jìn)行延時(shí)1分鐘。2.3.5

13、 鍵盤部分用開發(fā)板上的5個(gè)按鍵就能實(shí)現(xiàn)想要的設(shè)計(jì),我們組開始想的是用4個(gè)按鍵,但是實(shí)現(xiàn)起來需要做想贏得程序設(shè)計(jì),就自己想著多用一個(gè)按鍵,來簡(jiǎn)單的實(shí)現(xiàn)想要的功能。用了開發(fā)板上的4個(gè)閑置按鍵意外加了一個(gè)按鍵來實(shí)現(xiàn)想要的功能。2.3.6電源部分采用穩(wěn)定的電壓源對(duì)開發(fā)板進(jìn)行供電。來實(shí)現(xiàn)開發(fā)板的各種功能在lcd來顯示出來,以及蜂鳴器提示音。2.4總體方案綜上各方案所述,對(duì)此次作品的方案選定: 采用stc89c52作為主控制系統(tǒng); ds1302提供時(shí)鐘;1602液晶作為顯示等。獨(dú)立按鍵進(jìn)行控制,蜂鳴器實(shí)現(xiàn)鬧鈴提示。2.5工作原理本設(shè)計(jì)采用stc89c52rc單片機(jī)作為本系統(tǒng)的控制模塊。單片機(jī)對(duì)ds1302

14、進(jìn)行初始化,寫入當(dāng)前的時(shí)間,以后不再進(jìn)行寫入時(shí)間,ds1302有個(gè)后備電池我,會(huì)自動(dòng)計(jì)時(shí)。單片機(jī)每隔1s讀ds1302時(shí)間,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實(shí)現(xiàn)時(shí)間的顯示。以lcd1602為顯示模塊,把單片機(jī)傳來的數(shù)據(jù)顯示出來,并且顯示多個(gè)信息。通過按鍵設(shè)計(jì)一個(gè)鬧鈴時(shí)間,軟件設(shè)計(jì)中通過比較當(dāng)前時(shí)間和鬧鈴時(shí)間,是否相同,如果相同,啟動(dòng)蜂鳴器發(fā)出聲音,持續(xù)一段時(shí)間,然后關(guān)閉蜂鳴器。在顯示電路中,主要靠按鍵來實(shí)現(xiàn)各種顯示要求的功能選擇、調(diào)節(jié)與切換。2.6總體設(shè)計(jì)圖圖2.6 :程序設(shè)計(jì)總體設(shè)計(jì)圖stc89c52主控制模塊lcd1602顯示模塊ds1302時(shí)鐘模塊鍵盤控制模塊蜂鳴器電源模塊3硬件設(shè)計(jì)3.1 s

15、tc89c52介紹3.1.1 stc89c52主要功能及pdip封裝stc89c52是由深圳宏晶科技公司生產(chǎn)的與工業(yè)標(biāo)準(zhǔn)mcs-51指令集和輸出管腳相兼容的單片機(jī)。其pdip封裝如表3.1所示表3.1:stc89c52主要功能主要功能特性兼容mcs51指令系統(tǒng)8k可反復(fù)擦寫flash rom32個(gè)雙向i/o口256x8bit內(nèi)部ram3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷時(shí)鐘頻率0-24mhz2個(gè)串行中斷可編程uart串行通道2個(gè)外部中斷源共6個(gè)中斷源2個(gè)讀寫中斷口線3級(jí)加密位低功耗空閑和掉電模式軟件設(shè)置睡眠和喚醒功能3.1.2 stc-89c52引腳介紹 主電源引腳(2根)3.1.2 stc-89

16、c52引腳介紹vcc(pin40):電源輸入,接5v電源。gnd(pin20):接地線。外接晶振引腳(2根)xtal1(pin19):片內(nèi)振蕩電路的輸入端。xtal2(pin20):片內(nèi)振蕩電路的輸出端??刂埔_(4根)rst/vpp(pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。ale/prog(pin30):地址鎖存允許信號(hào)。psen(pin29):外部存儲(chǔ)器讀選通信號(hào)。ea/vpp(pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令。可編程輸入/輸出引腳(32根)stc89c52單片機(jī)有4組8位的可編程i/o口

17、,分別位p0、p1、p2、p3口,每個(gè)口有8位(8根引腳),共32根。p0口(pin39pin32):8位雙向i/o口線,名稱為p0.0p0.7。p1口(pin1pin8):8位準(zhǔn)雙向i/o口線,名稱為p1.0p1.7 。p2口(pin21pin28):8位準(zhǔn)雙向i/o口線,名稱為p2.0p2.7 。p3口(pin10pin17):8位準(zhǔn)雙向i/o口線,名稱為p3.0p3.7。圖3.1.2 : stc89c52引腳圖3.2 ds1302時(shí)鐘芯片介紹3.2.1 ds1302概述ds1302 是美國(guó)dallas公司推出的一種高性能、低功耗、帶ram的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周、時(shí)、分、秒

18、進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5v5.5v。采用雙電源供電(主電源和備用電源),同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。采用三線接口與cpu進(jìn)行同步通信。圖3.2.1 :ds1302引腳圖3.2.2 ds1302引腳介紹各引腳功能為:vcc: 主電源;vcc2:備用電源。當(dāng)vcc2vcc1+0.2v時(shí),由vcc2向ds1302供電;當(dāng)vcc2vcc1時(shí),由vcc1向ds1302供電。sclk:串行時(shí)鐘輸入端,控制數(shù)據(jù)的輸入與輸出。i/o: 三線接口時(shí)的雙向數(shù)據(jù)線。 ce: 輸入信號(hào),在讀、寫數(shù)據(jù)期間必須為高。2引腳3引腳之間接12m晶振。gnd引腳接地引腳 以及rst復(fù)位引腳3

19、.2.3 ds1302使用方法表3.2.3:1302rs位及性質(zhì)(1)rs位電阻典型位00沒有沒有01r12k10r24k11r38k(1) 時(shí)鐘芯片ds1302的工作原理:ds1302在每次進(jìn)行讀、寫程序前都必須初始化,先把sclk端置 “0”,接著把rst端置“1”,最后才給予sclk脈沖;讀/寫時(shí)序如圖5所示。表2為ds1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)ds1302進(jìn)行讀寫數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫時(shí)ram=1,對(duì)時(shí)間進(jìn)行讀/寫時(shí),ck=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫操作。控制字節(jié)總是從

20、最低位開始輸入/輸出的。表6為ds1302的日歷、時(shí)間寄存器內(nèi)容:“ch”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行。“wp”是寫保護(hù)位,在任何的對(duì)時(shí)鐘和ram的寫操作之前,wp必須為0。當(dāng)“wp”為1時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。(2) ds1302的控制字節(jié)ds1302的控制字如表所示??刂谱止?jié)最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制

21、字節(jié)總是從最低位開始傳輸。表3.2:ds1302控制字(2)1rama4a3a2a1a0rdckwr(3) 數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。其讀寫時(shí)序如3.3圖示圖3.2.3:ds1302讀寫時(shí)序ds1302中與時(shí)間、日期有關(guān)的寄存器共有12個(gè),其中7個(gè)存放數(shù)據(jù)的格式為bcd碼格式,其讀寫地址如表3.2.3所示表3.2.3:ds1302時(shí)鐘寄存器(3)第一行秒寄存器,ch為時(shí)鐘暫停標(biāo)志位,該位為

22、1時(shí)時(shí)鐘停止,該位為0時(shí)時(shí)鐘運(yùn)行第二行分寄存器,bit0bit6表示分鐘數(shù),因采用bcd編碼,所以低四位最大能表示的數(shù)字為9,計(jì)數(shù)滿向高三位進(jìn)1。第三行時(shí)寄存器,12/24用來定義ds1302小時(shí)的運(yùn)行模式,12小時(shí)模式下bit5為1表示pm下午,bit5為0表示am上午。第八行控制寄存器,bit7是寫保護(hù)位wp,當(dāng)wp為1時(shí),寫保護(hù)位可防止對(duì)任一寄存器的寫操作,在任何的對(duì)時(shí)鐘和ram的寫操作之前,wp位必須為0 。此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302與r

23、am相關(guān)的寄存器分為兩類:一類是單個(gè)ram單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個(gè)字節(jié),命令控制字為feh(寫)、ffh(讀)。3. 3 1602字符液晶介紹3.3.1 1602液晶概述工業(yè)字符型液晶,1602是指顯示的內(nèi)容為16*2,即能夠同時(shí)顯示兩行,每行16個(gè)字符。常見的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于hd44780液晶芯片的,控制原理是完全相同的。本課題所用1602液

24、晶模塊,顯示屏是藍(lán)色背光白色字體。如圖3.4所示圖3.4 1602字符液晶3.3.2 1602引腳介紹編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1gnd電源地2vcc電源正極3vo液晶顯示對(duì)比度調(diào)節(jié)端4rs數(shù)據(jù)/命令選擇端5r/w讀寫選擇6e使能端口7d0數(shù)據(jù)口8d1數(shù)據(jù)口9d2數(shù)據(jù)口10d3數(shù)據(jù)口11d4數(shù)據(jù)口12d5數(shù)據(jù)口13d6數(shù)據(jù)口14d7數(shù)據(jù)口15bla背光電源正16blk背光電源負(fù)表3.3.2:1602字符液晶引腳說明各個(gè)引腳具體功能說明:第1腳:gnd為地電源。第2腳:vcc接5v正電源。第3腳:vo為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生重

25、影,使用一個(gè)1k的電位器調(diào)整對(duì)比度。第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。第5腳:r/w為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:db0db7為8位雙向數(shù)據(jù)線。第1516腳:背光燈電源。3.3.3 1602字符液晶使用方法(1)基本操作時(shí)序圖3.3.3 (1) 1602液晶讀時(shí)序圖圖3.3.3(2) 1602液晶寫時(shí)序圖(2)ram1602液晶控制器芯片內(nèi)部帶有80個(gè)8位的ram緩沖區(qū),其地址和屏幕的對(duì)應(yīng)關(guān)系如圖3.7示圖3.3.3.(3) ram對(duì)應(yīng)圖(3)160

26、2字符液晶字庫(kù) 1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(cgrom)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如下表所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時(shí)模塊把地址41h中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“a” 。3.4系統(tǒng)電路設(shè)計(jì)表3.4(1):顯示模式設(shè)置指令碼功能00111000設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口指令碼功能00001ddbd=1 開顯示;d=0 關(guān)顯示c=1 顯示光標(biāo); c=0 不顯示光標(biāo)b=1 光標(biāo)閃爍; b=0光標(biāo)不閃爍000

27、001nsn=1 當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加一,且光標(biāo)加一n=0當(dāng)讀或?qū)懸粋€(gè)字符后地址指針減一,且光標(biāo)減一s=1當(dāng)寫一個(gè)字符,整屏顯示左移(n=1)或右移(n=0),以得到光標(biāo)不移動(dòng)而屏幕移動(dòng)的效果s=0 當(dāng)寫一個(gè)字符,整屏顯示不移動(dòng)表3.4(2):顯示開/關(guān)及光標(biāo)設(shè)置3.4.1 單片機(jī)主控部分單片機(jī)的主控部分,stc89c52主控部分系統(tǒng)電路如圖。主要由電源電路、晶振電路、復(fù)位電路等組成。其中電源電路、晶振電路、復(fù)位電路是 保證單片機(jī)系統(tǒng)能夠正常工作的最基本的三部分電路,缺一不可。電源電路 芯片引腳vcc一般接上直流穩(wěn)壓電源+5v,引腳gnd接電源+5v的負(fù)極,電源電壓范圍在45.5之間,

28、可保證單片機(jī)系統(tǒng)能正常工作。為提高電路的抗干擾性能,通常在引角vcc與gnd之間接上一個(gè)10uf的電解電容和一個(gè)0.1uf陶片電容,這樣可抑制雜波串?dāng)_,從而有效確保電路穩(wěn)定性。晶振電路 單片機(jī)引腳18和引腳19外接晶振及電容, stc89c52芯片的工作頻率可在233mhz范圍之間選,單片機(jī)工作頻率取決于晶振xt的頻率,通常選用11.0592mhz晶振。兩個(gè)小電容通常取值3pf,以保證振蕩器電路的穩(wěn)定性及快速性。復(fù)位電路 一般若在引腳rst上保持24個(gè)工作主頻周期的高電平,單片機(jī)就可以完成復(fù)位,但為了保證系統(tǒng)可靠地復(fù)位,復(fù)位電路應(yīng)使引腳rst保持10ms以上的高電平。復(fù)位電路帶有上電自動(dòng)復(fù)位功

29、能,當(dāng)電路上電時(shí),由于電容兩端電壓值不能突變,電源+5v會(huì)通過電容向rst提供充電電流,因此在rst引腳上產(chǎn)生一高電平,使單片機(jī)進(jìn)入復(fù)位狀態(tài)。隨著電容充電,它兩端電壓上升使得rst電位下降,最終使單片機(jī)退出復(fù)位狀態(tài)。正常運(yùn)行時(shí),可按復(fù)位按鈕對(duì)單片機(jī)復(fù)位。圖3.4.1:?jiǎn)纹瑱C(jī)主控部分電路圖3.4.2 時(shí)鐘系統(tǒng)電路設(shè)計(jì)ds1302與單片機(jī)的連接僅需3條線:時(shí)鐘線sclk、數(shù)據(jù)線i/o和復(fù)位線rst。時(shí)鐘線sclk與p1.6相連,數(shù)據(jù)線i/o與p1.7相連,復(fù)位線rst與p1.5相連。由于ds1302是靠涓細(xì)電流充電來實(shí)現(xiàn)串行輸入輸出的,因此,在sclk 、i/o、 rst線上要加上拉電阻,其中,它

30、們的電流應(yīng)該在500u1ma之間,若電源為5v,則r約為10k,因此,我們的電阻r=10k。 在單電源與電池供電系統(tǒng)中,vcc1提供低電源并提供低功率的備用電源。vcc2提供高電源作為芯片供電的主電源。因此,這里vcc1用3v紐扣電池,vcc2用5v的系統(tǒng)電源。晶振為32.768khz接入x1、x2引腳。圖3.4.2 時(shí)鐘系統(tǒng)電路圖3.4.3 顯示系統(tǒng)電路設(shè)計(jì)lcd液晶顯示模塊采用lcd1602型號(hào),具有很低的功耗,正常工作時(shí)電流僅2.0ma/5.0v。通過編程實(shí)現(xiàn)自動(dòng)關(guān)閉屏幕能夠更有效的降低功耗。lcd1602分兩行顯示,每行可顯示多達(dá)16個(gè)字符。lcd1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(

31、cgrom)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,通過內(nèi)部指令可實(shí)現(xiàn)對(duì)其顯示多樣的控制,并且還能利用空余的空間自定義字符。其接線如圖3.10圖3.10 顯示系統(tǒng)電路圖3.4.4 鍵盤調(diào)控系統(tǒng)電路設(shè)計(jì)按鍵需要5個(gè),分別實(shí)現(xiàn)為時(shí)間調(diào)整、時(shí)間的加、時(shí)間的減、鬧鈴設(shè)置、退出功能。用單片機(jī)的5個(gè)i/o口接收控制信號(hào),其電路圖如圖3.11圖3.4.4:按鍵調(diào)控電路圖3.4.5鬧鈴系統(tǒng)電路設(shè)計(jì)鬧鈴電路由蜂鳴器、三極管、電阻 等構(gòu)成電路。接入單片機(jī)p2.0圖3.12 鬧鈴電路圖3.5整體電路圖系統(tǒng)整體電路如圖3.5所示:圖3.5:系統(tǒng)整體電路圖4系統(tǒng)軟件設(shè)計(jì)軟件是單片機(jī)應(yīng)用系統(tǒng)的靈魂,是整個(gè)系統(tǒng)的核心部分。如

32、果把硬件比作人的手臂,那么軟件就是人的大腦,手臂的一切動(dòng)作的執(zhí)行都要受控于大腦。同樣,對(duì)ds1302時(shí)鐘芯片和1602液晶顯示模塊的操作都是通過相應(yīng)的軟件程序來控制的。單片機(jī)可以應(yīng)用匯編語言和c語言進(jìn)行編程。,匯編語言與機(jī)器指令一一對(duì)應(yīng)所以用匯編語言編寫的程序在單片機(jī)里運(yùn)行起來效率較高。c語言程序可讀性高,更便于理解。我們組的程序設(shè)計(jì)使用c語言編程。4.1主程序設(shè)計(jì)第一次上電,系統(tǒng)先進(jìn)行初始化, lcd顯示初始時(shí)間并開始走時(shí)。單片機(jī)依次開始調(diào)用鍵盤掃描子程序、ds1302子程序、鬧鈴子程序,經(jīng)過延時(shí),返回程序開頭循環(huán)運(yùn)行。開始初始化1302 1602讀取ds1302時(shí)間lcd顯示時(shí)間鍵盤掃描鬧

33、鈴子程序 返回圖4.1 主程序流程圖4.2子程序設(shè)計(jì)4.2.1實(shí)時(shí)時(shí)鐘子程序設(shè)計(jì)該程序主要實(shí)現(xiàn)對(duì)ds1302寫保護(hù)、充電,對(duì)時(shí)、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關(guān)中斷指令,因?yàn)樵诖型ㄐ艜r(shí)對(duì)時(shí)序要求比較高,而且在此是用i/o口軟件模擬串行時(shí)鐘脈沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷。其流程圖如圖4.2.1開始初始化寫入時(shí)鐘初值開始計(jì)時(shí)讀出數(shù)據(jù)返回圖4.2 實(shí)時(shí)時(shí)鐘子程序流程圖ds1302每次上電時(shí)自動(dòng)處于暫停狀態(tài),必須把秒寄存器的位7置位0,時(shí)鐘才開始計(jì)時(shí)。如果ds1302一直沒有掉電,則不存在此問題。在進(jìn)行寫操作時(shí),需要先解除寫保護(hù)寄存器的“禁止”狀態(tài)。當(dāng)

34、用多字節(jié)模式進(jìn)行操作時(shí),必須寫夠8字節(jié)。4.2.2顯示子程序設(shè)計(jì)在片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個(gè)優(yōu)點(diǎn):顯示質(zhì)量高;數(shù)字式接口;體積小、重量輕;功耗低。液晶顯示的原理是利用液晶的物理特性,通過電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、pda移動(dòng)通信工具等眾多領(lǐng)域。lcd1602是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,它由32個(gè)5*8點(diǎn)陣字符位組成,每一個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,但是它不能顯示圖形。模塊內(nèi)部自帶有160個(gè)5

35、*8點(diǎn)陣字型的字符發(fā)生器chrom和8個(gè)可由用戶自定義的5*8的字符發(fā)生器cgram。圖4.2.2:顯示子程序流程圖4.2.3鍵盤掃描子程序單片機(jī)對(duì)鍵盤掃描的方法有隨機(jī)掃描方式、定時(shí)掃描方式和中斷掃描方式。在隨機(jī)掃描方式中,cpu完成某特定任務(wù)后,即執(zhí)行鍵盤掃描程序,以確定鍵盤有無按鍵輸入,然后根據(jù)按鍵功能轉(zhuǎn)去執(zhí)行相應(yīng)的操作。在執(zhí)行鍵盤按鍵規(guī)定的功能中不理睬鍵盤輸入。定時(shí)掃描方式與隨機(jī)掃描方式基本相同,只是利用cpu內(nèi)的定時(shí)中斷,每隔一定時(shí)間掃描有無按鍵被按下,鍵盤反應(yīng)速度較快,在處理按鍵功能過程中,可以通過鍵盤命令進(jìn)行干預(yù),如取消、暫停等操作。前兩種掃描方式均會(huì)占用cpu大量時(shí)間。不管有沒有

36、鍵入操作,cpu總要在一定的時(shí)間內(nèi)進(jìn)行掃描,這對(duì)于單片機(jī)控制系統(tǒng)是很不利的。單片機(jī)掃描完鍵盤,得到鍵值,并根據(jù)鍵值轉(zhuǎn)入執(zhí)行對(duì)應(yīng)任務(wù),以實(shí)現(xiàn)按鍵功能。如果沒有按鍵按下,則程序掃描到key=ffh,將鍵值key清零,返回主程序。圖4.2.3:按鍵掃描子程序流程圖4.2.4鬧鈴子程序設(shè)計(jì)鬧鈴子程序最主要的任務(wù)是不斷用時(shí)鐘分(min)與時(shí)(hour)同設(shè)定的鬧鈴分(clk_min)與鬧鈴時(shí)(clk_hour)比較,只要滿足min等于clk_min、hour等于clk_hour,響鈴啟動(dòng)一段時(shí)間,并根據(jù)外部按鍵執(zhí)行相應(yīng)任務(wù)。該程序流程圖參見圖4.5。開始讀取時(shí)間數(shù)據(jù) 鬧鐘時(shí)間是否已到報(bào)警 yes no是

37、否進(jìn)行鬧鈴調(diào)節(jié) no掃描按鍵 yes調(diào)節(jié)時(shí) 、分退出圖4.5鬧鈴子程序流程圖5系統(tǒng)調(diào)試調(diào)試工作分硬件調(diào)試和軟件調(diào)試兩部分,調(diào)試方法介紹如下:首先,硬件調(diào)試主要是先搭建硬件平臺(tái),然后利用萬用表等工具對(duì)電路檢查,最后應(yīng)用程序進(jìn)行功能調(diào)試。硬件調(diào)試比較費(fèi)時(shí),需要細(xì)心和耐心,也需要熟練掌握電路原理。然后,軟件調(diào)試可以直接應(yīng)用一些編輯或仿真軟件進(jìn)行,比如單片機(jī)c51編輯軟件keil。該軟件提供了一個(gè)集成開發(fā)環(huán)境uvision,它包括c編輯器、宏編輯器、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器。通過編譯、運(yùn)行,可以檢查程序錯(cuò)誤。但應(yīng)用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。在軟件調(diào)試過

38、程中要仔細(xì)耐心,即便是多寫或少些一兩個(gè)字符,都無法編譯成功。還有一種方式,即應(yīng)用仿真軟件搭建電路的軟件平臺(tái),再導(dǎo)入程序進(jìn)行仿真調(diào)試。如果電路出錯(cuò),可以在計(jì)算機(jī)上方便的修改電路,程序出錯(cuò)可以重新編輯程序,這種方法節(jié)時(shí)、省力,經(jīng)濟(jì)、方便??傊{(diào)試過程是一個(gè)軟硬件相結(jié)合調(diào)試的過程,硬件電路是基礎(chǔ),軟件是檢測(cè)硬件電路和實(shí)現(xiàn)其功能的關(guān)鍵。5.1 硬件調(diào)試電子時(shí)鐘的電路系統(tǒng)較大,對(duì)于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,則會(huì)對(duì)檢測(cè)造成很大的不便,而且電路的交線較多,對(duì)于各種鋒利的引腳要注意處理,否則會(huì)刺被帶有包皮的導(dǎo)線,則會(huì)對(duì)電路造成短路現(xiàn)象。在本成電子時(shí)鐘的設(shè)計(jì)調(diào)試中遇到了很多的問

39、題?;叵脒@些問題只要認(rèn)真多思考都是可以避免的,以下為主要的問題:(1)1602在顯示時(shí)間時(shí)出現(xiàn)黑格子,遮擋了時(shí)間(2)修改時(shí)間時(shí),有時(shí)時(shí)間改變2次。解決:根據(jù)儀器的測(cè)試,發(fā)現(xiàn)電路引腳有接錯(cuò)的現(xiàn)象,重新焊接后晶振,復(fù)位正常,程序能夠下載。1602出現(xiàn)黑格子是由于在其第三引腳沒加電阻分壓導(dǎo)致,加上5k電阻后正常。按鍵延時(shí)較短致使按鍵次數(shù)多加。5.2軟件調(diào)試在硬件調(diào)試完畢的基礎(chǔ)上,需要進(jìn)一步完善程序,也就是進(jìn)入軟件調(diào)試階段。在本設(shè)計(jì)中,軟件調(diào)試主要分兩大部分:實(shí)時(shí)時(shí)鐘子程序調(diào)試、按鍵子程序調(diào)試。將這兩部分調(diào)試成功,那么整個(gè)設(shè)計(jì)的軟件部分也就基本完成了。關(guān)于這兩部分的調(diào)試只需要在主程序中分別調(diào)用這兩部

40、分程序即可。6結(jié)論6.1 課程設(shè)計(jì)中遇到的問題集解決方案(1)電路的搭建中用到1602時(shí)不顯示、或者總是顯示亂碼解決辦法:第一,焊接可能有問題1602的16個(gè)引腳焊接部規(guī)范造成焊點(diǎn)錯(cuò)誤焊接,拆掉焊點(diǎn)重新焊接就能解決問題。第二,可能是開發(fā)板上的調(diào)節(jié)1602亮度的沒有進(jìn)行調(diào)節(jié),在顯示不是自己想要的時(shí)候調(diào)節(jié)亮度調(diào)節(jié)器,能顯示正確的數(shù)字。(2)1602正確接入的情況下,1602顯示總是數(shù)字5 或8 解決辦法:這個(gè)問題出現(xiàn)有3個(gè)原因:第一,是晶振焊接錯(cuò)誤,第二,對(duì)1302引腳不熟悉接電路的時(shí)候上電后燒壞1302芯片,第三,連接數(shù)據(jù)的杜邦線有斷路。檢查這些原因就能正常顯示。 (3)在電路的搭建完成后.c文

41、件生成的.hex文件解決方案:用keil軟件進(jìn)行編譯 ,先新建一個(gè)工程,命名成.c文件,在源文件中保存這個(gè)文件,然后進(jìn)行編譯。編譯的同時(shí)允許生成.hex的文件。在文件夾中找到.hex的文件加入到89c52中就能對(duì)電路進(jìn)行仿真。(4)剛寫程序時(shí),顯示的數(shù)字鐘(時(shí)間不走)格式不對(duì)解決辦法:?jiǎn)栴}出在對(duì)1602的顯示不清楚,地址寫入錯(cuò)誤,使得在錯(cuò)誤的地方顯示自己的數(shù)據(jù)。熟悉數(shù)據(jù)1602的兩行地址輸入,在仔細(xì)修改程序,編譯就能實(shí)現(xiàn)正確的送顯示數(shù)字。(5)在數(shù)字中的設(shè)置是設(shè)置鍵按下一次后好像按下好多下解決辦法:沒有消抖程序,不消抖則造成接口判斷按鍵按下了n次。跟掃描時(shí)間間隔有關(guān)??此埔粋€(gè)簡(jiǎn)單的消抖程序,其

42、實(shí)是看我們編程是不是很細(xì)心,注意到程序的細(xì)節(jié)問題。細(xì)節(jié)決定程序的完善程度,越是細(xì)心程序的漏洞就越少。6.2 經(jīng)驗(yàn)教訓(xùn)經(jīng)過這兩個(gè)周的學(xué)習(xí)和設(shè)計(jì),我們組完成了對(duì)電子時(shí)鐘的設(shè)計(jì)。試驗(yàn)中遇到了困難也解決了困難,我們組共同做這個(gè)設(shè)計(jì)對(duì)我們是一種歷練,也是一種財(cái)富。其功能基本滿足要求,通過對(duì)系統(tǒng)功能的分析,該系統(tǒng)包括數(shù)字時(shí)鐘電路,顯示電路,報(bào)警電路等。然后對(duì)系統(tǒng)進(jìn)行了硬件設(shè)計(jì)和軟件設(shè)計(jì),通過利用proteus和keil軟件,對(duì)系統(tǒng)進(jìn)行硬件和軟件調(diào)試,實(shí)現(xiàn)系統(tǒng)的功能。該時(shí)鐘功能強(qiáng)大,性能優(yōu)越,能為很多領(lǐng)域,特別是對(duì)時(shí)鐘工作的精確性和可靠性有較高要求的場(chǎng)合,提供較好的實(shí)時(shí)時(shí)鐘。程序編寫中,由于思路不清晰,開始

43、時(shí)遇到了很多的問題,經(jīng)過靜下心來思考,理清了思路,反而得心應(yīng)手。在此次設(shè)計(jì)中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我們的耐心,做什么事都在有耐心。此次電子制作中學(xué)到了很多很多東西,這是最重要的??傊瑓⒓舆@次電子制作我的能力得到了全方位的提高。參考文獻(xiàn)1余發(fā)山,單片機(jī)原理及應(yīng)用技術(shù),徐州:中國(guó)礦業(yè)大學(xué)出版社,20032沈紅衛(wèi),基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),北京:電子工業(yè)出版社,20053李朝青,單片機(jī)原理及接口技術(shù),北京:北京航空航天大學(xué)出版社,20054求是科技,單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航,北京:人民郵電出版社,2004附件實(shí)驗(yàn)電路程序代碼 #include

44、#include /#include lcd1602.h/#include ds1302.h#define uint unsigned int#define uchar unsigned charsbit ds1302_clk = p17; /實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 sbit ds1302_io = p16; /實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 sbit ds1302_rst = p15; /實(shí)時(shí)時(shí)鐘復(fù)位線引腳sbit clock_set = p33; /鬧鈴功能腳sbit spek =p20;sbit set = p30; /模式切換鍵sbit up = p31; /加法按鈕sbit down = p32;

45、/減法按鈕sbit out = p35; /立刻跳出調(diào)整模式按鈕sbit acc0 = acc0;sbit acc7 = acc7;char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /秒,分,時(shí)到日,月,年位閃的計(jì)數(shù)char done,count,temp,flag,up_flag,down_flag;uchar week_value2;uchar time_naoling=00:00;uchar hour_set=5,min_set=34;bit flang;uchar flang_jishu,

46、num,hour,min;void key_time_set();void show_time(); /液晶顯示程序/*1602液晶顯示部分子程序*/port definitions*sbit lcdrs= p25;sbit lcdrw= p26;sbit lcden = p27;sfr dbport = 0x80;/p0=0x80,p1=0x90,p2=0xa0,p3=0xb0.數(shù)據(jù)端口/內(nèi)部等待函數(shù)*unsigned char lcd_wait(void)lcdrs=0;lcdrw=1;lcden=1;lcden=0;return dbport;/向lcd寫入命令或數(shù)據(jù)*#define l

47、cd_command0 / command#define lcd_data1 / data#define lcd_clear_screen0x01 / 清屏#define lcd_homing 0x02 / 光標(biāo)返回原點(diǎn)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_show0x04 /顯示開#defi

48、ne lcd_hide0x00 /顯示關(guān) #define lcd_cursor0x02 /顯示光標(biāo)#define lcd_no_cursor0x00 /無光標(biāo)#define lcd_flash0x01 /光標(biāo)閃動(dòng)#define lcd_no_flash0x00 /光標(biāo)不閃動(dòng)void lcd_setdisplay(unsigned char displaymode)lcd_write(lcd_command, 0x08|displaymode);/設(shè)置輸入模式*#define lcd_ac_up0x02#define lcd_ac_down0x00 / default#define lcd_mo

49、ve0x01 / 畫面可平移#define lcd_no_move0x00 /defaultvoid lcd_setinput(unsigned char inputmode)lcd_write(lcd_command, 0x04|inputmode);/初始化lcd*void lcd_initial()lcden=0;lcd_write(lcd_command,0x38); /8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣lcd_write(lcd_command,0x38);lcd_setdisplay(lcd_show|lcd_no_cursor); /開啟顯示, 無光標(biāo)lcd_write(lcd_

50、command,lcd_clear_screen); /清屏lcd_setinput(lcd_ac_up|lcd_no_move); /ac遞增, 畫面不動(dòng)/液晶字符輸入的位置*void gotoxy(unsigned char x, unsigned char y)if(y=0)lcd_write(lcd_command,0x80|x);if(y=1)lcd_write(lcd_command,0x80|(x-0x40);/將字符輸出到液晶顯示void print(unsigned char *str)while(*str!=0)lcd_write(lcd_data,*str);str+;/

51、*ds1302時(shí)鐘部分子程序*/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;/定義的時(shí)間類型systemtime currenttime;/1302 相應(yīng)地址#define am(x)x#define pm(x)(x+12) / 轉(zhuǎn)成24小時(shí)制#define ds1302_second0x80 /時(shí)鐘芯片的寄存器位置,存放時(shí)間#define ds1302_minute0x82#define ds1302_hour0x84 #define ds1302_week0x8a#define ds1302_day0x86#define ds1302_month0x88#define ds1302_year0x8c void ds1302inp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論