




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、基于單片機,1760語音模塊的液晶LCD時鐘專業(yè)系部:電氣工程系 班 級:智能電子111學生姓名:歐 陽 志 勇 完成日期:2013年5月 摘 要我設計的LCD時鐘溫度系統(tǒng)是由中央控制器、溫度檢測器、時鐘系統(tǒng)、語音模塊,LCD液晶顯示器及鍵盤部分組成。控制器采用單片機STC89C52,溫度檢測部分采用DS18B20溫度傳感器,時鐘系統(tǒng)用時鐘芯片DS1302,用LCD液晶12864作為顯示器,用語音模塊1706構成報警器。單片機通過時鐘芯片DS1302獲取時間數(shù)據(jù),對數(shù)據(jù)處理后顯示時間;溫度傳感器DS18B20采集溫度信號送該給單片機處理;單片機再把時間數(shù)據(jù)和溫度數(shù)據(jù)送液晶顯示器LCD12864
2、顯示,鍵盤是用來調(diào)時,調(diào)鬧鐘,調(diào)休眠,播放鈴聲。語音模塊用來播放鈴聲;關鍵字:單片機 LCD液晶 DS18B20 DS1302 LCD12864語音1760;一、 設計目的及意義1.隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設計是數(shù)據(jù)采集及處理,鍵盤控制,顯示系統(tǒng)及報警系統(tǒng)與單片機有效結合,意義:本設計是通過在“單片機原理及應用”課堂上學習的知識的綜合應用,以及查閱資料,并且引導一種創(chuàng)新的思維,把學到的知識應用到日常生活當
3、中。在設計的過程中,不斷的學習,思考和同學間的相互討論,運用科學的分析問題的方法解決遇到的困難,掌握單片機系統(tǒng)一般的開發(fā)流程,學會對常見問題的處理方法,積累設計系統(tǒng)的經(jīng)驗,充分發(fā)揮教學與實踐的結合。全能提高個人系統(tǒng)開發(fā)的綜合能力,開拓了思維,為今后能在相應工作崗位上的工作打下了堅實的基礎。二、方案設計及方案論證1.時鐘溫度的總體設計思路按照系統(tǒng)的設計功能要求,本時鐘,鈴聲,溫度系統(tǒng)的設計必須采用單片機軟件系統(tǒng)實現(xiàn),用單片機的自動控制能力配合按鍵控制,來控制時鐘、溫度的調(diào)整,鬧鈴及顯示。獲得時鐘溫度數(shù)據(jù)信息,單片機對其進行一系列的處理,最后通過液晶顯示出來。2.時鐘溫度系統(tǒng)方案論證2.1時鐘系統(tǒng)
4、方案選擇方案1:通過單片機內(nèi)部的定時器/計數(shù)器,用軟件實現(xiàn),直接用單片機的定時器編程以實現(xiàn)時鐘;方案2:用專門的時鐘芯片實現(xiàn)時鐘的記時,再把時間數(shù)據(jù)送入單片機,由單片機控制顯示。雖然用軟件實現(xiàn)時鐘硬件線路簡單,但是程序運行的每一步都需要時間,多一步或少一步程序都會影響記時的準確度,對定時器定時也不是十分準確,時鐘精度很低,對于我們實現(xiàn)所需要的功能造成軟件編程非常復雜。用專用時鐘芯片硬件成本相對較高,但它的精度很高,軟件編程很簡單。綜上所述,選擇方案2。2.2單片機的選擇對于單片機的選擇,如果用8031系列,由于它沒有內(nèi)部RAM,系統(tǒng)又需要大量內(nèi)存存儲數(shù)據(jù),因而不可用;51系列單片機的ROM為4
5、K,對于我們設計的系統(tǒng)可能有點小;52系列單片機與51系列的結構一樣,而ROM擴大為8K,對我們設計系統(tǒng)提供充足的空間進行功能的擴展。再有51系列單片機與52系列的單片機價格差不多。因此,我們選擇52系列的單片機。 2.3 顯示系統(tǒng)的方案比較 方案1:用數(shù)碼管或LED顯示。 方案2:用液晶1602顯示。方案3:用液晶12864顯示。 時鐘和溫度的顯示可以用數(shù)碼管或LED,而且價格便宜。但是數(shù)碼管的只能顯示簡單的設計的系統(tǒng),與我們設計要求也不相符。有很多東西需要顯示,還是用顯示功能更好的液晶顯示器比較好,它能顯示更多的數(shù)據(jù),用1602液晶顯示數(shù)據(jù)有限,顯示數(shù)據(jù)的可讀性不好,用可以顯示漢字的128
6、64液晶顯示器還可以增加顯示信息的可讀性,讓人看起來會很方便。 2.4 報警系統(tǒng)的方案比較 方案1:用長鳴的蜂鳴器實現(xiàn)鬧鐘鈴聲及溫度超限報警。 方案2:用喇叭加語音芯片實現(xiàn)鬧鐘鈴聲及溫度超限報警。 用喇叭加語音芯片成本也不是很高,聲音也不錯,用蜂鳴器,成本低,電路結構簡單,而且體積小。但功能有限,限于設計所需要的功能,用蜂鳴器和語音結合為最佳選擇。所以我們采用方案1.2結合。2.5 溫度系統(tǒng)方案選擇方案1:用熱敏電阻等測溫元件測出電壓,再轉(zhuǎn)換成對應的溫度。需要比較多的外部元件支持,且硬件電路復雜,制作成本相對較高。方案2:用DS18B20直接測溫。DS18B20溫度傳感器是美國DALLAS半導
7、體公司最新推出的一種改進型智能溫度傳感器,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。經(jīng)比較,我們選擇方案2。溫度實現(xiàn)只能通過外部的溫度傳感器來實現(xiàn)。經(jīng)上網(wǎng)查閱及市場考察,DS18b20體積小,只有3只腳,電路接法簡單。內(nèi)部含有寄存器為我們設計實現(xiàn)上下限報警功能提供保障。精度為0.5°C,也符合我們設計的要求。DS18B20也是我們通常使用的型號,因此溫度傳感器用DS18B20。2.6 鍵盤控制方案選擇方案1:購買集成鍵盤,采用矩陣形式連接。方案2:購買單個復位開關做成鍵盤。雖然集成鍵盤美觀,與單片機的接口少,但是它的成本比較高。單片機的IO口
8、對于我們的設計綽綽有余。通常我們選用價格便宜單個復位開關做成鍵盤。3. .時鐘溫度系統(tǒng)總體設計初步確定設計系統(tǒng)由單片機主控模塊、時鐘模塊、測溫模塊、語音模塊、顯示模塊、鍵盤接口模塊共6個模塊組成,電路系統(tǒng)框圖如圖所示。 主控器件AT89C52DB1820 溫度采集系統(tǒng)DS1320時間采集系統(tǒng)12864顯示系統(tǒng)語音報警系統(tǒng)鍵盤控制系統(tǒng)三硬件設計部分1 單片機最小系統(tǒng)電路設計1.1 單片機芯片選擇單片機采用52系列單片機。由ATMEL公司生產(chǎn)的AT89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)8
9、0C51 產(chǎn)品指令和引腳完全兼容。在單芯片上,擁有靈巧的8 位CPU 和在線系統(tǒng)可編程Flash,使得AT89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、有效的解決方案。AT89C52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內(nèi)晶振及時鐘電路。空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。而且,它還具有一個看門狗(WDT)定時/計數(shù)器,
10、如果程序沒有正常工作,就會強制整個系統(tǒng)復位,還可以在程序陷入死循環(huán)的時候,讓單片機復位而不用整個系統(tǒng)斷電,從而保護你的硬件電路。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。其芯片外觀及引腳圖如下: 圖1.1_1 圖1.1_21.2 單片機管腳說明VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TT
11、L門流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時
12、,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“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(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在
14、平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H
15、-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。1.3 單片機最小系統(tǒng) 單片機最小系統(tǒng)主要由復位電路,晶振電路,電源等幾部分組成。1) 復位電路復位電路有兩種方式:上電復位和按鈕復位,我們主要用按鈕復位方式。如下圖所示: 2) 晶振電路晶振電路原理圖如3-2:3-2晶振模塊原理圖 選取原則:電容選取30pF,晶振為11.0592MHz。3) 電源AT89C
16、52單片機的供電電源是5V的直流電,我們直接通過USB電源線供電;4) EA非/Vpp 腳我們沒有用外部擴展ROM,因此EA非/Vpp為高電平,即接+5V電源或是懸空,為了簡化電路將這個引腳懸空。2 時鐘系統(tǒng)電路設計2.1 時鐘芯片選擇我們采用具有涓細電流充電能力的低功耗實時時鐘電路DS1302。它可以對年、月、日、周日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。它采用主電源和備用電源雙電源供電。它的工作電壓范圍2.05.5V,在2.2V時,小于300nA。它內(nèi)部含有31個字節(jié)的靜態(tài)RAM,可提供用戶訪問。 DS1302可以對年、月、日、周日、時、分、秒進行計時,可
17、以達到我們設計的基本的要求。內(nèi)部的寄存器為我們調(diào)時,鬧鐘定時提供了寄存空間。備用用電源也實現(xiàn)了當系統(tǒng)斷電后,時鐘仍然可以保持。而且它是串行接口,與單片機通信所需要的接口少。不像DS12887等芯片并行通信需要很多IO口。2.2 DS1302管腳及寄存器說明(1)DS1302的引腳排列Vcc1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc10.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。因此,我們vcc1用3V的紐扣電池作為備用電源,vcc2用系統(tǒng)電
18、源作為主電源。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK為時鐘輸入端。
19、0; (2)DS1302的寄存器說明DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控
20、制字為FEH(寫)、FFH(讀)。 2.3 DS1302時鐘電路DS1302時鐘電路如下圖所示:DS1302與單片機的連接僅需3條線:時鐘線SCLK、數(shù)據(jù)線I/O和復位線RST。時鐘線SCLK與P2.0相連,數(shù)據(jù)線I/O與P2.1相連,復位線RST與P2.2相連。由于DS1302是靠涓細電流充電來實現(xiàn)串行輸入輸出的,因此,在SCLK 、I/O、 RST線上要加上拉電阻,其中,它們的電流應該在500u1mA之間,若電源為5V,則R約為5k,因此,我們的電阻R=4.7K。但是經(jīng)過查閱有關資料知道如果DS1302不是接p0口可以不接上拉電阻,為了節(jié)省成本,所以沒有接上拉電阻。 在單電源與電池供電系統(tǒng)
21、中,vcc1提供低電源并提供低功率的備用電源。Vcc2提供高電源作為芯片供電的主電源。因此,這里vcc1用3V紐扣電池,vcc2用5V的系統(tǒng)電源。晶振為32.768KHz接入X1、X2引腳。3 溫度系統(tǒng)電路 3.1 溫度芯片的選擇溫度實現(xiàn)只能通過外部的溫度傳感器來實現(xiàn)。經(jīng)上網(wǎng)查閱資料及市場考察,DS18b20體積小,只有3只腳,電路接法簡單。它能夠直接讀出被測溫度。內(nèi)部含有寄存器為我們設計實現(xiàn)上下限報警功能提供保障。用戶可定義的非易失性溫度報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;精度為0.5°C,也符合我們設計的要求。DS18B20也是我們通常使用的型
22、號,因此溫度傳感器用DS18B20。3.2 DS18B20內(nèi)部結構描述DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8個字節(jié)的存儲器,結構如圖4.1所示。頭兩個字節(jié)包含測得的溫度信息,第三和第四字節(jié)是TH和TL的拷貝,是易失的,每次上電復位時被刷新。第五個字節(jié)為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應精度的數(shù)值。該字節(jié)各位的定義如圖4.2所示。低5位一直為1,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。溫度 LSB溫度 MSBTH
23、用戶字節(jié)1TL 用戶字節(jié)2配置寄存器保留保留保留 CRC圖 4.1高速暫存RAM結構圖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。這種方法應用它內(nèi)部的寄生電源,因此在QT上要用一個MOSFET把I/O線只接拉到電源上。二是從vdd腳加上電源。方法一適合于遠距離溫度監(jiān)控,不需要本地電源。而我們只是設計測溫系統(tǒng),選擇方法二就行了,還有MOSFET極容易燒,我們不用它。Vdd接5V電
24、源,vss接地,QT與P3.7相連。4 語音芯片1760的介紹;ISD1700 是華邦 ISD 公司 2007 年新推出的單片優(yōu)質(zhì)語音錄放電路,該芯片 提供多項新功能,包括內(nèi)置專利的多信息管理系統(tǒng),新信息提示( vAlert ) , 雙運作模式(獨立 & 嵌入式),以及可定制的信息操作指示音效。芯片內(nèi)部 包含有自動增益控制、麥克風前置擴大器、揚聲器驅(qū)動線路、振蕩器與內(nèi)存等的全方位整合系統(tǒng)功能。 一、 特點: · 可錄、放音十萬次,存儲內(nèi)容可以斷電保留一百年 · 兩種控制方式,兩種錄音輸入方式,兩種放音輸出方式 · 可處理多達 255 段以上信息 ·
25、; 有豐富多樣的工作狀態(tài)提示 · 多種采樣頻率對應多種錄放時間 · 音質(zhì)好,電壓范圍寬,應用靈活 二、 電特性: · 工作電壓: 2.4V-5.5V, 最高不能超過 6V · 靜態(tài)電流: 0.5 - 1 A · 工作電流: 20mA1700引腳圖5 鍵盤控制系統(tǒng)設計按鍵需要6個,分別實現(xiàn)為時間調(diào)整、鬧鐘調(diào)整、時間加減、確認、移位。用單片機的6個I/O口接收控制信號,其電路圖如下:6個按鍵的一端與地相連,另一端分別與P0.0、P0.1、 P0.2、P0.3、P0.4、P0.5, 按鍵一按下就輸入低電平。6報警提示電路系統(tǒng)設計6.1報警電路由蜂鳴器
26、、三極管、電阻 ,語音模塊等構成電路圖如下:與單片機的接口分別是P3.6語音模快RLAY=P07;播放 REC=P06;錄音ERASE=P05;擦除 FWD=P04;下一曲7液晶顯示系統(tǒng)設計7.1 12864液晶顯示電路 現(xiàn)在流行低碳生活,節(jié)能減排已成為人們處理事情首先想到的問題,所以這個顯示的時候背光控制時間為10s左右,同時關背光的時候關掉顯示器的電源,降低功耗。四、軟硬件調(diào)試部分 1) 軟件調(diào)試 軟件調(diào)試,我是在keil軟件平臺和單片機學習板上來完成的。當我寫部分程序在keil軟件經(jīng)過調(diào)試,開始出現(xiàn)很多錯誤和警告。通過逐個錯誤排錯及修改。得出下列經(jīng)驗,(1)調(diào)用函數(shù)最好在頭文件中進行申明
27、,主函數(shù)寫在最后;(2)特別注意一些字母的大小寫,一般要用英語文字寫, 最后對程序進行相應的擴展完善,由于按鍵不靈敏我們加上聲音程序。 2)硬件調(diào)試 硬件調(diào)試,我們用萬用表,單片機學習板來完成的。首先,我們調(diào)試LCD1602顯示。我將液晶顯示程序下載到單片機內(nèi),連好所有的線,通電后,觀察顯示結果。唉!液晶竟然不顯示。我們用萬用表測試各連線是否導通及某些點的電壓,竟然有些線路沒連通啊! 然后,我們調(diào)試DS1302時鐘芯片。連上按鍵模塊,液晶顯示模塊,單片機最小系統(tǒng),時鐘系統(tǒng),溫度系統(tǒng),連接所有線,通上電源后,觀察到液晶顯示能正常顯示啦,但有亂碼顯示。后面我檢測程序出錯啦;改正程序后,沒亂碼啦且能
28、夠正常顯示啦,然后逐漸完善功能。 整個硬件調(diào)試完成啦!五總結與體會想到課題以后,討論整個過程如何實施,以及選擇哪個課題進行設計。在初步方案確定好后,開始研究所需的器材,在列出初稿后,買好器材,便進入了設計階段。經(jīng)過將一個五一的設計,反復地討論各個環(huán)節(jié),反復調(diào)試,終于完成LCD液晶時鐘設計。雖然達到設計要求,并完成了一定發(fā)揮部分,但單片機的資源并沒完全得到應用。這是不用單片機學習板,自己動手制作出來的作品。在本次設計是液晶,單片機,語音,鍵盤控制的綜合應用,其間,遇到許多困難。我真真正正的意識到,在寫程序時,邏輯思維要清晰,要有好的寫程序的層次感,模塊化清晰,要有耐心。這樣出錯啦,才能及時知道問
29、題出在哪。在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次設計中的最大收獲。 六 使用說明:剛上電;為主頁面;S5鍵為進入菜單;進入菜單 :可以調(diào)時;設定鬧鐘;設定你的主頁面;調(diào)背光顯示時間;播放鈴聲;S6;為確認鍵加開關背光;但背光滅了時;按下S6;開背光;倒計時30s;因為語音模塊內(nèi)存不大;所以就沒錄語音整點報時啦,內(nèi)存兩首鈴聲。如果可以買個內(nèi)存大的語音芯片完全可以改裝的更好。LCD液晶時鐘系統(tǒng)設計原理電路圖各個模塊子函數(shù)void Delayus(UINT8 t) /微妙延時void Delaym
30、s(UINT16 t) /1ms延時UINT8 scan_key(void) /讀按鍵值void Tiao(void) /調(diào)節(jié)按鍵void Tiem() /定時器初始化void JieRi(void) /以下是公歷節(jié)日void Year(void)/年void TiaoShi(void) /調(diào)時函數(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 /定時器0 定時休眠void led_Timer() /關、開背光UINT8 ZhengShi()/判斷整點到否void BaoDian()/整點報時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="顯示時間 "UINT8 code dispstr512=" S1:調(diào)時間 "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é)快樂 " UIN
34、T8 code LCD212="世界濕地日 "UINT8 code LCD312="世界氣象日 "UINT8 code LCD412="國際婦女節(jié) "UINT8 code LCD512="中國植樹節(jié) "UINT8 code LCD614="消費者權益日 "UINT8 code LCD710="世界水日 " UINT8 code LCD812="愚人節(jié)快樂 "UINT8 code LCD912="中國清明節(jié) "UINT8 code LCD
35、1012="世界地球日 " UINT8 code LCD1112="國際勞動節(jié) "UINT8 code LCD1212="中國青年節(jié) "UINT8 code LCD1312="世界護士節(jié) "UINT8 code LCD1412="國際兒童節(jié) "UINT8 code LCD1512="世界環(huán)境日 "UINT8 code LCD1612="國際愛眼日 "UINT8 code LCD1712="世界土地日 "UINT8 code LCD181
36、2="國際禁毒日 " UINT8 code LCD1912="香港回歸日 " UINT8 code LCD2012="中國建軍節(jié) "UINT8 code LCD2112="中國老師節(jié) "UINT8 code LCD2216="九一八事件紀念日"UINT8 code LCD2312="中國國慶節(jié) "UINT8 code LCD2412="世界動物日 "UINT8 code LCD2512="世界郵政日 "UINT8 code LCD261
37、6="辛亥革命紀念日 " UINT8 code LCD2716="澳門回歸紀念日 "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; /設定時間,鬧鐘 最初始值code unsigned char MAX17=90,90,36,49,19,7,153,90,36,7,2,5,90,36,7,2
38、,5;/調(diào)時最大值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) /微妙延時UINT8 i;i=t;for(;i>0;i-);void Delayms(UINT16 t) /1ms延時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()/定時器初始化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,取余運算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ù)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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織健步走活動方案
- 公司植樹節(jié)項目活動方案
- 2025年運動醫(yī)學職業(yè)資格考試試卷及答案
- 拓展知識-室外消火栓系統(tǒng)的工作原理
- 2025年心理咨詢與治療的基礎知能力考試卷及答案
- 2025年小兒醫(yī)學基礎與臨床技能考試卷及答案
- 2025年心理健康教育考試試卷及答案
- 2025年社會心理學基礎知識考試試卷及答案
- 2025年生物技術專業(yè)研究生入學考試試卷及答案
- 2025年企業(yè)培訓與發(fā)展專業(yè)畢業(yè)生測評試卷及答案
- 云南楚雄州金江能源集團有限公司招聘筆試題庫2025
- 高中生物2015-2024年10年高考真題專題分類匯編-專題14體液調(diào)節(jié)考點2激素調(diào)節(jié)的過程
- 2024年四川省成都市中考地理試卷(含答案與解析)
- 典當行內(nèi)部基本管理制度
- 2024年內(nèi)蒙古呼和浩特中考滿分作文《留在記憶里的芬芳》
- GB/T 29456-2025能源管理體系實施、保持和改進GB/T 23331能源管理體系指南
- 北京市清華附小2024-2025學年數(shù)學三下期末質(zhì)量檢測模擬試題含解析
- (2025春新版本)北師大七年級下冊生物全冊教案
- 2025年教科新版五年級語文下冊階段測試試卷
- 《MLCC制程介紹》課件
- 關于物業(yè)客服培訓的
評論
0/150
提交評論