版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《單片機原理及應(yīng)用課程設(shè)計報告》</p><p> 課題: 以電子鐘為主的多功能設(shè)計 </p><p> 班級 車輛3101 學號 </p><p> 學生姓名 </p><p> 指導教師
2、 </p><p><b> 電子與電氣工程學院</b></p><p><b> 目 錄</b></p><p> 1 課程設(shè)計概述…………………………………………………………………………4</p><p> 1.1 設(shè)計課題任務(wù)………………………………………………
3、……………………4</p><p> 1.2 功能要求說明……………………………………………………………………4</p><p> 1.3 設(shè)計課題總體方案及工作原理…………………………………………………4</p><p> 2 設(shè)計課題硬件系統(tǒng)的設(shè)計……………………………………………………………6</p><p> 2.1 硬件系
4、統(tǒng)各模塊功能簡要介紹…………………………………………………6</p><p> 2.2 原理電路圖………………………………………………………………………7</p><p> 2.3 設(shè)計PCB圖,元器件布局圖與與器件清單……………………………………7</p><p> 3 軟件系統(tǒng)的設(shè)計………………………………………………………………………8</p&g
5、t;<p> 3.1 軟件系統(tǒng)各功能模塊簡要介紹…………………………………………………8</p><p> 3.2 設(shè)計課題軟件系統(tǒng)程序流程框圖………………………………………………8</p><p> 3.3 設(shè)計課題軟件系統(tǒng)程序清單 …………………………………………………11</p><p> 4 仿真與誤差分析 …………………………………
6、…………………………………12</p><p> 4.1 設(shè)計課題的設(shè)計結(jié)論及使用說明 ……………………………………………12</p><p> 4.2 設(shè)計課題的仿真結(jié)果 …………………………………………………………12</p><p> 4.3 設(shè)計課題的誤差分析 …………………………………………………………12</p><p>
7、 4.4 設(shè)計體會 ………………………………………………………………………13</p><p> 4.5 教學建議 ………………………………………………………………………13</p><p> 參考文獻 ………………………………………………………………………………14</p><p> 致謝 ……………………………………………………………………………………
8、15</p><p> 附錄 ……………………………………………………………………………………16</p><p><b> 一、設(shè)計目的</b></p><p><b> 1總體要求</b></p><p> (1) 獨立完成設(shè)計任務(wù)</p><p> (2)
9、繪制系統(tǒng)硬件總框圖</p><p> (3) 繪制系統(tǒng)原理電路圖</p><p> (4) 制定編寫設(shè)計方案,編制軟件框圖,完成詳細完整的程序清單和注釋;</p><p> (5) 制定編寫調(diào)試方案,編寫用戶操作使用說明書</p><p> (6) 寫出設(shè)計工作小結(jié)。對在完成以上文件過程所進行的有關(guān)步驟如設(shè)計思想、指標論證、方案確定、
10、參數(shù)計算、元器件選擇、原理分析等作出說明,并對所完成的設(shè)計作出評價,對自己整個設(shè)計工作中經(jīng)驗教訓,總結(jié)收獲和今后研修方向。</p><p><b> 2 具體要求</b></p><p> 本次工程實踐的校內(nèi)部分主要以單片機為基礎(chǔ),進行單片機軟件編程,目的是為了提高學生的軟件編程和系統(tǒng)設(shè)計能力,整個設(shè)計系統(tǒng)包括兩個部分,硬件及軟件部分,硬件部分已經(jīng)制作成功,學生只
11、需要掌握其原理和焊接相應(yīng)的元器件,掌握元器件的辨別和元器件的作用以及應(yīng)用場所即可,另外對所焊接的電路還需要進行仔細的檢查,判斷是否有焊接錯誤的地方或者短路的地方,對出現(xiàn)的異常情況要能夠根據(jù)現(xiàn)象判別原因,并具備解決問題的能力,從而切實提高學生的硬件電子電路的分析、判斷能力。</p><p> 軟件編程是本次工程實踐的重要環(huán)節(jié)。在為期兩周的工程實踐中,將占據(jù)主要時間,學生要完成的軟件編程任務(wù)主要包括以下幾點:<
12、;/p><p> 1)、熟悉Keil C51編程平臺及相關(guān)編程軟件</p><p> 2)、編寫、調(diào)試蜂鳴器、繼電器動作、方波程序并進行軟硬件聯(lián)調(diào)</p><p> 3)、編寫、調(diào)試LED流水燈(循環(huán)顯示)程序并進行軟硬件聯(lián)調(diào)</p><p> 4)、編寫、調(diào)試鍵盤掃描子程序并進行軟硬件聯(lián)調(diào)</p><p> 5
13、)、編寫、調(diào)試數(shù)碼管動態(tài)掃描程序并進行軟硬件聯(lián)調(diào)</p><p> 6)、電子鐘設(shè)計(包括鍵盤、時鐘、顯示等)</p><p> 7)、溫度測量控制系統(tǒng)設(shè)計(包括鍵盤、顯示、控制、報警等)</p><p> 其中前五個內(nèi)容是后兩個內(nèi)容的基礎(chǔ),主要是編制一些子程序,為后繼的整個系統(tǒng)設(shè)計打下基礎(chǔ)。</p><p> 電子鐘設(shè)計一個簡單的單
14、片機編程設(shè)計,要求電子鐘軟件程序必須具備鍵盤掃描、數(shù)碼管顯示、時鐘以及日歷、秒表和鬧鐘功能。</p><p> 溫度測量與控制系統(tǒng)設(shè)計是一種非常簡單而又應(yīng)用普遍的溫度控制系統(tǒng)、他包括溫度采集、信號轉(zhuǎn)換、單片機處理以及控制、報警等部分。要求學生采用聲光報警方式。</p><p><b> 二 、總體設(shè)計</b></p><p> 2.1 系
15、統(tǒng)硬件總框圖</p><p> 圖1 系統(tǒng)設(shè)計總框圖</p><p> 此次課程設(shè)計,AT89C52是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機。</p><p> 此次課程設(shè)計的電子鐘就是由AT89
16、C52單片機、時鐘電路、報警電路,LED流水燈電路,動態(tài)數(shù)碼管顯示電路、音樂電路等組成。運用匯編語言來控制單片機AT89C52來實現(xiàn)LED流水燈、報警器、動態(tài)數(shù)碼顯示、電子音樂等功能,并在此基礎(chǔ)上綜合運用上述功能,實現(xiàn)電子鐘的設(shè)計(包括鍵盤、時鐘、顯示等),溫度測量控制系統(tǒng)(包括鍵盤、顯示、控制、報警等)。且本設(shè)計中的AT89C52單片機是整個工作過程的核心,是整個設(shè)計靈魂,它控制了脈沖時序的產(chǎn)生,顯示信號的發(fā)送控制顯示LED的選擇。同
17、時也考慮到AT89C52單片機來制作電子時鐘其最大的好處就是可最大的調(diào)整時鐘使其準確度更高。</p><p><b> 2.2 設(shè)計原理圖</b></p><p> 圖2 時鐘電路原理圖</p><p><b> 三、硬件單元設(shè)計</b></p><p> 3.1 NE555P模塊<
18、/p><p> 圖3為555定時器管腳分布。555定時器可構(gòu)成多諧振蕩器,是一種性能較好的時鐘源。調(diào)節(jié)電位器RW1,使在555輸出端3獲得頻率為50—60Hz的矩形波信號,當基本RS觸發(fā)器Q為1時,門5開啟,此時脈沖信號通過門5作為計數(shù)脈沖加于計數(shù)器的計數(shù)輸入端CP。</p><p> 3.2 數(shù)碼管顯示</p><p> 為了能使電路簡單我們采用數(shù)碼管動態(tài)顯示
19、方式。數(shù)碼管不同位顯示的時間間隔可以通過調(diào)整延時程序的延時長短來完成。數(shù)碼管顯示的時間間隔也能夠確定數(shù)碼管顯示時的亮度,若顯示的時間間隔長,顯示時數(shù)碼管的亮度將亮些,若顯示的時間間隔短,顯示時數(shù)碼管的亮度將暗些。若顯示的時間間隔過長的話,數(shù)碼管顯示時將產(chǎn)生閃爍現(xiàn)象。</p><p><b> 圖4 數(shù)碼管顯示圖</b></p><p> 3.3 DS1302模塊
20、</p><p> DS1302的RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。</p><p><b> 其管腳圖如下:</b></p><p> 圖5 DS1
21、302管腳圖</p><p> 各引腳功能:Vcc1為后備電源,VCC2為主電源,X1和X2是振蕩源,</p><p><b> SCLK為輸入端</b></p><p> RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入 移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送
22、 手段。</p><p><b> 3.4時鐘控制</b></p><p> 石英晶體振蕩器是利用石英晶體的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片,在它的兩個對應(yīng)面上涂敷銀層作為電極,在每個電極上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器。其產(chǎn)品一般用金屬外殼封裝,也
23、有用玻璃殼、陶瓷或塑料封裝的。HMOS型MCS-51外部時鐘源的接發(fā):在XTLA1和XTLA2兩端跨接晶體或陶瓷振蕩器,與內(nèi)部反相器構(gòu)成穩(wěn)定的自激振蕩器。其發(fā)出的時鐘脈沖直接送入片內(nèi)定時控制部件,其中C電容對頻率有微調(diào)作用。</p><p><b> 圖6 時鐘電路</b></p><p><b> 3.5 揚聲器</b></p>
24、<p><b> 圖7 揚聲器原理圖</b></p><p> 蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的。因此需要一定的電流才能驅(qū)動它,單片機IO口輸出的電流較小,其TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。程序中通過改變單片機對應(yīng)IO口輸出波形的頻率,就可以調(diào)整控制蜂鳴器音調(diào),產(chǎn)生各種不同音色、音調(diào)的聲音。另外,改變其占
25、空比,也可以控制蜂鳴器的聲音大小。可以有兩種驅(qū)動方式,即用PNP或NPN三極管電流放大電路驅(qū)動。本電路通過一個PNP三極管9012來放大驅(qū)動蜂鳴器,當輸出高電平時,三極管Q1截止,沒有電流流過線圈,蜂鳴器不發(fā)聲;當輸出低電平時,三極管導通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制IO口輸出的電平來使蜂鳴器發(fā)出聲音和關(guān)閉,從而實現(xiàn)各種可能音響的產(chǎn)生。</p><p> 啟動報警子程序如下:
26、 停止報警子程序如下:</p><p> START: SETB P1.0 STOP: CLR P1.0</p><p> RET RET</p><p> 3.6 LED燈顯示</p>&l
27、t;p> 圖8 LED燈顯示電路圖</p><p> 本次課程設(shè)計中,“程序語言”通過“翻譯”軟件“翻譯”成單片機所需的二進制代碼,單片機可工作。要用外加電源和分壓電阻來控制低電平驅(qū)動點亮,因為單片機不能直接高電平驅(qū)動LED燈。如圖D1-D8和R1、R2以及R6-R11連接到單片機IO口,當P1口某腳變低時相應(yīng)LED發(fā)光。實現(xiàn)LED燈的閃爍,只需利用編程方法依次從低位到高位逐個變?yōu)榈碗娖?,等待少許時刻再
28、變高即可。</p><p><b> 3.7 鍵盤</b></p><p><b> 圖9 鍵盤電路</b></p><p> 在MCS-51系列單片機的指令系統(tǒng)中設(shè)有散轉(zhuǎn)指令JMP @A+DPTR,可看成是專門配合鍵入程序是整個應(yīng)用程序的核心部分。</p><p> 鍵盤的操作,無論是按
29、鍵或鍵盤都是利用機械觸點的合、斷作用。一個電壓信號通過機械觸點的閉合、斷開過程。由于機械觸點的彈性作用,在閉合及斷開瞬間均有抖動過程,會出現(xiàn)一系列負脈沖。抖動時間的長短,與開關(guān)的機械特性有關(guān),一般為5—10ms。</p><p> 一組按鍵或鍵盤都要通過I/O口線查詢按鍵的開關(guān)狀態(tài)。且獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時,I/O口線浪費較大。</p>
30、;<p> 3.8 AT89C52</p><p> AT89C52是此次課程設(shè)計的核心部分。其管腳圖如下:</p><p> 圖10 AT89C52管腳圖</p><p> AT89C52是低功耗、高性能的CMOS8位單片機。片內(nèi)帶有8KB的Flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外,AT89C52的指令系統(tǒng)和引腳與80C52完
31、全兼容。</p><p> AT89C52各管腳功能如下:</p><p> VCC:供電電壓;GND:接地;P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。;P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流;P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1
32、”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流;P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入;P3口管腳功能: P3.0是RXD(串行輸入口);P3.1是TXD(串行輸出口);P3.2是/INT0(外部中斷0);P3.3是/INT1(外部中斷1);P3.4是T0(記時器0外部輸入);P3.5是T
33、1(記時器1外部輸入);P3.6是/WR(外部數(shù)據(jù)存儲器寫選通);P3.7是/RD(外部數(shù)據(jù)存儲器讀選通);P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG</p><p><b> 四、軟件單元設(shè)計</b></p><p><b> 4.1程序流程圖</
34、b></p><p><b> 4.2程序清單</b></p><p> T_R Bit P3.4 ;實時時鐘復位線引腳</p><p> T_C Bit P3.2 ;實時時鐘時鐘線引腳</p><p> T_I Bit P3.3 ;實時時鐘數(shù)據(jù)線引腳</p><p> SEC
35、EQU 30H</p><p> MIN EQU 31H</p><p><b> H EQU 32H</b></p><p><b> D EQU 33H</b></p><p> MON EQU 34H</p><p><b> W EQU 35H&l
36、t;/b></p><p> Y EQU 36H </p><p><b> ORG 0000H</b></p><p> LJMP start</p><p> ORG 001bH </p><p> AJMP INTT1 </p>
37、;<p> ORG 0030H</p><p> START: LCALL KEY </p><p> AJMP START </p><p> ;*******蜂鳴器*******</p><p> KEY0: SETB P3.4</p><p> LCALL DELA
38、Y</p><p> LCALL DELAY</p><p><b> CLR P3.4</b></p><p> LCALL DELAY</p><p> LCALL DELAY</p><p><b> SETB P3.4</b></p><
39、;p> LCALL DELAY</p><p> LCALL DELAY</p><p><b> CLR P3.4</b></p><p> LCALL DELAY</p><p> LCALL DELAY</p><p><b> SETB P3.4</b&
40、gt;</p><p> LCALL DELAY</p><p> LCALL DELAY</p><p><b> CLR P3.4</b></p><p><b> RET </b></p><p> ;*******流水燈*******</p>
41、;<p> KEY1: MOV R2,#2</p><p> REB: MOV R1,#8</p><p> MOV A,#0AFH</p><p> LOOPB: MOV P2,A </p><p><b> RL A</b></p><p>
42、 LCALL DELAY</p><p> DJNZ R1,LOOPB</p><p> DJNZ R2,REB</p><p><b> RET</b></p><p> ;*******日期******* </p><p> KEY2: CLR T_R<
43、;/p><p> CLR T_C</p><p> MOV SP,#60H ;修改堆棧</p><p> MOV SEC,#00H ;初始時間設(shè)為10:00:00</p><p> MOV MIN,#00H</p><p> MOV H,#10H&l
44、t;/p><p> MOV D,#18h ;初始日期設(shè)為08年1月18日第一周</p><p> MOV MON,#01H</p><p> MOV W,#01H</p><p> MOV Y,#08H</p><p> LCALL SETDS1302</p><
45、p> LCALL GET1302</p><p> LCALL DISPLAY</p><p> MOV R3,#25</p><p> MOV TMOD,#01H</p><p> MOV TH0,#70H ;置定時器初值(定時40ms)</p><p> MOV TL
46、0,#00H</p><p> SETB TR0 ;啟動定時器0</p><p> LP1: JBC TF0,LP2 ;查詢計數(shù)溢出</p><p> SJMP LP1 ;未到40 ms繼續(xù)計數(shù)</p><p>
47、LP2: MOV TH0,#0B8H ;重新置定時器初值</p><p> MOV TL0,#00H</p><p> LCALL DISPLAY ;顯示</p><p> DJNZ R3,LP1 ;未到1 S繼續(xù)循環(huán)</p><p>
48、 LCALL GET1302 ;每過1s從DS1302讀取一次時間</p><p> MOV r3,#25</p><p><b> SJMP LP1</b></p><p><b> ;數(shù)碼顯示子程序</b></p><p><b> D
49、ISPLAY:</b></p><p> MOV DPTR,#DIG_CODE</p><p><b> ;顯示分鐘</b></p><p> MOV P1,#11110111b</p><p> MOV A,MIN</p><p> ANL
50、A,#0FH</p><p> MOVC A,@A+DPTR</p><p> MOV P0,A</p><p> LCALL DIS_DELAY</p><p> MOV P1,#11111011b</p><p> MOV A, MIN</p><p&
51、gt;<b> SWAP A</b></p><p> ANL A,#07H</p><p> MOVC A,@A+DPTR</p><p> MOV P0,A</p><p> LCALL DIS_DELAY</p><p><b> ;顯示
52、小時</b></p><p> MOV P1,#11111101b</p><p> MOV A,H</p><p> ANL A,#0FH</p><p> MOVC A,@A+DPTR</p><p> MOV P0,A</p><p&
53、gt; LCALL DIS_DELAY</p><p> MOV P1,#11111110b</p><p> MOV A,H</p><p><b> SWAP A</b></p><p> ANL A,#03H</p><p> MOVC A
54、,@A+DPTR</p><p> MOV P0,A</p><p> LCALL DIS_DELAY</p><p> RET </p><p> ;顯示延時5ms子程序</p><p> DIS_DELAY:</p><p><b> PUSH
55、PSW</b></p><p> MOV R7,#10</p><p> D1: MOV R6,#248</p><p> D2: DJNZ R6,$</p><p> DJNZ R7,D1</p><p><b> POP PSW</b></p>
56、<p><b> RET</b></p><p> ;設(shè)置DS1302初始時間,并啟動計時</p><p> SETDS1302:</p><p> CLR T_R</p><p><b> NOP</b></p><p> CLR
57、T_C</p><p><b> NOP</b></p><p> SETB T_R</p><p><b> NOP</b></p><p> MOV B,#8EH ;寫控制命令字</p><p> LCALL INPUTBYT
58、E </p><p> MOV B,#00H ;寫保護關(guān)閉</p><p> LCALL INPUTBYTE</p><p> SETB T_C</p><p><b> NOP</b></p><p> CLR T_R</p
59、><p> MOV R0,#SECOND ;內(nèi)存中的時間首地址</p><p> MOV R1,#80H ;DS1302中的時間首地址</p><p> MOV R7,#7 ;字節(jié)數(shù)</p><p><b> SETLOOP:</b></p&
60、gt;<p> CLR T_R</p><p><b> NOP</b></p><p> CLR T_C</p><p><b> NOP</b></p><p> SETB T_R</p><p><b> NOP
61、</b></p><p> MOV B,R1 ;寫命令字</p><p> LCALL INPUTBYTE</p><p> MOV A,@R0 ;設(shè)置時間</p><p> MOV B,A</p><p> LCALL I
62、NPUTBYTE </p><p> INC R0</p><p> INC R1</p><p> INC R1</p><p> SETB T_C</p><p><b> NOP</b></p><p> CLR
63、 T_R</p><p><b> NOP</b></p><p> DJNZ R7,SETLOOP</p><p> CLR T_R</p><p><b> NOP</b></p><p> CLR T_C</p>&l
64、t;p><b> NOP</b></p><p> SETB T_R</p><p><b> NOP</b></p><p> MOV B,#8EH</p><p> LCALL INPUTBYTE</p><p> MOV B,
65、#80H ;開寫保護</p><p> LCALL INPUTBYTE</p><p> SETB T_C</p><p><b> NOP</b></p><p> CLR T_R</p><p><b> NOP</b><
66、;/p><p><b> RET</b></p><p> ;從DS1302讀取時間</p><p><b> GET1302:</b></p><p> MOV R0,#SECOND </p><p> MOV R1,#81H ;
67、DS1302中讀時間的首地址</p><p> MOV R7,#7</p><p><b> GETLOOP:</b></p><p> CLR T_R</p><p><b> NOP</b></p><p> CLR T_C</p&
68、gt;<p><b> NOP</b></p><p> SETB T_R</p><p><b> NOP</b></p><p> MOV B,R1</p><p> LCALL INPUTBYTE ;寫命令字</p><
69、p> LCALL OUTPUTBYTE ;讀時間</p><p> MOV @R0,A ;將從DS1302中讀取的時間從內(nèi)存中保存</p><p> INC R0 ;修改地址指針</p><p> INC R1</p><p> INC
70、 R1</p><p> SETB T_C</p><p><b> NOP</b></p><p> CLR T_R</p><p><b> NOP</b></p><p> DJNZ R7,GETLOOP</p><p&
71、gt;<b> RET</b></p><p> ;向DS1302寫一個字節(jié)</p><p> INPUTBYTE:</p><p> MOV R4,#8</p><p> INPUTLOOP:</p><p> MOV A,B</p><p>
72、<b> RRC A</b></p><p> MOV B,A</p><p> MOV T_I,C</p><p> SETB T_C</p><p><b> NOP</b></p><p><b> NOP</b
73、></p><p><b> NOP</b></p><p> CLR T_C</p><p> DJNZ R4,INPUTLOOP</p><p><b> RET</b></p><p> ;從DS1302讀一個字節(jié)</p>&
74、lt;p> OUTPUTBYTE:</p><p><b> CLR a</b></p><p><b> CLR c</b></p><p> MOV R4,#8</p><p> OUTPUTLOOP:</p><p><b&
75、gt; NOP</b></p><p><b> NOP</b></p><p> MOV C,T_I</p><p><b> RRC A</b></p><p> SETB T_C</p><p><b> NOP&
76、lt;/b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR T_C</p><p> DJNZ R4,OUTPUTLOOP</p><p><b> RET</b&g
77、t;</p><p> KEY: MOV P1,#0F0H</p><p><b> MOV A,P1</b></p><p><b> MOV B,A</b></p><p> ACALL DELAY</p><p><b> MOV A,P1<
78、;/b></p><p> CJNE A,B,DO</p><p> CJNE A,#0E0H,K1</p><p><b> AJMP KEY0</b></p><p> K1: CJNE A,#0D0H,K2</p><p><b> AJMP KEY1<
79、/b></p><p> K2: CJNE A,#0B0H,K3</p><p><b> AJMP KEY2</b></p><p> K3: CJNE A,#070H,DO</p><p><b> AJMP KEY3</b></p><p>
80、 DO: RET</p><p> DELAY: MOV R6,(#200)</p><p> DL1: MOV R5,#250</p><p><b> DJNZ R5,$</b></p><p> DJNZ R6,DL1</p><p><b> RET</
81、b></p><p> DEL1: MOV R7,#02</p><p> DL2:MOV R6,#0FFH</p><p><b> DJNZ R6,$</b></p><p> DJNZ R7,DL2</p><p><b> RET</b></p
82、><p> DELAYY1:MOV R7,#02</p><p> DELAY10:MOV R4,#187</p><p> DELAY11:MOV R3,#248</p><p><b> DJNZ R3,$</b></p><p> DJNZ R4,DELAY11</p>
83、<p> DJNZ R7,DELAY10</p><p> DJNZ R5,DELAYY1</p><p><b> RET</b></p><p> key3: MOV SP,#60H</p><p> MOV TMOD,#10H</p><p><b> SET
84、B ET1</b></p><p><b> SETB EA</b></p><p><b> SETB TR1</b></p><p> START0:clr p3.4</p><p> MOV 30H,#00H</p><p> NEXTT:MOV
85、A,30H</p><p> MOV DPTR,#TABLE</p><p> MOVC A,@A+DPTR</p><p><b> MOV R2,A</b></p><p><b> JZ ENDD</b></p><p> ANL A,#0FH</p&g
86、t;<p><b> MOV R5,A</b></p><p><b> MOV A,R2</b></p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p><b> JNZ SING</b&
87、gt;</p><p><b> CLR TR1</b></p><p><b> AJMP DD1</b></p><p> SING:DEC A</p><p><b> MOV 22H,A</b></p><p><b> RL
88、 A</b></p><p> MOV DPTR,#TABLE1</p><p> MOVC A,@A+DPTR</p><p><b> MOV TH1,A</b></p><p><b> MOV 21H,A</b></p><p><b>
89、 MOV A,22H</b></p><p><b> RL A</b></p><p><b> INC A</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV TL1,A</b></p><p&
90、gt;<b> MOV 20H,A</b></p><p><b> SETB TR1</b></p><p> DD1: LCALL DELAYY</p><p><b> INC 30H</b></p><p> AJMP NEXTT</p><
91、;p> ENDD:CLR TR1</p><p> AJMP START0</p><p> INTT1:PUSH PSW</p><p><b> PUSH ACC</b></p><p> MOV TL1,20H</p><p> MOV TH1,21H</p>
92、<p><b> CPL p3.4</b></p><p><b> POP ACC</b></p><p><b> POP PSW</b></p><p><b> RETI</b></p><p> DELAYY:MOV R7,
93、#02</p><p> DELAY0:MOV R4,#187</p><p> DELAY1:MOV R3,#248</p><p><b> DJNZ R3,$</b></p><p> DJNZ R4,DELAY1</p><p> DJNZ R7,DELAY0</p>
94、<p> DJNZ R5,DELAYY</p><p><b> RET</b></p><p><b> TABLE:</b></p><p> DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H</p><p> DB 82H,01H,81H,94H
95、,84H,0C4H,0B4H,04H</p><p> DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H</p><p> DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H</p><p> DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H</p><p&g
96、t; DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H</p><p> DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H</p><p> DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H</p><p><b> TABLE1:</b><
97、;/p><p> DW 64260,64400,64524,64580,64684,64777,64820,64898</p><p> DW 64968,65030,65058,65110,65157,65178,65217</p><p><b> ;字符顯示碼表</b></p><p><b> DI
98、G_CODE:</b></p><p> DB 14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44H</p><p><b> END</b></p><p><b> 五、焊接與調(diào)試</b></p><p><b> ?。ㄒ唬┸浖{(diào)試步驟&l
99、t;/b></p><p> 1、從桌面或【開始】菜單選擇【程序】Keil Uvision命令,打開此軟件,進入Keil Uvision界面。</p><p> 2、打開軟件后,在Project菜單中選擇New Project命令,打開一個新項目。保存此項目,輸入工程文件名后,并保存工程文件的目錄。</p><p> 4、為項目文件選擇一個目標器件,即選
100、擇8051的類型。在Data base 列表框中選擇“ATML 89C52”,確定。</p><p> 5、用鼠標對準項目工作區(qū)的目標1,點擊右鍵在彈出的菜單中選擇“為目標‘目標1’設(shè)置選項”。在為“為目標‘目標1’設(shè)置選項”中,點擊“調(diào)試”菜單,在此菜單中可選擇使用硬件仿真或軟件仿真,若連接實驗箱時則選擇硬件仿真,點擊硬件仿真選項后面的[調(diào)試]選項,在此對話框中選擇串口波特率,波特率為38400。</p
101、><p> 6、上述設(shè)置好后,點擊“文件/新建”,創(chuàng)建源程序文件并輸入程序代碼。輸入好代碼后點擊“文件/保存”。</p><p> 7、把源文件添加到項目中,用鼠標指在目標工作區(qū)的目標1,點擊右鍵在彈出的菜單中選擇添加文件到源代碼組,在彈出的添加文件框中,選擇需要添加到項目中的文件。</p><p> 8、開始編譯,點擊編譯連接的圖標,對項目文件進行編譯。<
102、/p><p> 9、若編譯沒有錯誤后,為工程項目設(shè)置軟硬件調(diào)試環(huán)境。</p><p> ?。ǘ洺绦虻牟襟E</p><p> 1、用編輯軟件編寫程序,使用匯編語言編寫的程序文件名后綴(即擴展名)是.ASM,編寫的程序為稱為源程序。</p><p> 2、將源程序用編譯軟件進行編譯,生成擴展名為.OBJ的文件。</p>&l
103、t;p> 3、通過編程器擴展名為.HEX的可執(zhí)行文件燒到單片機內(nèi)。在寫入之前還可以進行軟件仿真,既在軟件上模擬單片機程序原形情況,以便進行調(diào)試和修改。</p><p><b> ?。ㄈ┱{(diào)試</b></p><p> 按照此次課程設(shè)計的要求調(diào)試過程如下:按鍵KEY0,KEY1,KEY2,KEY3分別對應(yīng)蜂鳴器,LED流水燈,數(shù)碼管,音樂四個功能。</p
104、><p><b> 1、蜂鳴器測試</b></p><p> 通過按按鍵KEY0,聽到蜂鳴器發(fā)出“嘀” ,“嘀”的響聲;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p><p> 2、LED流水燈測試</p><p> 通過按按鍵KEY1,觀察到LED流水燈顯示,并循環(huán)2次;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p&
105、gt;<p><b> 3、數(shù)碼管測試</b></p><p> 通過按按鍵KEY2,觀察到數(shù)碼管從“1000” 開始計時,依次顯示“1001” ,“1002” ,“1003” …… ;與相應(yīng)的程序代碼相比較,結(jié)果正確。因為程序要求數(shù)碼管顯示的時間是小時和分鐘,所以要觀察到數(shù)碼管的變化要等一分鐘的時間。</p><p><b> 4、
106、音樂測試</b></p><p> 通過按按鍵KEY3,聽到蜂鳴器響起“生日快樂”的音樂;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p><p><b> 六、設(shè)計總結(jié)</b></p><p> 通過本次實驗,讓我對80C51單片機有了更好的了解,懂得如何去使用定時器計數(shù)器,中斷,串行口,數(shù)碼管顯示,按鍵等知識,讓自己對單片機產(chǎn)生
107、了更大的興趣。能夠完全實現(xiàn)數(shù)字鐘的功能,讓自己所學的東西應(yīng)用到實踐中,感覺到了單片機的重要性。能夠通過單片機,完成各種成品的設(shè)計。 </p><p> 通過本次設(shè)計,我們系統(tǒng)的了解了實時時鐘的設(shè)計流程,尤其是硬、軟件的設(shè)計方法,掌握了鍵盤顯示電路的基本功能及編程方法,掌握了鍵盤電路和顯示電路的一般原理,也進一步掌握了定時器的使用和中斷處理器程序的編程方法。開拓了思路,鍛煉了實踐動手能力,提高了分工協(xié)作
108、能力和分析問題,解決問題的能力,達到了本次課程設(shè)計的目的。在調(diào)試電路的過程中也積累了一些寶貴的經(jīng)驗,比如說,在I/O口要保證標準的高電平”1”的產(chǎn)生,一般要上拉電阻5.1k,在一些需要高電平的地方,不能用懸空來模擬,必須嚴格的按照“+5v”來連接,特別是調(diào)試過程中的分部分進行很重要。 </p><p> 此次單片機課程設(shè)計,從理論到實踐,學到了很多的東西。同時不僅鞏固了以前所學過的知識,而且還學到了很
109、多在書本上所沒有學到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。這次的課程設(shè)計還讓我學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。更重要的是,我在這一設(shè)計過程中,學會了堅持不懈,不輕言放棄。 </p><p> 單片機課程
110、設(shè)計雖然結(jié)束了,但通過設(shè)計所學到的東西將長久存在。相信這次設(shè)計帶給我們的嚴謹?shù)膶W習態(tài)度和一絲不茍的科學作風將會給我們未來的工作和學習打下一個更堅實的基礎(chǔ)單片機課程設(shè)計,是對單片機知識的驗證,可以幫助我們理解鞏固所學知識,激發(fā)我們對單片機課程的興趣,更鍛煉了我們獨立思考、開拓創(chuàng)新的能力。 </p><p> 在做本次課程設(shè)計的過程中,我感觸最深的當屬查閱大量的設(shè)計資料了。為了讓自己的設(shè)計更加完善,查閱這
111、方面的設(shè)計資料是十分必要的,同時也是必不可少的。我們是在做單片機課程設(shè)計,但我們不是藝術(shù)家,他們可以拋開實際盡情在幻想的世界里翱翔,而我們一切都要有據(jù)可依,有理可尋,不切實際的構(gòu)想永遠只能是構(gòu)想,永遠無法升級為設(shè)計。 </p><p> 最后,要做好一個課程設(shè)計,就必須做到:在設(shè)計程序之前,對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機內(nèi)有哪些資源;要有一個清晰的思路和一個完整的軟件流程圖;在設(shè)
112、計程序時,不能妄想一次就將整個程序設(shè)計好,反復修改、不斷改進是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設(shè)計課程過程中遇到問題是很正常德,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。還 有要感謝指導老師在我們遇到困難時,給予我們的建議與鼓勵。 </p><p&g
113、t; 通過這次課程設(shè)計,讓我對《單片機原理與運用》這門課程有了更深刻的理解,坐而言比如立而行,對于這些單片機運用設(shè)計還是應(yīng)該自己動手實際操作才會有深刻理解</p><p><b> 七、參考文獻</b></p><p> ?。?) 何立民.單片機應(yīng)用技術(shù)大全.北京:北京航空航天大學出版社, 1994</p><p> (2) 潘永雄.
114、160;新編單片機原理與應(yīng)用[M],西安:西安電子科技大學出版社,2003.2.</p><p> ?。?) 彭小軍. 用單片機實現(xiàn)電子時鐘[J].新余高專學報,2004年4月第9卷第2期</p><p> ?。?) 邱大雄.單片機基礎(chǔ).北京:原子能出版社,1992:53-58</p><p> (5) 彭小軍. 用單片機實現(xiàn)電子時鐘[J].新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子鐘課程設(shè)計--多功能電子鐘
- 數(shù)字電子課程設(shè)計報告---多功能電子鐘
- 多功能旋轉(zhuǎn)電子鐘課程設(shè)計
- 多功能數(shù)字電子鐘課程設(shè)計
- 微機原理-多功能電子鐘課程設(shè)計
- 數(shù)電課程設(shè)計--- 多功能電子鐘設(shè)計
- 單片機課程設(shè)計報告---多功能電子鐘
- 多功能數(shù)字電子鐘-數(shù)電課程設(shè)計
- fpga課程設(shè)計---基于fpga多功能電子鐘設(shè)計
- 單片機課程設(shè)計--多功能數(shù)字電子鐘
- 單片機課程設(shè)計— 多功能數(shù)字電子鐘
- 電子鐘課程設(shè)計----數(shù)字電子鐘的設(shè)計
- 基于單片機的多功能電子鐘課程設(shè)計
- eda電子鐘課程設(shè)計----電子鐘的設(shè)計
- 電子鐘的設(shè)計課程設(shè)計報告
- 數(shù)字電路eda課程設(shè)計--多功能數(shù)字電子鐘
- 數(shù)字電子鐘課程設(shè)計報告
- 數(shù)字電子鐘設(shè)計課程設(shè)計報告
- 課程設(shè)計---數(shù)字電子鐘設(shè)計報告
- 電子鐘課程設(shè)計
評論
0/150
提交評論