版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于單片機(jī),1760語(yǔ)音模塊的液晶LCD時(shí)鐘專業(yè)系部:電氣工程系 班 級(jí):智能電子111學(xué)生姓名:歐 陽(yáng) 志 勇 完成日期:2013年5月 摘 要我設(shè)計(jì)的LCD時(shí)鐘溫度系統(tǒng)是由中央控制器、溫度檢測(cè)器、時(shí)鐘系統(tǒng)、語(yǔ)音模塊,LCD液晶顯示器及鍵盤(pán)部分組成。控制器采用單片機(jī)STC89C52,溫度檢測(cè)部分采用DS18B20溫度傳感器,時(shí)鐘系統(tǒng)用時(shí)鐘芯片DS1302,用LCD液晶12864作為顯示器,用語(yǔ)音模塊1706構(gòu)成報(bào)警器。單片機(jī)通過(guò)時(shí)鐘芯片DS1302獲取時(shí)間數(shù)據(jù),對(duì)數(shù)據(jù)處理后顯示時(shí)間;溫度傳感器DS18B20采集溫度信號(hào)送該給單片機(jī)處理;單片機(jī)再把時(shí)間數(shù)據(jù)和溫度數(shù)據(jù)送液晶顯示器LCD12864
2、顯示,鍵盤(pán)是用來(lái)調(diào)時(shí),調(diào)鬧鐘,調(diào)休眠,播放鈴聲。語(yǔ)音模塊用來(lái)播放鈴聲;關(guān)鍵字:?jiǎn)纹瑱C(jī) LCD液晶 DS18B20 DS1302 LCD12864語(yǔ)音1760;一、 設(shè)計(jì)目的及意義1.隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設(shè)計(jì)是數(shù)據(jù)采集及處理,鍵盤(pán)控制,顯示系統(tǒng)及報(bào)警系統(tǒng)與單片機(jī)有效結(jié)合,意義:本設(shè)計(jì)是通過(guò)在“單片機(jī)原理及應(yīng)用”課堂上學(xué)習(xí)的知識(shí)的綜合應(yīng)用,以及查閱資料,并且引導(dǎo)一種創(chuàng)新的思維,把學(xué)到的知識(shí)應(yīng)用到日常生活當(dāng)
3、中。在設(shè)計(jì)的過(guò)程中,不斷的學(xué)習(xí),思考和同學(xué)間的相互討論,運(yùn)用科學(xué)的分析問(wèn)題的方法解決遇到的困難,掌握單片機(jī)系統(tǒng)一般的開(kāi)發(fā)流程,學(xué)會(huì)對(duì)常見(jiàn)問(wèn)題的處理方法,積累設(shè)計(jì)系統(tǒng)的經(jīng)驗(yàn),充分發(fā)揮教學(xué)與實(shí)踐的結(jié)合。全能提高個(gè)人系統(tǒng)開(kāi)發(fā)的綜合能力,開(kāi)拓了思維,為今后能在相應(yīng)工作崗位上的工作打下了堅(jiān)實(shí)的基礎(chǔ)。二、方案設(shè)計(jì)及方案論證1.時(shí)鐘溫度的總體設(shè)計(jì)思路按照系統(tǒng)的設(shè)計(jì)功能要求,本時(shí)鐘,鈴聲,溫度系統(tǒng)的設(shè)計(jì)必須采用單片機(jī)軟件系統(tǒng)實(shí)現(xiàn),用單片機(jī)的自動(dòng)控制能力配合按鍵控制,來(lái)控制時(shí)鐘、溫度的調(diào)整,鬧鈴及顯示。獲得時(shí)鐘溫度數(shù)據(jù)信息,單片機(jī)對(duì)其進(jìn)行一系列的處理,最后通過(guò)液晶顯示出來(lái)。2.時(shí)鐘溫度系統(tǒng)方案論證2.1時(shí)鐘系統(tǒng)
4、方案選擇方案1:通過(guò)單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器,用軟件實(shí)現(xiàn),直接用單片機(jī)的定時(shí)器編程以實(shí)現(xiàn)時(shí)鐘;方案2:用專門(mén)的時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘的記時(shí),再把時(shí)間數(shù)據(jù)送入單片機(jī),由單片機(jī)控制顯示。雖然用軟件實(shí)現(xiàn)時(shí)鐘硬件線路簡(jiǎn)單,但是程序運(yùn)行的每一步都需要時(shí)間,多一步或少一步程序都會(huì)影響記時(shí)的準(zhǔn)確度,對(duì)定時(shí)器定時(shí)也不是十分準(zhǔn)確,時(shí)鐘精度很低,對(duì)于我們實(shí)現(xiàn)所需要的功能造成軟件編程非常復(fù)雜。用專用時(shí)鐘芯片硬件成本相對(duì)較高,但它的精度很高,軟件編程很簡(jiǎn)單。綜上所述,選擇方案2。2.2單片機(jī)的選擇對(duì)于單片機(jī)的選擇,如果用8031系列,由于它沒(méi)有內(nèi)部RAM,系統(tǒng)又需要大量?jī)?nèi)存存儲(chǔ)數(shù)據(jù),因而不可用;51系列單片機(jī)的ROM為4
5、K,對(duì)于我們?cè)O(shè)計(jì)的系統(tǒng)可能有點(diǎn)?。?2系列單片機(jī)與51系列的結(jié)構(gòu)一樣,而ROM擴(kuò)大為8K,對(duì)我們?cè)O(shè)計(jì)系統(tǒng)提供充足的空間進(jìn)行功能的擴(kuò)展。再有51系列單片機(jī)與52系列的單片機(jī)價(jià)格差不多。因此,我們選擇52系列的單片機(jī)。 2.3 顯示系統(tǒng)的方案比較 方案1:用數(shù)碼管或LED顯示。 方案2:用液晶1602顯示。方案3:用液晶12864顯示。 時(shí)鐘和溫度的顯示可以用數(shù)碼管或LED,而且價(jià)格便宜。但是數(shù)碼管的只能顯示簡(jiǎn)單的設(shè)計(jì)的系統(tǒng),與我們?cè)O(shè)計(jì)要求也不相符。有很多東西需要顯示,還是用顯示功能更好的液晶顯示器比較好,它能顯示更多的數(shù)據(jù),用1602液晶顯示數(shù)據(jù)有限,顯示數(shù)據(jù)的可讀性不好,用可以顯示漢字的128
6、64液晶顯示器還可以增加顯示信息的可讀性,讓人看起來(lái)會(huì)很方便。 2.4 報(bào)警系統(tǒng)的方案比較 方案1:用長(zhǎng)鳴的蜂鳴器實(shí)現(xiàn)鬧鐘鈴聲及溫度超限報(bào)警。 方案2:用喇叭加語(yǔ)音芯片實(shí)現(xiàn)鬧鐘鈴聲及溫度超限報(bào)警。 用喇叭加語(yǔ)音芯片成本也不是很高,聲音也不錯(cuò),用蜂鳴器,成本低,電路結(jié)構(gòu)簡(jiǎn)單,而且體積小。但功能有限,限于設(shè)計(jì)所需要的功能,用蜂鳴器和語(yǔ)音結(jié)合為最佳選擇。所以我們采用方案1.2結(jié)合。2.5 溫度系統(tǒng)方案選擇方案1:用熱敏電阻等測(cè)溫元件測(cè)出電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度。需要比較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對(duì)較高。方案2:用DS18B20直接測(cè)溫。DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)
7、體公司最新推出的一種改進(jìn)型智能溫度傳感器,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。經(jīng)比較,我們選擇方案2。溫度實(shí)現(xiàn)只能通過(guò)外部的溫度傳感器來(lái)實(shí)現(xiàn)。經(jīng)上網(wǎng)查閱及市場(chǎng)考察,DS18b20體積小,只有3只腳,電路接法簡(jiǎn)單。內(nèi)部含有寄存器為我們?cè)O(shè)計(jì)實(shí)現(xiàn)上下限報(bào)警功能提供保障。精度為0.5°C,也符合我們?cè)O(shè)計(jì)的要求。DS18B20也是我們通常使用的型號(hào),因此溫度傳感器用DS18B20。2.6 鍵盤(pán)控制方案選擇方案1:購(gòu)買集成鍵盤(pán),采用矩陣形式連接。方案2:購(gòu)買單個(gè)復(fù)位開(kāi)關(guān)做成鍵盤(pán)。雖然集成鍵盤(pán)美觀,與單片機(jī)的接口少,但是它的成本比較高。單片機(jī)的IO口
8、對(duì)于我們的設(shè)計(jì)綽綽有余。通常我們選用價(jià)格便宜單個(gè)復(fù)位開(kāi)關(guān)做成鍵盤(pán)。3. .時(shí)鐘溫度系統(tǒng)總體設(shè)計(jì)初步確定設(shè)計(jì)系統(tǒng)由單片機(jī)主控模塊、時(shí)鐘模塊、測(cè)溫模塊、語(yǔ)音模塊、顯示模塊、鍵盤(pán)接口模塊共6個(gè)模塊組成,電路系統(tǒng)框圖如圖所示。 主控器件AT89C52DB1820 溫度采集系統(tǒng)DS1320時(shí)間采集系統(tǒng)12864顯示系統(tǒng)語(yǔ)音報(bào)警系統(tǒng)鍵盤(pán)控制系統(tǒng)三硬件設(shè)計(jì)部分1 單片機(jī)最小系統(tǒng)電路設(shè)計(jì)1.1 單片機(jī)芯片選擇單片機(jī)采用52系列單片機(jī)。由ATMEL公司生產(chǎn)的AT89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)8
9、0C51 產(chǎn)品指令和引腳完全兼容。在單芯片上,擁有靈巧的8 位CPU 和在線系統(tǒng)可編程Flash,使得AT89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案。AT89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。而且,它還具有一個(gè)看門(mén)狗(WDT)定時(shí)/計(jì)數(shù)器,
10、如果程序沒(méi)有正常工作,就會(huì)強(qiáng)制整個(gè)系統(tǒng)復(fù)位,還可以在程序陷入死循環(huán)的時(shí)候,讓單片機(jī)復(fù)位而不用整個(gè)系統(tǒng)斷電,從而保護(hù)你的硬件電路。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。其芯片外觀及引腳圖如下: 圖1.1_1 圖1.1_21.2 單片機(jī)管腳說(shuō)明VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TT
11、L門(mén)流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí)
12、,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3
13、口也可作為AT89C52的一些特殊功能口,如下表所示:管腳備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在
14、平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H
15、-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。1.3 單片機(jī)最小系統(tǒng) 單片機(jī)最小系統(tǒng)主要由復(fù)位電路,晶振電路,電源等幾部分組成。1) 復(fù)位電路復(fù)位電路有兩種方式:上電復(fù)位和按鈕復(fù)位,我們主要用按鈕復(fù)位方式。如下圖所示: 2) 晶振電路晶振電路原理圖如3-2:3-2晶振模塊原理圖 選取原則:電容選取30pF,晶振為11.0592MHz。3) 電源AT89C
16、52單片機(jī)的供電電源是5V的直流電,我們直接通過(guò)USB電源線供電;4) EA非/Vpp 腳我們沒(méi)有用外部擴(kuò)展ROM,因此EA非/Vpp為高電平,即接+5V電源或是懸空,為了簡(jiǎn)化電路將這個(gè)引腳懸空。2 時(shí)鐘系統(tǒng)電路設(shè)計(jì)2.1 時(shí)鐘芯片選擇我們采用具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路DS1302。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。它采用主電源和備用電源雙電源供電。它的工作電壓范圍2.05.5V,在2.2V時(shí),小于300nA。它內(nèi)部含有31個(gè)字節(jié)的靜態(tài)RAM,可提供用戶訪問(wèn)。 DS1302可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),可
17、以達(dá)到我們?cè)O(shè)計(jì)的基本的要求。內(nèi)部的寄存器為我們調(diào)時(shí),鬧鐘定時(shí)提供了寄存空間。備用用電源也實(shí)現(xiàn)了當(dāng)系統(tǒng)斷電后,時(shí)鐘仍然可以保持。而且它是串行接口,與單片機(jī)通信所需要的接口少。不像DS12887等芯片并行通信需要很多IO口。2.2 DS1302管腳及寄存器說(shuō)明(1)DS1302的引腳排列Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。因此,我們vcc1用3V的紐扣電池作為備用電源,vcc2用系統(tǒng)電
18、源作為主電源。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK為時(shí)鐘輸入端。
19、0; (2)DS1302的寄存器說(shuō)明DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節(jié),命令控
20、制字為FEH(寫(xiě))、FFH(讀)。 2.3 DS1302時(shí)鐘電路DS1302時(shí)鐘電路如下圖所示:DS1302與單片機(jī)的連接僅需3條線:時(shí)鐘線SCLK、數(shù)據(jù)線I/O和復(fù)位線RST。時(shí)鐘線SCLK與P2.0相連,數(shù)據(jù)線I/O與P2.1相連,復(fù)位線RST與P2.2相連。由于DS1302是靠涓細(xì)電流充電來(lái)實(shí)現(xiàn)串行輸入輸出的,因此,在SCLK 、I/O、 RST線上要加上拉電阻,其中,它們的電流應(yīng)該在500u1mA之間,若電源為5V,則R約為5k,因此,我們的電阻R=4.7K。但是經(jīng)過(guò)查閱有關(guān)資料知道如果DS1302不是接p0口可以不接上拉電阻,為了節(jié)省成本,所以沒(méi)有接上拉電阻。 在單電源與電池供電系統(tǒng)
21、中,vcc1提供低電源并提供低功率的備用電源。Vcc2提供高電源作為芯片供電的主電源。因此,這里vcc1用3V紐扣電池,vcc2用5V的系統(tǒng)電源。晶振為32.768KHz接入X1、X2引腳。3 溫度系統(tǒng)電路 3.1 溫度芯片的選擇溫度實(shí)現(xiàn)只能通過(guò)外部的溫度傳感器來(lái)實(shí)現(xiàn)。經(jīng)上網(wǎng)查閱資料及市場(chǎng)考察,DS18b20體積小,只有3只腳,電路接法簡(jiǎn)單。它能夠直接讀出被測(cè)溫度。內(nèi)部含有寄存器為我們?cè)O(shè)計(jì)實(shí)現(xiàn)上下限報(bào)警功能提供保障。用戶可定義的非易失性溫度報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;精度為0.5°C,也符合我們?cè)O(shè)計(jì)的要求。DS18B20也是我們通常使用的型
22、號(hào),因此溫度傳感器用DS18B20。3.2 DS18B20內(nèi)部結(jié)構(gòu)描述DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8個(gè)字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖4.1所示。頭兩個(gè)字節(jié)包含測(cè)得的溫度信息,第三和第四字節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第五個(gè)字節(jié)為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如圖4.2所示。低5位一直為1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。溫度 LSB溫度 MSBTH
23、用戶字節(jié)1TL 用戶字節(jié)2配置寄存器保留保留保留 CRC圖 4.1高速暫存RAM結(jié)構(gòu)圖1字節(jié)2字節(jié) 3字節(jié) 4字節(jié) 5字節(jié)6字節(jié) 7字節(jié) 8字節(jié)9字節(jié)EEROMTH 用戶字節(jié)1TL 用戶字節(jié)2TMR1R011111圖 4.2 配置寄存器3.3 DS18b20溫度系統(tǒng)電路 DS18B20系統(tǒng)電路如下:DS18B20有兩種接法:一是單線接法即只接QT。這種方法應(yīng)用它內(nèi)部的寄生電源,因此在QT上要用一個(gè)MOSFET把I/O線只接拉到電源上。二是從vdd腳加上電源。方法一適合于遠(yuǎn)距離溫度監(jiān)控,不需要本地電源。而我們只是設(shè)計(jì)測(cè)溫系統(tǒng),選擇方法二就行了,還有MOSFET極容易燒,我們不用它。Vdd接5V電
24、源,vss接地,QT與P3.7相連。4 語(yǔ)音芯片1760的介紹;ISD1700 是華邦 ISD 公司 2007 年新推出的單片優(yōu)質(zhì)語(yǔ)音錄放電路,該芯片 提供多項(xiàng)新功能,包括內(nèi)置專利的多信息管理系統(tǒng),新信息提示( vAlert ) , 雙運(yùn)作模式(獨(dú)立 & 嵌入式),以及可定制的信息操作指示音效。芯片內(nèi)部 包含有自動(dòng)增益控制、麥克風(fēng)前置擴(kuò)大器、揚(yáng)聲器驅(qū)動(dòng)線路、振蕩器與內(nèi)存等的全方位整合系統(tǒng)功能。 一、 特點(diǎn): · 可錄、放音十萬(wàn)次,存儲(chǔ)內(nèi)容可以斷電保留一百年 · 兩種控制方式,兩種錄音輸入方式,兩種放音輸出方式 · 可處理多達(dá) 255 段以上信息 ·
25、; 有豐富多樣的工作狀態(tài)提示 · 多種采樣頻率對(duì)應(yīng)多種錄放時(shí)間 · 音質(zhì)好,電壓范圍寬,應(yīng)用靈活 二、 電特性: · 工作電壓: 2.4V-5.5V, 最高不能超過(guò) 6V · 靜態(tài)電流: 0.5 - 1 A · 工作電流: 20mA1700引腳圖5 鍵盤(pán)控制系統(tǒng)設(shè)計(jì)按鍵需要6個(gè),分別實(shí)現(xiàn)為時(shí)間調(diào)整、鬧鐘調(diào)整、時(shí)間加減、確認(rèn)、移位。用單片機(jī)的6個(gè)I/O口接收控制信號(hào),其電路圖如下:6個(gè)按鍵的一端與地相連,另一端分別與P0.0、P0.1、 P0.2、P0.3、P0.4、P0.5, 按鍵一按下就輸入低電平。6報(bào)警提示電路系統(tǒng)設(shè)計(jì)6.1報(bào)警電路由蜂鳴器
26、、三極管、電阻 ,語(yǔ)音模塊等構(gòu)成電路圖如下:與單片機(jī)的接口分別是P3.6語(yǔ)音??霷LAY=P07;播放 REC=P06;錄音ERASE=P05;擦除 FWD=P04;下一曲7液晶顯示系統(tǒng)設(shè)計(jì)7.1 12864液晶顯示電路 現(xiàn)在流行低碳生活,節(jié)能減排已成為人們處理事情首先想到的問(wèn)題,所以這個(gè)顯示的時(shí)候背光控制時(shí)間為10s左右,同時(shí)關(guān)背光的時(shí)候關(guān)掉顯示器的電源,降低功耗。四、軟硬件調(diào)試部分 1) 軟件調(diào)試 軟件調(diào)試,我是在keil軟件平臺(tái)和單片機(jī)學(xué)習(xí)板上來(lái)完成的。當(dāng)我寫(xiě)部分程序在keil軟件經(jīng)過(guò)調(diào)試,開(kāi)始出現(xiàn)很多錯(cuò)誤和警告。通過(guò)逐個(gè)錯(cuò)誤排錯(cuò)及修改。得出下列經(jīng)驗(yàn),(1)調(diào)用函數(shù)最好在頭文件中進(jìn)行申明
27、,主函數(shù)寫(xiě)在最后;(2)特別注意一些字母的大小寫(xiě),一般要用英語(yǔ)文字寫(xiě), 最后對(duì)程序進(jìn)行相應(yīng)的擴(kuò)展完善,由于按鍵不靈敏我們加上聲音程序。 2)硬件調(diào)試 硬件調(diào)試,我們用萬(wàn)用表,單片機(jī)學(xué)習(xí)板來(lái)完成的。首先,我們調(diào)試LCD1602顯示。我將液晶顯示程序下載到單片機(jī)內(nèi),連好所有的線,通電后,觀察顯示結(jié)果。唉!液晶竟然不顯示。我們用萬(wàn)用表測(cè)試各連線是否導(dǎo)通及某些點(diǎn)的電壓,竟然有些線路沒(méi)連通?。?然后,我們調(diào)試DS1302時(shí)鐘芯片。連上按鍵模塊,液晶顯示模塊,單片機(jī)最小系統(tǒng),時(shí)鐘系統(tǒng),溫度系統(tǒng),連接所有線,通上電源后,觀察到液晶顯示能正常顯示啦,但有亂碼顯示。后面我檢測(cè)程序出錯(cuò)啦;改正程序后,沒(méi)亂碼啦且能
28、夠正常顯示啦,然后逐漸完善功能。 整個(gè)硬件調(diào)試完成啦!五總結(jié)與體會(huì)想到課題以后,討論整個(gè)過(guò)程如何實(shí)施,以及選擇哪個(gè)課題進(jìn)行設(shè)計(jì)。在初步方案確定好后,開(kāi)始研究所需的器材,在列出初稿后,買好器材,便進(jìn)入了設(shè)計(jì)階段。經(jīng)過(guò)將一個(gè)五一的設(shè)計(jì),反復(fù)地討論各個(gè)環(huán)節(jié),反復(fù)調(diào)試,終于完成LCD液晶時(shí)鐘設(shè)計(jì)。雖然達(dá)到設(shè)計(jì)要求,并完成了一定發(fā)揮部分,但單片機(jī)的資源并沒(méi)完全得到應(yīng)用。這是不用單片機(jī)學(xué)習(xí)板,自己動(dòng)手制作出來(lái)的作品。在本次設(shè)計(jì)是液晶,單片機(jī),語(yǔ)音,鍵盤(pán)控制的綜合應(yīng)用,其間,遇到許多困難。我真真正正的意識(shí)到,在寫(xiě)程序時(shí),邏輯思維要清晰,要有好的寫(xiě)程序的層次感,模塊化清晰,要有耐心。這樣出錯(cuò)啦,才能及時(shí)知道問(wèn)
29、題出在哪。在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在這次設(shè)計(jì)中的最大收獲。 六 使用說(shuō)明:剛上電;為主頁(yè)面;S5鍵為進(jìn)入菜單;進(jìn)入菜單 :可以調(diào)時(shí);設(shè)定鬧鐘;設(shè)定你的主頁(yè)面;調(diào)背光顯示時(shí)間;播放鈴聲;S6;為確認(rèn)鍵加開(kāi)關(guān)背光;但背光滅了時(shí);按下S6;開(kāi)背光;倒計(jì)時(shí)30s;因?yàn)檎Z(yǔ)音模塊內(nèi)存不大;所以就沒(méi)錄語(yǔ)音整點(diǎn)報(bào)時(shí)啦,內(nèi)存兩首鈴聲。如果可以買個(gè)內(nèi)存大的語(yǔ)音芯片完全可以改裝的更好。LCD液晶時(shí)鐘系統(tǒng)設(shè)計(jì)原理電路圖各個(gè)模塊子函數(shù)void Delayus(UINT8 t) /微妙延時(shí)void Delaym
30、s(UINT16 t) /1ms延時(shí)UINT8 scan_key(void) /讀按鍵值void Tiao(void) /調(diào)節(jié)按鍵void Tiem() /定時(shí)器初始化void JieRi(void) /以下是公歷節(jié)日void Year(void)/年void TiaoShi(void) /調(diào)時(shí)函數(shù)void TiaoNao(void)/調(diào)鬧鐘函數(shù)void TiaoXiu(void) /調(diào)休眠函數(shù)void spk_Timer(void) /鬧鈴void LinSheng(void)/鈴聲調(diào)節(jié)void INT0_time() interrupt 0 /菜單外部中斷0函數(shù)void timer0()
31、interrupt 1 /定時(shí)器0 定時(shí)休眠void led_Timer() /關(guān)、開(kāi)背光UINT8 ZhengShi()/判斷整點(diǎn)到否void BaoDian()/整點(diǎn)報(bào)時(shí)void main(void) /主函數(shù)子函數(shù)具體內(nèi)容:#include <main.h>#include <YB12864ZA.h>UINT8 DateTime7;UINT8 dispstr116="20 年 月 日 "UINT8 dispstr216="星期 "UINT8 idata dispstr39=" "UINT8 idata d
32、ispstr416="菜單S5 "UINT8 idata dispstr916="鬧1 " /?UINT8 idata dispstr1016="鬧2 " /?UINT8 idata dispstr1116="顯示時(shí)間 "UINT8 code dispstr512=" S1:調(diào)時(shí)間 "UINT8 code dispstr612=" S2:調(diào)鬧鐘 "UINT8 code dispstr712=" S3:調(diào)休眠 "UINT8 code dispstr814=&
33、quot; S4:播放歌曲 "UINT8 idata dispstr126="鈴聲 "UINT8 idata dispstr136="鈴聲 "UINT8 code lin114=" S1:放音PLAY "UINT8 code lin215=" S2:下一曲FWD "UINT8 code lin313=" S3:錄音REC "UINT8 code lin416=" S4:擦刪ERASE "UINT8 code LCD112="元旦節(jié)快樂(lè) " UIN
34、T8 code LCD212="世界濕地日 "UINT8 code LCD312="世界氣象日 "UINT8 code LCD412="國(guó)際婦女節(jié) "UINT8 code LCD512="中國(guó)植樹(shù)節(jié) "UINT8 code LCD614="消費(fèi)者權(quán)益日 "UINT8 code LCD710="世界水日 " UINT8 code LCD812="愚人節(jié)快樂(lè) "UINT8 code LCD912="中國(guó)清明節(jié) "UINT8 code LCD
35、1012="世界地球日 " UINT8 code LCD1112="國(guó)際勞動(dòng)節(jié) "UINT8 code LCD1212="中國(guó)青年節(jié) "UINT8 code LCD1312="世界護(hù)士節(jié) "UINT8 code LCD1412="國(guó)際兒童節(jié) "UINT8 code LCD1512="世界環(huán)境日 "UINT8 code LCD1612="國(guó)際愛(ài)眼日 "UINT8 code LCD1712="世界土地日 "UINT8 code LCD181
36、2="國(guó)際禁毒日 " UINT8 code LCD1912="香港回歸日 " UINT8 code LCD2012="中國(guó)建軍節(jié) "UINT8 code LCD2112="中國(guó)老師節(jié) "UINT8 code LCD2216="九一八事件紀(jì)念日"UINT8 code LCD2312="中國(guó)國(guó)慶節(jié) "UINT8 code LCD2412="世界動(dòng)物日 "UINT8 code LCD2512="世界郵政日 "UINT8 code LCD261
37、6="辛亥革命紀(jì)念日 " UINT8 code LCD2716="澳門(mén)回歸紀(jì)念日 "UINT8 code LCD288="平安夜 "UINT8 code LCD298="圣誕節(jié)"UINT8 SetTime117=0x00,0x10,0x10,0x10,0x05,0x05,0x13,0x00,0x00,0x00,0,1,0x00,0x00,0x00,0,1; /設(shè)定時(shí)間,鬧鐘 最初始值code unsigned char MAX17=90,90,36,49,19,7,153,90,36,7,2,5,90,36,7,2
38、,5;/調(diào)時(shí)最大值UINT8 code DAY8="7123456"UINT16 code dimer5=30,60,120,300,600;sbit spk=P36;sbit led=P27;sbit RLAY=P07;sbit REC=P06;sbit ERASE=P05;sbit FWD=P04;UINT8 S=60,F=0;char Y=0,yi=1,ye=1;char biaozhi=0;int W1=0,W2=0;UINT8 n;sbit G=P33;int K=0;int H;static unsigned int count=0;#define S1 0x0
39、e#define S2 0x0d#define S3 0x0b#define S4 0x07、void Delayus(UINT8 t) /微妙延時(shí)UINT8 i;i=t;for(;i>0;i-);void Delayms(UINT16 t) /1ms延時(shí)UINT16 i,j;for(i=0;i<t;i+)for(j=0;j<114;j+);、UINT8 scan_key(void) /讀按鍵值UINT8 key;if(P0&0x0f)=0x0f) return(0xff);Delayms(10);if(P0&0x0f)=0x0f) return(0xff);
40、key=(P0&0x0f);while(P0&0x0f)!=0x0f);return(key);、void Tiao(void) /調(diào)節(jié)按鍵UINT8 temp;temp=scan_key();switch(temp)case S1:SetTime1K-1+;if(SetTime1K-1=10) | (SetTime1K-1=26)|(SetTime1K-1=42) |(SetTime1K-1=58) |(SetTime1K-1=74)SetTime1K-1=SetTime1K-1+6;SetTime1K-1%=MAXK-1;break;case S2:if(SetTime1K
41、-1>0)SetTime1K-1-;if(SetTime1K-1=15) | (SetTime1K-1=31)|(SetTime1K-1=47) |(SetTime1K-1=63) |(SetTime1K-1=79)SetTime1K-1=SetTime1K-1-6;elseSetTime1K-1=MAXK-1-1;break;case S3:K+;if(K=18)K=8;elseif(K=8)K=1; break;/case S4:Y+;/Y%=2;H=K;、void Tiem()/定時(shí)器初始化TMOD=0x01;TH0=0XDC;TL0=0X00;ET0=1;EA=1;TR0=1;I
42、T0=1;EX0=1;、void JieRi(void) /以下是公歷節(jié)日if(DateTime4=0x01 && DateTime3=0x01) Dis_Str(3,0, LCD1); else if(DateTime4=0x02 && DateTime3=0x02) Dis_Str(3,0, LCD2);else if(DateTime4=0x02 && DateTime3=0x10) Dis_Str(3,0, LCD3);else if(DateTime4=0x03 && DateTime3=0x08) Dis_Str(3,
43、0, LCD4);else if(DateTime4=0x03 && DateTime3=0x12) Dis_Str(3,0, LCD5);else if(DateTime4=0x03 && DateTime3=0x15) Dis_Str(3,0, LCD6);else if(DateTime4=0x03 && DateTime3=0x22) Dis_Str(3,0, LCD7); else if(DateTime4=0x04 && DateTime3=0x01) Dis_Str(3,0, LCD8);else if(DateTi
44、me4=0x04 && DateTime3=0x05) Dis_Str(3,0, LCD9);else if(DateTime4=0x04 && DateTime3=0x22) Dis_Str(3,0, LCD10); else if(DateTime4=0x05 && DateTime3=0x01) Dis_Str(3,0, LCD11);else if(DateTime4=0x05 && DateTime3=0x04) Dis_Str(3,0, LCD12);else if(DateTime4=0x05 &&
45、DateTime3=0x12) Dis_Str(3,0, LCD13);else if(DateTime4=0x06 && DateTime3=0x01) Dis_Str(3,0, LCD14);else if(DateTime4=0x06 && DateTime3=0x05) Dis_Str(3,0, LCD15);else if(DateTime4=0x06 && DateTime3=0x06) Dis_Str(3,0, LCD16);else if(DateTime4=0x06 && DateTime3=0x25) Dis_
46、Str(3,0, LCD17);else if(DateTime4=0x06 && DateTime3=0x26) Dis_Str(3,0, LCD18); else if(DateTime4=0x07 && DateTime3=0x01) Dis_Str(3,0, LCD19); else if(DateTime4=0x08 && DateTime3=0x01) Dis_Str(3,0, LCD20);else if(DateTime4=0x09 && DateTime3=0x10) Dis_Str(3,0, LCD21);el
47、se if(DateTime4=0x09 && DateTime3=0x18) Dis_Str(3,0, LCD22);else if(DateTime4=0x10 && DateTime3=0x01) Dis_Str(3,0, LCD23);else if(DateTime4=0x10 && DateTime3=0x04) Dis_Str(3,0, LCD24);else if(DateTime4=0x10 && DateTime3=0x09) Dis_Str(3,0, LCD25);else if(DateTime4=0x10
48、 && DateTime3=0x10) Dis_Str(3,0, LCD26); else if(DateTime4=0x12 && DateTime3=0x20) Dis_Str(3,0, LCD27);else if(DateTime4=0x12 && DateTime3=0x24) Dis_Str(3,0, LCD28);else if(DateTime4=0x12 && DateTime3=0x25) Dis_Str(3,0, LCD29); else Dis_Str(3,0,dispstr4);、void Year(vo
49、id)/年UINT8 ReYear;ReYear=DateTime6%18; /農(nóng)歷年模12,取余運(yùn)算switch(ReYear)case 0:Dis_Str(1,0,"龍年");break; /余0即整除 農(nóng)歷 龍年case 1:Dis_Str(1,0,"蛇年");break; /蛇年case 2:Dis_Str(1,0,"馬年");break;case 3:Dis_Str(1,0,"羊年");break;case 4:Dis_Str(1,0,"猴年");break; case 5:Dis_S
50、tr(1,0,"雞年");break;case 6:Dis_Str(1,0,"狗年");break;case 7:Dis_Str(1,0,"豬年");break;case 8:Dis_Str(1,0,"鼠年");break;case 9:Dis_Str(1,0,"牛年");break;case 10:Dis_Str(1,0,"虎年");break;case 11:Dis_Str(1,0,"兔年");break; 、void TiaoShi(void) /調(diào)
51、時(shí)函數(shù)lcd_wcmd(0x01);Delayms(1);spk=0;Delayms(100);spk=1;while(G!=0)Tiao();Delayms(1);count+;if(H-1)=0) && (count>1)/?dispstr36=' 'dispstr37=' 'else dispstr36=SetTime10/16+0x30;dispstr37=SetTime10%16+0x30;if(H-1)=1 && (count>1)dispstr33=' 'dispstr34=' &
52、#39;elsedispstr33=SetTime11/16+0x30;dispstr34=SetTime11%16+0x30;if(H-1)=2 && (count>1)dispstr30=' 'dispstr31=' 'elsedispstr30=SetTime12/16+0x30;dispstr31=SetTime12%16+0x30; if(H-1)=3 && (count>1)dispstr110=' 'dispstr111=' 'elsedispstr110=SetTime13/16+0x30; dispstr111=SetTime13%16+0x30;if(H-1)=4 && (count>1)dispstr16=' 'dispstr17=' 'else dispstr16=SetTime14/16+0x30;dispstr17=SetTime14%16+0x30;if(H-1)=5 && (count>1)dispstr24=' '
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租別人的地方養(yǎng)雞合同(2篇)
- 預(yù)售房轉(zhuǎn)賣合同(2篇)
- 長(zhǎng)江 黃河 課件
- 薩克斯教學(xué)課件
- 植物描寫(xiě) 課件
- 高考地理一輪復(fù)習(xí)第二章宇宙中的地球及其運(yùn)動(dòng)第四節(jié)地球公轉(zhuǎn)及其地理意義課件
- 西南林業(yè)大學(xué)《C語(yǔ)言程序設(shè)計(jì)》2023-2024學(xué)年期末試卷
- 西京學(xué)院《網(wǎng)絡(luò)程序設(shè)計(jì)》2023-2024學(xué)年期末試卷
- 課件 孝悌文化
- 6以內(nèi)的加減法練習(xí)
- 透析患者疑難病例討論
- 工業(yè)園區(qū)風(fēng)險(xiǎn)分析
- 重癥醫(yī)學(xué)科主任述職報(bào)告
- 中國(guó)特色社會(huì)主義法律體系課件
- 高中數(shù)學(xué)奧賽輔導(dǎo)教材(共十講)
- 國(guó)開(kāi)一體化平臺(tái)04633《納稅實(shí)務(wù)》形考任務(wù)(1-4)試題及答案
- 真人CS俱樂(lè)部經(jīng)營(yíng)專項(xiàng)方案
- 咖啡文化與飲品調(diào)制智慧樹(shù)知到期末考試答案2024年
- 臨城興業(yè)礦產(chǎn)資源有限公司閆家莊鐵礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 【海南康養(yǎng)旅游現(xiàn)狀和對(duì)策探究11000字(論文)】
- (2024版)大學(xué)本科新增專業(yè)《智能視覺(jué)工程》解讀
評(píng)論
0/150
提交評(píng)論