標(biāo)題: 單片機(jī)電子時鐘匯編語言課程設(shè)計(jì) [打印本頁]
作者: 發(fā)的啥地方 時間: 2017-5-23 22:01
標(biāo)題: 單片機(jī)電子時鐘匯編語言課程設(shè)計(jì)
一 課程設(shè)計(jì)的目的
單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。(Single-Chip Microcomputer ),是 集CPU ,RAM ,ROM ,定時,計(jì)數(shù)和多種接口于一體的微控制器。他體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)品和工業(yè)自動化上。而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。
二、課程設(shè)計(jì)的具體要求:
該課程設(shè)計(jì)是利用MCS-51單片機(jī)內(nèi)部的定時/計(jì)數(shù)器、中斷系統(tǒng)、以及行列鍵盤和LED顯示器等部件,設(shè)計(jì)一個單片機(jī)電子時鐘。設(shè)計(jì)的電子時鐘通過數(shù)碼管顯示,并能通過按鍵實(shí)現(xiàn)設(shè)置時間和暫停、啟動控制等。用定時/計(jì)數(shù)器T0,工作于定時,采用方式1,對12MHZ的系統(tǒng)時鐘進(jìn)行定時計(jì)數(shù),初值設(shè)為XXYY(自己計(jì)算)。形成定時時間為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則時計(jì)數(shù)器7AH單元加1,時計(jì)數(shù)器加到24則時計(jì)數(shù)器清0。然后把秒、分、時計(jì)數(shù)器分成十位和個位放到8個數(shù)碼管的顯示緩沖區(qū),通過數(shù)碼管顯示出來。顯示格式為小時十位、小時個位---分十位、分個位---秒十位、秒個位。在處理過程中加上了按鍵判斷程序,能對按鍵處理
三. MCS-51單片機(jī)系統(tǒng)簡介
40個引腳按引腳功能大致可分為4個種類:電源、時鐘、控制和I/O引腳。
⒈ 電源:
⑴ VCC - 芯片電源,接+5V;
⑵ VSS - 接地端;
注:用萬用表測試單片機(jī)引腳電壓一般為0v或者5v,這是標(biāo)準(zhǔn)的TTL電平。但有時候在單片機(jī)程序正在工作時候測試結(jié)果并不是這個值而是介于0v-5v之間,其實(shí)這是萬用表的響應(yīng)速度沒這么快而已,在某一個瞬間單片機(jī)引腳電壓仍保持在0v或者5v。
⒉ 時鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。
⒊ 控制線:控制線共有4根,
⑴ ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖
① ALE功能:用來鎖存P0口送出的低8位地址
② PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。
⑵ PSEN:外ROM讀選通信號。
⑶ RST/VPD:復(fù)位/備用電源。
① RST(Reset)功能:復(fù)位信號輸入端。
② VPD功能:在Vcc掉電情況下,接備用電源。
⑷ EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。
① EA功能:內(nèi)外ROM選擇端。
② Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。
⒋ I/O線
80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。
P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)
四、MCS-51單片機(jī)內(nèi)部定時器/計(jì)數(shù)器、中斷系統(tǒng)簡介
定時/計(jì)數(shù)器是單片機(jī)中重要的功能模塊之一,在檢測,控制和智能儀器等設(shè)備中經(jīng)常用它來定時。MCS-51系列中51子系列有2個16位的可編程定時/計(jì)數(shù)器:T0和T1;每個定時計(jì)數(shù)器既可以對系統(tǒng)時鐘計(jì)數(shù)實(shí)現(xiàn)定時,也可以對外部信號計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功能,通過編程設(shè)定來實(shí)現(xiàn)。T0有4種工作方式,T1有3種工作方式,T2有3種工作方式,可通過編程設(shè)定。每個定時/計(jì)數(shù)器計(jì)數(shù)事件到時產(chǎn)生溢出,使相應(yīng)的溢出位置位,溢出可通過查詢或中斷方式處理。
2.中斷系統(tǒng)簡介
MCS-51單片機(jī)提供5個硬件中斷源:2個外部中斷源INT0(P3.2)和INT1(P3.3),2個定時/計(jì)數(shù)器T0和T1的溢出中斷TF0和TF1;1個串行口發(fā)送TI和接收RI中斷。
T0中斷服務(wù)程序流程圖如圖11.3。
五、鍵盤和LED數(shù)碼管顯示器簡介
本系統(tǒng)共用8個數(shù)碼管,從右到左依次顯示秒個位、秒十位、橫線、分個位、分十位、橫線、時個位和時十位。采用軟件譯碼動態(tài)顯示。按鍵處理設(shè)置為:如沒有按鍵,則時鐘正常走時。當(dāng)按下K0按鍵時,進(jìn)入調(diào)分狀態(tài),時鐘停止走動;按K1可K2按鍵可進(jìn)行加1或減1操作;繼續(xù)按K0鍵可分別進(jìn)行分和小時的調(diào)整;最后按K0鍵將退出調(diào)整狀態(tài),時鐘開始計(jì)時運(yùn)行。
六、基本原理
1.定時器/計(jì)數(shù)器 T0
定時器/計(jì)數(shù)器T0用于時間計(jì)時。選擇方式1,重復(fù)定時,定時時間設(shè)為50ms,定時時間到則中斷,在中斷服務(wù)程序中用一個計(jì)數(shù)器對50ms計(jì)數(shù),計(jì)20次則對秒單元加1,秒單元加到60則對分單元加1,同時秒單元清0;分單元加到60則對時單元加1,同時分單元清0;時單元加到24則對時單元清0,標(biāo)志一天時間計(jì)滿。在對各單元計(jì)數(shù)的同時,把它們的值放到存儲單元的指定位置。。
七.硬件電路
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 ;定時器/計(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
;延時1MS子程序
DL1MS:MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;延時20MS子程序
DL20MS:ACALL SCAN
ACALL SCAN
ACALL SCAN
RET
;數(shù)碼管顯示程序
SCAN: MOV A,78H ;時間存入顯示緩沖區(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”,“-”的共陽極字段碼
;定時器/計(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é)果。
作者: 趙子龍OL 時間: 2019-6-20 22:55
老哥 有圖嗎
作者: 研究僧學(xué)單片機(jī) 時間: 2019-9-19 12:39
感謝樓主,剛剛學(xué)單片機(jī),正要用匯編編時鐘
作者: yang...1 時間: 2020-4-28 21:25
有圖片么
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |