版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-. z畢業(yè)設(shè)計(jì)論文中文摘要單片微型機(jī)算計(jì)俗稱單片機(jī),是一種運(yùn)用十分廣泛的微處理器。在各種稱為計(jì)算機(jī)控制的儀器和設(shè)備中的計(jì)算機(jī)控制都是用單片機(jī)來實(shí)現(xiàn)的。本系統(tǒng)以M16為核心器件,ISD1820、DS1302、DS1602顯示器為外圍,通過1602液晶顯示年月日、星期、時(shí)分秒,時(shí)間格式可以12或24進(jìn)制,實(shí)現(xiàn)了計(jì)時(shí)與時(shí)間校正、整點(diǎn)報(bào)時(shí)、時(shí)鐘掉電保持、日歷、電子音樂鬧鐘、自定義錄取音樂鬧鈴、任意按鍵語(yǔ)音報(bào)時(shí)和鬧鐘。關(guān)鍵字: 鬧鈴;單片機(jī);定時(shí)器畢業(yè)設(shè)計(jì)論文英文摘要Title Custom functions with the sound of the timing systemAbstactSin
2、gle piece of a single-chip microcontroller, calculate monly known as is the application of a wide range of microprocessors. In all kinds of puter control called instruments and equipment of the puter control is realized by using single chip processor. This system for the core device, with the M16 IS
3、D2560, DS1302, DS1602 displays for peripheral, through the 1602 LCD display date, week, meticulous, when time format can 12 or into the system, realize the 24 time and time correction, time, the clock on the hour power lost to keep, calendar, electronic music alarm clock, custom admitted music alarm
4、, any time and key voice alarm clock.Keywords: Alarm; SCM; timer-. z目 錄摘要TOC o 1-2 h u HYPERLINK l _Toc16576 1 概述 PAGEREF _Toc16576 1 HYPERLINK l _Toc25235 2 設(shè)計(jì)思路 PAGEREF _Toc25235 4 HYPERLINK l _Toc577 2.1 數(shù)字鐘的簡(jiǎn)單功能說明 PAGEREF _Toc577 4 HYPERLINK l _Toc22581 2.2 思路說明 PAGEREF _Toc22581 4 HYPERLINK l _
5、Toc10768 3 硬件設(shè)計(jì) PAGEREF _Toc10768 5 HYPERLINK l _Toc8516 3.1 mega16芯片的簡(jiǎn)單介紹 PAGEREF _Toc8516 5 HYPERLINK l _Toc32140 3.2 LCD芯片 PAGEREF _Toc32140 10 HYPERLINK l _Toc19065 3.3 按鍵控制 PAGEREF _Toc19065 14 HYPERLINK l _Toc2062 3.4 ISD1820語(yǔ)音芯片 PAGEREF _Toc2062 15 HYPERLINK l _Toc17708 4 軟件設(shè)計(jì) PAGEREF _Toc177
6、08 17 HYPERLINK l _Toc17263 4.1 中斷系統(tǒng) PAGEREF _Toc17263 17 HYPERLINK l _Toc8770 4.2 定時(shí)器/計(jì)數(shù)器 PAGEREF _Toc8770 18 HYPERLINK l _Toc188514.3 程序設(shè)計(jì) PAGEREF _Toc18851 22 HYPERLINK l _Toc21985 結(jié) 論 PAGEREF _Toc21985 29 HYPERLINK l _Toc56 致 PAGEREF _Toc56 30 HYPERLINK l _Toc20850 參 考 文 獻(xiàn) PAGEREF _Toc20850 31 H
7、YPERLINK l _Toc29881 附 錄 PAGEREF _Toc29881 321 概述今天,傳統(tǒng)的電子系統(tǒng)已經(jīng)全面轉(zhuǎn)變成以嵌入式系統(tǒng)為核心的現(xiàn)代電子系統(tǒng),在嵌入式系統(tǒng)底端應(yīng)用中,存在著大量的小型嵌入式應(yīng)用系統(tǒng);這些系統(tǒng)用于資源和控制要求的限制,采用計(jì)算機(jī)語(yǔ)言設(shè)計(jì)程序會(huì)成為系統(tǒng)程序設(shè)計(jì)的一種主要方法。在C語(yǔ)言為根底的系統(tǒng)程序設(shè)計(jì)中,規(guī)化設(shè)計(jì)至關(guān)重要。遵循C語(yǔ)言編寫格式,規(guī)和計(jì)算機(jī)軟件的工程方法。在系統(tǒng)程序設(shè)計(jì)中,也要從單純的功能性設(shè)計(jì)變到可能性、可靠性和產(chǎn)品應(yīng)用優(yōu)化等綜合性設(shè)計(jì)充分發(fā)揮軟件在提高系統(tǒng)綜合品質(zhì)上的效益,近幾十年來,單片機(jī)在生產(chǎn)過程控制、自動(dòng)檢測(cè)、數(shù)據(jù)采集與處理、科學(xué)計(jì)算
8、、商業(yè)管理和辦公自動(dòng)化等方面獲得了廣泛應(yīng)用。單片機(jī)具有體積小、重量輕、耗能省、價(jià)格低、可靠性高和通用靈活等優(yōu)點(diǎn)。而本次設(shè)計(jì)的帶自定制語(yǔ)音功能的定時(shí)系統(tǒng)也隨著單片機(jī)的開展被人們所認(rèn)識(shí)與應(yīng)用并逐漸成為必不可少的必需品,被廣泛應(yīng)用于個(gè)人家庭以車站、碼頭、劇院、辦公室等公共場(chǎng)所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來了極大的方便。雖然現(xiàn)在市場(chǎng)上已經(jīng)有這類產(chǎn)品的出現(xiàn),價(jià)格合理,使用方便,但是這里介紹的帶自定制語(yǔ)音功能的數(shù)字鐘可以滿足使用者的特殊要求,輸出方式靈活,如可以隨意設(shè)置時(shí)、分、秒的輸出等等。由于單片機(jī)技術(shù)的開展,特別是mega16芯片技術(shù)的開展,使LCD時(shí)鐘具有體積小,耗電省,計(jì)時(shí)準(zhǔn)確,性能穩(wěn)定,維
9、護(hù)方便等優(yōu)點(diǎn)。數(shù)字電子鐘的設(shè)計(jì)方法有多種,例如,利用FPGA+液晶顯示器+語(yǔ)音芯片;利用ARM+語(yǔ)音芯片;利用mega16+語(yǔ)音芯片+DS1602;利用凌陽(yáng)單片機(jī)與時(shí)鐘芯片;利用中小規(guī)模集成電路組成電子鐘。其中利用mega16+語(yǔ)音芯片+DS1602的設(shè)計(jì)方案實(shí)現(xiàn)簡(jiǎn)單,用到的計(jì)算機(jī)語(yǔ)言是我們學(xué)過的C語(yǔ)言,因而在程序設(shè)計(jì)上相對(duì)簡(jiǎn)單些,其所需本錢也在我的承受圍之,mega16單片機(jī)的功能相對(duì)更加完善,可以滿足此次設(shè)計(jì)的所有要求,而且容易上手。為了做好這次畢業(yè)設(shè)計(jì)我從圖書館和互聯(lián)網(wǎng)上網(wǎng)查閱了大量的相關(guān)資料,深刻理解了畢業(yè)設(shè)計(jì)任務(wù),明確了畢業(yè)論文要求,安排了設(shè)計(jì)方案步驟,最后完成了畢業(yè)設(shè)計(jì)作品。本次畢
10、業(yè)設(shè)計(jì)所要求的是帶自定制語(yǔ)音功能的數(shù)字鐘,可以學(xué)習(xí)利用單片機(jī)的定時(shí)器設(shè)計(jì)時(shí)間計(jì)時(shí)處理,這在許多電子設(shè)備上是常用的功能。它的功能要求如下所述:1使用文字型LCD顯示器來顯示現(xiàn)在的時(shí)間2顯示格式為時(shí)時(shí):分分:秒秒3具有四個(gè)按鍵操作來設(shè)置現(xiàn)在的時(shí)間4自定義錄取音樂鬧鈴程序執(zhí)行后,工作指示燈LED閃動(dòng),表示程序開場(chǎng)執(zhí)行,LCD顯示器顯示00:00:00,然后開場(chǎng)計(jì)時(shí),操作鍵K1K4動(dòng)作如下: 操作鍵K1:進(jìn)入設(shè)置現(xiàn)在的時(shí)間。 操作鍵K2: 設(shè)置小時(shí)。 操作鍵K3:設(shè)置分鐘。 操作鍵K4:完成設(shè)置。為了實(shí)現(xiàn)上述功能,本次設(shè)計(jì)主要采用了單片機(jī)技術(shù)來實(shí)現(xiàn)對(duì)時(shí)鐘電路的控制,采用mega16芯片和LCD液晶顯示
11、芯片來控制整個(gè)電路,外加ISD1820語(yǔ)音芯片。本次設(shè)計(jì)的帶自定制語(yǔ)音功能定時(shí)系統(tǒng),主要有mega16單片機(jī)局部、LCD液晶顯示器局部、ISD1820語(yǔ)音局部和按鍵控制局部組成,文中詳細(xì)介紹了LCD時(shí)鐘的控制電路、程序以及其所用到的芯片,主要是mega16芯片、ISD1820語(yǔ)音芯片和1602LCD芯片,其中mega16芯片包括中斷系統(tǒng)及定時(shí)/計(jì)數(shù)器,ISD1820芯片主要功能是錄音報(bào)時(shí),LCD芯片主要用于顯示時(shí)間而按鍵控制則用于調(diào)整時(shí)間。2 設(shè)計(jì)思路2.1 數(shù)字鐘的簡(jiǎn)單功能說明數(shù)字鐘的根本功能說明如下:1使用文字型LCD顯示器來顯示現(xiàn)在的時(shí)間2顯示格式為時(shí)時(shí):分分:秒秒3具有四個(gè)按鍵操作來設(shè)
12、置現(xiàn)在的時(shí)間LCD顯示器顯示00:00:00,然后開場(chǎng)計(jì)時(shí),操作鍵K1K4動(dòng)作如下: 操作鍵K1:進(jìn)入設(shè)置現(xiàn)在的時(shí)間。 操作鍵K2: 設(shè)置小時(shí)。 操作鍵K3:設(shè)置分鐘。 操作鍵K4:完成設(shè)置。2.2 思路說明要實(shí)現(xiàn)上面所要求得功能單靠一個(gè)顯示器是不行的,所以就需要一些元器件或者芯片來共同實(shí)現(xiàn),這也就用到了單片機(jī)中最新功能豐富的mega16芯片,而芯片中所用到的無非是中斷系統(tǒng)及定時(shí)/計(jì)數(shù)器,它們是時(shí)鐘時(shí)間實(shí)現(xiàn)變化必不可少的東西。LCD顯示器從其名字上就能看出它主要是用來顯示時(shí)間數(shù)字的,由于它的本錢較高所以不像LED顯示器則普遍的應(yīng)用,但是我覺得本次設(shè)計(jì)中用LCD比LED更加直觀易懂一些,所以選用
13、了LCD顯示器。最后要實(shí)現(xiàn)數(shù)字的設(shè)置就要有按鍵的控制,要不此時(shí)鐘也就沒有用武之地了。為了實(shí)現(xiàn)語(yǔ)音功能就需要語(yǔ)音芯片了,這里我選擇了ISD1820語(yǔ)音芯片。當(dāng)然,在實(shí)現(xiàn)過程中,電源是不可缺少的。3 硬件設(shè)計(jì)3.1 mega16芯片的簡(jiǎn)單介紹單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛開展和大圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表、通信設(shè)備、商業(yè)營(yíng)銷設(shè)備、醫(yī)療電子設(shè)備、日常消費(fèi)類產(chǎn)品、玩具及汽車電子產(chǎn)品等。并且已經(jīng)深入到工業(yè)生產(chǎn)以及人們生活的各個(gè)層次中。AVR單片機(jī)是1997年由ATMEL公司研發(fā)出的增強(qiáng)型置Flash的RISC精簡(jiǎn)指令集高速8位單
14、片機(jī)。ATmega16是基于增強(qiáng)的AVR RISC構(gòu)造的低功耗8位CMOS微控制器,其引腳排列如圖3-1:圖3-1 引腳排列圖VCC:數(shù)字電路電源GND:地端口A(PA7PA0):端口A 為8 位雙向I/O 口,具有可編程的部上拉電阻。其輸出緩沖器具有對(duì)稱的驅(qū)動(dòng)特性,可以輸出和吸收大電流。作為輸入使用時(shí),假設(shè)部上拉電阻使能,端口被外部電路拉低時(shí)將輸出電流。在復(fù)位過程中,即使系統(tǒng)時(shí)鐘還未起振,端口A 處于高阻狀態(tài)。RESET:復(fù)位輸出引腳。超出最小門限時(shí)間的低電平將引起系統(tǒng)復(fù)位。低于此時(shí)間的脈沖不能保證可靠復(fù)位。*TAL1:反向振蕩器放大器及片時(shí)鐘操作電路的輸出。*TAL2:反向振蕩器放大器的輸
15、出。AVCC:AVCC為端口F以及ADC模數(shù)轉(zhuǎn)換的電源,需要與VCC相連接,即使沒有使用ADC也應(yīng)該如此。使用ADC時(shí)應(yīng)該通過一個(gè)低通濾波器與VCC連接。AREF:AREF為ADC的模擬基準(zhǔn)輸出引腳。端口B、端口C、端口D作為普通I/O口與端口A的功能根本一樣,同時(shí)每個(gè)端口都有各自獨(dú)特的其他功能。 ATmega16的構(gòu)造框圖如圖3-2。AVR核具有豐富的指令集和32個(gè)通用工作存放器,所有的存放器直接算數(shù)邏輯單元ALU相連接,使得一條指令可以在一個(gè)時(shí)鐘周期同時(shí)兩個(gè)獨(dú)立的存放器。這種構(gòu)造大大提高了代碼效率,并且具有比普通的CISC微控制器最高至10倍的數(shù)據(jù)吐率。圖3-2 構(gòu)造框圖3.1.1 ATm
16、ega16的時(shí)鐘電路單片機(jī)部的各種功能電路幾乎全是由數(shù)字電路組成的,而數(shù)字電路的工作離不開時(shí)鐘信號(hào),每一個(gè)工作指令的運(yùn)行都是在時(shí)鐘信號(hào)的協(xié)調(diào)下完成的。單片機(jī)的時(shí)鐘電路為整個(gè)單片機(jī)的工作提供系統(tǒng)時(shí)鐘信號(hào),也為單片機(jī)與其他外接設(shè)備之間的通信提供同步信號(hào)。1、外接晶體/瓷振蕩器*TAL1與*TAL2分別為用作片振蕩器的反向放大器的輸入和輸出,如圖3-3所示,這個(gè)振蕩器可以使用石英晶體,也可以使用瓷諧振器。熔絲位CKOPT用來選擇這兩種放大器模式的其中之一。當(dāng)CKOPT被編程時(shí)振蕩器在輸出引腳產(chǎn)生滿幅度的振蕩。這種模式適合于噪聲環(huán)境,以及需要通過*TAL2驅(qū)動(dòng)第二個(gè)時(shí)鐘緩沖器的情況。而且這種模式的頻率
17、圍比擬寬。當(dāng)保持CKOPT為未編程狀態(tài)時(shí),振蕩器的輸出信號(hào)幅度比擬小。其優(yōu)點(diǎn)是大大降低了功耗,但是頻率圍比擬窄,而且不能驅(qū)動(dòng)其他時(shí)鐘緩沖器。對(duì)于諧振器,CKOPT未編程時(shí)的最大頻率為8 MHz,CKOPT編程時(shí)為16MHz。圖3-3 晶體振蕩器連接圖2、外接RC振蕩器對(duì)于時(shí)間不敏感的系統(tǒng)可以使用3-4所示的外部RC振蕩器。頻率可以通過方程f=1/(3RC)進(jìn)展粗略的估計(jì)。圖3-4 外部RC配置3、使用部振蕩器標(biāo)定的片RC振蕩器提供了固定的1.0、2.0、4.0或8.0MHz的時(shí)鐘。這些頻率都是5V、25下的標(biāo)稱數(shù)值。選擇這個(gè)時(shí)鐘此時(shí)不能對(duì)CKOPT進(jìn)展編程之后就無需外部器件了。復(fù)位時(shí)硬件將標(biāo)定
18、字節(jié)加載到OSCCAL存放器,自動(dòng)完成對(duì)RC振蕩器的標(biāo)定。4、使用外部時(shí)鐘AVR單片機(jī)允許外部時(shí)鐘電路為其提供系統(tǒng)時(shí)鐘信號(hào),為了從外部時(shí)鐘源驅(qū)動(dòng)芯片,*TAL1必須按如圖3-5所示進(jìn)展連接。同時(shí),熔絲位CKSEL必須編程為0000。圖3-5 外部時(shí)鐘配置圖3.1.2 復(fù)位電路復(fù)位電路向單片機(jī)的RESET引腳輸入一個(gè)低電平,當(dāng)?shù)碗娖匠掷m(xù)時(shí)間大于最小脈沖寬度時(shí)即觸發(fā)復(fù)位過程,此時(shí)沒有時(shí)鐘信號(hào)在運(yùn)行。當(dāng)外加信號(hào)到達(dá)復(fù)位門限電壓時(shí),復(fù)位延時(shí)開場(chǎng),延時(shí)完畢后單片機(jī)開場(chǎng)工作。常用的復(fù)位電路如圖3-6所示。圖3-6 ATmega16的復(fù)位電路3.2 LCD芯片3.2.1 1602LCD引腳功能LCD1602
19、圖3-7 引腳功能編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1GND電源地9D2Data I/O2VCC電源正極10D3Data I/O3VL液晶顯示偏壓信號(hào)11D4Data I/O4RS數(shù)據(jù)/命令選擇端H/L12D5Data I/O5R/W讀/寫選擇端H/L13D6Data I/O6E使能信號(hào)14D7Data I/O7D0Data I/O15BLA背光源正極8D1Data I/O16BLK背光源負(fù)極表3-1 引腳功能說明 3.2.2 控制方式通過CPU來控制LCD模塊,方式十分簡(jiǎn)單,LCD模塊其部可以看成有兩組存放器,一個(gè)為指令存放器,一個(gè)為數(shù)據(jù)存放器,由RS引腳控制。所有對(duì)指令存放器或數(shù)據(jù)存放器的存
20、取均需檢查L(zhǎng)CD部的忙碌標(biāo)志(Busy Flag),此標(biāo)志用來告知LCD部正在工作,并不允許接收任何的控制命令。而此位的檢查可以令RS=0,讀取位7來加以判斷,當(dāng)此位為0時(shí)才可以寫入指令存放器或數(shù)據(jù)存放器。3.2.3 LCD控制指令1)去除顯示器指令碼為0*02,將LCD DD RAM 數(shù)據(jù)全部填入空白碼20H,執(zhí)行此指令將去除顯示器容,同時(shí)光標(biāo)移到左上角。2光標(biāo)歸位設(shè)置指令碼為0*02,地址計(jì)數(shù)器被除為0,DD RAM數(shù)據(jù)不變,光標(biāo)移到左上腳。3設(shè)置字符進(jìn)入模式此指令格式為:B7B6B5B4B3B2B1B0000001I/DS表3-2 字符進(jìn)入模式指令格式其中的有關(guān)符號(hào)說明如下:1I/D :
21、地址計(jì)數(shù)器遞增或遞減控制,I/D=1時(shí)為遞增,I/D0時(shí)為遞減。每次讀寫顯示RAM中的字符碼一次則地址計(jì)數(shù)器會(huì)加1或減1。光標(biāo)所顯示的位置也會(huì)同時(shí)向右移到一個(gè)位置I/D1或向左移到一個(gè)位置I/D=0。2S :顯示屏移動(dòng)或不移動(dòng)控制,當(dāng)S=1時(shí),寫入一個(gè)字府到DD RAM時(shí),顯示屏向左(I/D=1)或向右(I/D=0)移動(dòng)一格,而光標(biāo)的位置不變。當(dāng)S=0時(shí),則顯示屏不移動(dòng)。4 顯示器開關(guān)此指令格式為:B7B6B5B4B3B2B1B000001DCB表3-3 顯示器開關(guān)指令格式其中有關(guān)符號(hào)說明如下: D :顯示屏開啟或開關(guān)控制位,D=1時(shí),顯示屏開啟,D0時(shí),顯示屏關(guān)閉。2 C :光標(biāo)出現(xiàn)控制位,
22、C=1則光標(biāo)會(huì)出現(xiàn)地址計(jì)數(shù)器所指的位置,C0則光標(biāo)會(huì)不出現(xiàn)。3 B :光標(biāo)閃爍控制位,B=1光標(biāo)出現(xiàn)后會(huì)閃爍,B0,光標(biāo)不會(huì)閃爍。5 顯示光標(biāo)移位此指令格式為:D7D6D5D4D3D2D1D00001S/CR/L*表3-4 光標(biāo)移動(dòng)指令格式其中有關(guān)符號(hào)說明如下:*表示0或1皆可。S/C、R/L的設(shè)置及說明下表所示。S/CR/L動(dòng)作00光標(biāo)向左移動(dòng)01光標(biāo)向右移動(dòng)10字符和光標(biāo)向左移動(dòng)11字符和光標(biāo)向右移動(dòng)表3-5 S/C、R/L設(shè)置及說明6 功能設(shè)置此指令格式為:B7B6B5B4B3B2B1B0001DLNF*表3-6 功能設(shè)置指令格式其中有關(guān)符號(hào)說明如下:1) DL :數(shù)據(jù)長(zhǎng)度選擇。DL=1
23、時(shí)為8位數(shù)據(jù)轉(zhuǎn)移,DL0時(shí)則為4位數(shù)據(jù)轉(zhuǎn)移,使用D7D4 4個(gè)位,分2次送入一個(gè)完整的字符數(shù)據(jù)。2N :顯示屏為單列或雙列選擇。N=0為單列顯示,N1為雙列顯示。3F :大小字符顯示選擇。F=1時(shí)為510點(diǎn)陣字會(huì)大些,F(xiàn)=0則為57點(diǎn)陣字型。 3.3 按鍵控制微機(jī)所用到的鍵盤可分為編碼鍵盤非編碼鍵盤兩種。在本設(shè)計(jì)中用到的是非編碼鍵盤所以只介紹它與mega16單片機(jī)的接口連接。鍵盤與CPU的連接方式可以分為獨(dú)立式按鍵和矩陣式鍵盤。3.3.1 獨(dú)立式按鍵獨(dú)立式按鍵是各按鍵相互獨(dú)立,每個(gè)按鍵占用一根I/O端線,每根I/O端線上的按鍵工作狀態(tài)不會(huì)影響其他I/O端線上按鍵的工作狀態(tài)。如圖3-8所示:圖3
24、-8 獨(dú)立式按鍵3.3.2 矩陣式鍵盤矩陣式鍵盤又稱為行列式鍵盤,I/O端線分為行線和列線,按鍵跨接在行線和列線上。按鍵按下時(shí),行線與列線連通。無論是獨(dú)立式按鍵還是矩陣式鍵盤,與mega16 I/O口的連接方式可分為與I/O口直接連接和與擴(kuò)展I/O口連接,與擴(kuò)展I/O口連接又可分為與并行擴(kuò)展I/O口連接和與串行擴(kuò)展I/O口連接,由于本設(shè)計(jì)中沒有用到此方式在此就不做具體的介紹。3.4 ISD1820語(yǔ)音芯片美國(guó)ISD公司于2001年最新推出一種單片820秒單段語(yǔ)音錄放電路ISD1810,采用CMOS技術(shù),含振蕩器,話筒前置放大,自動(dòng)增益控制,防混淆濾波器,揚(yáng)聲器驅(qū)動(dòng)及FLASH陣列。一、主要特征
25、:使用方便的單片8至20秒語(yǔ)音錄放外接電阻調(diào)整錄音時(shí)間高質(zhì)量、自然的語(yǔ)音復(fù)原技術(shù)置喇叭驅(qū)動(dòng)放大電路邊沿/電平觸發(fā)放音10,000次錄音周期典型自動(dòng)節(jié)電、維持電流0.5uA35V單電源工作不耗電信息保存100年典型值借助專用設(shè)備可以批量拷貝表3-7 ISD1820語(yǔ)音芯片主要特性二、管腳排列圖:圖3-9 管腳排列圖三、應(yīng)用原理圖:圖3-10 應(yīng)用原理圖Rosc錄放時(shí)間采樣頻率典型帶寬80K8秒8.0KHz3.4KHz100K10秒6.4KHz2.6KHz120K12秒5.3KHz2.3KHz160K16秒4.0KHz1.7KHz200K20秒3.2KHz1.3KHz表3-8 振蕩電阻和取樣率表通
26、過震蕩電阻和取樣率表可以看出,將ROSC端所接的振蕩電阻改為電位器可以無級(jí)調(diào)節(jié)語(yǔ)音的快慢,錄入的時(shí)間越短音質(zhì)越好,錄入的時(shí)間越長(zhǎng)音質(zhì)越差。4 軟件設(shè)計(jì)4.1 中斷系統(tǒng)當(dāng)計(jì)算機(jī)系統(tǒng)正在執(zhí)行程序時(shí)出現(xiàn)了*種特殊情況,如定時(shí)時(shí)間到了、A/D轉(zhuǎn)換完畢或有外部信號(hào)輸入等。此時(shí)CPU需要暫停當(dāng)前執(zhí)行的程序,轉(zhuǎn)去處理相應(yīng)的處理程序,當(dāng)這段程序執(zhí)行完畢之后,再回來執(zhí)行先前被中止的程序,這個(gè)過程就是中斷。引起中斷的原因稱為中斷源。中斷源向CPU發(fā)出處理的請(qǐng)求稱為中斷請(qǐng)求。發(fā)生中斷時(shí)被中止的程序的暫停點(diǎn)稱為斷點(diǎn)。產(chǎn)生中斷之后CPU執(zhí)行的程序稱為中斷效勞程序。返回?cái)帱c(diǎn)的過程稱為終端返回。中斷裝置和中斷效勞程序稱為中
27、斷系統(tǒng)。中斷是計(jì)算機(jī)技術(shù)中一個(gè)很重要的功能,是為了使計(jì)算機(jī)能夠?qū)ο到y(tǒng)外隨機(jī)發(fā)生的事件進(jìn)展及時(shí)處理而設(shè)置的,計(jì)算機(jī)進(jìn)展實(shí)時(shí)控制、故障自動(dòng)處理以及計(jì)算機(jī)外圍設(shè)備間的數(shù)據(jù)傳送往往采用中斷系統(tǒng)。ATmega16單片機(jī)共有21個(gè)中斷源,其中有1個(gè)復(fù)位中斷,8個(gè)定時(shí)器中斷源,3個(gè)外部中斷源,1個(gè)A/D轉(zhuǎn)換中斷源,1個(gè)SPI串行傳輸中斷源,1個(gè)EEP-ROM中斷源,1個(gè)模擬比擬器中斷源,1個(gè)兩線串行口中斷源,1個(gè)保存程序存儲(chǔ)器容就緒中斷源。每一個(gè)中斷源和復(fù)位在程序空間都有獨(dú)立的中斷向量,每個(gè)中斷向量,與所有中斷都相關(guān)的的存放器有兩個(gè):狀態(tài)存放器和通用中斷控制存放器。狀態(tài)存放器用于控制所有中斷是否使能,通用中
28、斷控制存放器用于控制中斷向量位置。AVR中斷響應(yīng)時(shí)間最少為4個(gè)時(shí)鐘周期。4個(gè)時(shí)鐘周期后,程序跳轉(zhuǎn)到實(shí)際的中斷處理例程。在這4個(gè)時(shí)鐘期期間PC自動(dòng)入棧。在通常情況下,中斷向量為一個(gè)跳轉(zhuǎn)指令,此跳轉(zhuǎn)需要3個(gè)時(shí)鐘周期。如果中斷在一個(gè)多時(shí)鐘周期指令執(zhí)行期間發(fā)生,則在此多周期指令執(zhí)行完畢后MCU才會(huì)執(zhí)行中斷程序。假設(shè)中斷發(fā)生時(shí)MCU處于休眠模式,中斷響應(yīng)時(shí)間還需增加4個(gè)時(shí)鐘周期。此外還要考慮到不同的休眠模式所需要的啟動(dòng)時(shí)間。這個(gè)時(shí)間不包括在前面提到的時(shí)鐘周期里。4.2 定時(shí)器/計(jì)數(shù)器4.2.1 定時(shí)器/計(jì)數(shù)器1的部構(gòu)造16位T/C的簡(jiǎn)化框圖示于4-1。I/O引腳的實(shí)際位置請(qǐng)參見圖3-1。CPU可的I/O
29、存放器,包括I/O位和I/O引腳以粗體表示。圖4-1 T/C框圖4.2.2 輸出比擬單元16位比擬器持續(xù)比擬TT1與OCR1*的容,一旦發(fā)現(xiàn)它們相等,比擬器立即產(chǎn)生一個(gè)匹配信號(hào)。然后OCF1*在下一個(gè)定時(shí)器時(shí)鐘置位。如果此時(shí)OCIE1* = 1,OCF1*置位將引發(fā)輸出比擬中斷。圖4-2 輸出比擬單元方框圖中斷執(zhí)行時(shí)OCF1*標(biāo)志自動(dòng)清零,或者通過軟件在其相應(yīng)的I/O位置寫入邏輯1也可以清零。根據(jù)WGM13:0與1*1:0的不同設(shè)置,波形發(fā)生器用匹配信號(hào)生成不同的波形。波形發(fā)生器利用TOP和BOTTOM信號(hào)處理在*些模式下對(duì)極值的操作。輸出比擬單元A的一個(gè)特質(zhì)是定義T/C的TOP值(即計(jì)數(shù)器的
30、分辨率)。此外,TOP值還用來定義通過波形發(fā)生器產(chǎn)生的波形的周期。圖4-2給出輸出比擬單元的方框圖。存放器與位上的小寫n表示器件編號(hào)(n = 1表示T/C1),*表示輸出比擬單元(A/B)。框圖中非輸出比擬單元局部用陰影表示。4.2.3 存放器定時(shí)器/ 計(jì)數(shù)器TT1、輸出比擬存放器OCR1A/B與輸入捕捉存放器ICR1均為16位存放器。T/C控制存放器TCCR1A/B為8位存放器,沒有CPU的限制。中斷請(qǐng)求(圖中簡(jiǎn)寫為Int.Req.)信號(hào)在中斷標(biāo)志存放器TIFR1都有反映。所有中斷都可以由中斷屏蔽存放器TIMSK1單獨(dú)控制。圖中未給出TIFR1與TIMSK1。T/C可由部時(shí)鐘通過預(yù)分頻器或通
31、過由T1引腳輸入的外部時(shí)鐘驅(qū)動(dòng)。引發(fā)T/C數(shù)值增加(或減少)的時(shí)鐘源及其有效沿由時(shí)鐘選擇邏輯模塊控制。沒有選擇時(shí)鐘源時(shí)T/C處于停頓狀態(tài)。時(shí)鐘選擇邏輯模塊的輸出稱為clkT1。雙緩沖輸出比擬存放器OCR1A/B一直與T/C的值做比擬。波形發(fā)生器用比擬結(jié)果產(chǎn)生PWM或在輸出比擬引腳OC1A/B輸出可變頻率的信號(hào)。比擬匹配結(jié)果還可置位比擬匹配標(biāo)志OCF1A/B,用來產(chǎn)生輸出比擬中斷請(qǐng)求。當(dāng)輸入捕捉引腳ICP1 或模擬比擬器輸入引腳有輸入捕捉事件產(chǎn)生(邊沿觸發(fā))時(shí),當(dāng)時(shí)的T/C值被傳輸?shù)捷斎氩蹲酱娣牌鞅4嫫饋?。輸入捕捉單元包括一個(gè)數(shù)字濾波單元(噪聲消除器)以降低噪聲干擾。在*些操作模式下,TOP值或
32、T/C的最大值可由OCR1A存放器、ICR1存放器,或一些固定數(shù)據(jù)來定義。在PWM模式下用OCR1A作為TOP值時(shí),OCR1A存放器不能用作PWM輸出。但此時(shí)OCR1A是雙向緩沖的,TOP值可在運(yùn)行過程中得到改變。當(dāng)需要一個(gè)固定的TOP值時(shí)可以使用ICR1存放器,從而釋放OCR1A來用作PWM的輸出。1.T/C存放器TT1H/TT1LT/C存放器各位定義如表4-1所示。位76543210TT115:8TT17:0讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值00000000表4-1 T/C存放器各位定義TT1H與TT1L組成了T/C1的數(shù)據(jù)存放器TT1。通過它們可以直接對(duì)定時(shí)器/
33、計(jì)數(shù)器的16位計(jì)數(shù)器進(jìn)展讀寫。在計(jì)數(shù)器運(yùn)行期間修改TT1的容有可能喪失一次TT1與OCR1*的比擬匹配操作。寫TT1存放器將在下一個(gè)定時(shí)周期阻塞比擬匹配。2.輸出比擬存放器OCR1BH/OCR1BLOCR1BH/OCR1BL各位定義如表4-2所示。位76543210OCR1BHOCR1B15:8OCR1BLOCR1B7:0讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值00000000表4-2 OCR1BH/OCR1BL各位定義該存放器中的16位數(shù)據(jù)與TT1存放器中的計(jì)數(shù)值進(jìn)展連續(xù)的比擬,一旦數(shù)據(jù)匹配,將產(chǎn)生一個(gè)輸出比擬中斷,或改變OC1*的輸出邏輯電平。4.3 程序設(shè)計(jì)本次設(shè)計(jì),
34、除了單片機(jī)外還有其它的外圍設(shè)備,其中主要有電源、鍵盤、DS1302時(shí)鐘芯片、1602液晶顯示器、蜂鳴器、ISD1802語(yǔ)音芯片,它們的關(guān)系如圖4-3。通過這些設(shè)備和原件,已經(jīng)可以實(shí)現(xiàn)所要求的功能,下面來介紹一下其中的幾個(gè)模塊。圖4-3 系統(tǒng)框圖4.3.1 獨(dú)立鍵盤模塊獨(dú)立鍵盤是為了調(diào)整時(shí)間設(shè)置而設(shè)計(jì)的,它所完成的工作是調(diào)整時(shí)鐘的時(shí)間、改變鬧鐘設(shè)置,是數(shù)字鐘更好的工作,為使用者提供準(zhǔn)確的時(shí)間。工作方式是按下K1鍵數(shù)值加一,按下K3鍵數(shù)值減一,按下K2鍵是調(diào)整顯示模式。其流程圖如圖4-4。具體程序代碼見附錄一。圖4-4 按鍵模塊流程圖4.3.2 顯示模塊圖4-5 顯示模塊流程圖顯示模塊是為系統(tǒng)提供
35、顯示功能,是使用者能直觀的看到時(shí)間,它是數(shù)字鐘不可缺少的一局部。可以顯示年、月、日、星期、時(shí)間等所需要的數(shù)據(jù)。其程序流程圖如圖4-5所示。具體程序代碼見附錄二。4.3.3 實(shí)時(shí)時(shí)鐘模塊圖4-6 實(shí)時(shí)時(shí)鐘模塊實(shí)時(shí)時(shí)鐘模塊使系統(tǒng)時(shí)間初始化,設(shè)置初始時(shí)間,獲取當(dāng)前時(shí)間。其工作流程如圖4-6,具體程序代碼見附錄三。4.3.4 語(yǔ)音模塊圖4-7 語(yǔ)音模塊流程圖語(yǔ)音模塊,如其名是為系統(tǒng)提供語(yǔ)音功能,要實(shí)現(xiàn)自定制語(yǔ)音功能,就必須有語(yǔ)音芯片、麥克以及揚(yáng)聲器,這樣才能為使用者提供鬧鐘和報(bào)時(shí)效勞。其工作流程如圖4-7所示。具體程序代碼見附錄四。4.3.5 主控程序圖4-8 主控程序流程圖主控程序是整個(gè)系統(tǒng)程序的核
36、心,它就像人的大腦一樣支配和統(tǒng)領(lǐng)著整個(gè)系統(tǒng),可以調(diào)用所有的下屬程序,完成計(jì)時(shí)與時(shí)間校正、整點(diǎn)報(bào)時(shí)、時(shí)鐘掉電保持、日歷、電子音樂鬧鐘、自定義錄取音樂鬧鈴、任意按鍵語(yǔ)音報(bào)時(shí)和鬧鐘等一系列的功能。工作流程如圖4-8。主要程序代碼見附錄五。結(jié) 論經(jīng)歷數(shù)月的努力,畢業(yè)設(shè)計(jì)完畢了,通過這次畢業(yè)設(shè)計(jì)使我對(duì)我的專業(yè)有了更深刻的了解,同樣使我有了理論與實(shí)踐相結(jié)合的時(shí)機(jī)。在這段時(shí)間里我明顯的發(fā)覺到自己知識(shí)的匱乏,為了給自己的大學(xué)生活也為了更深刻的了解自己的所學(xué)專業(yè)我們多方借閱資料,購(gòu)置書籍,在互聯(lián)網(wǎng)上查找資料,以完成這次設(shè)計(jì)。本次設(shè)計(jì)的帶自定制語(yǔ)音功能的定時(shí)系統(tǒng)既能顯示時(shí)間又能自定義錄取音樂鬧鈴。本系統(tǒng)采用了單片
37、機(jī)mega16芯片、LCD芯片及1820語(yǔ)音芯片,具有耗電省,計(jì)時(shí)準(zhǔn)確,性能穩(wěn)定,維護(hù)方便等優(yōu)點(diǎn)。畢業(yè)設(shè)計(jì)的順利完成,使我獲得很多平時(shí)沒有學(xué)到的知識(shí)。畢業(yè)設(shè)計(jì)是大學(xué)四年知識(shí)的綜合運(yùn)用,也是理論走向?qū)嵺`的的第一步,為以后走向工作崗位奠定了根底,經(jīng)過這次畢業(yè)設(shè)計(jì),使我對(duì)帶自定制語(yǔ)音功能定時(shí)系統(tǒng)有了清楚的認(rèn)識(shí),對(duì)單片機(jī)的重要性以及其作用有了更深一層的了解,數(shù)字鐘的設(shè)計(jì)過程與步驟及應(yīng)注意的細(xì)節(jié)問題有了更為深刻的理解,為我以后的學(xué)習(xí)做了鋪墊。通過這次畢業(yè)設(shè)計(jì)增長(zhǎng)了我的專業(yè)知識(shí)技能和實(shí)際工作經(jīng)歷,更增強(qiáng)了我向困難挑戰(zhàn)的信心。在設(shè)計(jì)中我對(duì)單片機(jī)有了更詳盡的了解,學(xué)會(huì)了使用一些工具軟件,這次經(jīng)歷是我人生路上的
38、珍貴財(cái)富。致 設(shè)計(jì)中得到了*教員的指導(dǎo),她淵博的知識(shí)及嚴(yán)格的要求和嚴(yán)謹(jǐn)?shù)淖黠L(fēng)都給我留下了深刻的印象,將使我終身受益。在此,對(duì)*教員表示感。另外還要感我的戰(zhàn)友們對(duì)我的幫助。鑒于作者水平有限,難免存在一些錯(cuò)誤和漏洞,望各位教師不吝賜教,在此向大家表示衷心的感。參 考 文 獻(xiàn)馬潮AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐1版:航空航天大學(xué),2007*益民,紅剛,鳳武零根底學(xué)AVR單片機(jī)1版:機(jī)械工業(yè),2001.1譚浩強(qiáng)C程序設(shè)計(jì)3版:清華大學(xué),2005.7迎新單片機(jī)初級(jí)教程1版:航空航天大學(xué),2000附 錄附錄一 獨(dú)立鍵盤模塊*include*include void key_int(void)DDRD&
39、=0*13;/把鍵盤端置為輸入端/PORTD|=0*13;/鍵盤端初始化為輸入1/* 名稱:read_key()* 說明: 先置鍵盤端口全為1* 功能: 讀鍵值*/unsigned char read_key(void)char data;delay_nus(10);data=PIND&0*13;if(data!=0*13)switch (data) /*將按鍵碼轉(zhuǎn)換成鍵值*/ case 0*12: return 1; /加 case 0*11: return 2; /模式轉(zhuǎn)換 case 0*03: return 3; /減 default : return 0*00; return 0*00
40、;/* 名稱:get_key)* 說明: 要消抖,延時(shí)10ms* 功能: 讀鍵值* 調(diào)用: read_key( );* 輸入: 無* 返回值: 鍵值*/unsigned char get_key(void) unsigned char i; unsigned char j;/*按鍵記錄*/ i = read_key( ); if (i = 0*00) /*無有效按鍵按下*/ return 0*00;/*程序退出*/ j = i;/*保存本次采樣結(jié)果*/ delay_nms(10);/*去按鍵顫抖*/ i = read_key( ); if(i = j) delay_nms(10); retur
41、n i; return 0*00; 附錄二 顯示模塊*include*include *include DS1302.h*include 1602.he*tern unsigned char table17;e*tern unsigned char AP;/0為上午,1為下午e*tern uchar baoshi_flag;/任意按鍵觸摸報(bào)時(shí)標(biāo)志,具體到分鐘,一分鐘只能操作一次/* 名稱: displaysecond* 說明: 分個(gè)位、十位顯示函數(shù)* 功能: 顯示秒鐘*/void displaysecond(void)char i; /定義變量i=table10&0*0f; /求秒的個(gè)位Wri
42、teChar(i+0,7,1); /顯示秒個(gè)位 i=table10&0*70; /求秒的十位i=i4; /右移4位WriteChar(i+0,6,1); /顯示秒十位 /* 名稱: displaymin()* 說明: 分個(gè)位、十位顯示函數(shù)* 功能: 顯示分鐘* 調(diào)用: display09(char a,char *,char y);* 輸入: 無* 返回值: 無*/void displaymin(void)char i;i=table11&0*0f; /求分的個(gè)位WriteChar(i+0,4,1); /顯示分個(gè)位 i=table11&0*70; /求分的十位i=i4; /右移4位WriteC
43、har(i+0,3,1); /顯示分十位 /* 名稱: displayhour()* 說明: 分個(gè)位、十位顯示函數(shù)、分12/24進(jìn)制* 功能: 顯示小時(shí)* 調(diào)用: display09(char a,char *,char y);*/void displayhour(void)char i;i=table12&0*0f; /小時(shí)的個(gè)位WriteChar(i+0,1,1); if(table12&0*80)/12進(jìn)制時(shí)i=table12&0*10;/小時(shí)的十位i=i4; WriteChar(i+0,0,1); if(table12&0*20)AP=1;WriteString(pm,8,1);els
44、eAP=0;WriteString(am,8,1);else /24進(jìn)制時(shí)i=table12&0*30;/小時(shí)的十位i=i4; WriteChar(i+0,0,1); /* 名稱: displaydate()* 說明: 分個(gè)位、十位顯示函數(shù)* 功能: 顯示日*/void displaydate(void)char i;i=table13&0*0f; /求日的個(gè)位WriteChar(i+0,9,0); /顯示日個(gè)位 i=table13&0*30; /求日的十位i=i4; /右移4位WriteChar(i+0,8,0); /顯示日十位/* 名稱: displaymonth()* 說明: 分個(gè)位、十
45、位顯示函數(shù)* 功能: 顯示月*/void displaymonth(void)uchar i;i=table14&0*0f; /求月的個(gè)位WriteChar(i+0,6,0); /顯示月個(gè)位 i=table14&0*10; /求月的十位i=i4; /右移4位WriteChar(i+0,5,0); /顯示月十位 /* 名稱: displayyear()* 說明: 分個(gè)位、十位顯示函數(shù)* 功能: 顯示年*/void displayyear(void)uchar i;i=table16&0*0f; /求年的個(gè)位WriteChar(i+0,3,0); /顯示年時(shí)個(gè)位 i=table16&0*f0; /
46、求年的十位i=i4; /右移4位WriteChar(i+0,2,0); /顯示年十位 /* 名稱:displayweek()* 說明: 分個(gè)位、十位(顯示函數(shù))* 功能: 顯示星期*/void displayweek(void)char i;i=table15&0*07; /求星期的個(gè)位 switch(i) case 0:WriteString(MON,13,0);break; case 1:WriteString(TUE,13,0);break; case 2:WriteString(WED,13,0);break; case 3:WriteString(THU,13,0);break; c
47、ase 4:WriteString(FRI,13,0);break; case 5:WriteString(STA,13,0);break; case 6:WriteString(SUN,13,0);break; default:break; /* 名稱:display()* 說明: 分個(gè)位、十位顯示函數(shù)* 功能: 顯示秒、分、小時(shí)、日、月、年、星期*/void display(void)displaysecond( ); /顯示秒WriteChar(:,5,1); displaymin( ); /顯示分WriteChar(:,2,1); displayhour( ); /顯示小時(shí) displ
48、aydate( ); /顯示日WriteChar(/,7,0); displaymonth( ); /顯示月WriteChar(/,4,0); displayyear( ); /顯示年WriteString(20,0,0); /顯示年百千位displayweek( ); /顯示星期 /* 名稱:Timechange(void)* 說明: 隨著時(shí)間的變化,把新的時(shí)間顯示出來* 功能: 顯示時(shí)間的變化*/void Timechange(void)uchar data;data=read_1302(DS1302_SEC_Reg);/讀秒存放器的值if(data!=table10)/比擬 table1
49、0=data; displaysecond(); if(table10=0)/秒為0時(shí)data=read_1302(DS1302_MIN_Reg );/讀分存放器的值if(data!=table11)/比擬 table11=data; displaymin(); baoshi_flag=0;/去除制止任意按鍵報(bào)時(shí)if( table11=0)/分為0時(shí)data=read_1302(DS1302_HR_Reg);/讀小時(shí)存放器的值if(data!=table12)/比擬 table12=data; displayhour(); if(table12=0*92 & table11=0) |( tab
50、le12=0 & table11=0)/小時(shí)為0/12時(shí)data=read_1302(DS1302_DATE_Reg );/讀日存放器的值if(data!=table13)/比擬 table13=data; displaydate(); table15=read_1302(DS1302_DAY_Reg );/讀星期存放器的值 displayweek();if(table13=1)/日為1時(shí)data=read_1302(DS1302_MONTH_Reg);if(data!=table14) table14=data; displaymonth(); if(table14=1 )/月為1時(shí)data
51、=read_1302(DS1302_YEAR_Reg );if(data!=table16) table16=data; displayyear(); 附錄三 實(shí)時(shí)時(shí)鐘模塊*include*define ucharunsigned char*define uintunsigned int*defineT_CLK 7*defineT_IO 6*defineT_RST 5*define T_PORT PORTB*define T_DDR DDRB*define T_PIN PINB/* */*defineSETBIT(*,y) (*|=(1y) /set bit y in byte *define
52、CLRBIT(*,y) (*&=(1y) /clear bit y in byte *defineCHKBIT(*,y) (*&(1y) /check bit y in byte */* */*define DS1302_SEC_Reg 0*81*define DS1302_MIN_Reg 0*83*define DS1302_HR_Reg 0*85*define DS1302_DATE_Reg 0*87*define DS1302_MONTH_Reg 0*89*define DS1302_DAY_Reg 0*8b*define DS1302_YEAR_Reg 0*8d/* */void no
53、p(void) char i; for (i=0;i0; i-) CLRBIT(T_PORT,T_CLK);if (ucDa&1) SETBIT(T_PORT,T_IO); else CLRBIT(T_PORT,T_IO);SETBIT(T_PORT,T_CLK);ucDa=1; /* 名稱: unsigned char ds1302_read_a_byte* 說明:* 功能: 從DS1302讀取1Byte數(shù)據(jù)* 調(diào)用:* 輸入:* 返回值: t*/unsigned char ds1302_read_a_byte(void) unsigned char i,t;CLRBIT(T_DDR ,T_
54、IO);CLRBIT(T_PORT,T_IO); for(i=8; i0; i-) t=1;SETBIT(T_PORT,T_CLK);CLRBIT(T_PORT,T_CLK);nop();if(CHKBIT(T_PIN,T_IO)t|=0*80; SETBIT(T_DDR,T_IO);return(t);/* 名稱: write_1302* 說明: 先寫地址,后寫命令/數(shù)據(jù)* 功能: 往DS1302寫入數(shù)據(jù)* 調(diào)用: ds1302_write_a_byte()* 輸入: ucAddr: DS1302地址, ucDa: 要寫的數(shù)據(jù)* 返回值: 無*/void write_1302(unsigne
55、d char ucAddr, unsigned char ucDa) /DDRC=0*ff; CLRBIT(T_PORT,T_RST); /T_RST=0/;nop();CLRBIT(T_PORT,T_CLK); /T_CLK=0;/;nop();SETBIT(T_PORT,T_RST); /T_RST=1 ds1302_write_a_byte(ucAddr); /* 地址,命令 */CLRBIT(T_PORT,T_CLK); ds1302_write_a_byte(ucDa); /* 寫1Byte數(shù)據(jù)*/CLRBIT(T_PORT,T_CLK); /T_CLK=0/;nop();CLRBI
56、T(T_PORT,T_RST); /T_RST=0/* 名稱: read_1302* 說明: 先寫地址,后讀命令/數(shù)據(jù)* 功能: 讀取DS1302*地址的數(shù)據(jù)* 調(diào)用: ds1302_write_a_byte() , ds1302_read_a_byte()* 輸入: ucAddr: DS1302地址* 返回值: ucDa :讀取的數(shù)據(jù)*/unsigned char read_1302(unsigned char ucAddr) unsigned char ucDa;CLRBIT(T_PORT,T_RST);/;nop();CLRBIT(T_PORT,T_CLK);/;nop();SETBIT
57、(T_PORT,T_RST); ds1302_write_a_byte(ucAddr); /* 地址,命令 */ ucDa = ds1302_read_a_byte(); /* 讀1Byte數(shù)據(jù) */CLRBIT(T_PORT,T_CLK);/;nop();CLRBIT(T_PORT,T_RST);/;nop(); return(ucDa);/* 名稱: v_Set1302* 說明:* 功能: 設(shè)置初始時(shí)間* 調(diào)用: write_1302()* 輸入: pSecDa: 初始時(shí)間地址。初始時(shí)間格式為: 秒 分 時(shí) 日 月 星期 年* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B
58、1B* 返回值: 無*/void v_Set1302(unsigned char *pSecDa) unsigned char i; unsigned char ucAddr = 0*80; write_1302(0*8e,0*00); /控制命令,WP=0,寫操作 for(i =7;i0;i-) write_1302(ucAddr,*pSecDa); / 秒 分 時(shí) 日 月 星期 年 pSecDa+; ucAddr +=2; write_1302(0*8e,0*80);/ 控制命令,WP=1,寫保護(hù)/* 名稱: v_Get1302* 說明:* 功能: 讀取DS1302當(dāng)前時(shí)間* 調(diào)用: re
59、ad_1302()* 輸入: ucCurtime: 保存當(dāng)前時(shí)間地址。當(dāng)前時(shí)間格式為: 秒 分 時(shí) 日 月 星期 年* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B* 返回值: 無*/void v_Get1302(unsigned char ucCurtime) unsigned char i; unsigned char ucAddr = 0*81; for (i=0;i7;i+) ucCurtimei = read_1302(ucAddr);/*格式為: 秒 分 時(shí) 日 月 星期 年 */ ucAddr += 2; CLRBIT(T_PORT,T_CLK);/DS13
60、02初始化void initialize_1302(void) char data; SETBIT(T_DDR,T_CLK ); SETBIT(T_DDR,T_IO); SETBIT(T_DDR,T_RST); SETBIT(T_PORT,T_CLK ); SETBIT(T_PORT,T_IO); SETBIT(T_PORT,T_RST); write_1302(0*8e,0*00);/寫命令 write_1302(0*90,0*A9);/ data=read_1302(DS1302_SEC_Reg);/讀秒存放器的值 write_1302(0*80,0*7f&data);/寫秒存放器附錄四
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股權(quán)質(zhì)押資產(chǎn)重組合同示范文本3篇
- 二零二五年度鋼材倉(cāng)儲(chǔ)物流服務(wù)合同9篇
- 二零二五年度路燈照明設(shè)施安全檢測(cè)合同樣本2篇
- 二零二五年度:勞動(dòng)合同法實(shí)務(wù)操作與案例分析合同3篇
- 二零二五年度船舶建造與設(shè)備安裝合同2篇
- 二零二五年度農(nóng)產(chǎn)品質(zhì)量檢測(cè)合同范本3篇
- 二零二五年度安置房買賣合同電子支付與結(jié)算規(guī)范3篇
- 3、2025年度綠色出行接送機(jī)服務(wù)合同范本2篇
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)合作開發(fā)合同范本3篇
- 家里陪護(hù)合同(2篇)
- 手術(shù)室護(hù)理實(shí)踐指南2023年
- 電力安全工作規(guī)程(變電部分)課件
- 新人教版六年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)課件
- 環(huán)保設(shè)施安全風(fēng)險(xiǎn)告知卡
- 卵石地層樁基旋挖鉆施工方案
- 江蘇對(duì)口單招英語(yǔ)考綱詞匯總結(jié)
- (完整word版)手卡模板
- GB/T 4091-2001常規(guī)控制圖
- GB/T 13912-2020金屬覆蓋層鋼鐵制件熱浸鍍鋅層技術(shù)要求及試驗(yàn)方法
- GB 18399-2001棉花加工機(jī)械安全要求
- 陜西省延安市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
評(píng)論
0/150
提交評(píng)論