单片机课程设计Word文档下载推荐.docx
《单片机课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课程设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
MicroprocessorICs
8051Family
CAP
Capacitors
Generic
CAP-ELEC
CRYSTAL
Miscellaneous
-----
RES
Resistors
7SEG-MPX8-CC-BLUE
Optoetectronics
7-SegmentDisplay
74LS245
TTL74LSseries
Transceivers
BUTTON
Switches&
Relays
Switches
SONDER
Speakers&
Sounders
LED-YELLOW
LEDS
3.2硬件连接电路
图3.1处理器及显示模块
图3.2键盘矩阵模块
3.3设计框图
图3.3电子锁的设计框图
4程序设计
4.1程序流程图
4.2源程序
;
*******************************************************
以下8个字节存放8位数码管的段码
LED_BIT_1EQU30H
LED_BIT_2EQU31H
LED_BIT_3EQU32H
LED_BIT_4EQU33H
LED_BIT_5EQU34H
LED_BIT_6EQU35H
LED_BIT_7EQU36H
LED_BIT_8EQU37H
以下6个字节存放初始密码
WORD_1EQU38H
WORD_2EQU39H
WORD_3EQU3AH
WORD_4EQU3BH
WORD_5EQU3CH
WORD_6EQU3DH
以下6个字节存放用户输入的6位密码
KEY_1EQU3EH
KEY_2EQU3FH
KEY_3EQU40H
KEY_4EQU41H
KEY_5EQU42H
KEY_6EQU43H
******************************************************
CNT_AEQU44H
CNT_BEQU45H
KEY_CNTEQU46H;
已输出的密码位数
LINEEQU47H;
按键行号
ROWEQU48H;
按键列号
VALEQU49H;
键值
以下为初始化程序,包括数据存储空间初始化,设置初始密码
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVCNT_A,#00H;
程序初始化
MOVCNT_B,#00H
MOVKEY_CNT,#00H
MOVLINE,#00H
MOVROW,#00H
MOVVAL,#00H
SETBP1.0
MOVLED_BIT_1,#00H;
段码存储区清0
MOVLED_BIT_2,#00H
MOVLED_BIT_3,#00H
MOVLED_BIT_4,#00H
MOVLED_BIT_5,#00H
MOVLED_BIT_6,#00H
MOVLED_BIT_7,#79H
MOVLED_BIT_8,#73H
MOVKEY_1,#00H;
输入密码存储区清0
MOVKEY_2,#00H
MOVKEY_3,#00H
MOVKEY_4,#00H
MOVKEY_5,#00H
MOVKEY_6,#00H
MOVWORD_1,#6;
设置初始密码为"
123456"
MOVWORD_2,#5
MOVWORD_3,#4
MOVWORD_4,#3
MOVWORD_5,#2
MOVWORD_6,#1
MOVTMOD,#01H
MOVTH0,#(65536-700)/256
MOVTL0,#(65536-700)MOD256
MOVIE,#82H
A0:
LCALLDISP
***********************************************************
以下为键盘扫描程序,计算键值并存入VAL
LSCAN:
MOVP3,#0F0H;
扫描行码
L1:
JNBP3.0,L2
LCALLDLY_S
JNBP3.0,L2
LJMPRSCAN
L2:
JNBP3.1,L3
JNBP3.1,L3
MOVLINE,#01H
L3:
JNBP3.2,L4
JNBP3.2,L4
MOVLINE,#02H
L4:
JNBP3.3,A0
JNBP3.3,A0
MOVLINE,#03H
RSCAN:
MOVP3,#0FH;
扫描列码
C1:
JNBP3.4,C2
LJMPCALCU
C2:
JNBP3.5,C3
MOVROW,#01H
C3:
JNBP3.6,C1
MOVROW,#02H
CALCU:
MOVA,LINE;
计算键值
MOVB,#03H
MULAB
ADDA,ROW
MOVVAL,A
**************************************************
以下为按键处理程序,对不同的按键作出响应
CJNEA,#0AH,J1;
是否为"
CLR"
键
MOVR1,KEY_CNT
CJNER1,#00H,J2
LCALLALARM_1
LJMPSTART
J2:
LCALLSHIFTR
DECKEY_CNT
W00:
LCALLDISP;
等待按键抬起
MOVA,P3
CJNEA,#0FH,W01
LJMPA0
W01:
MOVA,P3
CJNEA,#0F0H,W02
W02:
SJMPW00
J1:
MOVA,VAL
CJNEA,#0BH,J3;
判断是否为"
ENTER"
CJNER1,#06H,J4
MOVA,WORD_1;
比较密码
CJNEA,3EH,J5
MOVA,WORD_2
CJNEA,3FH,J5
MOVA,WORD_3
CJNEA,40H,J5
MOVA,WORD_4
CJNEA,41H,J5
MOVA,WORD_5
CJNEA,42H,J5
MOVA,WORD_6
CJNEA,43H,J5
CLRP1.0
LCALLDLY_L
LJMPFINI
J5:
LCALLALARM_2
J4:
LCALLALARM_1
J3:
INCKEY_CNT;
按下数字键
MOVA,KEY_CNT
CJNEA,#07H,K1
W10:
CJNEA,#0FH,W11
W11:
CJNEA,#0F0H,W12
W12:
SJMPW10
K1:
LCALLSHIFTL
W20:
CJNEA,#0FH,W21
W21:
CJNEA,#0F0H,W22
W22:
SJMPW20
ALARM_1:
SETBTR0;
操作错误报警
JBTR0,$
RET
ALARM_2:
密码错误报警
定时器中断服务程序,用于声音报警
INT_T0:
CPLP1.7
MOVTL0,#(65536-700)MOD256
INCCNT_A
MOVR1,CNT_A
CJNER1,#30,RETUNE
MOVCNT_A,#00H
INCCNT_B
MOVR1,CNT_B
CJNER1,#20,RETUNE
CLRTR0
RETUNE:
RETI
段码,输入密码左移子程序
SHIFTL:
MOVLED_BIT_6,LED_BIT_5
MOVLED_BIT_5,LED_BIT_4
MOVLED_BIT_4,LED_BIT_3
MOVLED_BIT_3,LED_BIT_2
MOVLED_BIT_2,LED_BIT_1
MOVLED_BIT_1,#40H
MOVKEY_6,KEY_5
MOVKEY_5,KEY_4
MOVKEY_4,KEY_3
MOVKEY_3,KEY_2
MOVKEY_2,KEY_1
MOVKEY_1,VAL
段码,输入密码右移子程序
SHIFTR:
MOVLED_BIT_1,LED_BIT_2
MOVLED_BIT_2,LED_BIT_3
MOVLED_BIT_3,LED_BIT_4
MOVLED_BIT_4,LED_BIT_5
MOVLED_BIT_5,LED_BIT_6
MOVKEY_1,KEY_2
MOVKEY_2,KEY_3
MOVKEY_3,KEY_4
MOVKEY_4,KEY_5
MOVKEY_5,KEY_6
以下为数码显示子程序
DISP:
CLRP2.7
MOVP0,LED_BIT_8
SETBP2.7
CLRP2.6
MOVP0,LED_BIT_7
SETBP2.6
CLRP2.5
MOVP0,LED_BIT_6
SETBP2.5
CLRP2.4
MOVP0,LED_BIT_5
SETBP2.4
CLRP2.3
MOVP0,LED_BIT_4
SETBP2.3
CLRP2.2
MOVP0,LED_BIT_3
SETBP2.2
CLRP2.1
MOVP0,LED_BIT_2
SETBP2.1
CLRP2.0
MOVP0,LED_BIT_1
SETBP2.0
**********************************************
DLY_S:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
DLY_L:
MOVR5,#100
D2:
MOVR6,#100
D3:
MOVR7,#248
DJNZR6,D3
DJNZR5,D2
FINI:
NOP
END
4.3程序运行结果
5结论
这次单片机课程设计,虽然短暂但是让我得到多方面的提高:
1、提高了我们的逻辑思维能力,使我们在汇编语言的分析与设计上有了很大的进步。
加深了我们对汇编语言的认识。
另外,我们还更加充分的认识到,单片机原理及应用这门课程在科学发展中的至关重要性2,查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。
3,相互讨论共同研究也是很重要的,经常出现一些问题,比如电路设计中的键盘电路的设计,开始并不理解键盘电路的原理,但是和其他的专业同学讨论后,理解了分键盘电路的基本原理后,很快的设计了电路原理图。
附录A:
89C51管脚图
参考文献
[1]孙涵芳.MCS-51/96系列单片机原理及应用(修订版).北京航空航天大学出版社.1994
[2]李朝青.单片机原理及接口技术(第3版).北京航空航天大学出版社.2005
[3]周润景、袁伟亭、景晓松.Proteus在MCS-51&
ARM7系统中的应用百例.电子工业出版社.2006