单片机课程设计.docx
- 文档编号:6878809
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:15
- 大小:154.27KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机课程设计
1引言
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
8051单片机是当前国内外工业测控领域内使用很广泛的一类8位数控制器,它的特点是使用方便、灵活,外围硬件支持十分丰富,世界许多大的半导体生产厂商,如Atmel、Dallas、TI等公司都推出了具有各自特点的增强型8051系列单片机,使用户有了更大的选择空间。
此外,世界上有许多软件公司致力于8051单片机高级编程语言的开发。
汇编语言具有运算效率高、占用存储空间小、实时性强、执行速度快等优点,能直接管理和控制存储器及硬件接口,充分发挥硬件的作用。
掌握了汇编语言,就可以更好地理解高级编程语言。
2设计任务和要求
2.1设计任务
设计任务:
利用开发板设计一个电子锁,用4*3组成0~9数字键及确认键、删除键,用8位数码管组成显示电路提示信息,当输入密码时,只显示“一”,当密码位数输入完毕按下“确定”键时,对输入的密码与设定的密码进行比较,若密码正确,则开锁,此处用LED发光二极管亮1S作为提示;若密码不正确,禁止按键输入3S,同时发出“嘀、嘀”的报警声。
设计要求:
自己在电脑上编号程序利用KEIL和PROTEUS软件进行模拟仿真,观察运行情况,如果没有和预期的一样,则需要找出原因改正后再进行调试,最后对设计进行总结。
2.2实用价值与理论意义
本课程设计使用设计电子锁的这个方案的原因是:
这是我们汇编语言的第一次课程设计,而电子锁,这个方案不会很难设计,还能让我们体验软件编程的是如何与实际(开发板)联系的,更能让我们学到并运用汇编语言。
由于其结构简单、传统机械锁常常强迫打开。
有许多种类的电子门锁的性能和安全性已经超过了机械锁。
由于具有较高的机密性和弹性,许多用户使用电子门锁。
对这套方案理解得较为透彻。
所以,我才选择了设计电子锁的这个设计方案。
3硬件电路设计
3.1电路元件清单
表3.1元件清单
元件名称
所属类
所属子类
AT89C51
MicroprocessorICs
8051Family
CAP
Capacitors
Generic
CAP-ELEC
Capacitors
Generic
CRYSTAL
Miscellaneous
-----
RES
Resistors
Generic
7SEG-MPX8-CC-BLUE
Optoetectronics
7-SegmentDisplay
74LS245
TTL74LSseries
Transceivers
BUTTON
Switches&Relays
Switches
SONDER
Speakers&Sounders
-----
LED-YELLOW
Optoetectronics
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
MOVLINE,#00H
LJMPRSCAN
L2:
JNBP3.1,L3
LCALLDLY_S
JNBP3.1,L3
MOVLINE,#01H
LJMPRSCAN
L3:
JNBP3.2,L4
LCALLDLY_S
JNBP3.2,L4
MOVLINE,#02H
LJMPRSCAN
L4:
JNBP3.3,A0
LCALLDLY_S
JNBP3.3,A0
MOVLINE,#03H
RSCAN:
MOVP3,#0FH;扫描列码
C1:
JNBP3.4,C2
MOVROW,#00H
LJMPCALCU
C2:
JNBP3.5,C3
MOVROW,#01H
LJMPCALCU
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
LJMPA0
W02:
SJMPW00
J1:
MOVA,VAL
CJNEA,#0BH,J3;判断是否为"ENTER"键
MOVR1,KEY_CNT
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
LJMPSTART
J4:
LCALLALARM_1
LJMPSTART
J3:
INCKEY_CNT;按下数字键
MOVA,KEY_CNT
CJNEA,#07H,K1
LCALLALARM_1
W10:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W11
LJMPSTART
W11:
MOVA,P3
CJNEA,#0F0H,W12
LJMPSTART
W12:
SJMPW10
LJMPSTART
LJMPSTART
K1:
LCALLSHIFTL
W20:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W21
LJMPA0
W21:
MOVA,P3
CJNEA,#0F0H,W22
LJMPA0
W22:
SJMPW20
LJMPA0
ALARM_1:
SETBTR0;操作错误报警
JBTR0,$
RET
ALARM_2:
SETBTR0;密码错误报警
JBTR0,$
LCALLDLY_L
RET
;**************************************************
;定时器中断服务程序,用于声音报警
INT_T0:
CPLP1.7
MOVTH0,#(65536-700)/256
MOVTL0,#(65536-700)MOD256
INCCNT_A
MOVR1,CNT_A
CJNER1,#30,RETUNE
MOVCNT_A,#00H
INCCNT_B
MOVR1,CNT_B
CJNER1,#20,RETUNE
MOVCNT_A,#00H
MOVCNT_B,#00H
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
RET
;**************************************************
;段码,输入密码右移子程序
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
MOVLED_BIT_6,#00H
MOVKEY_1,KEY_2
MOVKEY_2,KEY_3
MOVKEY_3,KEY_4
MOVKEY_4,KEY_5
MOVKEY_5,KEY_6
MOVKEY_6,#00H
RET
;**************************************************
;以下为数码显示子程序
DISP:
CLRP2.7
MOVP0,LED_BIT_8
LCALLDLY_S
SETBP2.7
CLRP2.6
MOVP0,LED_BIT_7
LCALLDLY_S
SETBP2.6
CLRP2.5
MOVP0,LED_BIT_6
LCALLDLY_S
SETBP2.5
CLRP2.4
MOVP0,LED_BIT_5
LCALLDLY_S
SETBP2.4
CLRP2.3
MOVP0,LED_BIT_4
LCALLDLY_S
SETBP2.3
CLRP2.2
MOVP0,LED_BIT_3
LCALLDLY_S
SETBP2.2
CLRP2.1
MOVP0,LED_BIT_2
LCALLDLY_S
SETBP2.1
CLRP2.0
MOVP0,LED_BIT_1
LCALLDLY_S
SETBP2.0
RET
;**********************************************
DLY_S:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
DLY_L:
MOVR5,#100
D2:
MOVR6,#100
D3:
MOVR7,#248
DJNZR7,$
DJNZR6,D3
DJNZR5,D2
RET
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计