一 課程設(shè)計(jì)的目的 單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。(Single-Chip Microcomputer ),是 集CPU ,RAM ,ROM ,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。他體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)品和工業(yè)自動(dòng)化上。而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。 二、課程設(shè)計(jì)的具體要求: 該課程設(shè)計(jì)是利用MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)、以及行列鍵盤和LED顯示器等部件,設(shè)計(jì)一個(gè)單片機(jī)電子時(shí)鐘。設(shè)計(jì)的電子時(shí)鐘通過數(shù)碼管顯示,并能通過按鍵實(shí)現(xiàn)設(shè)置時(shí)間和暫停、啟動(dòng)控制等。用定時(shí)/計(jì)數(shù)器T0,工作于定時(shí),采用方式1,對12MHZ的系統(tǒng)時(shí)鐘進(jìn)行定時(shí)計(jì)數(shù),初值設(shè)為XXYY(自己計(jì)算)。形成定時(shí)時(shí)間為50ms。用片內(nèi)RAM的7BH單元對50ms計(jì)數(shù),計(jì)20次產(chǎn)生秒計(jì)數(shù)器78H單元加1,秒計(jì)數(shù)器加到60則分計(jì)數(shù)器79H單元加1,分計(jì)數(shù)器加到60則時(shí)計(jì)數(shù)器7AH單元加1,時(shí)計(jì)數(shù)器加到24則時(shí)計(jì)數(shù)器清0。然后把秒、分、時(shí)計(jì)數(shù)器分成十位和個(gè)位放到8個(gè)數(shù)碼管的顯示緩沖區(qū),通過數(shù)碼管顯示出來。顯示格式為小時(shí)十位、小時(shí)個(gè)位---分十位、分個(gè)位---秒十位、秒個(gè)位。在處理過程中加上了按鍵判斷程序,能對按鍵處理 三. MCS-51單片機(jī)系統(tǒng)簡介 40個(gè)引腳按引腳功能大致可分為4個(gè)種類:電源、時(shí)鐘、控制和I/O引腳。 ⒈ 電源: ⑴ VCC - 芯片電源,接+5V; ⑵ VSS - 接地端; 注:用萬用表測試單片機(jī)引腳電壓一般為0v或者5v,這是標(biāo)準(zhǔn)的TTL電平。但有時(shí)候在單片機(jī)程序正在工作時(shí)候測試結(jié)果并不是這個(gè)值而是介于0v-5v之間,其實(shí)這是萬用表的響應(yīng)速度沒這么快而已,在某一個(gè)瞬間單片機(jī)引腳電壓仍保持在0v或者5v。 ⒉ 時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 ⒊ 控制線:控制線共有4根, ⑴ ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖 ① ALE功能:用來鎖存P0口送出的低8位地址 ② PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 ⑵ PSEN:外ROM讀選通信號(hào)。 ⑶ RST/VPD:復(fù)位/備用電源。 ① RST(Reset)功能:復(fù)位信號(hào)輸入端。 ② VPD功能:在Vcc掉電情況下,接備用電源。 ⑷ EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 ① EA功能:內(nèi)外ROM選擇端。 ② Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 ⒋ I/O線 80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。 P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線) 四、MCS-51單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)簡介
定時(shí)/計(jì)數(shù)器是單片機(jī)中重要的功能模塊之一,在檢測,控制和智能儀器等設(shè)備中經(jīng)常用它來定時(shí)。MCS-51系列中51子系列有2個(gè)16位的可編程定時(shí)/計(jì)數(shù)器:T0和T1;每個(gè)定時(shí)計(jì)數(shù)器既可以對系統(tǒng)時(shí)鐘計(jì)數(shù)實(shí)現(xiàn)定時(shí),也可以對外部信號(hào)計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功能,通過編程設(shè)定來實(shí)現(xiàn)。T0有4種工作方式,T1有3種工作方式,T2有3種工作方式,可通過編程設(shè)定。每個(gè)定時(shí)/計(jì)數(shù)器計(jì)數(shù)事件到時(shí)產(chǎn)生溢出,使相應(yīng)的溢出位置位,溢出可通過查詢或中斷方式處理。 2.中斷系統(tǒng)簡介 MCS-51單片機(jī)提供5個(gè)硬件中斷源:2個(gè)外部中斷源INT0(P3.2)和INT1(P3.3),2個(gè)定時(shí)/計(jì)數(shù)器T0和T1的溢出中斷TF0和TF1;1個(gè)串行口發(fā)送TI和接收RI中斷。 T0中斷服務(wù)程序流程圖如圖11.3。 五、鍵盤和LED數(shù)碼管顯示器簡介 本系統(tǒng)共用8個(gè)數(shù)碼管,從右到左依次顯示秒個(gè)位、秒十位、橫線、分個(gè)位、分十位、橫線、時(shí)個(gè)位和時(shí)十位。采用軟件譯碼動(dòng)態(tài)顯示。按鍵處理設(shè)置為:如沒有按鍵,則時(shí)鐘正常走時(shí)。當(dāng)按下K0按鍵時(shí),進(jìn)入調(diào)分狀態(tài),時(shí)鐘停止走動(dòng);按K1可K2按鍵可進(jìn)行加1或減1操作;繼續(xù)按K0鍵可分別進(jìn)行分和小時(shí)的調(diào)整;最后按K0鍵將退出調(diào)整狀態(tài),時(shí)鐘開始計(jì)時(shí)運(yùn)行。
六、基本原理 1.定時(shí)器/計(jì)數(shù)器 T0 定時(shí)器/計(jì)數(shù)器T0用于時(shí)間計(jì)時(shí)。選擇方式1,重復(fù)定時(shí),定時(shí)時(shí)間設(shè)為50ms,定時(shí)時(shí)間到則中斷,在中斷服務(wù)程序中用一個(gè)計(jì)數(shù)器對50ms計(jì)數(shù),計(jì)20次則對秒單元加1,秒單元加到60則對分單元加1,同時(shí)秒單元清0;分單元加到60則對時(shí)單元加1,同時(shí)分單元清0;時(shí)單元加到24則對時(shí)單元清0,標(biāo)志一天時(shí)間計(jì)滿。在對各單元計(jì)數(shù)的同時(shí),把它們的值放到存儲(chǔ)單元的指定位置。。 七.硬件電路 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps112D.tmp.png
八、軟件程序流程及代碼 1. T0中斷服務(wù)程序流程圖 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps112E.tmp.png file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps112F.tmp.pngfile:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps1140.tmp.png 3.程序代碼 ORG 0000H LJMP START ORG 000BH ;定時(shí)器/計(jì)數(shù)器T0中斷程序入口 LJMP INTT0 ;主程序 START:MOV R0,#70H MOV R7,#0CH INIT: MOV @R0,#00H INC R0 DJNZ R7,INIT MOV 72H,#10 MOV 75H,#10 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB TR0 START1:LCALL SCAN LCALL KEYSCAN SJMP START1 ;延時(shí)1MS子程序 DL1MS:MOV R6,#14H DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET ;延時(shí)20MS子程序 DL20MS:ACALL SCAN ACALL SCAN ACALL SCAN RET ;數(shù)碼管顯示程序 SCAN: MOV A,78H ;時(shí)間存入顯示緩沖區(qū)相應(yīng)位置 MOV B,#0AH DIV AB MOV 71H,A MOV 70H,B MOV A,79H MOV B,#0AH DIV AB MOV 74H,A MOV 73H,B MOV A,7AH MOV B,#0AH DIV AB MOV 77H,A MOV 76H,B MOV R1,#70H ;循環(huán)掃描顯示 MOV R5,#80H MOV R3,#08H SCAN1:MOV A,R5 MOV P2,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV A,R5 LCALL DL1MS INC R1 MOV A,R5 RR A MOV R5,A DJNZ R3,SCAN1 MOV P2,#00H MOV P0,#0FFH RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;“0~9”,“-”的共陽極字段碼
;定時(shí)器/計(jì)數(shù)器T0中斷服務(wù)程序 INTT0: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 INC 7BH MOV A,7BH CJNE A,#14H,OUTT0 MOV 7BH,#00 INC 78H MOV A,78H CJNE A,#3CH,OUTT0 MOV 78H,#00 INC 79H MOV A,79H CJNE A,#3CH,OUTT0 MOV 79H,#00 INC 7AH MOV A,7AH CJNE A,#18H,OUTT0 MOV 7AH,#00 OUTT0: SETB ET0 POP PSW POP ACC RETI ;按鍵處理程序 KEYSCAN:CLR EA JNB P1.0,KEYSCAN0 JNB P1.1,KEYSCAN1 JNB P1.2,KEYSCAN2 KEYOUT:SETB EA RET KEYSCAN0:LCALL DL20MS JB P1.0,KEYOUT WAIT0:JNB P1.0,WAIT0 INC 7CH MOV A,7CH CLR ET0 CLR TR0 CJNE A,#03H,KEYOUT MOV 7CH,#00 SETB ET0 SETB TR0 SJMP KEYOUT KEYSCAN1:LCALL DL20MS JB P1.1,KEYOUT WAIT1:JNB P1.1,WAIT1 MOV A,7CH CJNE A,#02H,KSCAN11 INC 79H MOV A,79H CJNE A,#3CH,KEYOUT MOV 79H,#00 SJMP KEYOUT KSCAN11:INC 7AH MOV A,7AH CJNE A,#18H,KEYOUT MOV 7AH,#00 SJMP KEYOUT KEYSCAN2:LCALL DL20MS JB P1.2,KEYOUT WAIT2:JNB P1.2,WAIT2 MOV A,7CH CJNE A,#02H,KSCAN21 DEC 79H MOV A,79H CJNE A,#0FFH,KEYOUT MOV 79H,#3BH SJMP KEYOUT KSCAN21:DEC 7AH MOV A,7AH CJNE A,#0FFH,KEYOUT MOV 7AH,#17H SJMP KEYOUT END 九.設(shè)計(jì)制作流程 1、在PROTEUS中設(shè)計(jì)硬件 PROTEUS軟件使用過程如下: 1)選擇元器件 2)放置元器件 3)連線 4)添加程序 5)運(yùn)行仿真 元器件清單如下: 單片機(jī):80C52 按鍵:BUTTON 電阻:RES 電容:CAP 晶振:CRYSTAL LED數(shù)碼管:7SEG-MPX8-CA-BLUE(CA:共陽,CC:共陰) 地:GRAND 電源:POWER 2、在KEIL51中編寫程序,編譯、連接形成HEX文件。 3、在PROTEUS中把HEX文件加載到單片機(jī)芯片上。 4、運(yùn)行仿真看結(jié)果。
|