綜合設(shè)計(jì)課程設(shè)計(jì)報(bào)告---多功能數(shù)字電子表設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  1、目的………............................................................................................2</p><p>  2、課題內(nèi)容…………….…..…………………………………………….2</p&

2、gt;<p>  3、課題分析………………………………………………………………2</p><p>  4、硬件電路設(shè)計(jì)原理……………………………………………………3</p><p>  5、總體系統(tǒng)框圖…………………………………………………………4</p><p>  6、方案設(shè)計(jì)討論及元件選取依據(jù)………………………………………5</p>

3、<p>  7、軟件設(shè)計(jì)依據(jù)與分析………………………….....................................9</p><p>  8、附錄…………………………………………………………………..12</p><p>  9、附錄一 設(shè)計(jì)總結(jié)與體會…………………………………………....12</p><p>  10、附錄二 元器件清單

4、………………………………………………..13</p><p>  11、附錄三 系統(tǒng)調(diào)試記錄........................................................................14</p><p>  12、附錄四 參考文獻(xiàn)......................................................

5、..........................21</p><p>  13、附錄五 整機(jī)電路圖............................................................................23</p><p>  14、附錄六 源程序清單............................................

6、................................24</p><p>  多功能數(shù)字電子表設(shè)計(jì)報(bào)告</p><p><b>  一、目的</b></p><p>  1、 使學(xué)生將所學(xué)的“數(shù)字電子技術(shù)”和“單片機(jī)原理”等相關(guān)知識應(yīng)用于實(shí)踐。培養(yǎng)學(xué)生理論聯(lián)系實(shí)際的工作作風(fēng),提高學(xué)生的動手能力。</p><p&g

7、t;  2、 學(xué)會用“計(jì)算機(jī)輔助分析設(shè)計(jì)軟件”對該題目進(jìn)行分析、設(shè)計(jì)與仿真,并打印出仿真結(jié)果,提高學(xué)生對計(jì)算機(jī)的應(yīng)用水平。</p><p>  3.、掌握電路的焊接、安裝、調(diào)試技術(shù),培養(yǎng)學(xué)生的工程意識,提高學(xué)生分析并解決實(shí)際問題的能力,激發(fā)學(xué)生對產(chǎn)品開發(fā)的興趣,培養(yǎng)學(xué)生的科技創(chuàng)新精神。</p><p><b>  二、課題內(nèi)容</b></p><p

8、>  設(shè)計(jì)并制作符合以下要求的“多功能數(shù)字電子表”,并撰寫分析設(shè)計(jì)報(bào)告。</p><p><b>  基本要求:</b></p><p> ?。?)、計(jì)時功能:顯示時、分、秒;</p><p><b> ?。?)、定鬧功能;</b></p><p><b> ?。?)、秒表功能;&l

9、t;/b></p><p>  (4)、倒計(jì)時功能。</p><p><b>  2、提高要求:</b></p><p>  (1)、增加“語音報(bào)時”功能;</p><p> ?。?)、增加“電子日歷”功能。</p><p><b>  3、主要技術(shù)指標(biāo)</b><

10、/p><p>  1、計(jì)時精度:±2秒/月;</p><p>  2、功能設(shè)置按鍵不得多于3個。</p><p><b>  三、課題分析</b></p><p>  在進(jìn)行課題設(shè)計(jì)前,我們應(yīng)該確定一些基本的設(shè)計(jì)原則,然后再根據(jù)這些原則去尋找思路。在設(shè)計(jì)系統(tǒng)時,我們主要考慮以下一些原則:節(jié)約元器件,盡量降低系統(tǒng)實(shí)現(xiàn)

11、的成本;硬件電路盡量簡單,使得硬件實(shí)現(xiàn)、問題檢查、軟件編程以及系統(tǒng)調(diào)試的難度都降低;能在軟件上實(shí)現(xiàn)的,不采取軟件實(shí)現(xiàn),使芯片利用率盡可能高;軟件設(shè)計(jì)方案要優(yōu)化,使得編程盡可能簡單,方便仿真與測試;設(shè)計(jì)方案要和當(dāng)前的試驗(yàn)平臺相應(yīng);充分利用各種資料,盡量采用成熟與經(jīng)典的電路。</p><p>  要實(shí)現(xiàn)一個系統(tǒng),先要明確該系統(tǒng)的功能和要求。設(shè)計(jì)的系統(tǒng)必須要能實(shí)現(xiàn)基本的功能,再考慮實(shí)現(xiàn)其他的功能。為了取得比較好的實(shí)踐成

12、績,我們必須實(shí)現(xiàn)課程設(shè)計(jì)的提高要求。我們可以從老師給出來的兩個提高方案種選一個或兩個都選,也可以自己擬定一個方案。首先考慮“語音報(bào)時”。由于語音報(bào)時要用到語音芯片,使用語音芯片后,系統(tǒng)的電路復(fù)雜性增加,不僅在電路設(shè)計(jì)和硬件電路實(shí)現(xiàn)方面難度加大,而且系統(tǒng)調(diào)試的難度也加大。因而,經(jīng)過綜合考慮,我們決定選擇僅通過蜂鳴器來實(shí)現(xiàn)報(bào)時功能。再考慮“電子日歷”。由于電子表顯示時分秒需要六位數(shù)碼管,日歷顯示的年月日也可以采用六位顯示,而且日歷設(shè)計(jì)在數(shù)學(xué)

13、原理上和鐘表設(shè)計(jì)一樣。因而,可以在不增加硬件的條件下實(shí)現(xiàn)“電子日歷”,而系統(tǒng)的功能按鍵少,必然增加了軟件實(shí)現(xiàn)的難度;從另外一方面看,這相當(dāng)于提高了硬件的利用率。為了鍛煉自己,我們決定選擇實(shí)現(xiàn)“電子日歷”功能。其次,從日常生活中所使用的電子表來看,我們還可以嘗試實(shí)現(xiàn)“星期”功能,考慮到自身知識積累與時間限制,不選擇實(shí)現(xiàn)該功能。綜上所述,我們要設(shè)計(jì)的電子表,其所能實(shí)現(xiàn)的功能為:計(jì)時、鬧鐘、秒表、倒計(jì)時、報(bào)時與日歷。</p>&

14、lt;p>  四、硬件電路設(shè)計(jì)原理</p><p>  多功能電子表的實(shí)現(xiàn)方式有多種,從軟件和硬件的角度來看,可以分成硬件實(shí)現(xiàn)方式與軟硬件結(jié)合的實(shí)現(xiàn)方式。本次課程設(shè)計(jì)是基于單片機(jī)的設(shè)計(jì),因而是軟硬件結(jié)合的實(shí)現(xiàn)方式。軟硬件結(jié)合的實(shí)現(xiàn)方式比硬件實(shí)現(xiàn)方式更具有優(yōu)點(diǎn)。</p><p>  從電子表的用戶角度來看,一個電子表可劃分為三個部分:用戶面對的顯示界面;用戶切換電子表各種功能的按鍵;用

15、戶無需關(guān)心的電子表內(nèi)部控制部分。從這三方面我們可以綜合出本次實(shí)踐所需要設(shè)計(jì)的系統(tǒng)的框圖,如圖1所示。</p><p>  電子表的關(guān)鍵秒信號的產(chǎn)生與秒計(jì)數(shù),利用單片機(jī)內(nèi)部的定時器和計(jì)數(shù)器,無需外加日歷芯片,即可以實(shí)現(xiàn)所要求的各種功能。經(jīng)過綜合考慮,我們選擇AT89C52單片機(jī)來設(shè)計(jì)系統(tǒng)。</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Flash Prog

16、rammable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。其主要特點(diǎn)有:</p>&

17、lt;p>  ·與MCS-51 兼容  </p><p>  ·4K字節(jié)可編程FLASH存儲器</p><p>  ·壽命:1000寫/擦循環(huán)</p><p>  ·數(shù)據(jù)保留時間:10年</p><p>  ·全靜態(tài)工作:0Hz-24MHz</p><p>  &

18、#183;三級程序存儲器鎖定</p><p>  ·128×8位內(nèi)部RAM</p><p>  ·32可編程I/O線</p><p>  ·兩個16位定時器/計(jì)數(shù)器</p><p><b>  ·5個中斷源</b></p><p><b>

19、;  ·可編程串行通道</b></p><p>  ·低功耗的閑置和掉電模式</p><p>  ·片內(nèi)振蕩器和時鐘電路</p><p>  根據(jù)AT89C51的引腳功能,我們選擇P1口(P1.0,P1.1與P1.2)為功能切換輸入口,P0口為顯示電路的段選輸出口,P2口提供地址使語音芯片完成尋址,對P3口,P3.2,P3.

20、3,P3,4接時鐘芯片,P3.5接蜂鳴器,P3.6接語音芯片的REC管腳,PXTAL接一個12MHz的外圍晶振。</p><p>  LCD1602采用標(biāo)準(zhǔn)的14腳接口,其中VCC接5V正電源,GND接地,VSS接可變電阻,RS,RW,EN為控制引腳,D0~D7為雙向數(shù)據(jù)線。</p><p><b>  五、總體系統(tǒng)框圖</b></p><p>

21、;  該系統(tǒng)使用AT89C51單片機(jī)作為核心,通過讀取時鐘日歷芯片DS1302的數(shù)據(jù),完成此電子時鐘的主要功能——時鐘/日歷數(shù)據(jù)的采集。使用比較通用1602LCD液晶顯示屏,分別顯示年月日、時分秒、星期等數(shù)據(jù)。</p><p>  鍵盤是為了完成時鐘/日歷的校對和的顯示功能。由于此電子時鐘要求具有鬧鈴功能,所以設(shè)計(jì)有鬧鈴電路,用蜂鳴器進(jìn)行聲音響鈴。</p><p>  語音芯片ISD142

22、0外接麥克風(fēng)與揚(yáng)聲器,構(gòu)成錄放音電路,再與單片機(jī)相連,受單片機(jī)調(diào)度控制,用于語音整點(diǎn)報(bào)時。</p><p>  六、方案設(shè)計(jì)討論及元件選取依據(jù)</p><p><b>  方案選擇</b></p><p> ?、?單片機(jī)芯片的方案選擇和論證</p><p>  方案一:用飛思卡爾16位單片機(jī)設(shè)計(jì)。飛思卡爾16位單片機(jī)有豐

23、富的中斷源和時基,它的準(zhǔn)確度高,并且C語言和匯編兼容的編程環(huán)境也很方便來實(shí)現(xiàn)一些遞歸調(diào)用。I/O口功能也比較強(qiáng)大,但端口較多,本設(shè)計(jì)用的很少,造成資源浪費(fèi),成本增加。</p><p>  方案二:對于AT89C51,是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,12

24、8×8位內(nèi)部RAM,32可編程I/O線,兩個16位定時器/計(jì)數(shù)器,5個中斷源等主要特性。完全可以滿足本設(shè)計(jì)的要求,而且成本較低。</p><p>  綜合以上各點(diǎn)考慮,AT89C51單片機(jī)所提供的硬件資源已足夠勝任本次電子</p><p>  時鐘的設(shè)計(jì),故決定采用AT89C51單片機(jī)為本次設(shè)計(jì)的MCU。</p><p> ?、跁r鐘脈沖的的方案選擇和論證&

25、lt;/p><p>  方案一:不使用時鐘芯片,而直接用AT89C51單片機(jī)中斷來實(shí)現(xiàn)電子萬年歷設(shè)計(jì)。利用一個16位定時器/計(jì)數(shù)器每50ms產(chǎn)生一個中斷信號,中斷20次后產(chǎn)生一個秒信號,然后根據(jù)時間進(jìn)制關(guān)系依次向分、時、日、星期、月、年進(jìn)位。這樣就實(shí)現(xiàn)了直接用單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì)。但是精度不夠高,誤差較大,掉電后丟失所有數(shù)據(jù),軟件編程較復(fù)雜。</p><p>  方案二:采用DS1302

26、時鐘芯片實(shí)現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V范圍內(nèi),2.5V時耗電小于300nA。</p><p>  由于在系統(tǒng)設(shè)計(jì)時,需要考慮以下幾點(diǎn)因素:功耗低、精確度高、軟件編程較簡單,芯片的體積小、芯片成本低等,而DS1302芯片有上面所述的諸多優(yōu)點(diǎn),所以本設(shè)計(jì)采用方案二。</

27、p><p>  AT89C51管腳圖</p><p>  DS1302時鐘芯片</p><p>  表1 DS1302控制字(即地址及命令字節(jié))</p><p>  表2 DS1302有關(guān)日歷、時間的寄存器</p><p> ?、壅Z音模塊的方案選擇和論證</p><p>  在眾多的語音芯片中,我們

28、選取了ISD1420這款語音芯片,因?yàn)檫@款芯片價(jià)</p><p>  格相對較低,電路連接簡單,控制程序亦簡單,能夠錄制160段共20秒的分段語音,播放時可以隨便組合使用,在功能上已經(jīng)足夠滿足整點(diǎn)報(bào)時與鬧鐘的需求。</p><p>  ISD1420為美國ISD公司出品的優(yōu)質(zhì)單片語音錄放電路,由振蕩器、語音存儲單元、前置放大器、自動增益控制電路、抗干擾濾波器、輸出放大器組成。一個最小的錄放

29、系統(tǒng)僅由一個麥克風(fēng)、一個喇叭、兩個按鈕、一個電源、少數(shù)電阻電容組成。錄音內(nèi)容存入永久存儲單元,提供零功率信息存儲,這個獨(dú)一無二的方法是借助于美國ISD公司的專利--直接模擬存儲技術(shù)(DAST TM)實(shí)現(xiàn)的。利用它,語音和音頻信號被直接存儲,以其原本的模擬形式進(jìn)入EEPROM存儲器.直接模擬存儲允許使用一種單片固體電路方法完成其原本語音的再現(xiàn).僅語音質(zhì)量優(yōu)勝,而且斷電語音保護(hù).</p><p>  ④顯示模塊的方案

30、選擇和論證</p><p>  方案一:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以也不用此種作為顯示。</p><p>  方案二:采用LED數(shù)碼管顯示,需要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字。根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。當(dāng)采用靜態(tài)顯示時,顯示的數(shù)

31、字會比較穩(wěn)定,但是會浪費(fèi)大量的I/O口。動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個數(shù)碼管的公共極增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制。當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,此時哪個數(shù)碼管會顯示出字形,取決于單片機(jī)對片選信號的控制。這種控制方式可以連接多個數(shù)碼管,但是考慮到程序運(yùn)行的時間和延時問題,會造成數(shù)碼管閃爍,延時時間不好控制。</p>

32、;<p>  方案三:采用LCD1602液晶顯示,1602LCD的特性有:+5V電壓,對比度可調(diào),內(nèi)含復(fù)位電路,提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能,有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM,內(nèi)建有192個5X7點(diǎn)陣的字型的字符發(fā)生器CGROM,8個可由用戶自定義的5X7的字符發(fā)生器CGRAM,微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。</p><

33、;p>  由于方案三的LCD1602具有前兩者所不具有的明顯優(yōu)勢,且成本不是高出很多,特選擇第三種顯示方案。</p><p>  1602LCD的指令說明</p><p><b>  最終選擇方案</b></p><p>  經(jīng)過方案比較和論證,選擇AT89C51作為主控芯片,時鐘芯片選擇DS1302,顯示模塊用LCD1602,語音芯片用

34、ISD1420,另外用四個獨(dú)立式按鍵,三個用于電子時鐘的設(shè)置,一個用于系統(tǒng)復(fù)位,除此之外,選用蜂鳴器來作為鬧鐘鬧鈴,麥克風(fēng)與揚(yáng)聲器和ISD1420配套作為語音模塊。為了保證蜂鳴器和揚(yáng)聲器能夠正常驅(qū)動發(fā)出較大聲音,分別使用PNP三極管來做驅(qū)動電路。同時,為了使得到單片機(jī)和DS1302的工作時鐘,還需要電容和晶振來構(gòu)成時鐘產(chǎn)生電路。</p><p>  七、軟件設(shè)計(jì)依據(jù)與分析</p><p>

35、<b>  (1) 主程序</b></p><p>  主程序主要完成LCD初始化,DS1302初始化和T0\T1的初始化(完成默認(rèn)情況下為正常顯示);之后進(jìn)入無限循環(huán)來完成鍵盤掃描,其中KEY1鍵完成程序的切換;KEY2和KEY3在調(diào)時、鬧鐘設(shè)定以及倒計(jì)時程序完成加減功能,在秒表和倒計(jì)時開始程序完成開始、暫?;蚯辶愎δ堋?lt;/p><p> ?。?) 正常顯示程序&l

36、t;/p><p>  正常顯示程序包括年月日時分秒以及星期的顯示,若從調(diào)時程序進(jìn)入正常顯示程序的話,就相當(dāng)于日期和星期校正程序。程序會自動校正日期滿足閏年和相應(yīng)月的日期數(shù)并同時會自動更改星期數(shù)。正常顯示程序是使用的獨(dú)立的畫面,為了不與倒計(jì)時和秒表的畫面沖突,只能設(shè)置FLAG標(biāo)志位來屏蔽在T0定時器中的顯示代碼。同時還要屏蔽T1定時器的工作。由于我們的硬件設(shè)計(jì)采用了DS1302,所以在離開正常顯示程序要打開寫保護(hù),并把

37、當(dāng)前的秒數(shù)寫入DS1302,在關(guān)閉寫保護(hù)。</p><p> ?。?)鬧鐘時間設(shè)定功能程序</p><p>  鬧鐘程序分為鬧鐘設(shè)定和鬧鐘執(zhí)行,在鬧鐘設(shè)定時(屏幕顯示“ALARM”),光標(biāo)處于閃爍狀態(tài),KEY23完成加減操作(屏幕第二行顯示“00:00”),但此時的加減變量不是最終的保存鬧鐘時分的變量,只是中間變量。此時要屏蔽正常顯示的顯示代碼完成清屏,并且保證時間后臺計(jì)時。再按下KEY1

38、,完成中間變量向保存時鐘的變量賦值,這就是設(shè)定確定操作(屏幕顯示“OK”)。</p><p>  但時間進(jìn)入鬧鐘時間,T0定時器的相關(guān)判斷為真,進(jìn)入蜂鳴器鳴叫程序(注意也要有顯示代碼),理論鳴叫時間為一分鐘,按下KEY2鍵,將通過對ALARM_EN的置位來屏蔽蜂鳴器鳴叫程序(注意此處要也成觸發(fā)的按鍵判斷經(jīng)典代碼)</p><p><b> ?。?)調(diào)時功能程序</b>

39、</p><p>  調(diào)試程序從秒、分、時、星期、日、月、年來依次調(diào)節(jié),KEY23完成加減操作,光標(biāo)處于閃爍狀態(tài),此處軟件設(shè)計(jì)思路是,通過KEY1觸發(fā)來增加KEY1N</p><p>  并通過SWITCH語句來完成跳轉(zhuǎn),完成相應(yīng)的位置光標(biāo)來閃爍才BREAK出去;之后判斷一次KEY23觸發(fā)(去抖動代碼不能少,并且要調(diào)試穩(wěn)定)通過KEY1N來進(jìn)入相關(guān)位置的相關(guān)操作,注意此時FLAG要維持高位

40、,并屏蔽T0和T1。</p><p><b> ?。?)秒表功能程序</b></p><p>  秒表功能程序要先完成清屏,第一行顯示“STOPWATCH READY”,第二行顯示“00:00:00:00”,通過KEY2完成開始,“READY”處該顯示“START”;通過KEY3完成暫?!癝TART”變“PAUSE”,并將暫停的時間存入某變量,最多可存三次。再按KEY

41、1清零,再按則顯示三個保存的秒數(shù)。</p><p> ?。?)倒計(jì)時功能程序</p><p>  倒計(jì)時程序分為設(shè)定、開始、暫停、清零四段代碼,先完成設(shè)定,通過KEY1移位,KEY23完成設(shè)定時間的加減,再按KEY1完成開始倒計(jì)時,KEY23完成暫停和清零,當(dāng)秒數(shù)倒計(jì)時到0時,出現(xiàn)“TIME IS NOW !”的從左往右的移動顯示動畫,再移到屏的最右邊是,出現(xiàn)“00”完成跳出倒計(jì)時程序操作

42、。</p><p> ?。?0)語音報(bào)時程序</p><p>  語言報(bào)時程序完成在任意時間的報(bào)時,只要按下KEY2便會通過揚(yáng)聲器發(fā)出語音報(bào)時“現(xiàn)在是北京時間。。。點(diǎn)。。。分”,并且第一行顯示“THE TIME IS NOW”</p><p> ?。?)定時器T0中斷服務(wù)程序</p><p>  在T0定時器中斷中,要完成每秒對正常顯示模式的

43、時間的修改,整點(diǎn)報(bào)時、鬧鐘程序的掃描。整點(diǎn)報(bào)時程序每秒被掃描一次,若滿足整點(diǎn)條件,便會進(jìn)入報(bào)時階段揚(yáng)聲器語音報(bào)時“現(xiàn)在是北京時間。。。。點(diǎn)整”。</p><p>  語音報(bào)時的原理是ISD1420里已經(jīng)錄好19秒的語音元素,這些存儲單元存有不同長度的語音,大致分為3秒的“現(xiàn)在是北京時間”,7秒的“點(diǎn)、分0、1、2、兩、3、4、5、6、7、8、9、10”,1秒的“點(diǎn)整”,1秒的“凌晨”,1秒的“早上”,1秒的“上午

44、”,在通過不同的組合來完成播放。</p><p>  (5)定時器T1中斷服務(wù)程序</p><p>  定時器T1中斷服務(wù)程序完成秒表和倒計(jì)時,通過FLAG1來完成if語句的選擇。秒表的最小單位是十毫秒,由于TH1,TL1的設(shè)定使COUNT05為2毫秒,每五次HAOMIAO加一,接著每一百次秒加一,后面的代碼依次。注意T1和T0不能同時打開,要避免優(yōu)先級的選定。</p>&l

45、t;p><b> ?。?)生日顯示程序</b></p><p>  設(shè)定生日的月和日,當(dāng)按下KEY1時,若是生日那天,則屏幕顯示中文字幕“生日快樂”(第一行),若不為生日那天,則在第二行顯示“HAPPY ALL DAYS”。</p><p>  顯示漢字時,首先要查資料找到相應(yīng)漢字的字模,其次修改LCD命令,在依次輸入相對應(yīng)的字模顯示。顯示漢字主要就是字模很復(fù)雜

46、,若自定義的字符還要通過軟件自己制作。</p><p><b>  附 錄</b></p><p>  附錄一 設(shè)計(jì)總結(jié)與體會</p><p>  多功能數(shù)字時鐘設(shè)計(jì)的課題難點(diǎn)不在于硬件電路的實(shí)現(xiàn),相反,功能的軟件實(shí)現(xiàn)才是重點(diǎn);如何實(shí)現(xiàn)計(jì)時功能、整點(diǎn)語音報(bào)時、鬧鐘的調(diào)整清除、萬年歷、倒計(jì)時、秒表等等許多繁雜的功能堆積。</p>&

47、lt;p><b>  第一周:</b></p><p><b>  策略:</b></p><p>  在整個團(tuán)隊(duì)的進(jìn)度上,前期采取了雙管齊下的策略;對軟件的功能流程圖,算法流程圖,參考程序等的收集和篩選與硬件平臺上電路的繪制以及硬件參考電路以及典型電路的收集同時進(jìn)行。</p><p><b>  不足:&

48、lt;/b></p><p>  但由于對設(shè)計(jì)流程的了解不夠,沒有對硬件方面更加重視,反而在軟件上糾纏過多,導(dǎo)致最后的也硬件圖稿問題多多,語音芯片的選取沒有考慮,相關(guān)的電路不符合電路原理,連線不規(guī)范(連線沒有直連),連線的考慮與實(shí)際的連線不一致,器件管腳隨意連接…..諸如此類的問題都在于對于電路的設(shè)計(jì)方面不夠嚴(yán)謹(jǐn),方案的討論不夠,科研態(tài)度也有待改正。在方案討論的不充分直接導(dǎo)致設(shè)計(jì)圖稿的參考價(jià)值大打折扣,也延

49、緩了日后電路布線和焊接的進(jìn)度。</p><p><b>  經(jīng)驗(yàn):</b></p><p>  在以后的設(shè)計(jì)中,我相信我們的團(tuán)隊(duì)在設(shè)計(jì)的前期首先會在組內(nèi)討論后做足充分的準(zhǔn)備,在通過功能的選擇、實(shí)現(xiàn)功能的器件的選擇、實(shí)現(xiàn)功能算法的選擇、編程語言的選擇、為主線做到分而治之——軟硬件之分,功能算法之分,硬件繪制與器件參數(shù)之分,做到組內(nèi)成員各司其職。</p>&

50、lt;p>  實(shí)現(xiàn)什么功能,怎樣實(shí)現(xiàn)功能,拿什么實(shí)現(xiàn)功能</p><p><b>  第二周:</b></p><p><b>  策略:</b></p><p>  第一周的完成情況有限,硬件設(shè)計(jì)基本完成,但是,軟件設(shè)計(jì)還是止步不前,原因是硬件的完成需要整個團(tuán)隊(duì)的合力參謀,而且軟件的設(shè)計(jì)也是基于硬件平臺的,現(xiàn)在沒有

51、完成的部分有硬件電路的檢測(預(yù)計(jì)下周完成),簡單程序的下載調(diào)試,硬件圖紙的修改,軟件任務(wù)的分配,子程序的編寫幾大部分。時間相對緊迫,同志還需努力!</p><p>  在編寫子程序?qū)崿F(xiàn)計(jì)時功能、秒表功能和倒計(jì)時功能時,前者要使用T0,后兩個使用T1,通過標(biāo)志位FLAG1來完成秒表和倒計(jì)時的功能切換。</p><p>  主函數(shù)采用無限循環(huán)查詢按鍵的方式,其中KEY1完成子程序的切換,KEY

52、2,KEY3在調(diào)整時間和鬧鐘設(shè)置時完成加減操作,在秒表和倒計(jì)時完成開始和暫停操作。</p><p>  編程策略:增加一個功能,就調(diào)試一個</p><p><b>  不足:</b></p><p>  在對簡單程序的調(diào)試時,由于忽略了LCD1602的RW管腳的設(shè)置,盲目參照他人的程序(參考程序的對應(yīng)電路并沒有連接RW到單片機(jī)),致使調(diào)試一度陷

53、入僵局,并錯誤的認(rèn)為是硬件連線上的問題,耽誤了不少時間。并且硬件布局不合理,差點(diǎn)導(dǎo)致仿真器與LCD之間相互挨著而無法插進(jìn)插座,以及語音芯片的錄音,放音的相關(guān)管腳并不需要與單片機(jī)的管腳連接,只需要設(shè)計(jì)撥位開關(guān)即可,由于此處設(shè)計(jì)的不合理,使得單片機(jī)的管腳減少,并且還加大了編程的工作量,以及連線上的浪費(fèi)。同時單片機(jī)的連線不僅可以從外面連接,也可從單片機(jī)的兩頭(沒有管腳的一面)引出一簇連線,不僅美觀也可以完成很多其他功能。</p>

54、<p>  同時也應(yīng)該采用74LS138來完成三八譯碼可以增加流水燈等功能。</p><p><b>  經(jīng)驗(yàn):</b></p><p>  盡管我們組在硬件上已經(jīng)很小心,但是還是出現(xiàn)一些紕漏,下一次設(shè)計(jì)時,經(jīng)驗(yàn)告訴我們要先布局合理后,在考慮連線的美觀和簡潔。同時,連線盡量緊湊,不能分的太開。軟件方面,調(diào)試是重中之重。先實(shí)現(xiàn)相對容易實(shí)現(xiàn)的功能,也有利于工作

55、的開展。</p><p><b>  第三,四周:</b></p><p><b>  策略:</b></p><p>  第三周的基本功能也實(shí)現(xiàn),考慮在一周內(nèi)完成語音芯片的功能實(shí)現(xiàn),并且完善基本功能模塊。還準(zhǔn)備添加開機(jī)動畫。組內(nèi)兩人繼續(xù)完成以上工作,另外兩人則完成設(shè)計(jì)報(bào)告。同時還考慮在硬件上添加指示燈以及時鐘芯片掉電不丟

56、失需要的紐扣電池插座。</p><p><b>  不足:</b></p><p>  在基本功能上,有以下問題需要解決(方敏老師提出):1.日期與星期的對應(yīng)問題2.復(fù)位指示燈的添加3.開機(jī)畫面的添加4.倒計(jì)時能不能確定時間確定。我們自己提出的改進(jìn)問題有:1. 12—24時間切換2.鬧鐘功能的開關(guān)3. 時鐘芯片的掉電不丟失功能。</p><p>

57、;  由于程序相對較大,AT89C51的4KROM已無法滿足,預(yù)計(jì)要換成C52或其他。</p><p><b>  經(jīng)驗(yàn):</b></p><p>  對于基本功能的完成還是比較順利的,但是要改進(jìn)就需要通過各種渠道去了解,使功能更加完善。由于在布局上并沒有做到極致,使我們組相對于其他個別組在硬件上的指示燈等硬件功能來說,顯得薄弱。我們在開機(jī)動畫方面和時鐘芯片方面做了相

58、關(guān)工作,更加有自己特色。</p><p>  通過這次為期四個星期的單片機(jī)課程設(shè)計(jì),我們組四人基本掌握了Proteus和Keil的基本功能和使用方法,對80C51單片機(jī)系統(tǒng)有了一定的了解,使我們得到了一次用專業(yè)知識、專業(yè)技術(shù)分析和解決實(shí)際問題的能力,同時使我們在單片機(jī)的基本原理、單面機(jī)應(yīng)用學(xué)習(xí)過程中,以及在常用編程設(shè)計(jì)思想技巧的掌握方面都能向前邁了一大步,為日后成為一名合格應(yīng)用型人才打下良好的基礎(chǔ)。綜合課程設(shè)計(jì)讓

59、我們把以前學(xué)到的知識得到了鞏固和進(jìn)一步的提高認(rèn)識,最重要的一點(diǎn)是鍛煉了我們學(xué)以致用的能力,為我們的以后工作打下了基礎(chǔ)!</p><p>  這次我們學(xué)習(xí)了解了單片機(jī)系統(tǒng)的結(jié)構(gòu)與特性,加深了對課本理論知識的理解。同時熟悉了Proteus和Keil仿真軟件的相關(guān)操作,提高了動手能力和獨(dú)立分析問題與解決問題的能力。雖然花了四周的時間,但最后我們學(xué)到了很多東西,做實(shí)驗(yàn)的時候自己不斷的熟悉課本,增強(qiáng)了對課本的理解,從而使我

60、們充分的懂得理論與實(shí)際結(jié)合是很重要的,只有理論是遠(yuǎn)遠(yuǎn)不夠的,只有把自己所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù)。</p><p>  在整個過程中,我們從老師和同學(xué)那兒獲得了很多實(shí)用的知識,在這里我們表示感謝!謝謝指導(dǎo)老師的幫助!謝謝同學(xué)的幫忙!</p><p><b>  附錄二 元器件清單</b></p><p>

61、;  本機(jī)最終調(diào)試結(jié)果:接通電源后,屏幕首先進(jìn)入歡迎界面,顯示“Time has wings,I’m your clock”。停頓兩秒進(jìn)入正常時間顯示界面,第一排依次顯示年、月、日、星期,第二排依次顯示時、分、秒。K1鍵主要功能為切換,從正常時間顯示界面開始按K1鍵,依次進(jìn)入調(diào)秒、調(diào)分、調(diào)時、調(diào)星期、調(diào)日、調(diào)月、調(diào)年、正常時間顯示、alarm調(diào)時、alarm調(diào)分、alarm確定、秒表準(zhǔn)備界面、倒計(jì)時準(zhǔn)備界面,之后再進(jìn)入調(diào)秒,如此循環(huán)。&

62、lt;/p><p>  在調(diào)整時間和日期時,K2為增鍵,K3為減鍵。在秒表準(zhǔn)備界面,按K2開始計(jì)時,按K3暫停,并將最多三次結(jié)果保存到T1、T2、T3,可供查看,K1清零,再按K1查看三次保存結(jié)果。</p><p>  在倒計(jì)時界面,按K2開始倒計(jì)時,K3暫停,K1清零。</p><p>  正常界面下,鬧鐘會準(zhǔn)時響鈴,按K2鍵停止響鈴,若不按則一分鐘后結(jié)束響鈴。<

63、;/p><p>  星期具有與日期自動同步映射功能。</p><p><b>  本機(jī)最終調(diào)試結(jié)果:</b></p><p>  1.接通電源后,屏幕首先初始化。</p><p>  2.進(jìn)入歡迎界面,顯示“Time has wings,I’m your clock”。</p><p>  3.停頓兩

64、秒進(jìn)入正常時間顯示界面,第一排依次顯示年、月、日、星期,第二排依次顯示時、分、秒。</p><p>  4.K1鍵主要功能為切換,從正常時間顯示界面開始按K1鍵,依次進(jìn)入調(diào)秒、調(diào)分、調(diào)時、調(diào)星期、調(diào)日、調(diào)月、調(diào)年、正常時間顯示、alarm調(diào)時、alarm調(diào)分、alarm確定、秒表準(zhǔn)備界面、倒計(jì)時準(zhǔn)備界面,之后再進(jìn)入調(diào)秒,如此循環(huán)。</p><p>  5.在調(diào)整時間和日期時,K2為增鍵,K

65、3為減鍵。在秒表準(zhǔn)備界面,按K2開始計(jì)時,按K3暫停,并將最多三次結(jié)果保存到T1、T2、T3,可供查看,K1清零,再按K1查看三次保存結(jié)果。</p><p>  6.在倒計(jì)時界面,按K2開始倒計(jì)時,K3暫停,K1清零。倒計(jì)時的秒數(shù)可設(shè)定。</p><p>  倒計(jì)時結(jié)束后顯示“TIME IS UP”。</p><p>  7.正常界面下,鬧鐘會準(zhǔn)時響鈴,按K2鍵停止

66、響鈴,若不按則一分鐘后結(jié)束響鈴。</p><p>  星期具有與日期自動同步映射功能。</p><p><b>  附錄四 參考文獻(xiàn)</b></p><p>  1、《單片機(jī)原理及應(yīng)用》,丁元杰著,北京航空航天大學(xué)出版社2005年8月版。</p><p>  2、《電子線路Protel 99 SE 實(shí)用教程》,王芳主編,

67、中南大學(xué)出版社2005年8月第一版。</p><p>  3、《單片機(jī)實(shí)用教程》,李勛、劉源編著,北京航空航天大學(xué)出版社2000年6月第一版。</p><p>  4、《綜合課程設(shè)計(jì)匯編》,重慶大學(xué)出版社。</p><p><b>  附錄五 整機(jī)電路圖</b></p><p>  附錄六 源程序清單..</p&g

68、t;<p>  PROGRAM LIST</p><p>  #include<reg51.h></p><p>  //#include"DS18B20.H"</p><p>  #include"diaoyong.h"</p><p>  #define uint unsi

69、gned int</p><p>  #define uchar unsigned char</p><p>  uchar a,b,c,d,miao,shi,fen,ri,yue,nian,week,key1n,temp,nshi,nfen,flag,flag1;</p><p>  uchar dcount,dhmiao;</p><p&g

70、t;  uchar sec=99;</p><p>  uchar key2n=0;</p><p>  uchar xshi=100;</p><p>  uchar xfen=100;</p><p>  uchar sshi,sfen,smiao,snian,syue,sri,sweek,alarm_en;</p><

71、;p>  uchar count05,haomiao,cmiao,cfen,cshi;</p><p>  //flag用于讀取頭文件中的溫度值,和顯示溫度值</p><p>  #define yi 0x80 //LCD第一行的初始位置,因?yàn)長CD1602字符地址首位D7恒定為1(100000000=80)</p><p>  #define er 0x80

72、+0x40 //LCD第二行初始位置(因?yàn)榈诙械谝粋€字符位置地址是0x40)</p><p>  //液晶屏的與C51之間的引腳連接定義(顯示數(shù)據(jù)線接C51的P0口)</p><p>  sbit rs=P1^2;</p><p>  sbit rw=P1^1;</p><p>  sbit en=P1^0;</p><

73、p>  //DS1302時鐘芯片與C51之間的引腳連接定義</p><p>  sbit IO=P3^3;</p><p>  sbit SCLK=P3^2;</p><p>  sbit RST=P3^4;</p><p>  sbit ACC0=ACC^0;</p><p>  sbit ACC7=ACC^7

74、;</p><p>  /************************************************************</p><p><b>  ACC累加器=A</b></p><p>  ACC.0=E0H </p><p>  ACC.0就是ACC的第0位。Acc可以位尋址。</

75、p><p>  累加器ACC是一個8位的存儲單元,是用來放數(shù)據(jù)的。但是,這個存儲單元有其特殊的地位,</p><p>  是單片機(jī)中一個非常關(guān)鍵的單元,很多運(yùn)算都要通過ACC來進(jìn)行。以后在學(xué)習(xí)指令時,</p><p>  常用A來表示累加器。但有一些地方例外,比如在PUSH指令中,就必須用ACC這樣的名字。</p><p>  一般的說法,A代表

76、了累加器中的內(nèi)容、而ACC代表的是累加器的地址。 </p><p>  ***************************************************************/</p><p>  //校時按鍵與C51的引腳連接定義</p><p>  sbit key1=P1^3; //設(shè)置鍵</p><p>  

77、sbit key2=P1^4; //加鍵</p><p>  sbit key3=P1^5; //減鍵</p><p>  sbit buzzer=P3^5;//蜂鳴器,通過三極管9012驅(qū)動,端口低電平響</p><p>  /**************************************************************/<

78、/p><p>  uchar code dis1[] = {"TIME HAS WINGS "};</p><p>  uchar code dis2[] = {"I'M YOUR CLOCK "};</p><p>  uchar code tab1[]={"20 - - "}; //年顯示的

79、固定字符</p><p>  uchar code tab2[]={" : : "};//時間顯示的固定字符</p><p>  uchar code tab3[]={"MONTUEWEDTHUFRISTASUN"};//星期固定顯示字符</p><p>  uchar code time1[]="00:00&

80、quot;; //時間模式1,用于鬧鐘設(shè)置</p><p>  uchar code time2[]="00:00:00:00"; //時間模式2,用于秒表計(jì)時</p><p>  uchar code naozhong[]={"ALARM"};</p><p>  uchar code timetell[]={

81、"THE TIME IS NOW"};</p><p>  uchar code ok[]={"OK"};</p><p>  uchar code stopwatch1[]={"STOPWATCH READY"};</p><p>  uchar code stopwatch2[]={"STOP

82、WATCH START"};</p><p>  uchar code stopwatch3[]={"STOPWATCH PAUSE"};</p><p>  uchar code stopwatch4[]={"STOPWATCH CLEAR"};</p><p>  uchar code store1[]={&qu

83、ot;T1"};</p><p>  uchar code store2[]={"T2"};</p><p>  uchar code store3[]={"T3"};</p><p>  uchar stop[3]={0};</p><p>  uchar stop1[3]={0};<

84、/p><p>  uchar code reverse[]={"COUNTDOWN"};</p><p>  uchar code roll1[]={"TIME IS UP! "};</p><p>  uchar code roll2[]={" TIME IS UP! "};</p>

85、<p>  uchar code roll3[]={" TIME IS UP!"};</p><p>  /**************************************************************/</p><p>  uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31

86、,30,31};//定義月,2月由年份</p><p>  //延時函數(shù),后面經(jīng)常調(diào)用</p><p>  void delay(uint xms)//延時函數(shù),有參函數(shù)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><

87、p>  for(x=xms;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  /********液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調(diào)用**************/</p><p>  /*在這個程序中,液晶寫入

88、有關(guān)函數(shù)會在DS1302的函數(shù)中調(diào)用,所以液晶程序要放在前面*/</p><p>  void write_1602com(uchar com)//****液晶寫入指令函數(shù)****</p><p><b>  {</b></p><p>  rs=0;//數(shù)據(jù)/指令選擇置為指令</p><p><b>  rw

89、=0;</b></p><p>  P0=com;//送入數(shù)據(jù)</p><p><b>  delay(1);</b></p><p>  en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備</p><p><b>  delay(1);</b></p><p>

90、  en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p><b>  }</b></p><p>  void write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù)****</p><p><b>  {</b></p><p>  rs=1;//數(shù)據(jù)/指令選擇

91、置為數(shù)據(jù)</p><p><b>  rw=0;</b></p><p>  P0=dat;//送入數(shù)據(jù)</p><p><b>  delay(1);</b></p><p>  en=1; //en置高電平,為制造下降沿做準(zhǔn)備</p><p><b>  del

92、ay(1);</b></p><p>  en=0; //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p><b>  }</b></p><p>  void lcd_init()//***液晶初始化函數(shù)****</p><p><b>  {</b></p>&l

93、t;p>  write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)</p><p>  write_1602com(0x0c);//開顯示不顯示光標(biāo)</p><p>  write_1602com(0x06);//整屏不移動,光標(biāo)自動右移</p><p>  write_1602com(0x01);//清顯示&

94、lt;/p><p>  write_1602com(yi+1);//日歷顯示固定符號從第一行第1個位置之后開始顯示</p><p>  for(a=0;a<11;a++)</p><p><b>  {</b></p><p>  write_1602dat(tab1[a]);//向液晶屏寫日歷顯示的固定符號部分<

95、;/p><p><b>  delay(3);</b></p><p><b>  }</b></p><p>  write_1602com(er+2);//時間顯示固定符號寫入位置,從第2個位置后開始顯示</p><p>  for(a=0;a<8;a++)</p><p&

96、gt;<b>  {</b></p><p>  write_1602dat(tab2[a]);//寫顯示時間固定符號,兩個冒號</p><p><b>  delay(3);</b></p><p><b>  }</b></p><p><b>  }</b

97、></p><p>  /*********************over***********************/</p><p>  void roll_display()</p><p><b>  {</b></p><p>  write_1602com(0x38);//設(shè)置液晶工作模式,意思:1

98、6*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)</p><p>  write_1602com(0x0c);//開顯示不顯示光標(biāo)</p><p>  write_1602com(0x06);//整屏不移動,光標(biāo)自動右移</p><p>  write_1602com(0x01);//清顯示</p><p>  write_1602com(yi);//日歷

99、顯示固定符號從第一行第1個位置之后開始顯示</p><p>  for(a=0;a<15;a++)</p><p><b>  {</b></p><p>  write_1602dat(dis1[a]);//向液晶屏寫日歷顯示的固定符號部分</p><p>  delay(100);</p><

100、;p><b>  }</b></p><p>  write_1602com(er);//時間顯示固定符號寫入位置,從第2個位置后開始顯示</p><p>  for(a=0;a<15;a++)</p><p><b>  {</b></p><p>  write_1602dat(di

101、s2[a]);//寫顯示時間固定符號,兩個冒號</p><p>  delay(100);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /***************DS1302有關(guān)子函數(shù)********************/</p

102、><p>  void write_byte(uchar dat)//寫一個字節(jié)</p><p><b>  {</b></p><p><b>  ACC=dat;</b></p><p><b>  RST=1;</b></p><p>  for(a=

103、8;a>0;a--)</p><p><b>  {</b></p><p><b>  IO=ACC0;</b></p><p><b>  SCLK=0;</b></p><p><b>  SCLK=1;</b></p><

104、p>  ACC=ACC>>1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  uchar read_byte()//讀一個字節(jié)</p><p><b>  {</b></p><p>

105、;<b>  RST=1;</b></p><p>  for(a=8;a>0;a--)</p><p><b>  {</b></p><p><b>  ACC7=IO;</b></p><p><b>  SCLK=1;</b></p&g

106、t;<p><b>  SCLK=0;</b></p><p>  ACC=ACC>>1;</p><p><b>  }</b></p><p>  return (ACC);</p><p><b>  }</b></p><p

107、>  //----------------------------------------</p><p>  void write_1302(uchar add,uchar dat)//向1302芯片寫函數(shù),指定寫入地址,數(shù)據(jù)</p><p><b>  {</b></p><p><b>  RST=0;</b>

108、</p><p><b>  SCLK=0;</b></p><p><b>  RST=1;</b></p><p>  write_byte(add);</p><p>  write_byte(dat);</p><p><b>  SCLK=1;</b

109、></p><p><b>  RST=0;</b></p><p><b>  }</b></p><p>  uchar read_1302(uchar add)//從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來源地址</p><p>  { uchar temp;</p>&

110、lt;p><b>  RST=0;</b></p><p><b>  SCLK=0;</b></p><p><b>  RST=1;</b></p><p>  write_byte(add);</p><p>  temp=read_byte();</p>

111、;<p><b>  SCLK=1;</b></p><p><b>  RST=0;</b></p><p>  return(temp);</p><p><b>  }</b></p><p>  uchar BCD_Decimal(uchar bcd)//

112、BCD碼轉(zhuǎn)十進(jìn)制函數(shù),輸入BCD,返回十進(jìn)制</p><p><b>  {</b></p><p>  uchar Decimal;</p><p>  Decimal=bcd>>4;</p><p>  return(Decimal=Decimal*10+(bcd&=0x0F));</p&g

113、t;<p><b>  }</b></p><p>  //--------------------------------------</p><p>  void ds1302_init() //1302芯片初始化子函數(shù)(2010-01-07,12:00:00,week4)</p><p><b>  {</b

114、></p><p><b>  RST=0;</b></p><p><b>  SCLK=0;</b></p><p>  write_1302(0x8e,0x00); //允許寫,禁止寫保護(hù) </p><p>  write_1302(0x80,0x00); //向DS1302內(nèi)寫秒寄存器

115、80H寫入初始秒數(shù)據(jù)00</p><p>  write_1302(0x82,0x00);//向DS1302內(nèi)寫分寄存器82H寫入初始分?jǐn)?shù)據(jù)00</p><p>  write_1302(0x84,0x12);//向DS1302內(nèi)寫小時寄存器84H寫入初始小時數(shù)據(jù)12</p><p>  write_1302(0x8a,0x04);//向DS1302內(nèi)寫周寄存器8a

116、H寫入初始周數(shù)據(jù)4</p><p>  write_1302(0x86,0x07);//向DS1302內(nèi)寫日期寄存器86H寫入初始日期數(shù)據(jù)07</p><p>  write_1302(0x88,0x01);//向DS1302內(nèi)寫月份寄存器88H寫入初始月份數(shù)據(jù)01</p><p>  write_1302(0x8c,0x10);//向DS1302內(nèi)寫年份寄存器8c

117、H寫入初始年份數(shù)據(jù)10</p><p>  write_1302(0x8e,0x80); //打開寫保護(hù)</p><p><b>  }</b></p><p>  //------------------------------------//時分秒顯示子函數(shù)</p><p>  void write_sfm(ucha

118、r add,uchar dat)//向LCD寫時分秒,有顯示位置加、現(xiàn)示數(shù)據(jù),兩個參數(shù)</p><p><b>  {</b></p><p>  uchar gw,sw;</p><p>  gw=dat%10;//取得個位數(shù)字</p><p>  sw=dat/10;//取得十位數(shù)字</p><p

119、>  write_1602com(er+add);//er是頭文件規(guī)定的值0x80+0x40</p><p>  write_1602dat(0x30+sw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p>  write_1602dat(0x30+gw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p><b>  }

120、</b></p><p>  //-------------------------------------//年月日顯示子函數(shù)</p><p>  void write_nyr(uchar add,uchar dat)//向LCD寫年月日,有顯示位置加數(shù)、顯示數(shù)據(jù),兩個參數(shù)</p><p><b>  {</b></p>

121、;<p>  uchar gw,sw;</p><p>  gw=dat%10;//取得個位數(shù)字</p><p>  sw=dat/10;//取得十位數(shù)字</p><p>  write_1602com(yi+add);//設(shè)定顯示位置為第一個位置+add</p><p>  write_1602dat(0x30+sw);//數(shù)

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論