基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì)畢業(yè)論文(帶程序)_第1頁(yè)
基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì)畢業(yè)論文(帶程序)_第2頁(yè)
基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì)畢業(yè)論文(帶程序)_第3頁(yè)
基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì)畢業(yè)論文(帶程序)_第4頁(yè)
基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì)畢業(yè)論文(帶程序)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 本科畢業(yè)論文(設(shè)計(jì))本科畢業(yè)論文(設(shè)計(jì)) 題題 目:目: 基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì)基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘設(shè)計(jì) 專專 業(yè):業(yè): 電子信息工程電子信息工程 學(xué)生姓名:學(xué)生姓名: 學(xué)生學(xué)號(hào):學(xué)生學(xué)號(hào): 100305044100305044 院院 系:系: 物理與電子工程學(xué)院物理與電子工程學(xué)院 年級(jí)、班:年級(jí)、班: 1010 級(jí)級(jí) 5 5 班班 指導(dǎo)教師:指導(dǎo)教師: 2014年 5 月 6 日 宜賓學(xué)院宜賓學(xué)院 yibinyibin universityuniversity 摘要摘要 本文介紹了一個(gè)基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘的設(shè)計(jì),它具有顯示年、月、日、 時(shí)鐘、分鐘和秒、星期的顯示功能,還具有閏

2、年補(bǔ)償?shù)裙δ埽瑫r(shí)鐘芯片采用的 是 ds1302,ds1302 能存儲(chǔ)時(shí)間信息,并且可以掉電保存。單片機(jī)通過(guò)讀取 ds1302 的信息后通過(guò) lcd1602 顯示在液晶屏幕上面。本設(shè)計(jì)包含 4 個(gè)按鍵,編 號(hào)分別為 1、2、3、4,每個(gè)按鍵的功能分別為功能選擇、光標(biāo)移動(dòng)、加按鍵以 及減按鍵,可以設(shè)置鬧鐘,當(dāng) ds1302 上面的時(shí)間跟單片機(jī)所設(shè)定的鬧鐘時(shí)間一 致后,單片機(jī)可以驅(qū)動(dòng)蜂鳴器進(jìn)行鬧鈴提醒。除此之外,系統(tǒng)還附帶整點(diǎn)報(bào)時(shí), 以及任何時(shí)候通過(guò)按鍵語(yǔ)音報(bào)時(shí)功能。 關(guān)鍵詞關(guān)鍵詞:?jiǎn)纹瑱C(jī);單片機(jī); lcd1602;蜂鳴器;蜂鳴器;ds1302;鬧鐘;語(yǔ)音報(bào)時(shí);鬧鐘;語(yǔ)音報(bào)時(shí); abstractab

3、stract this paper is aim to introduce a design which is based on simple chip microcomputer clock. it owns two main functions, namely, showing time, including year, month, day, hour, minute and second; and compensation of the leap year. the chip of this design is called ds1302, which can save time in

4、formation even when the electricity was cut down accidently. the single-chip microcomputer is also capable of reading the information on ds1302 and reflects the data on the lcd screen through the lcd1602. the design includes four buttons, numbered 1,2,3,4, respectively, each button function selectio

5、n, cursor movement, plus buttons and minus buttons, you can set the alarm. the microcontroller can drive the buzzer to make the clock alarming when the time on these two equipments the same are. besides, the basic functions in this microcontroller, such as: chime on every hour and the time speaking

6、by telephone, are also included in this design. keykey wordswords: : chipchip microcomputer,microcomputer, lcd1602,lcd1602, buzzer,buzzer, ds1302,ds1302, alarmalarm clock.clock. 目錄目錄 摘要摘要.i i abstractabstract.iiii 第一章第一章 緒論緒論.1 1 1.1 目的和意義.1 1.2 本系統(tǒng)實(shí)現(xiàn)的主要功能.1 第二章第二章 總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì).2 2 2.1 主控模塊的選型

7、和論證 .2 2.2 顯示模塊的選型和論證 .2 2.3 時(shí)鐘芯片的選型和論證 .2 2.4 溫度檢測(cè)模塊的選型和論證 .3 2.5 整點(diǎn)報(bào)時(shí)模塊的選型和論證 .3 2.6 電源模塊.3 2.7 系統(tǒng)整體設(shè)計(jì)概述 .3 第三章第三章. .系統(tǒng)硬件電路設(shè)計(jì)系統(tǒng)硬件電路設(shè)計(jì).5 5 3.1 主控模塊 .5 3.1.1 單片機(jī)的最小系統(tǒng)設(shè)計(jì).5 3.2 lcd 液晶顯示器簡(jiǎn)介 .6 3.2.1 液晶原理介紹.6 3.2.2 液晶模塊簡(jiǎn)介 .6 3.2.3 液晶顯示部分與 stc89c52 的接口 .6 3.3 鍵盤模塊設(shè)計(jì) .7 3.4 蜂鳴器模塊設(shè)計(jì) .8 3.5 時(shí)鐘模塊的設(shè)計(jì) .8 3.6 溫

8、度檢測(cè)模塊設(shè)計(jì) .10 3.6.1 溫度傳感器工作原理 .10 3.6.2 ds18b20 硬件電路設(shè)計(jì) .11 3.7 語(yǔ)音模塊設(shè)計(jì).11 第四章第四章. .系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì).1212 4.1 系統(tǒng)軟件總體設(shè)計(jì) .12 4.2 程序設(shè)計(jì)原理 .16 5.5.系統(tǒng)調(diào)試系統(tǒng)調(diào)試.1818 5.1 硬件調(diào)試 .18 5.2 軟件調(diào)試 .18 參考文獻(xiàn)參考文獻(xiàn).2020 致謝致謝.2121 附錄附錄.2222 系統(tǒng)整體原理圖系統(tǒng)整體原理圖.2222 系統(tǒng)系統(tǒng) pcbpcb 圖圖.2222 元件清單元件清單.2424 系統(tǒng)源程序系統(tǒng)源程序.2525 第一章 緒論 1.1 目的和意義 現(xiàn)代社會(huì)已

9、經(jīng)邁上了信息化的步伐,微電子技術(shù)的發(fā)展也越來(lái)越快,單片 機(jī)的運(yùn)用也日漸廣泛。無(wú)論是通信業(yè)的學(xué)生,老師或者是研發(fā)人員,對(duì)于單片 機(jī)的運(yùn)用均青睞有加,因此單片機(jī)已成為研發(fā)人員必須掌握的能力之一,而且 單片機(jī)也會(huì)發(fā)展成為一個(gè)高薪行業(yè)。 而時(shí)鐘作為電子類的一個(gè)小設(shè)計(jì),不僅深受人們的喜愛(ài),也是單片機(jī)實(shí)驗(yàn) 中一個(gè)非常常見(jiàn)的題目。由于單片機(jī)給人有很大的發(fā)揮空間,是以會(huì)對(duì)制作人 以高要求對(duì)待,并且在掌握設(shè)計(jì)的同時(shí)程序要以簡(jiǎn)潔為主,功能上要能滿足人 們需求,顯示界面要大膽創(chuàng)新,標(biāo)新立異。lcd 顯示的數(shù)字時(shí)鐘清晰直觀的顯 示準(zhǔn)確時(shí)間、而且精度很是高、并且有夜視功能,還擴(kuò)展出多種與人方便功能。 本設(shè)計(jì)中的簡(jiǎn)易燈光

10、時(shí)鐘既是一個(gè)時(shí)間控制系統(tǒng),又包含溫度檢測(cè)系統(tǒng), 既能準(zhǔn)確無(wú)誤的顯示出正確的高精度的時(shí)間又能檢測(cè)當(dāng)前的溫度 本文提出了以 stc51 系列單片機(jī)為核心,采用 ds1302 作為電子時(shí)鐘的核 心芯片的設(shè)計(jì)方案,與溫度傳感器 ds18b20、led 顯示、時(shí)鐘芯片 ds1302、 按鍵等模塊組成硬件的電子電路系統(tǒng)。顯示采用 lcd,以實(shí)現(xiàn)顯示年、月、日、 時(shí)、分鐘、秒、星期、溫度。設(shè)計(jì)過(guò)程中使用 keilc51 軟件,采用 c 語(yǔ)言編程; 此外,還要從多方面保障系統(tǒng)的穩(wěn)定性,提高系統(tǒng)的性能指標(biāo) 本設(shè)計(jì)可以對(duì)時(shí)間進(jìn)行實(shí)時(shí)的校準(zhǔn),讀取時(shí)間方便、能直觀顯示實(shí)時(shí)時(shí)間、 功能方面體現(xiàn)多樣話、簡(jiǎn)單明了的電路、低

11、廉的成本都是該設(shè)計(jì)的優(yōu)點(diǎn),滿足 未來(lái)電子設(shè)計(jì)的發(fā)展要求,市場(chǎng)前景好。 1.2 本系統(tǒng)實(shí)現(xiàn)的主要功能 本系統(tǒng)設(shè)計(jì)制作一個(gè)基于單片機(jī)的簡(jiǎn)易燈光時(shí)鐘。能實(shí)現(xiàn)以下幾種功能: (1)鍵盤掃描,設(shè)計(jì)按鍵掃描程序下載到單片機(jī),每個(gè)按鍵賦予一個(gè)功能, 單片機(jī)通過(guò)掃描程序檢測(cè)用戶按鍵,確定后實(shí)現(xiàn)功能。 (2)通過(guò)單片機(jī)的 ds1302 的數(shù)據(jù)采集,并實(shí)時(shí)顯示年,月,日,時(shí),分, 秒,和星期在液晶屏上,并且可以設(shè)置時(shí)間,系統(tǒng)不供電的情況時(shí)鐘芯片依然 可以由后備紐扣電池供電,使其掉電時(shí)間保存。 (3)用戶可以設(shè)定鬧鐘時(shí)間,當(dāng)時(shí)間到了之后,系統(tǒng)自動(dòng)驅(qū)動(dòng)蜂鳴器發(fā)響。 (4)系統(tǒng)附帶有整點(diǎn)報(bào)時(shí)功能,以及任何時(shí)候通過(guò)按鍵報(bào)

12、時(shí)功能。 (5)系統(tǒng)還帶有測(cè)溫功能,單片機(jī)可以實(shí)時(shí)讀取 ds18b20 的溫度數(shù)據(jù)并在 液晶上顯示。 第二章 總體方案論證與設(shè)計(jì) 本系統(tǒng)可以由主控、顯示、時(shí)鐘、溫度檢測(cè)、電源等模塊組成,以下是討 論這幾個(gè)模塊的選型和論證。 2.1 主控模塊的選型和論證 方案一: 采用 msp430f149,msp430f169 系列單片機(jī),該單片機(jī)是 ti 公司 1996 年 開始推向市場(chǎng)的一種 16 位超低功耗的混合信號(hào)處理器。其內(nèi)部集成了很多模擬 電路、數(shù)字電路和微處理器,提供 12 位 adc,具有采樣、保持、自動(dòng)掃描, 有 2 個(gè) 16 位計(jì)數(shù)器等強(qiáng)大的功能。但芯片價(jià)格昂貴,不適合一般的設(shè)計(jì)和開發(fā)。

13、方案二 采用 52 系列的單片機(jī),該單片機(jī)具有可靠性高,價(jià)格成本低,解密難,高 性能的特點(diǎn),32 個(gè) io 口,且 stc 系列的單片機(jī)可以在線編程、調(diào)試。 因此選用方案二中的 52 系列單片機(jī)作為主控芯片。 2.2 顯示模塊的選型和論證 方案一: 用點(diǎn)陣式數(shù)碼管顯示,它是由發(fā)光二極管八行和八列顯示文本,更適合用 于顯示文字,如進(jìn)行數(shù)字顯示使用就太浪費(fèi)了,而且價(jià)格比較高,所以不用此 種作為顯示。 方案二: 使用 led 數(shù)碼管動(dòng)態(tài)掃描,led 數(shù)碼管雖然價(jià)格適中,最適合數(shù)字顯示, 采用動(dòng)態(tài)掃描的方法與單片機(jī)連接,單片機(jī)口線占用得少。但是由于數(shù)碼管動(dòng) 態(tài)掃描需要借助 74ls164 移位寄存器,

14、74ls164 在調(diào)試的時(shí)候,電路方面常出 故障,所以不采用 led 數(shù)碼管作為顯示。 方案三: 選用 lcd 液晶顯示屏,它可以清晰可見(jiàn)的顯示文字,圖像,功能很是強(qiáng)大, 關(guān)于本設(shè)計(jì)的要求,我們使用一個(gè) lcd1602 即能滿足要求,成本低,雖然接口 線有點(diǎn)多,但是調(diào)試會(huì)很方便。 所以本設(shè)計(jì)中方案三中的 lcd1602 液顯示屏作為顯示模塊。 2.3 時(shí)鐘芯片的選型和論證 方案一: 用程序控制單片機(jī)實(shí)現(xiàn)時(shí)間計(jì)數(shù)。采取該方案雖然能夠縮小時(shí)鐘芯片的使 用量,節(jié)省成本開支,但是,誤差會(huì)非常大。 方案二: 采用 ds1302 時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,ds1302 是美國(guó) dallas 公司推出的一 種性能比

15、較高、性價(jià)比高,功耗較低、帶 ram 的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、 月、日、時(shí)鐘、分鐘、秒以及星期進(jìn)行計(jì)時(shí),還能進(jìn)行閏年補(bǔ)償,工作電壓為 2.5v5.5v。ds1302 里面含有一個(gè) 8*31 的 ram 存儲(chǔ)器,用于臨時(shí)存放數(shù)據(jù)。 ds1302 主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,具有可編程充電和掉電保護(hù)功能,采用 普通 32.768khz 晶振作為標(biāo)準(zhǔn)時(shí)鐘。 因此本設(shè)計(jì)中采用方案二中的 ds1302 作為時(shí)鐘模塊 2.4 溫度檢測(cè)模塊的選型和論證 方案一: ad590 感溫電流源的輸出電流與絕對(duì)溫度成比例。電源電壓在 4 v30 v 范圍內(nèi),ad590 可充當(dāng)一個(gè)高阻抗,調(diào)節(jié)系數(shù)為 1 a/k 為

16、恒流調(diào)節(jié)器。通過(guò)激 光調(diào)整的片內(nèi)薄膜電阻,用于校準(zhǔn)裝置,使該器件在 25c 時(shí)有 298.2 a 的輸 出電流。由于該芯片輸出為模擬量還同時(shí)需要 ad 轉(zhuǎn)換器對(duì)其進(jìn)行采集。因此不 適用于本設(shè)計(jì) 方案二: ds18b20 數(shù)字溫度傳感器耐磨耐碰,體積小,主要根據(jù)應(yīng)用場(chǎng)合的不同而 外觀不同,ds18b20 用途廣泛,如電纜溝測(cè)溫,機(jī)房測(cè)溫,彈藥庫(kù)測(cè)溫、農(nóng)業(yè) 大棚測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫,潔凈室測(cè)溫等場(chǎng)合。使用場(chǎng)合廣,價(jià) 格低,實(shí)用性強(qiáng)。 因此本設(shè)計(jì)采用方案二中的 ds18b20 芯片進(jìn)行溫度采集。 2.5 整點(diǎn)報(bào)時(shí)模塊的選型和論證 整點(diǎn)報(bào)時(shí)模塊集成的語(yǔ)音芯片 ny3p035,ny3p035

17、是一款具有 pwm 輸出 的 otp 語(yǔ)音標(biāo)準(zhǔn)芯片,該芯片內(nèi)部集成了 09 以及一些常用單位的錄音。使用 時(shí)只要根據(jù)錄音存放的位置依次讀出就能播報(bào)出當(dāng)前的重量和價(jià)格。 2.6 電源模塊 方案一: 選用以下兩塊芯片 lm337 和 lm317 自制一個(gè)可調(diào)的電源模塊,lm317 和 lm337 分別是三端可調(diào)式輸出正電壓穩(wěn)壓器和三端可調(diào)式輸出負(fù)電壓穩(wěn)壓器。 通過(guò)這 2 塊芯片,我們可以很容易的得到正負(fù) 5v,正負(fù) 12v 和正 3v 電壓,但 由于本設(shè)計(jì)需求各模塊體積小,而自制電源體積較大,故不采用此方案。 方案二: 采用 usb 接口供電,既能夠下載程序,也能供電,一舉兩得,故采用此方 案。

18、2.7 系統(tǒng)整體設(shè)計(jì)概述 語(yǔ)音芯片揚(yáng)聲器 蜂鳴器模塊 主控模塊 單片機(jī) 液晶顯示模塊 lcd1602 溫度測(cè)量模塊 ds18b20 時(shí)鐘模塊 ds1302 按鍵模塊 圖 2.7 系統(tǒng)結(jié)構(gòu)框圖 本系統(tǒng)是以 stc89c52 單片機(jī)為核心,首先要對(duì)系統(tǒng)進(jìn)行初始化,然后單 片機(jī)對(duì)鍵盤,ds18b20 等模塊進(jìn)行掃描,實(shí)現(xiàn)對(duì)鍵盤的響應(yīng),實(shí)時(shí)顯示分鐘、 秒等,對(duì) 1602 液晶顯示,鬧鐘、溫度測(cè)量等功能,其中,單片機(jī)起到控制和協(xié) 調(diào)各功能模塊的工作。系統(tǒng)的結(jié)構(gòu)框圖見(jiàn)圖 2.7。 第三章.系統(tǒng)硬件電路設(shè)計(jì) 3.1 主控模塊 單片機(jī)在全部設(shè)計(jì)中起到了統(tǒng)領(lǐng)全局,承前啟后的作用,在該設(shè)計(jì)中單片 機(jī)需要完成的任務(wù)

19、主要有對(duì)鍵盤掃描,對(duì) ds18b20 進(jìn)行及時(shí)的檢測(cè),驅(qū)動(dòng)蜂鳴 器,驅(qū)動(dòng)液晶顯示需要顯示的內(nèi)容,所以,在本設(shè)計(jì)中我們選用 52 系列的單片 機(jī)作為系統(tǒng)的總控制模塊。 如圖 3.1 所示為 stc89c52 單片機(jī)的結(jié)構(gòu)框圖。 時(shí)鐘電路 rom/eprom/flash 4kb ram128b sfr 21個(gè) 定時(shí)個(gè)/計(jì)數(shù)器2 cpu 總線控制 中斷系統(tǒng) 5個(gè)中斷源 2個(gè)優(yōu)先級(jí) 串行口 全雙工1個(gè) 4個(gè)并行口 xtal2xtal1 rst ea ale psen p0p1p2p3 vss vcc 圖 3.1 stc89c52 單片機(jī)結(jié)構(gòu)框圖 3.1.1 單片機(jī)的最小系統(tǒng)設(shè)計(jì) p1.0 1 p1.1

20、 2 p1.2 3 p1.3 4 p1.4 5 p1.5/mosi 6 p1.6/miso 7 p1.7/sck 8 reset 9 p3.0 10 p3.1 11 p3.2 12 p3.3 13 p3.4 14 p3.5 15 p3.6 16 p3.7 17 xtal2 18 xtal1 19 vss 20 p2.0 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale 30 ea 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.

21、0 39 vcc 40 u1 供供供 +5v 12 y2 12mhz 30pfc3 30pfc4 1 2 3 4 5 6 7 8 9 p110k供供 +5v s1 sw-pb 10k r3 10uf c2 +5v 圖 3.1.1 單片機(jī)最小系統(tǒng)電路圖 圖 3.1.1 所示的電路圖是單片機(jī)在本設(shè)計(jì)中的最小系統(tǒng),時(shí)鐘電路選用 12m 的晶振,作用是為單片機(jī)提供一個(gè)時(shí)鐘基準(zhǔn),其執(zhí)行一條指令需要一個(gè)機(jī) 械周期,單片機(jī)的復(fù)位電路是讓單片機(jī)的狀態(tài)回到剛上電的狀態(tài),因?yàn)?p0 口是 一個(gè)漏極準(zhǔn)雙向的 i/o 口,所以需要上拉電阻才能正常工作。 3.2 lcd 液晶顯示器簡(jiǎn)介 由于本設(shè)計(jì)中要求顯示界面顯示一些

22、參數(shù),因此這里選用了 lcd1602 作為 界面顯示,可以把一些相關(guān)的參數(shù)進(jìn)行顯示。 3.2.1 液晶原理介紹 顯示部分選用 lcd1602 字符型液晶,輔以必要的外接電路組成顯示模塊, 單片機(jī)控制帶字符的 lcd1602 查找其字符庫(kù),從中選出要顯示的字符,設(shè)置光 標(biāo),將之前查找到的字符在此對(duì)應(yīng)即可。 3.2.2 液晶模塊簡(jiǎn)介 lcd1602 液晶模塊的引腳圖如圖 3.2.2 所示。 圖 3.2.2 lcd1602 引腳圖 液晶寄存器選擇控制如表 1。 表 1 寄存器選擇控制 rsr/w操作說(shuō)明 00寫入指令寄存器(清除屏幕內(nèi)容顯示等) 01讀位地址計(jì)數(shù)器(db0db6)和 busy fla

23、g(db7) 10寫入數(shù)據(jù)寄存器(顯示各字型等) 11從數(shù)據(jù)寄存器讀取數(shù)據(jù) 3.2.3 液晶顯示部分與 stc89c52 的接口 如圖 3.2.3 所示。用 stc89c52 的 p0 口作為數(shù)據(jù)線,用 p1.2、p1.1、p1.0 分別作為 lcd 的 en、r/w、rs。其中 en 作為片選信號(hào),在出現(xiàn)下降沿的時(shí) 候觸發(fā),rs 是寄存器選擇信號(hào),r/w 是讀寫信號(hào),在整個(gè)顯示模塊中,我們 主要設(shè)計(jì)步驟如下:首先進(jìn)行清屏,顯示模塊初始化。然后將接口數(shù)據(jù)位設(shè)置 為 8 位,顯示行數(shù)設(shè)置為 2 行,設(shè)定字型為 57 點(diǎn)陣,然后取消光標(biāo)和字體閃 爍, 顯示設(shè)置為整體顯示,最后設(shè)置為正向增量方式且不

24、移位。將要顯示的字 符送到對(duì)應(yīng)的數(shù)組中,最后進(jìn)行統(tǒng)一顯示。 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5/mosi 6 p1.6/miso 7 p1.7/sck 8 reset 9 p3.0 10 p3.1 11 p3.2 12 p3.3 13 p3.4 14 p3.5 15 p3.6 16 p3.7 17 xtal2 18 xtal1 19 vss 20 p2.0 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale 30 ea 31 p0.7 32 p0.6 33 p0

25、.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 u1 供供供 +5v 12 y2 12mhz 30pfc3 30pfc4 1 2 3 4 5 6 7 8 9 p110k供供 vss 1 vcc 2 vee 3 rs 4 rw 5 en 6 db0 7 db1 8 db2 9 db3 10 db4 11 db5 12 db6 13 db7 14 a 15 k 16 lcd1 lcd1602 +5v 10k r1 +5v +5v +5v s1 sw-pb 10k r3 10uf c2 +5v 圖 3.2.3 lcd1602 與 stc89c

26、52 的接口 3.3 鍵盤模塊設(shè)計(jì) 本按鍵模塊按鍵一端接單片機(jī)的 i/o 口,另一端接地,由于單片機(jī)的 i/o 口內(nèi)部都有上拉電阻,所以在沒(méi)有按鍵按下的時(shí)候,我們會(huì)檢測(cè)到高電平,當(dāng) 按鍵被按下,i/o 口與地面等電勢(shì),此時(shí)為低電平,因此通過(guò) i/o 端口的狀態(tài)變 化檢測(cè)即可知道按下了哪個(gè)按鍵。4 個(gè)按鍵分別代表以下功能,第一為功能選 擇按鍵,可以切換不同參數(shù)設(shè)置界面,第二個(gè)為切換按鍵,可以切換時(shí)、分、 秒等參數(shù)進(jìn)行設(shè)置,第三個(gè)為增加按鍵,第四個(gè)為減少按鍵。其中按鍵還可以 設(shè)置鬧鐘,重置時(shí)間等功能。鍵盤模塊電路圖如圖 3.3 所示。 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.

27、4 5 p1.5/mosi 6 p1.6/miso 7 p1.7/sck 8 reset 9 p3.0 10 p3.1 11 p3.2 12 p3.3 13 p3.4 14 p3.5 15 p3.6 16 p3.7 17 xtal2 18 xtal1 19 vss 20 p2.0 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale 30 ea 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 u1 供供供 +

28、5v s2 sw-pb s3 sw-pb s4 sw-pb s5 sw-pb 圖 3.3 鍵盤模塊電路圖 3.4 蜂鳴器模塊設(shè)計(jì) 本設(shè)計(jì)還帶有鬧鐘功能,用戶可以通過(guò)按鍵設(shè)定好鬧鐘,當(dāng)當(dāng)前時(shí)間跟鬧 鐘時(shí)間一致的時(shí)候,單片機(jī)就可以驅(qū)動(dòng)蜂鳴器發(fā)聲。 通過(guò)試驗(yàn),發(fā)現(xiàn)單片機(jī)的 i/o 口無(wú)法直接驅(qū)動(dòng)蜂鳴器,是因?yàn)榉澍Q器的工 作電流一般比較大,所以我們利用三極管開關(guān)電路來(lái)提供足夠大的驅(qū)動(dòng)電流。 本處選用的是 8550 三極管,它是一個(gè) pnp 型的三極管,當(dāng)基極給低電平的時(shí)候 三極管導(dǎo)通,這時(shí)候蜂鳴器發(fā)聲,當(dāng)給高電平的時(shí)候,三極管關(guān)閉,蜂鳴器不 發(fā)聲。 蜂鳴器模塊的電路圖如圖 3.4 所示。 1k r4

29、+5v p3.2 ls1 供供供 q1 8550 圖 3.4 蜂鳴器驅(qū)動(dòng)電路電路圖 3.5 時(shí)鐘模塊的設(shè)計(jì) 在本設(shè)計(jì)中,時(shí)鐘模塊的設(shè)計(jì),我們把 ds1302 這塊串行日歷時(shí)鐘芯片作為 核心,因?yàn)?ds1302 具有與單片機(jī)的連線很少,節(jié)省單片機(jī)的系統(tǒng)資源的有點(diǎn) ,單片機(jī)通過(guò) i/o 讀取 ds1302 上的數(shù)據(jù)可以得到實(shí)時(shí)時(shí)間。 由于采用單片機(jī)作為計(jì)時(shí)模塊會(huì)占用硬件資源,而且采用中斷、查詢等方 式也要耗費(fèi)單片機(jī)的資源,可能會(huì)造成很大的浪費(fèi),而采用 ds1302 卻可以很好 的解決這類問(wèn)題。 ds1302 是美國(guó) dallas 公司推出的一種帶 ram、高性能、能對(duì)年、月、日、 星期、時(shí)、分、秒

30、進(jìn)行計(jì)時(shí),并且低功耗,可以進(jìn)行閏年補(bǔ)償?shù)臅r(shí)鐘電路,工 作電壓為 2.5v5.5v。采用 24 小時(shí)或是 12 小時(shí)的格式。此外,ds1302 采用雙 電源供電,主電源和備用電源,vcc1 作為備用電源,在模塊整體供電中提供電 壓相對(duì)低的電壓,而 vcc2 作為主電源,vcc1 和 vcc2 的供電模式?jīng)Q定如下: vcc2vcc1+0.2 時(shí) 由 vcc2 供電 vcc2vcc1 時(shí) 由 vcc1 供電 圖 3.5.1 ds1302 引腳示意圖 如圖 3.5.1 為 ds1302 的引腳圖。x1 和 x2 是震蕩源,外接 32.76khz 的晶 振,gnd 為接地端,rst 為復(fù)位端,低電平有效

31、,圖 3.5.2 為 ds1302 的引腳功 能圖 引腳號(hào)引腳名稱功能 1vcc2主電源 2,3x1,x2振蕩源,外接 32768hz 晶振 4gnd地線 5rst復(fù)位/片選線 6i/o串行數(shù)據(jù)輸入/輸出端(雙向) 7sclk串行數(shù)據(jù)輸入端 8vcc1后備電源 圖 3.5.2 ds1302 引腳功能表 在 3.5.3 中,最高位控制字(第七位)必須是一個(gè)合乎邏輯的,即必須為 邏輯 1,第六位控制字為 0 是日歷時(shí)鐘對(duì)數(shù)據(jù)的訪問(wèn),第六位是 1 表示存取 ram 數(shù)據(jù),第五位地址到第一位(a4-a0)表示指針指向操作單元地址,電平 1 或 0 分別表示寫操作是讀操作。 圖 3.5.3 ds1302

32、 控制字 ds1302 共有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的 數(shù)據(jù)位為 bcd 碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表 2,其中奇數(shù)為讀 操作,偶數(shù)為寫操作。 總共有 12 個(gè)寄存器 ds1302,與日歷 ,時(shí)鐘相關(guān)寄存器共 7 個(gè),都存儲(chǔ)為 bcd 格式,日歷,時(shí)鐘寄存器和相關(guān)聯(lián)的控制字的數(shù)據(jù)位如表 2 所示,其特征 在于所述奇數(shù)讀操作,寫操作是偶數(shù)。 表 2 ds1302 的日歷、時(shí)鐘寄存器及其控制字 命令字各位內(nèi)容寄存器名 寫操作讀操作 取值 范圍76543210 秒寄存器80h81h00-59ch10 秒秒 分鐘寄存器82h83h00-59010 分分

33、10 小時(shí)寄存器 84h85h 01-12 或 00-23 12/ 24 0 am/pm 時(shí)時(shí) 日期寄存器86h87h131010 日日 月份寄存器88h89h01-1200010月 周日寄存器8ah8bh01-0700000周日 年份寄存器8ch8dh00-9910 年年 從表 2 我們可以發(fā)現(xiàn),小時(shí)寄存器的第七位為 1 是 12 小時(shí)計(jì)時(shí)模式,在 12 小時(shí)計(jì)時(shí)模式下,第五位為高電平表示 am,低電平表示 pm,第七位為 0 是 24 小時(shí)模式,這是位 5 為第二個(gè)十小時(shí)位標(biāo)志。 暫停位位于秒寄存器的第七位,當(dāng)該位被設(shè)置為 1 時(shí),時(shí)鐘振蕩器停止工 作,然后 ds1302 工作在低功率模式

34、,該位為 0 時(shí),時(shí)鐘正常運(yùn)行。 控制寄存器地址是 8fh,8eh,其第七位是寫保護(hù)位,其余七位均要置 0, 在對(duì)時(shí)鐘進(jìn)行的任何寫操作時(shí),寫保護(hù)位 wp 必須是 0,否則,寫保護(hù)位禁止任 何一個(gè)寄存器進(jìn)行寫操作。 3.6 溫度檢測(cè)模塊設(shè)計(jì) 本設(shè)計(jì)還帶有一個(gè)溫度檢測(cè)的功能,系統(tǒng)可以通過(guò)讀取 ds18b20 的溫度數(shù) 據(jù)并在 lcd1602 上顯示,使整個(gè)時(shí)鐘的功能更加豐富。 3.6.1 溫度傳感器工作原理 溫度傳感器 ds18b20 測(cè)溫在-55 至+125 攝氏度范圍內(nèi),具有 12 位的精度。 它有 0.0625 攝氏度的測(cè)溫分辨率,可設(shè)置存儲(chǔ)在 eeprom 中,用戶自定義的報(bào) 警溫度在掉電

35、后仍然可以保存。另外,多個(gè)溫度傳感器可以并聯(lián)連接,但只需 要使用 cpu 上的一個(gè)端口就可以與溫度傳感器電路進(jìn)行通信,這樣微控制器端 口占用最少。它可以節(jié)省大量的端口和邏輯電路就能構(gòu)成溫度測(cè)量系統(tǒng)。圖 3.6.1 是 ds18b20 的引腳圖。 圖 3.6.1 ds18b20 引腳圖 我在實(shí)驗(yàn)中發(fā)現(xiàn),當(dāng)使用 ds18b20,vcc 電壓應(yīng)保持在 5v,否則,如果電 壓太低,降低了溫度傳感器的精度。而且,溫度傳感器從測(cè)量溫度結(jié)束后,將 溫度傳出到轉(zhuǎn)換到數(shù)字量的時(shí)候,需要一定的延時(shí)時(shí)間,否則會(huì)導(dǎo)致轉(zhuǎn)換錯(cuò)誤, 總是顯示一個(gè)時(shí)間不動(dòng)。 3.6.2 ds18b20 硬件電路設(shè)計(jì) gnd 1 dq 2 v

36、cc 3 u3 ds18b20 +5v 10k r5 +5v 圖 3.6.2 ds18b20 溫度檢測(cè)電路圖 如圖 3.6.2 所示的是 ds18b20 的硬件設(shè)計(jì),dq 作為溫度傳感器 ds18b20 數(shù) 據(jù)輸出端口,單片機(jī)通過(guò)檢測(cè)可以實(shí)時(shí)輸出溫度值的數(shù)據(jù),由于該溫度傳感器 是單線通信,所以當(dāng)發(fā)送數(shù)據(jù)時(shí)為低電平有效,接收數(shù)據(jù)是為高電平有效,即 輸出邏輯 1,但是,在接收狀態(tài)下,必須外接上拉電阻將其拉為高電平,才能 正常輸出邏輯 1. 3.7 語(yǔ)音模塊設(shè)計(jì) 語(yǔ)音模塊設(shè)計(jì)采用 ny3p035 芯片,該芯片內(nèi)部含有一個(gè) rom 表。單片機(jī)通 過(guò)對(duì)該芯片發(fā)送序列的脈沖信號(hào)來(lái)查找該 rom 的地址,以

37、此來(lái)發(fā)出聲音。 圖 3.7.1 語(yǔ)音芯片引腳圖 單片機(jī)控制原理是:先發(fā)送一個(gè)復(fù)位脈沖到 rst(rest)腳,接著發(fā)送 10 個(gè)脈沖到 data 腳。芯片即刻工作,播放第十段的聲音;如果需要播放第五段 的聲音,則是:先發(fā)送一個(gè)復(fù)位脈沖到 rest 腳,接著發(fā)送 5 個(gè)脈沖到 data 腳。芯片即刻工作,播放第 5 段的聲音; 第四章.系統(tǒng)軟件設(shè)計(jì) 4.1 系統(tǒng)軟件總體設(shè)計(jì) 開始 系統(tǒng)初始化 系統(tǒng)顯示相關(guān) 時(shí)間溫度信息 是否按下按鍵 按鍵掃描子程序 否 是 讀取時(shí)鐘芯片 的相關(guān)時(shí)間信息 讀取溫度參數(shù) 是否和設(shè)定 的鬧鐘時(shí) 間一致 驅(qū)動(dòng)鬧鐘發(fā)聲 是 否 圖 4.1.1 主程序流程圖 主程序流程圖如

38、圖 4.1.1 所示,首先系統(tǒng)經(jīng)過(guò)初始化,清除系統(tǒng)中原有的 一些冗余信息后,讀取時(shí)鐘芯片 ds1302 的內(nèi)部相關(guān)信息,例如:年、月、日等 時(shí)間參數(shù),緊接著判斷當(dāng)前信息是不是和設(shè)定的鬧鐘信息一致,如果是的話, 單片機(jī)就發(fā)出驅(qū)動(dòng)信號(hào)驅(qū)動(dòng)蜂鳴器發(fā)出聲音,如果不是,則單片機(jī)將讀取溫度 傳感器 ds18b20 的相關(guān)信息,然后將讀取的時(shí)間信息和溫度信息傳入 lcd1602 進(jìn)行顯示,單片機(jī)在每個(gè)循環(huán)時(shí)都會(huì)檢測(cè)是否有用戶按鍵,如果有按鍵的話, 將自動(dòng)跳轉(zhuǎn)到相應(yīng)的子程序。 開始 復(fù)位端變高啟動(dòng)一 次數(shù)據(jù)傳送工作 寫命令字節(jié)一位 sclk發(fā)脈沖 夠8次嗎? 寫數(shù)據(jù)字節(jié)一位 sclk發(fā)脈沖 夠8次嗎? 復(fù)位端

39、變低 結(jié)束 否 是 否 是 圖 4.1.2 時(shí)鐘模塊子函數(shù)程序流程圖 時(shí)鐘模塊的流程圖如圖 4.1.2 所示,首先先讓時(shí)鐘芯片的復(fù)位引腳置高,然 后開始數(shù)據(jù)傳輸,然后寫一個(gè)指令字節(jié),然后發(fā)送串行時(shí)鐘脈沖信號(hào),一直循 環(huán),直到發(fā)送了 8 個(gè)命令字節(jié)為止。當(dāng)發(fā)送完 8 個(gè)命令字節(jié)時(shí),寫數(shù)據(jù)進(jìn)時(shí)鐘 芯片,首先寫入一位數(shù)據(jù)字節(jié),然后給 sclk 引腳發(fā)送脈沖,一直循環(huán)寫入 8 次,這樣數(shù)據(jù)寫入完成,最后將復(fù)位引腳拉為低電平,這樣就可以完成時(shí)鐘芯 片的一次操作。 按鍵1是否 按下 按鍵2是否 按下 按鍵3是否 按下 時(shí)間設(shè)定鬧鈴設(shè)定 切換對(duì)應(yīng)菜 單 增加相應(yīng)值 y n n y yy n y 按鍵掃描子

40、函數(shù) 松手檢測(cè) 松手檢測(cè) 鬧鈴標(biāo)志位 清零 y gfunctionco unt=0 按鍵4是否 按下 y gfunctionc ount=2? gfunctionco unt=3? nn gfunctionco unt=1? n gfunctioncount =0 /初始化液晶 void display1(void)/顯示正常界面,時(shí)間的函數(shù) ds1302_read_time(); /讀取 ds1302 時(shí)間 lcddispnum(1,1,(nian4); /在液晶上顯示年的十位 lcddispnum(2,1,(nian/在液晶上顯示年的個(gè)位 lcddispchar(3,1,-);/在液晶上顯

41、示字符- lcddispnum(4,1,(yue4);/在液晶上顯示月的十位 lcddispnum(5,1,(yue /在液晶上顯示月的個(gè)位 lcddispchar(6,1,-);/在液晶上顯示字符- lcddispnum(7,1,(ri4); /在液晶上顯示日的十位 lcddispnum(8,1,(ri/在液晶上顯示日的個(gè)位 lcddispnum(1,2,(shi4); /在液晶上顯示十的十位 lcddispnum(2,2,(shi/在液晶上顯示十的個(gè)位 lcddispchar(3,2,:); /在液晶上顯示顯示字符: lcddispnum(4,2,(fen4); /在液晶上顯示分的十位 l

42、cddispnum(5,2,(fen/在液晶上顯示分的個(gè)位 lcddispchar(6,2,:);/在液晶上顯示顯示字符: lcddispnum(7,2,(miao4);/在液晶上顯示秒的十位 lcddispnum(8,2,(miao/在液晶上顯示秒的個(gè)位 xingqi = (xingqi /星期 if(xingqi = 1) /判斷并顯示星期的字符 lcddispstring(12,1,mon.); /如果星期等于 1 則顯示 mon. else if(xingqi = 2) lcddispstring(12,1,tues); /如果星期等于 2 則顯示 tues else if(xingq

43、i = 3) lcddispstring(12,1,wed.); /如果星期等于 3 則顯示 wed. else if(xingqi = 4) lcddispstring(12,1,thu.); /如果星期等于 4 則顯示 thu. else if(xingqi = 5) lcddispstring(12,1,fri.); /如果星期等于 5 則顯示 fri. else if(xingqi = 6) lcddispstring(12,1,sat.); /如果星期等于 6 則顯示 sat. else if(xingqi = 7) lcddispstring(12,1,sun.); /如果星期等于

44、 7 則顯示 sun. fena = (fen /把分的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 shia = (shi /把時(shí)的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 /鬧鈴,判斷是否有鬧鈴。如果時(shí)間到,則蜂鳴器響,否則不響 if(alarmflag0 = 1 else beep = 1; /轉(zhuǎn)點(diǎn)時(shí)的鬧鐘標(biāo)志位要清零 if(shi = 0 if(fen = 0 if(shi4)!=0) if(shi4)=1) music(l_shi); else music(shi4)+1); music(l_shi); if(shi else music(shi music(l_dian); music(l_zheng); /

45、讀取溫度的值 readtemperature(); /顯示溫度的值 lcddispstring(12,2,temperaturedate); void main(void) /初始化操作 displayinit(); music(l_1); while(1)/死循環(huán) if(gfunctioncount = 0)/判斷是否為正常顯示界面 display1();/顯示子函數(shù) 1 keyscan(); /按鍵掃描子函數(shù) #include #includelcd1602.h /* function: void delayn40us(unsigned int n) description: 延時(shí)函數(shù),延

46、時(shí) 40us 的整數(shù)倍,傳入值 n 代表延時(shí) 時(shí)間到 n *40us,不能實(shí)現(xiàn)準(zhǔn)確延時(shí),只能實(shí)現(xiàn)大 概時(shí)間的延時(shí),利用的是指令實(shí)現(xiàn)延時(shí)功能。 calls: 沒(méi)有調(diào)用其它函數(shù) called by: void lcdwritecommand(unsigned char dat); void lcdwritedata(unsigned char dat); input: unsigned int n - 用于延時(shí)時(shí)間的確定,取值、 為 165535 output: 無(wú) return: 無(wú) */ void delayn40us(unsigned int n) unsigned int i; unsig

47、ned char j; for(i=n;i0;i-) for(j=0;j2;j+); /* function: void lcdinit(void); description: 液晶初始化函數(shù),對(duì) lcd1602 進(jìn)行初始化操作, 在每一次實(shí)用液晶前必須用到的,外部可調(diào)用 函數(shù)。 calls: void lcdwritecommand(unsigned char dat); delayn40us(unsigned int n); called by: main();或其他 input: 無(wú) output: 無(wú) return: 無(wú) */ void lcdinit(void) lcdwriteco

48、mmand(0 x38);/*設(shè)置 8 位格式,2 行,5x7*/ lcdwritecommand(0 x38);/*設(shè)置 8 位格式,2 行,5x7*/ lcdwritecommand(0 x38);/*設(shè)置 8 位格式,2 行,5x7,有的液晶做的不好, 寫三遍保險(xiǎn)!*/ lcdwritecommand(0 x0c);/*整體顯示,關(guān)光標(biāo),不閃爍*/ lcdwritecommand(0 x06);/*設(shè)定輸入方式,增量不移位*/ lcdwritecommand(0 x01);/*清除屏幕顯示*/ delayn40us(100);/*清屏延時(shí)*/ /* function: void lcdw

49、ritecommand(unsigned char dat); description: 寫命令函數(shù),對(duì) lcd1602 內(nèi)部寄存器進(jìn)行操作。 calls: delayn40us(unsigned int n); called by: void lcdinit(void); void lcddispchar(unsigned char x,unsigned char y,unsigned char dat); void lcddispnum(unsigned char x,unsigned char y,unsigned char dat); input: unsigned char dat

50、- 寫入的命令 output: 無(wú) return: 無(wú) */ void lcdwritecommand(unsigned char dat) lcd_db=dat; lcd_rs=0;/*選擇寫指令*/ lcd_rw=0;/*寫入指令值*/ lcd_e=1; /*使能 lcd1602*/ lcd_e=0; delayn40us(1);/*寫命令延時(shí)*/ /* function: void lcdwritedata(unsigned char dat); description: 寫數(shù)據(jù)函數(shù),將數(shù)據(jù)寫入 lcd1602 中。 calls: delayn40us(unsigned int n);

51、called by: void lcdinit(void); void lcddispchar(unsigned char x,unsigned char y,unsigned char dat); void lcddispnum(unsigned char x,unsigned char y,unsigned char dat); input: unsigned char dat - 寫入的數(shù)據(jù) output: 無(wú) return: 無(wú) */ void lcdwritedata(unsigned char dat) /寫數(shù)據(jù)函數(shù) lcd_db=dat; lcd_rs=1;/*選擇寫數(shù)據(jù)*/ l

52、cd_rw=0;/*寫入數(shù)據(jù)值*/ lcd_e=1; /*使能 lcd1602*/ lcd_e=0; delayn40us(1);/*寫數(shù)據(jù)延時(shí)*/ /* function: void lcddispchar(unsigned char x,unsigned char y,unsigned char dat); description: 在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)字符,可外部調(diào)用。 calls: lcdwritecommand(unsigned char dat); void lcdwritedata(unsigned char dat); called by: main();及其

53、他 input: x(0-15),y(1-2),dat 為顯示字符a形式。 output: 無(wú) return: 無(wú) */ void lcddispchar(unsigned char x,unsigned char y,unsigned char dat) unsigned char address; if(y=1) address=0 x80+x; /*顯示在第一排的時(shí)候的 x 的地址*/ else address=0 xc0+x; /*顯示在第二排的時(shí)候的 x 的地址*/ lcdwritecommand(address); /*輸入地址*/ lcdwritedata(dat); /*輸入數(shù)

54、據(jù)*/ /* function: void lcddispnum(unsigned char x,unsigned char y,unsigned char dat); description: 在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)數(shù)字,可外部調(diào)用。 calls: lcdwritecommand(unsigned char dat); void lcdwritedata(unsigned char dat); called by: main();及其他 input: x(0-15),y(1-2),dat(0-9)。 output: 無(wú) return: 無(wú) */ void lcddispnum

55、(unsigned char x,unsigned char y,unsigned char dat) unsigned char address; if(y=1) address=0 x80+x; /*顯示在第一排的時(shí)候的 x 的地址*/ else address=0 xc0+x; /*顯示在第二排的時(shí)候的 x 的地址*/ lcdwritecommand(address); /*輸入地址*/ lcdwritedata(dat+48); /*輸入數(shù)據(jù)*/ /* function: void lcddispstring(unsigned char x,unsigned char y,unsign

56、ed char *string) description: 在屏幕上顯示一串字符,考慮到我的數(shù)值均存儲(chǔ)于數(shù)組中, 為方便而作,允許外部調(diào)用 calls: void lcddispchar(unsigned char x,unsigned char y,unsigned char dat); called by: main();及其他 input: x(0-15),y(1-2),string 為任意字符串,但是必須以 0 結(jié)尾。 output: 無(wú) return: 無(wú) */ void lcddispstring(unsigned char x,unsigned char y,unsigned c

57、har *string) while(*string != 0) /*沒(méi)有檢測(cè)到字符串結(jié)尾時(shí)*/ lcddispchar(x,y,*string+);/*逐個(gè)顯示字符串*/ x+; /*行地址加 1*/ /* function: void lcddispnumint(unsigned char x,unsigned char y,unsigned int dat); description: 在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)無(wú)符號(hào)整形數(shù)字,可外 部調(diào)用。 calls: lcddispnum(unsigned char x,unsigned char y,unsigned char dat

58、); called by: main();及其他 input: x(0-15),y(1-2),dat(0-65536)。 output: 無(wú) return: 無(wú) */ void lcddispnumint(unsigned char x,unsigned char y,unsigned int dat) unsigned char temp5,i = 0,j=0;/*分離萬(wàn)千百十個(gè)各個(gè)位臨時(shí)存儲(chǔ)*/ temp0 = dat/10000%10; temp1 = dat/1000%10; temp2 = dat/100%10; temp3 = dat/10%10; temp4 = dat%10;

59、while(tempi = 0) for(j=0;j 0 ; x-) for(y = 110 ; y 0 ; y-); void music(z) unsigned char i; shuju=0; rst=1; for(i=0;i220;i+);/delay 2ms rst=0; for(i=0;i0) shuju=1; for(i=0;i110;i+);/delay 1ms shuju=0; for(i=0;i4) * 10);/把分的 bcd 碼轉(zhuǎn)成 10 進(jìn) 制 shi = (shi /把時(shí)的 bcd 碼轉(zhuǎn)成 10 進(jìn) 制 if(alarmflag0=1 /取消鬧鈴標(biāo)志位 else g

60、functioncount+; /小菜單計(jì)數(shù)加一,進(jìn)入下一個(gè)設(shè)置的參 數(shù)界面 gtimecount = 0; /每次都從秒開始設(shè)定 if(gfunctioncount = 1 /讀取時(shí)鐘芯片的時(shí)間 miao = (miao /把秒的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 fen = (fen /把分的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 shi = (shi /把時(shí)的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 ri = (ri /把日的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 yue = (yue /把月的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 nian = (nian /把年的 bcd 碼轉(zhuǎn)成 10 進(jìn)制 xingqi = (xingqi /把

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論