單片機(jī)電子萬年歷課程設(shè)計(jì)_第1頁
單片機(jī)電子萬年歷課程設(shè)計(jì)_第2頁
單片機(jī)電子萬年歷課程設(shè)計(jì)_第3頁
單片機(jī)電子萬年歷課程設(shè)計(jì)_第4頁
單片機(jī)電子萬年歷課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)課程設(shè)計(jì)姓 名:呂長明學(xué) 號:專業(yè)班級:機(jī)電四班一、單片機(jī)原理及應(yīng)用簡介隨著國內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、并行、串行I/O口、定時(shí)/計(jì)數(shù)器、中斷控制器及其他控制部件集成在一個(gè)芯片之中,制成單片計(jì)算機(jī)(Single-Chip Microcomputer)。而近年來推出的一些高檔單片機(jī)還包括有許多特殊功能單元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、DMA、浮點(diǎn)運(yùn)算單元等。因此,只要外加一些擴(kuò)展電路及必要的通道接口就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng),如工

2、業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、自動(dòng)測試系統(tǒng)、萬年歷電子表等。二、系統(tǒng)硬件設(shè)計(jì)8052 是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳分布請參照-單片機(jī)引腳圖圖1:圖1 8052引腳P0.0P0.7 P0口8位雙向口線(在引腳的3932號端子)。P1.0P1.7 P1口8位雙向口線(在引腳的18號端子)。 P2.0P2.7 P2口8位雙向口線(在引腳的2128號端子)。P3.0P3.7 P2口8位雙向口線(在引腳的1017號端子)。 8052芯片管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。 當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸

3、入。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門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。

4、并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口

5、,如表1所示:口管腳備選功能P3.0 RXD串行輸入口P3.1 TXD串行輸出口P3.2 /INT0外部中斷0P3.3 /INT1外部中斷1P3.4 T0記時(shí)器0外部輸入P3.5 T1記時(shí)器1外部輸入P3.6 /WR外部數(shù)據(jù)存儲(chǔ)器寫選通P3.7 /RD外部數(shù)據(jù)存儲(chǔ)器讀選通表1 特殊功能口P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。一般情況下,ALE端以不變的頻率周期輸出正脈沖信號,此頻

6、率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSE N信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000 H- FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注

7、意加密方式1時(shí),/EA將內(nèi) 部 鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FL ASH 編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。 三、系統(tǒng)總體方案 我選用的是單片機(jī)(8052)來實(shí)現(xiàn)電子萬年歷的功能。共具備兩個(gè)功能:(1)顯示年月日及分秒信息(2)具有可調(diào)整日期和時(shí)間功能。該電子萬年歷能夠成功實(shí)現(xiàn)時(shí)鐘運(yùn)行,調(diào)整功能,且精確度經(jīng)調(diào)試一天的誤差在2S內(nèi)。1微處理器在設(shè)計(jì)過程中我使用12MHZ晶振與單片機(jī)8052相連接,通過軟件編程的方法實(shí)現(xiàn)了以24小時(shí)為一個(gè)周期同時(shí)顯示小時(shí)

8、,分鐘和秒的要求,該定時(shí)鬧鐘設(shè)有九個(gè)按鍵,使之具備了校時(shí)、定時(shí)功能。利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過編程形成數(shù)字鐘效果,再利用數(shù)碼管動(dòng)態(tài)掃描顯示單片機(jī)內(nèi)部處理的數(shù)據(jù)。同時(shí)通過端口讀入當(dāng)前外部控制狀態(tài)來改變程序的不同狀態(tài),實(shí)現(xiàn)不同功能。在PROTEUS軟件環(huán)境下的8052芯片如圖4所示: 圖4 PROTEUS軟件環(huán)境下的8052芯片 2顯示電路就時(shí)鐘而言,通常可采用液晶顯示或數(shù)碼管顯示。由于一般的段式液晶屏,需要專門的驅(qū)動(dòng)電路,而且液晶顯示作為一種被動(dòng)顯示,可視性相對較差;對于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般多采用并行接口,對微處理器的接口要求較高,占用資源多

9、。另外,89C2051本身無專門的液晶驅(qū)動(dòng)接口,因此,本設(shè)計(jì)采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合。初始化時(shí),由軟件編寫的指令就集中在顯示功能的設(shè)置上。LGM12641BS1R的指令可帶一個(gè)、兩個(gè)參數(shù),或無參數(shù)。若指令中含有參數(shù),則每條指令執(zhí)行時(shí)均須先送入?yún)?shù),再送入指令代碼。由于狀態(tài)位作用不一樣,因此執(zhí)行不同指令必須檢測不同狀態(tài)位。液晶顯示模塊LGM12641BS1R如圖5所示:圖5 顯示電路LGM12641BS1R3按鍵電路由于我設(shè)計(jì)的是電子萬年歷,需要實(shí)現(xiàn)多種功能的顯示,并要能夠切換顯示和調(diào)節(jié)年月日,因此,在設(shè)計(jì)過程中按鍵的設(shè)計(jì)就顯得尤為重要

10、。在設(shè)計(jì)過程中我一共采用了4個(gè)按鍵,盡量在小的空間里實(shí)現(xiàn)最多的功能。其中MODE鍵是年月日與時(shí)間顯示切換鍵,按下一次就能夠更換一次顯示位。在調(diào)整顯示環(huán)境下UP和DONW鍵是顯示調(diào)整位的的加1減1鍵,F(xiàn)UNCTION鍵實(shí)現(xiàn)清零,并提高萬年歷顯示的精確性。按鍵電路如圖6所示:圖6 按鍵電路 四、硬件電路的總體框圖設(shè)計(jì)該設(shè)計(jì)的硬件電路的總體框圖如圖7所示: 按鍵與按鈕 電路復(fù)位等輔助電路液晶顯示電路總體開關(guān)電源系統(tǒng)圖7 總體框圖五、硬件電路原理圖設(shè)計(jì)該萬年歷是以單片機(jī)8052為核心來完成的。在硬件電路中采用P0口作為6位液晶顯示電路的驅(qū)動(dòng)接口,這是由于P0口輸出驅(qū)動(dòng)電路工作處于開漏狀態(tài),它的驅(qū)動(dòng)能力

11、強(qiáng),故只需外接上拉電阻便可以把LED數(shù)碼管點(diǎn)亮。因?yàn)楣碴幍腖ED數(shù)碼管它的驅(qū)動(dòng)電流是分開的,在單片機(jī)進(jìn)行動(dòng)態(tài)掃描的時(shí)候不會(huì)影響彼此的電流,故該電路中的8位LED數(shù)碼管均用共陽陰極的數(shù)碼管。8位LED數(shù)碼管的位選線分別由相應(yīng)的P2. 0P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即P0口。P3口與八個(gè)校時(shí)按鍵相連,以成功實(shí)現(xiàn)萬年歷校時(shí)的功能。電路原理圖如圖8所示:圖8 硬件電路六、主程序流程圖設(shè)計(jì)該設(shè)計(jì)主程序流程圖如圖9所示初始化定時(shí)器初始化化定時(shí)器初始化化串口初始化顯示待機(jī)指示符設(shè)定月設(shè)置年顯示刷新啟動(dòng)走時(shí)變量初始化刷新顯示判時(shí)分變化否否?秒指示判秒到否?年代顯示時(shí)

12、間顯示星期顯示YYYY:圖9 主程序流程圖基本顯示模塊設(shè)計(jì)的重點(diǎn)是由顯示代碼取得相應(yīng)的段碼、顯示段碼數(shù)據(jù)的串行發(fā)送,程序流程如圖所示。其中時(shí)個(gè)位的段碼必須加上小數(shù)點(diǎn),即帶小數(shù)點(diǎn)顯示時(shí)個(gè)位,目的是以小數(shù)點(diǎn)符代替時(shí)間分割符“-”。軟件秒脈沖發(fā)生器其實(shí)質(zhì)是利用了定時(shí)器0的定時(shí)溢出中斷,將它設(shè)定為100ms溢出中斷,則10次中斷的時(shí)間正好為1s。將時(shí)間參數(shù)設(shè)計(jì)為100ms的原因有兩個(gè):)根據(jù)系統(tǒng)時(shí)鐘主頻為6M的特點(diǎn),16位定時(shí)器最大定時(shí)時(shí)間為65536×2M(M為機(jī)器周期,這里是2),即131ms,取整數(shù)100便于計(jì)次數(shù);)如取的太短,如10ms,則定時(shí)器頻繁中斷,干擾系統(tǒng)正常運(yùn)行效果。有了

13、秒脈沖發(fā)生器,10次中斷為1s,秒指示燈閃亮1次,秒變量單元加1,60后分變量單元加1,如果為60分則時(shí)變量單元加1。任何一個(gè)變量的變化,則顯示刷新一次(更新)。上述思想的實(shí)現(xiàn)均集成在定時(shí)器0的中斷子程序中。該設(shè)計(jì)顯示模塊流程圖如圖10所示:將進(jìn)制時(shí)分?jǐn)?shù)據(jù)轉(zhuǎn)化為顯示代碼關(guān)顯示以免顯示抖動(dòng)通過串口將時(shí)十位段碼送入對應(yīng)的將時(shí)個(gè)位段碼送入對應(yīng)的將分十位和個(gè)位段碼送入各自對應(yīng)打開顯示圖10 基本顯示模塊的程序流程圖七、仿真過程1、仿真:打開WAVE6000,輸入所編寫的源程序并對程序進(jìn)行編譯,在軟件的幫助下檢查其中的錯(cuò)誤并進(jìn)行反復(fù)修改,知道編譯正確后運(yùn)行,確保沒有錯(cuò)誤以后對正確的源程序進(jìn)行保存,保存時(shí)

14、給其命名,以便將來載入程序時(shí)容易找到。2、打開PROTEUS軟件,并出畫單片機(jī)電子萬年歷具體運(yùn)行電路圖。3、檢查所畫電路運(yùn)行圖,確保沒有錯(cuò)誤以后,在PROTEUS下對原理圖進(jìn)行加載WAVE6000下的源程序。4、加載完成后,單擊電路圖框下的開始按鈕,進(jìn)行仿真,觀察LED數(shù)碼管現(xiàn)實(shí)情況,此時(shí)LED數(shù)碼管開始顯示數(shù)字。調(diào)節(jié)開關(guān)進(jìn)行時(shí)間的調(diào)節(jié)。當(dāng)秒的顯示間隔快與或慢與實(shí)際間隔時(shí),調(diào)節(jié)石英晶體震蕩器的頻率參數(shù),從而使秒的間隔達(dá)到標(biāo)準(zhǔn)。然后檢查電路其它問題,并對其的各參數(shù)進(jìn)行調(diào)整,使之正確。八、仿真結(jié)果通過在WAVE6000下對源程序的編譯,改正了其中的很多錯(cuò)誤,然后運(yùn)行,保證源程序的正確性。然后按原理

15、圖選擇正確合理的電器元件,畫出正確的電路圖,加載源程序運(yùn)行,順利實(shí)現(xiàn)了單片機(jī)數(shù)字電子鐘的“小時(shí)”、“分鐘”、“秒”的顯示。該電子萬年歷的顯示效果及電子萬年歷時(shí)間和日期的調(diào)節(jié)效果分別如圖12和圖13所示:圖12 電子萬年歷的運(yùn)行效果圖13 電子萬年歷時(shí)間和日期的調(diào)節(jié)效果九、課程設(shè)計(jì)體會(huì)通過這一周的課程設(shè)計(jì),我學(xué)到了不少的知識。把以前沒有學(xué)好的模擬電路的知識進(jìn)行了補(bǔ)充和加強(qiáng)。這使我受益很大。加深了我對于單片機(jī)和數(shù)字電路的認(rèn)識,相信在以后的學(xué)習(xí)和工作中碰到這些基礎(chǔ)的元器件我會(huì)更加得心應(yīng)手。通過查閱大量的資料,我獲得了以前在課堂上學(xué)不到的東西,我想這對于以后的畢業(yè)設(shè)計(jì),或者工作也好,都是很有幫助的。我

16、很認(rèn)真地對待這個(gè)過程中的每一個(gè)細(xì)節(jié),希望自己能做得更好。希望今后還有這樣的機(jī)會(huì),能夠讓我學(xué)到更多的知識。在此次的數(shù)字鐘設(shè)計(jì)過程中,更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法。在連接六進(jìn)制,十進(jìn)制,六十進(jìn)制的進(jìn)位及十二進(jìn)制的接法中,要求熟悉邏輯電路及其芯片各引腳的功能,那么在電路出錯(cuò)時(shí)便能準(zhǔn)確地找出錯(cuò)誤所在并及時(shí)糾正了。 在設(shè)計(jì)電路中,往往是先仿真后連接實(shí)物圖,但有時(shí)候仿真和電路連接并不是完全一致的,例如仿真的連接示意圖中,往往沒有接高電平的16腳或14腳以及接低電平的7腳或8腳,因此在實(shí)際的電路連接中往往容易遺漏。在設(shè)計(jì)電路的連接圖中出錯(cuò)的主要原因都是接線和芯片的接觸

17、不良以及接線的錯(cuò)誤所引起的。對該設(shè)計(jì)的建議:此次的電子萬年歷設(shè)計(jì)重在于仿真和接線,雖然能把電路圖接出來,并能正常顯示,但對于電路本身的原理并不是十分熟悉.總的來說,通過這次的設(shè)計(jì)實(shí)驗(yàn)更進(jìn)一步地增強(qiáng)了實(shí)驗(yàn)的動(dòng)手能力。學(xué)無止境,我們現(xiàn)在所做的一切都還只是一個(gè)開始。附1 源程序代碼#include < reg52.h >#include < character.h >#include < lcd.h >#include < clock.h >#include < sensor.h>#include < calendar.h >#

18、include < key.h >/*預(yù)定義*/#define uchar unsigned char#define uint unsigned int/*/sbit bell = P2 0; /定義蜂鳴器端口sbit in = P2 7; /定義紅外檢測端口/* 名稱: Timer0_Service() inturrupt 1* 功能: 中斷服務(wù)程序 整點(diǎn)報(bào)時(shí) 3聲嘟嘟的聲音* 入口參數(shù):* 出口參數(shù):*/void Timer0_Service() interrupt 1 static uchar count = 0; static uchar flag = 0; /記錄鳴叫的次

19、數(shù) count = 0; TR0 = 0; /關(guān)閉Timer0 TH0 = 0x3c; TL0 = 0XB0; /延時(shí) 50 ms TR0 = 1 ; /啟動(dòng)Timer0 count +; if( count = 20 ) /鳴叫 1 秒 bell = bell; count = 0; flag +; if( flag = 6 ) flag = 0; TR0 = 0; /關(guān)閉Timer0 /* 名稱: Timer2_Servie() interrupt 5* 功能: 中斷服務(wù)程序 整點(diǎn)報(bào)時(shí) 一分鐘* 入口參數(shù): * 出口參數(shù):*/void Timer3_Service() interrupt

20、5 static uchar count; TF2 = 0; /軟件清除中斷標(biāo)志 count +; if( in = 1 ) count = 0; /計(jì)算清0 TR2 = 0; /關(guān)閉Timer2 bell = 1; /關(guān)閉蜂鳴器 if( count = 120 ) / 一分鐘后 關(guān)閉報(bào)警 count = 0; /計(jì)算清0 TR2 = 0; /關(guān)閉Timer2 bell = 1; /關(guān)閉蜂鳴器 /* 函數(shù)名稱:main()* 功 能:* 入口參數(shù):* 出口參數(shù):*/void main( void ) uchar clock_time7 = 0x00, 0x00, 0x02, 0x30, 0x0

21、6, 0x08 ; /定義時(shí)間變量 秒 分 時(shí) 日 月 年 uchar alarm_time2 = 0, 0; /鬧鐘設(shè)置 alarm_time0: 分鐘 alarm_time1 :小時(shí)uchar temperature2; /定義溫度變量 temperature0 低8位 temperature1 高8位 Lcd_Initial(); /LCD初始化Clock_Initial( clock_time ); /時(shí)鐘初試化/*中斷初始化*/ EA = 1; /開總中斷 ET0 = 1; /Timer0 開中斷ET2 = 1; /Timer2 開中斷 TMOD = 0x01 ; /Timer0 工作方式 1RCAP2H = 0x3c; RCAP2L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論