高等职业学校05高职机电一体化毕业论文
谢 辞
- 26 -
高等职业学校05高职机电一体化毕业论文
参考文献
[1] 康华光,邹寿彬编.电子技术基础数字部分(第四版)[M].北京:高等教
育出版社,2005
[2] 谢自美编.电子线路设计·实验·测试 (第二版) [M].上海:电子工业出版社,2001
[3] 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北
京:北京航空航天大学出版社,1999年
[4] 陆坤,奚大顺,李之权等,电子设计技术[M].成都:电子科技大学出版社
1997年[5] 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,1999年
[5] 胡学海.单片机原理及应用系统设计[M].北京:京电子工业出版社,2005年
[6] 林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].西安:西安
电子科技大学出版社,2005年
- 27 -
高等职业学校05高职机电一体化毕业论文
附:单片机程序
计分器显示程序(附1)
//抢答器加减记分显示程序2 DBUF EQU 30H ;三位显示缓冲区首址 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H ACALL KEYSCAN ;调用键盘扫描子程序判断是加分或减分 CJNE A,#0EH,NEXT2 ;不是加分键,则转移判断是减分键? NEXT1: ACALL KEYSZ ;是加分键,调用键盘设置子程序 ACALL DISPLAY ;调用串口静态显示子程序 SJMP MAIN NEXT2: KEYSZ: L1:
CJNE A,#0FH,MAIN ;都不是,则转MAIN AJMP NEXT1 ;是减分键,调用键盘设置子程序 ORG 0100H PUSH PSW ;键盘设置子程序 PUSH ACC SETB RS1 MOV MOV CLR
R0,#DBUF R7,#3 RS1
;R0指向显示缓冲区首地址 ;设置键盘输入位数
ACALL KEYSCAN SETB RS1
;调用键盘扫描子程序取按下键的键号
CJNE A,#0AH,L2 ;键入数合法性检测(是否大于9)
L2: JNC L1 ;大于9,重新键入 MOV R0,A ;键号送显示缓冲区 INC R0 DJNZ R7,L1 ;3位数值输入完否?未完继续,否则返回 POP ACC POP PSW CLR RS1 RET KEYSCAN:MOV R3, #0F7H ;扫描初值(P1.3=0) MOV R1, #00H ;取码指针 L3: MOV A, R3 ;开始扫描 MOV P1, A ;将扫描值输出至P1 MOV A, P1 ;读入P1值,判断是否有键按下 MOV R4, A ;存入R4,以判断按键是否放开 SETB C ;C=1 MOV R5, #04H ;扫描P1.4~P1.7
- 28 -
高等职业学校05高职机电一体化毕业论文
L4: KEYIN: D2: RLC
JNC INC DJNZ MOV SETB C RRC MOV JC SJMP MOV MOV DJNZ DJNZ A ;将按键左移一位 KEYIN ;判断C=0?有键按下则C=0,跳至KEYIN R1 ;C=1,则无键按下,将取码指针值加1 R5, L4 ;4列扫描完毕了吗? A, R3 ;扫描值载入 ;C=1 A ;扫描下一行(P1.3~P1.0) R3, A ;存回扫描寄存器 L3 ;C=1?是则P1.0尚未扫描到 KEYSCAN ;C=0,则四行已扫描完毕 R7, #60 ;延时消除抖动 R6, #248 ; R6, $ ; R7, D2 ;
D3: MOV A, P1 ;延时后再读入P1值
XRL A, R4 ;与上次读入值作比较 JZ D3 ;A=0,表示按键未放,等待按键释放 MOV A, R1 ;按键已放开,取码指针载入累加器 MOV DPTR,#TABLE ;键盘码表首地址送DPTR MOVC A, @A+DPTR ;查键码 RET ;返回
TABLE: DB 00H,01H,02H,03H ;键码安排表与键盘相同 DB 04H,05H,06H,07H DB 08H,09H,0AH,0BH DB 0CH,0DH,0EH,0FH ORG 0200H
DISPLAY:MOV R0, #DBUF ;串口静态显示子程序 MOV R2,#3 ;显示3位数码 MOV DPTR,#SEGTAB; DISP: MOV A,@R0 ; MOVC MOV MOV JNB CLRTI INC R0 DJNZ RET SEGTAB: DB DB DB DB END DBUF
EQU
A,@A+DPTR ;取字段码
SCON,#0 ;置串口工作方式0 SBUF,A ;开始发送 TI,$ ;等待发送完毕 ;发送完毕,标志位清零 ;缓冲单元地址增1 R2,DISP ;三位数码发送完否? ;发送完毕,则返回
0FCH,60H,0DAH,0F2H ;0,1,2,3(共阳极字段码表) 66H,0B6H, 0BEH,0E0H ;4,5,6,7 0FEH,0F6H,0EEH,3EH ;8,9,A,B 9CH,7AH,9EH,8EH ;C,D,+,- 30H
;三位显示缓冲区首址
- 29 -
高等职业学校05高职机电一体化毕业论文
ORG AJMP
0000H MAIN
ORG 0030H
MAIN: MOV SP,#60H
NEXT1: NEXT2:
KEYSZ:
L1:
L2:
KEYSCAN: ACALL KEYSCAN ;调用键盘扫描子程序判断是加分或减分
CJNE
A,#0EH,NEXT2
;不是加分键,则转移判断是减分键?
ACALL KEYSZ
;是加分键,调用键盘设置子程序 ACALL DISPLAY ;调用串口静态显示子程序
SJMP
MAIN
CJNE A,#0FH,MAIN ;都不是,则转MAIN AJMP
NEXT1
;是减分键,调用键盘设置子程序
ORG 0100H
PUSH PSW
;键盘设置子程序
PUSH ACC SETB RS1 MOV R0,#DBUF ;R0指向显示缓冲区首地址 MOV R7,#3 ;设置键盘输入位数 CLR
RS1
ACALL KEYSCAN ;调用键盘扫描子程序取按下键的键号 SETB RS1
CJNE A,#0AH,L2 ;键入数合法性检测(是否大于9) JNC L1 ;大于9,重新键入 MOV R0,A
;键号送显示缓冲区
INC R0 DJNZ R7,L1 ;3位数值输入完否?未完继续,否则返回 POP ACC POP PSW CLR RS1
RET
MOV R3, #0F7H ;扫描初值(P0.3=0)
- 30 -