單片機(jī)電子時鐘課程設(shè)計_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  設(shè)計目的</b></p><p><b>  總體設(shè)計 </b></p><p><b>  系統(tǒng)硬件總框圖</b></p><p><b>  硬件單元設(shè)計</b&g

2、t;</p><p><b>  電路總設(shè)計圖 </b></p><p><b>  LED燈顯示 </b></p><p><b>  數(shù)碼管顯示 </b></p><p>  DS1302模塊 </p><p><b>  時鐘控制 &

3、lt;/b></p><p><b>  蜂鳴器鍵盤掃描 </b></p><p><b>  AT89C52</b></p><p><b>  軟件單元設(shè)計</b></p><p><b>  程序清單</b></p><p&

4、gt;<b>  調(diào)試</b></p><p><b>  軟件調(diào)試、硬件調(diào)試</b></p><p><b>  設(shè)計總結(jié)</b></p><p><b>  參考文獻(xiàn)</b></p><p><b>  設(shè)計目的</b></

5、p><p> ?。?)熟悉protel99se、keil-c51軟件的應(yīng)用。</p><p>  (2)鞏固、加深和擴(kuò)大51系列單片機(jī)應(yīng)用的知識面,提高綜合及靈活運用所學(xué)知識解決工業(yè)控制的能力;</p><p> ?。?)培養(yǎng)針對課題需要,選擇和查閱有關(guān)手冊、圖表及文獻(xiàn)資料的自學(xué)能力,提高組成系統(tǒng)、編程、調(diào)試的動手能力;</p><p> ?。?

6、)對課題設(shè)計方案的分析、選擇、比較、熟悉用51單片機(jī)做系統(tǒng)開發(fā)、研制的過程,軟硬件設(shè)計的方法、內(nèi)容及步驟。</p><p><b>  總體設(shè)計</b></p><p><b>  1總體要求</b></p><p>  (1) 獨立完成設(shè)計任務(wù)</p><p>  (2) 繪制系統(tǒng)硬件總框圖<

7、;/p><p>  (3) 繪制系統(tǒng)原理電路圖</p><p>  (4) 制定編寫設(shè)計方案,編制軟件框圖,完成詳細(xì)完整的程序清單和注釋;</p><p>  (5) 制定編寫調(diào)試方案,編寫用戶操作使用說明書</p><p>  (6) 寫出設(shè)計工作小結(jié)。對在完成以上文件過程所進(jìn)行的有關(guān)步驟如設(shè)計思想、指標(biāo)論證、方案確定、參數(shù)計算、元器件選擇、原

8、理分析等作出說明,并對所完成的設(shè)計作出評價,對自己整個設(shè)計工作中經(jīng)驗教訓(xùn),總結(jié)收獲和今后研修方向。</p><p><b>  2 具體要求</b></p><p>  本次工程實踐的校內(nèi)部分主要以單片機(jī)為基礎(chǔ),進(jìn)行單片機(jī)軟件編程,目的是為了提高學(xué)生的軟件編程和系統(tǒng)設(shè)計能力,整個設(shè)計系統(tǒng)包括兩個部分,硬件及軟件部分,硬件部分已經(jīng)制作成功,學(xué)生只需要掌握其原理和焊接相應(yīng)

9、的元器件,掌握元器件的辨別和元器件的作用以及應(yīng)用場所即可,另外對所焊接的電路還需要進(jìn)行仔細(xì)的檢查,判斷是否有焊接錯誤的地方或者短路的地方,對出現(xiàn)的異常情況要能夠根據(jù)現(xiàn)象判別原因,并具備解決問題的能力,從而切實提高學(xué)生的硬件電子電路的分析、判斷能力。</p><p>  軟件編程是本次工程實踐的重要環(huán)節(jié)。在為期兩周的工程實踐中,將占據(jù)主要時間,學(xué)生要完成的軟件編程任務(wù)主要包括以下幾點:</p><

10、;p>  1)、熟悉Keil C51編程平臺及相關(guān)編程軟件</p><p>  2)、編寫、調(diào)試蜂鳴器、繼電器動作、方波程序并進(jìn)行軟硬件聯(lián)調(diào)</p><p>  3)、編寫、調(diào)試LED流水燈(循環(huán)顯示)程序并進(jìn)行軟硬件聯(lián)調(diào)</p><p>  4)、編寫、調(diào)試鍵盤掃描子程序并進(jìn)行軟硬件聯(lián)調(diào)</p><p>  5)、編寫、調(diào)試數(shù)碼管動態(tài)

11、掃描程序并進(jìn)行軟硬件聯(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è)計一個簡單的單片機(jī)編程設(shè)計,要求電子鐘

12、軟件程序必須具備鍵盤掃描、數(shù)碼管顯示、時鐘以及日歷、秒表和鬧鐘功能。</p><p>  溫度測量與控制系統(tǒng)設(shè)計是一種非常簡單而又應(yīng)用普遍的溫度控制系統(tǒng)、他包括溫度采集、信號轉(zhuǎn)換、單片機(jī)處理以及控制、報警等部分。要求學(xué)生采用聲光報警方式。</p><p><b>  二 、總體設(shè)計</b></p><p>  2.1 系統(tǒng)硬件總框圖</p

13、><p><b>  系統(tǒng)設(shè)計總框圖</b></p><p>  此次課程設(shè)計,AT89C52是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。</p><p>  此次課程設(shè)計的電子鐘就是由

14、AT89C52單片機(jī)、時鐘電路、報警電路,LED流水燈電路,動態(tài)數(shù)碼管顯示電路等組成。運用匯編語言來控制單片機(jī)AT89C52來實現(xiàn)LED流水燈、報警器、動態(tài)數(shù)碼顯示、電子音樂等功能,并在此基礎(chǔ)上綜合運用上述功能,實現(xiàn)電子鐘的設(shè)計(包括鍵盤、時鐘、顯示等),溫度測量控制系統(tǒng)(包括鍵盤、顯示、控制、報警等)。且本設(shè)計中的AT89C52單片機(jī)是整個工作過程的核心,是整個設(shè)計靈魂,它控制了脈沖時序的產(chǎn)生,顯示信號的發(fā)送控制顯示LED的選擇。同時

15、也考慮到AT89C52單片機(jī)來制作電子時鐘其最大的好處就是可最大的調(diào)整時鐘使其準(zhǔn)確度更高。</p><p><b>  三、硬件單元設(shè)計</b></p><p><b>  3.1電路總設(shè)計圖</b></p><p><b>  電路總設(shè)計圖</b></p><p>  3.2

16、 LED燈顯示</p><p><b>  Led燈原理圖</b></p><p>  本次課程設(shè)計中,“程序語言”通過“翻譯”軟件“翻譯”成單片機(jī)所需的二進(jìn)制代碼,單片機(jī)可工作。要用外加電源和分壓電阻來控制低電平驅(qū)動點亮,因為單片機(jī)不能直接高電平驅(qū)動LED燈。如圖D1-D8和R1、R2以及R6-R11連接到單片機(jī)IO口,當(dāng)P1口某腳變低時相應(yīng)LED發(fā)光。實現(xiàn)LED燈

17、的閃爍,只需利用編程方法依次從低位到高位逐個變?yōu)榈碗娖剑却僭S時刻再變高即可。</p><p>  3.3 數(shù)碼管顯示</p><p>  為了能使電路簡單我們采用數(shù)碼管動態(tài)顯示方式。數(shù)碼管不同位顯示的時間間隔可以通過調(diào)整延時程序的延時長短來完成。數(shù)碼管顯示的時間間隔也能夠確定數(shù)碼管顯示時的亮度,若顯示的時間間隔長,顯示時數(shù)碼管的亮度將亮些,若顯示的時間間隔短,顯示時數(shù)碼管的亮度將暗些

18、。若顯示的時間間隔過長的話,數(shù)碼管顯示時將產(chǎn)生閃爍現(xiàn)象。</p><p><b>  數(shù)碼管顯示圖</b></p><p>  3.4 DS1302模塊</p><p>  DS1302的RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過

19、程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。</p><p><b>  其管腳圖如下:</b></p><p><b>  DS1302管腳圖</b></p><p>  各引腳功能:Vcc1為后備電源,VCC2為主電源,X1和X2是振蕩源,</p><p><b>

20、;  SCLK為輸入端</b></p><p>  RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。</p><p><b>  3.5時鐘控制</b></p><p>  石英晶體振蕩器是利用石英晶體的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是

21、:從一塊石英晶體上按一定方位角切下薄片,在它的兩個對應(yīng)面上涂敷銀層作為電極,在每個電極上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。HMOS型MCS-51外部時鐘源的接發(fā):在XTLA1和XTLA2兩端跨接晶體或陶瓷振蕩器,與內(nèi)部反相器構(gòu)成穩(wěn)定的自激振蕩器。其發(fā)出的時鐘脈沖直接送入片內(nèi)定時控制部件,其中C電容對頻率有微調(diào)作用。</p><p&g

22、t;<b>  時鐘電路</b></p><p><b>  3.6 蜂鳴器</b></p><p><b>  蜂鳴器原理圖</b></p><p>  蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的。因此需要一定的電流才能驅(qū)動它,單片機(jī)IO口輸出的電流較小,其TTL電平基本

23、上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。程序中通過改變單片機(jī)對應(yīng)IO口輸出波形的頻率,就可以調(diào)整控制蜂鳴器音調(diào),產(chǎn)生各種不同音色、音調(diào)的聲音。另外,改變其占空比,也可以控制蜂鳴器的聲音大小??梢杂袃煞N驅(qū)動方式,即用PNP或NPN三極管電流放大電路驅(qū)動。本電路通過一個PNP三極管9012來放大驅(qū)動蜂鳴器,當(dāng)輸出高電平時,三極管Q1截止,沒有電流流過線圈,蜂鳴器不發(fā)聲;當(dāng)輸出低電平時,三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音

24、。因此,我們可以通過程序控制IO口輸出的電平來使蜂鳴器發(fā)出聲音和關(guān)閉,從而實現(xiàn)各種可能音響的產(chǎn)生。</p><p>  啟動報警子程序如下: 停止報警子程序如下:</p><p>  START: SETB P1.0 STOP: CLR P1.0</p><p>  RET

25、 RET</p><p><b>  3.7 鍵盤</b></p><p><b>  鍵盤掃描流程圖</b></p><p>  在MCS-51系列單片機(jī)的指令系統(tǒng)中設(shè)有散轉(zhuǎn)指令JMP @A+DPTR,可看成是專門配合鍵入程序是整個應(yīng)用程序的核心部分。<

26、;/p><p>  鍵盤的操作,無論是按鍵或鍵盤都是利用機(jī)械觸點的合、斷作用。一個電壓信號通過機(jī)械觸點的閉合、斷開過程。由于機(jī)械觸點的彈性作用,在閉合及斷開瞬間均有抖動過程,會出現(xiàn)一系列負(fù)脈沖。抖動時間的長短,與開關(guān)的機(jī)械特性有關(guān),一般為5—10ms。</p><p>  一組按鍵或鍵盤都要通過I/O口線查詢按鍵的開關(guān)狀態(tài)。且獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O口

27、線,在按鍵數(shù)量較多時,I/O口線浪費較大。</p><p>  3.8 AT89C52</p><p>  AT89C52是此次課程設(shè)計的核心部分。其管腳圖如下:</p><p>  AT89C52管腳圖</p><p>  AT89C52是低功耗、高性能的CMOS8位單片機(jī)。片內(nèi)帶有8KB的Flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程

28、。另外,AT89C52的指令系統(tǒng)和引腳與80C52完全兼容。</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口

29、緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流;P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入;P3口管腳功能: P3.0是RXD(串行輸入口);P3.1是TXD(串行輸出口);P3.2是/INT0(外部中斷0);P3.3是/INT1(外部中斷1

30、);P3.4是T0(記時器0外部輸入);P3.5是T1(記時器1外部輸入);P3.6是/WR(外部數(shù)據(jù)存儲器寫選通);P3.7是/RD(外部數(shù)據(jù)存儲器讀選通);P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG</p><p><b>  四、軟件單元設(shè)計</b></p><p&g

31、t;<b>  程序清單</b></p><p>  T_R Bit P3.4 ;實時時鐘復(fù)位線引腳</p><p>  T_C Bit P3.2 ;實時時鐘時鐘線引腳</p><p>  T_I Bit P3.3 ;實時時鐘數(shù)據(jù)線引腳</p><p>  SEC EQU 30H</p><p>

32、;  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</b></p><p&g

33、t;  Y EQU 36H </p><p><b>  ORG 0000H</b></p><p>  LJMP start</p><p>  ORG 001bH </p><p>  AJMP INTT1 </p><p>  ORG 0030H<

34、;/p><p>  START: LCALL KEY </p><p>  AJMP START </p><p>  ;*******蜂鳴器*******</p><p>  KEY0: SETB P3.4</p><p>  LCALL DELAY</p><p>  LCA

35、LL DELAY</p><p><b>  CLR P3.4</b></p><p>  LCALL DELAY</p><p>  LCALL DELAY</p><p><b>  SETB P3.4</b></p><p>  LCALL DELAY</p&g

36、t;<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><p>  L

37、CALL DELAY</p><p>  LCALL DELAY</p><p><b>  CLR P3.4</b></p><p><b>  RET </b></p><p>  ;*******流水燈*******</p><p>  KEY1: MOV

38、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>  LCALL DELAY</p>&l

39、t;p>  DJNZ R1,LOOPB</p><p>  DJNZ R2,REB</p><p><b>  RET</b></p><p>  ;*******日期******* </p><p>  KEY2: CLR T_R</p><p>  CLR

40、 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</p><p>  MOV D

41、,#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><p>  LCALL GET1302</p

42、><p>  LCALL DISPLAY</p><p>  MOV R3,#25</p><p>  MOV TMOD,#01H</p><p>  MOV TH0,#70H ;置定時器初值(定時40ms)</p><p>  MOV TL0,#00H</p><p>

43、;  SETB TR0 ;啟動定時器0</p><p>  LP1: JBC TF0,LP2 ;查詢計數(shù)溢出</p><p>  SJMP LP1 ;未到40 ms繼續(xù)計數(shù)</p><p>  LP2: MOV TH0,#0B8H

44、 ;重新置定時器初值</p><p>  MOV TL0,#00H</p><p>  LCALL DISPLAY ;顯示</p><p>  DJNZ R3,LP1 ;未到1 S繼續(xù)循環(huán)</p><p>  LCALL GET1302

45、 ;每過1s從DS1302讀取一次時間</p><p>  MOV r3,#25</p><p>  SJMP LP1 ;數(shù)碼顯示子程序</p><p><b>  DISPLAY:</b></p><p>  MOV DPTR,#DIG_CODE

46、 ;顯示分鐘</p><p>  MOV P1,#11110111b</p><p>  MOV A,MIN</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p

47、>  LCALL DIS_DELAY</p><p>  MOV P1,#11111011b</p><p>  MOV A, MIN</p><p><b>  SWAP A</b></p><p>  ANL A,#07H</p><p>  MOVC

48、 A,@A+DPTR</p><p>  MOV P0,A</p><p>  LCALL DIS_DELAY ;顯示小時</p><p>  MOV P1,#11111101b</p><p>  MOV A,H</p><p>  ANL A,#

49、0FH</p><p>  MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p>  LCALL DIS_DELAY</p><p>  MOV P1,#11111110b</p><p>  MOV A,H</p><p><

50、;b>  SWAP A</b></p><p>  ANL A,#03H</p><p>  MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p>  LCALL DIS_DELAY</p><p>  RET

51、 ;顯示延時5ms子程序</p><p>  DIS_DELAY:</p><p><b>  PUSH PSW</b></p><p>  MOV R7,#10</p><p>  D1: MOV R6,#248</p><p>  D2: DJNZ R

52、6,$</p><p>  DJNZ R7,D1</p><p><b>  POP PSW</b></p><p>  RET ;設(shè)置DS1302初始時間,并啟動計時</p><p>  SETDS1302:</p><p>  CLR

53、 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</b></p>

54、<p>  MOV B,#8EH ;寫控制命令字</p><p>  LCALL INPUTBYTE </p><p>  MOV B,#00H ;寫保護(hù)關(guān)閉</p><p>  LCALL INPUTBYTE</p><p>  SETB T_C<

55、;/p><p><b>  NOP</b></p><p>  CLR T_R</p><p>  MOV R0,#SECOND ;內(nèi)存中的時間首地址</p><p>  MOV R1,#80H ;DS1302中的時間首地址</p><p>  MOV

56、 R7,#7 ;字節(jié)數(shù)</p><p><b>  SETLOOP:</b></p><p>  CLR T_R</p><p><b>  NOP</b></p><p>  CLR T_C</p><p><b>  

57、NOP</b></p><p>  SETB T_R</p><p><b>  NOP</b></p><p>  MOV B,R1 ;寫命令字</p><p>  LCALL INPUTBYTE</p><p>  MOV A,@R0

58、 ;設(shè)置時間</p><p>  MOV B,A</p><p>  LCALL INPUTBYTE </p><p>  INC R0</p><p>  INC R1</p><p>  INC R1</p><p>  S

59、ETB T_C</p><p><b>  NOP</b></p><p>  CLR T_R</p><p><b>  NOP</b></p><p>  DJNZ R7,SETLOOP</p><p>  CLR T_R</p>

60、<p><b>  NOP</b></p><p>  CLR T_C</p><p><b>  NOP</b></p><p>  SETB T_R</p><p><b>  NOP</b></p><p>  MOV

61、 B,#8EH</p><p>  LCALL INPUTBYTE</p><p>  MOV B,#80H ;開寫保護(hù)</p><p>  LCALL INPUTBYTE</p><p>  SETB T_C</p><p><b>  NOP</b>

62、</p><p>  CLR T_R</p><p><b>  NOP</b></p><p><b>  RET</b></p><p>  ;從DS1302讀取時間</p><p><b>  GET1302:</b></p>

63、<p>  MOV R0,#SECOND </p><p>  MOV R1,#81H ;DS1302中讀時間的首地址</p><p>  MOV R7,#7</p><p><b>  GETLOOP:</b></p><p>  CLR T_R<

64、/p><p><b>  NOP</b></p><p>  CLR T_C</p><p><b>  NOP</b></p><p>  SETB T_R</p><p><b>  NOP</b></p><p>

65、  MOV B,R1</p><p>  LCALL INPUTBYTE ;寫命令字</p><p>  LCALL OUTPUTBYTE ;讀時間</p><p>  MOV @R0,A ;將從DS1302中讀取的時間從內(nèi)存中保存</p><p>  INC R0

66、 ;修改地址指針</p><p>  INC R1</p><p>  INC R1</p><p>  SETB T_C</p><p><b>  NOP</b></p><p>  CLR T_R</p><p>&

67、lt;b>  NOP</b></p><p>  DJNZ R7,GETLOOP</p><p><b>  RET</b></p><p>  ;向DS1302寫一個字節(jié)</p><p>  INPUTBYTE:</p><p>  MOV R4,#8</p

68、><p>  INPUTLOOP:</p><p>  MOV A,B</p><p><b>  RRC A</b></p><p>  MOV B,A</p><p>  MOV T_I,C</p><p>  SETB T_C<

69、/p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  CLR T_C</p><p>  DJNZ R4,INPUTLOOP</p>

70、<p><b>  RET</b></p><p>  ;從DS1302讀一個字節(jié)</p><p>  OUTPUTBYTE:</p><p><b>  CLR a</b></p><p><b>  CLR c</b></p><

71、;p>  MOV R4,#8</p><p>  OUTPUTLOOP:</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  MOV C,T_I</p><p><b>  RRC

72、 A</b></p><p>  SETB T_C</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  CLR T_C</

73、p><p>  DJNZ R4,OUTPUTLOOP</p><p><b>  RET</b></p><p>  KEY: MOV P1,#0F0H</p><p><b>  MOV A,P1</b></p><p><b>  MOV B,A</

74、b></p><p>  ACALL DELAY</p><p><b>  MOV A,P1</b></p><p>  CJNE A,B,DO</p><p>  CJNE A,#0E0H,K1</p><p><b>  AJMP KEY0</b></p&g

75、t;<p>  K1: CJNE A,#0D0H,K2</p><p><b>  AJMP KEY1</b></p><p>  K2: CJNE A,#0B0H,K3</p><p><b>  AJMP KEY2</b></p><p>  K3: CJNE A

76、,#070H,DO</p><p><b>  AJMP KEY3</b></p><p>  DO: RET</p><p>  DELAY: MOV R6,0ffh</p><p>  DL1: MOV R5,#250</p><p><b>  DJNZ R5,$<

77、/b></p><p>  DJNZ R6,DL1</p><p><b>  RET</b></p><p>  DEL1: MOV R7,#02</p><p>  DL2:MOV R6,#0FFH</p><p><b>  DJNZ R6,$</b></

78、p><p>  DJNZ R7,DL2</p><p><b>  RET</b></p><p>  DELAYY1:MOV R7,#02</p><p>  DELAY10:MOV R4,#187</p><p>  DELAY11:MOV R3,#248</p><p>

79、<b>  DJNZ R3,$</b></p><p>  DJNZ R4,DELAY11</p><p>  DJNZ R7,DELAY10</p><p>  DJNZ R5,DELAYY1</p><p><b>  RET</b></p><p>  key3: MO

80、V SP,#60H</p><p>  MOV TMOD,#10H</p><p><b>  SETB ET1</b></p><p><b>  SETB EA</b></p><p><b>  SETB TR1</b></p><p>  STA

81、RT0:clr p3.4</p><p>  MOV 30H,#00H</p><p>  NEXTT:MOV A,30H</p><p>  MOV DPTR,#TABLE</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV R2,A</b></p>

82、<p><b>  JZ ENDD</b></p><p>  ANL A,#0FH</p><p><b>  MOV R5,A</b></p><p><b>  MOV A,R2</b></p><p><b>  SWAP A</b>

83、</p><p>  ANL A,#0FH</p><p><b>  JNZ SING</b></p><p><b>  CLR TR1</b></p><p><b>  AJMP DD1</b></p><p>  SING:DEC A</

84、p><p><b>  MOV 22H,A</b></p><p><b>  RL A</b></p><p>  MOV DPTR,#TABLE1</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV TH1,A</b>&

85、lt;/p><p><b>  MOV 21H,A</b></p><p><b>  MOV A,22H</b></p><p><b>  RL A</b></p><p><b>  INC A</b></p><p>  MOV

86、C A,@A+DPTR</p><p><b>  MOV TL1,A</b></p><p><b>  MOV 20H,A</b></p><p><b>  SETB TR1</b></p><p>  DD1: LCALL DELAYY</p><p

87、><b>  INC 30H</b></p><p>  AJMP NEXTT</p><p>  ENDD:CLR TR1</p><p>  AJMP START0</p><p>  INTT1:PUSH PSW</p><p><b>  PUSH ACC</b>

88、;</p><p>  MOV TL1,20H</p><p>  MOV TH1,21H</p><p><b>  CPL p3.4</b></p><p><b>  POP ACC</b></p><p><b>  POP PSW</b><

89、;/p><p><b>  RETI</b></p><p>  DELAYY:MOV R7,#02</p><p>  DELAY0:MOV R4,#187</p><p>  DELAY1:MOV R3,#248</p><p><b>  DJNZ R3,$</b><

90、/p><p>  DJNZ R4,DELAY1</p><p>  DJNZ R7,DELAY0</p><p>  DJNZ R5,DELAYY</p><p><b>  RET</b></p><p><b>  TABLE:</b></p><p>

91、;  DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H</p><p>  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,0

92、4H</p><p>  DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H</p><p>  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

93、,0D4H,0B4H,0C4H,0B4H,04H,00H</p><p><b>  TABLE1:</b></p><p>  DW 64260,64400,64524,64580,64684,64777,64820,64898</p><p>  DW 64968,65030,65058,65110,65157,65178,65217<

94、;/p><p><b>  ;字符顯示碼表</b></p><p><b>  DIG_CODE:</b></p><p>  DB 14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44H</p><p><b>  END</b></p>

95、<p><b>  五、調(diào)試</b></p><p><b> ?。ㄒ唬┸浖{(diào)試步驟</b></p><p>  1、打開軟件后,在Project菜單中選擇New Project命令,打開一個新項目。保存此項目,輸入工程文件名后,并保存工程文件的目錄。</p><p>  2、為項目文件選擇一個目標(biāo)器件,即選擇8

96、051的類型。在Data base 列表框中選擇“ATML 89C52”,確定。</p><p>  3、上述設(shè)置好后,創(chuàng)建源程序文件并輸入程序代碼。輸入好代碼后點擊“文件/保存”。</p><p>  4、把源文件添加到項目中,用鼠標(biāo)指在目標(biāo)工作區(qū)的目標(biāo)1,點擊右鍵在彈出的菜單中選擇添加文件到源代碼組,在彈出的添加文件框中,選擇需要添加到項目中的文件。</p><p&

97、gt;  5、開始編譯,對項目文件進(jìn)行編譯。若沒有錯誤后進(jìn)行硬件調(diào)試</p><p><b> ?。ǘ┯布{(diào)試</b></p><p>  按照此次課程設(shè)計的要求調(diào)試過程如下:按鍵KEY0,KEY1,KEY2,KEY3分別對應(yīng)LED流水燈,蜂鳴器,數(shù)碼管,時鐘四個功能。</p><p>  1、LED流水燈測試</p><

98、p>  通過按按鍵KEY0,觀察到LED流水燈顯示,并循環(huán)2次;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p><p><b>  2、蜂鳴器測試</b></p><p>  通過按按鍵KEY1,聽到蜂鳴器發(fā)出“嘀” ,“嘀”的響聲;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p><p><b>  3、數(shù)碼管測試</b>&

99、lt;/p><p>  通過按按鍵KEY2,觀察到數(shù)碼管從“1000” 開始計時,依次顯示“1001” ,“1002” ,“1003” …… ;與相應(yīng)的程序代碼相比較,結(jié)果正確。因為程序要求數(shù)碼管顯示的時間是小時和分鐘,所以要觀察到數(shù)碼管的變化要等一分鐘的時間。</p><p>  4、通過按按鍵KEY3,觀察到出現(xiàn)時鐘正常顯示時間。</p><p><b>

100、;  六、設(shè)計總結(jié)</b></p><p>  經(jīng)過為期兩周的忙碌,終于完成了單片機(jī)的課程設(shè)計,在此期間不僅將課堂上所學(xué)的東西進(jìn)行了鞏固,而且在實驗的過程中有所提高,當(dāng)然這里少不了老師的指導(dǎo)和小組之間的團(tuán)隊合作。</p><p>  前幾天我們在教室集中,并根據(jù)報告要求查找相關(guān)資料。該課程設(shè)計中應(yīng)用到了蜂鳴器、LED流水燈、數(shù)碼管,并且要求在一個電路板上將各個功能集成在一起,也

101、就是能實現(xiàn)LED燈流水工作,數(shù)碼管計時以及蜂鳴器發(fā)生。以前我們做試驗都是一個功能一個功能的完成,從來沒有一起實現(xiàn)過,這樣問題就來了,比如三種程序放在一起相互沖突怎么辦?經(jīng)過老師的講解和分析,我們可以用鍵盤掃描的程序來解決,將各個功能設(shè)置在不同的模塊作為子程序一一調(diào)用,這樣就可以實現(xiàn)全部功能并互不干擾。</p><p>  之后我們在實驗室進(jìn)行調(diào)試,結(jié)果出了一些問題,首先是LED流水燈只亮一個,不進(jìn)行流水工作,然后

102、就是復(fù)位以后再按下蜂鳴器的工作開關(guān),放出的不是音樂而是噪音。經(jīng)過分析以后發(fā)現(xiàn)是時間設(shè)定的有問題,之前是DELAY: MOV R6,200應(yīng)改成DELAY: MOV R6,0ffh。關(guān)于音樂的問題,其實也很簡單,就是音樂響起之前沒有清零,之前如果蜂鳴器工作過的話,對現(xiàn)在的執(zhí)行有干擾,兩種不同頻率的聲音在一起肯定會有影響的。</p><p>  進(jìn)行最后的調(diào)試和下載,終于正常工作,并能順利實現(xiàn)所有的功能。<

103、/p><p><b>  七、參考文獻(xiàn)</b></p><p>  梅麗鳳,《單片機(jī)原理及接口技術(shù)》(第3版),清華大學(xué)出版社,</p><p>  曲泊濤,《微型計算機(jī)系統(tǒng)原理,接口與組裝》,大連理工大學(xué)出版社,1998年</p><p>  李大有,《單片機(jī)應(yīng)用與設(shè)計》,電子工業(yè)大學(xué)出版社,1998年</p>

溫馨提示

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

評論

0/150

提交評論