《单片机接口设计》课程设计报告.docx
《《单片机接口设计》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《单片机接口设计》课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
![《单片机接口设计》课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-11/24/5e3cfe4b-9416-45f6-ae39-ac687cb55e72/5e3cfe4b-9416-45f6-ae39-ac687cb55e721.gif)
《单片机接口设计》课程设计报告
《单片机接口设计》
课程设计报告
专业:
电气工程及其自动化
班级:
学号:
姓名:
指导教师:
时间:
2015.7.6—2015.7.17
一.课程设计目的
1.加强对所学理论知识的理解,提高综合应用、分析能力。
2.学习并掌握Proteus软件的仿真功能,加深对单片机最小系统的理解。
3.掌握89C51系列单片机开发系统的使用,提高对单片机接口设计的能力。
4.提高汇编程序的设计和调试能力,对实际问题的解决能力。
二.课程设计主要内容
课程设计题目:
时钟,
具体要求如下:
(1)通过键设置当前时间(时分秒)
(2)若是四位显示可通过键切换显示当前时间:
时分或分秒
(3)可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警
(4)可切换显示闹钟时间和当前时间
(5)本机地址为02H,当接到上位机发的02H时,则回发02H
当接到上位机发的AAH时,则将当前时间发给上位机
当收到上位机发的55H时,则修改当前时间(时分秒)
三.硬件电路设计
1.利用现有的硬件实现时钟功能,画出原理图
2.在Proreus中添加用到的元器件,如下所示
3.选中器件,单击放到页面;鼠标移到器件连接处即可连线;选中原理图中的器件可以调整方向,右击设置相关属性。
4.原理图
四.软件流程和程序清单
1.软件流程
(1)主程序流程图
(2)中断服务程序流程图
(3)显示时间、闹钟子程序流程图
2.程序清单
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0
ORG0023H
LJMPRXD
ORG0030H
MAIN:
CLRA
SETBEA
SETBES
SETBET0
MOVTMOD,#21H
MOVTH1,#0F3H
MOVTL1,#0F3H;波特率2400
MOVTH0,#3CH
MOVTL0,#0B0H
MOVPCON,A
MOVSCON,#50H;串行口方式一,允许串行接收
SETBTR0
SETBTR1
CLR20H;清除闹钟标志位
SETBP1.7
MOVP2,A
MOVR2,#05H
MOVR5,A
MOVR6,#0AH
MOVR7,A
MOV30H,A
MOV31H,A
MOV32H,A
MOV40H,A
MOV41H,A
MOV42H,A
NOP
LOOP:
LCALLTIME
LCALLTIME
LCALLTIME;键盘扫描周期约135ms
LCALLPFF
MOVA,P1
JBACC.0,CHA1
LCALLQUDOU
LCALLPFF
MOVA,P1
JNBACC.0,STTM
CHA1:
JBACC.1,CHA2
LCALLQUDOU
LCALLPFF
MOVA,P1
JNBACC.1,STCL1
CHA2:
JBACC.2,CHA3
LCALLQUDOU
LCALLPFF
MOVA,P1
JNBACC.2,EXCH1
CHA3:
JBACC.3,LOOP
LCALLQUDOU
LCALLPFF
MOVA,P1
JNBACC.3,STOP1
LJMPLOOP
STCL1:
LJMPSTCL
EXCH1:
LJMPEXCH
STOP1:
LJMPSTOP
STTM:
CLRTR0;设置时间
LCALLTIME
LCALLTIME
LCALLTIME;键盘扫描周期约135ms
LCALLPFF
MOVA,P1
JBACC.0,SCHA1
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.0,SCHA1
SETBTR0
LJMPLOOP
SCHA1:
JBACC.1,SCHA2
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.1,SCHA2
INC32H
MOVA,32H
CJNEA,#18H,STTM
MOV32H,#00H
LJMPSTTM
SCHA2:
JBACC.2,SCHA3
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.2,SCHA3
INC31H
MOVA,31H
CJNEA,#3CH,STTM
MOV31H,#00H
LJMPSTTM
SCHA3:
JBACC.3,STTM
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.3,STTM
INC30H
MOVA,30H
CJNEA,#3CH,STTM
MOV30H,#00H
LJMPSTTM
STCL:
LCALLCLOCK;设置闹钟
LCALLCLOCK
LCALLCLOCK;键盘扫描周期约135ms
LCALLPFF
MOVA,P1
JBACC.0,STCHA1
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.0,STCHA1
LJMPLOOP
STCHA1:
JBACC.1,STCHA2
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.1,STCHA2
INC42H
MOVA,42H
CJNEA,#18H,STCL
MOV42H,#00H
LJMPSTCL
STCHA2:
JBACC.2,STCHA3
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.2,STCHA3
INC41H
MOVA,41H
CJNEA,#3CH,STCL
MOV41H,#00H
LJMPSTCL
STCHA3:
JBACC.3,STCL
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.3,STCL
INC40H
MOVA,40H
CJNEA,#3CH,STCL
MOV40H,#00H
LJMPSTCL
EXCH:
LCALLCLOCK;显示闹钟时间
LCALLCLOCK
LCALLCLOCK;键盘扫描周期约135ms
LCALLPFF
MOVA,P1
JBACC.2,EXCH
LCALLQUDOU
LCALLPFF
MOVA,P1
JBACC.2,EXCH
LJMPLOOP
STOP:
SETBP1.7;闹钟停止
CLR20H
LJMPLOOP
T0:
MOVTH0,#3CH;定时T0中断服务程序
MOVTL0,#0B0H
INCR5
CJNER5,#14H,TLP
MOVR5,#00H
JNB20H,AAA
CPLP1.7
AAA:
INC30H
MOVA,30H
CJNEA,#3CH,TLP0
MOV30H,#00H
INC31H
MOVA,31H
CJNEA,#3CH,TLP0
MOV31H,#00H
INC32H
MOVA,32H
CJNEA,#18H,TLP0
MOV32H,#00H
TLP0:
MOVA,32H;判断闹钟是否到点
CJNEA,42H,TLP
MOVA,31H
CJNEA,41H,TLP
MOVA,30H
CJNEA,40H,TLP
CLRP1.7
SETB20H
TLP:
RETI
RXD:
MOVA,SBUF;串行口中断服务程序
CLRRI
CJNEA,#02H,RLAST
MOVSBUF,A
JNBTI,$
CLRTI
JNBRI,$
MOVA,SBUF
CLRRI
CJNEA,#0AAH,RLAST
MOVR0,#30H
MOVR3,#03H
RLP:
MOVA,@R0
MOVSBUF,A
JNBTI,$
CLRTI
INCR0
DJNZR3,RLP
RLAST:
NOP
RETI
TIME:
MOVR0,#30H;显示时间5次,耗时约45ms,子程序
LCALLHTBCD
MOVR0,#33H
LCALLDISP
DJNZR2,TIME
MOVR2,#05H
RET
CLOCK:
MOVR0,#40H;显示闹钟5次,耗时约45ms,子程序
LCALLHTBCD
MOVR0,#43H
LCALLDISP
DJNZR2,CLOCK
MOVR2,#05H
RET
HTBCD:
MOVR3,#03H;给定R0,将二进制转化为十进制,子程序
MOVA,R0
INCA
INCA
INCA
MOVR1,A
HLP:
MOVA,@R0
MOVB,#0AH
DIVAB
XCHA,B
MOV@R1,A
MOVA,B
INCR1
MOV@R1,A
INCR1
INCR0
DJNZR3,HLP
RET
DISP:
MOVR4,#20H;给定R0,转化字型并显示一次,子程序,耗时9ms
MOVR3,#06H
DLP:
MOVP2,#00H
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,R4
MOVP2,A
RRA
MOVR4,A
LCALLDELAY
INCR0
DJNZR3,DLP
RET
PFF:
SETBP1.0;P1口低四位置输入状态,不影响P1.7
SETBP1.1
SETBP1.2
SETBP1.3
RET
DELAY:
DJNZR7,$;延时1.5ms,子程序
DJNZR7,$
DJNZR7,$
RET
QUDOU:
LCALLDELAY;延时15ms,子程序
DJNZR6,QUDOU
MOVR6,#0AH
RET
TAB:
DB3FH,06H,5BH,4FH;字型码表格
DB66H,6DH,7DH,07H
DB7FH,6FH
END
五.调试过程和解决方法
1.利用原理图仿真
(1)编译程序生成HEX文件
(2)右击单片机选择EditProperties,选择生成的HEX文件
(3)运行程序,仿真效果如下
2.问题及解决
(1)一次按键多次确认
查阅资料,将按键去抖设置为15ms,键盘扫描周期设置为135ms。
(2)P0口输出电压不确定,上拉电阻增大为10K。
(3)数码管显示数字不正确,改为共阴极。
(4)蜂鸣器不到闹钟时间一直响,将P1.7电平修改为高电平。
3.烧录程序到单片机,完整实现时钟、闹钟等功能。
4.作品功能介绍
(1)按键P1.0进入设置时间状态,按键P1.1小时加一,按键P1.2分钟加一,按键P1.3秒加一,再次按键P1.0时返回显示时间。
(2)按键P1.1进入设置闹钟状态,按键P1.1小时加一,按键P1.2分钟加一,按键P1.3秒加一,再次按键P1.0时返回显示时间。
(3)按键P1.2显示闹钟时间,再次按键P1.2返回显示时间。
(4)当闹钟响起时,按键P1.3强制停止闹钟。
六.心得
通过两个星期的课程设计,我们学到了很多。
从一开始的选题到问题的分析解决,最后烧录程序制作出成品,我们三个人通力合作、互相帮助提高。
不仅加深了对所学理论知识的理解,更重要的是明白了合作的真谛。
时钟设计涉及到了单片机的时序控制,数据接口包括并行数据接口以及串行通信接口,同时用到了控制按键、数据显示处理等。
这次设计,基本上涉及到了所有的单片机控制功能模块。
因此,通过这次设计,能完全掌握单片机的所有基本控制,这也是我们组选择该题目的一个重要原因。
在制作过程中,对于51系列单片机的驱动能力有了进一步的认识,在限流电阻、上拉电阻的计算以及发光二极管的压降、复位的理解等方面更进一步。
提高了在数电中学到的八路转换器,六路反相器等芯片的应用能力。
为时两周的课程设计虽然忙碌,却也丰富。