《单片机接口设计》课程设计报告.docx

上传人:b****6 文档编号:3639245 上传时间:2022-11-24 格式:DOCX 页数:19 大小:854.99KB
下载 相关 举报
《单片机接口设计》课程设计报告.docx_第1页
第1页 / 共19页
《单片机接口设计》课程设计报告.docx_第2页
第2页 / 共19页
《单片机接口设计》课程设计报告.docx_第3页
第3页 / 共19页
《单片机接口设计》课程设计报告.docx_第4页
第4页 / 共19页
《单片机接口设计》课程设计报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

《单片机接口设计》课程设计报告.docx

《《单片机接口设计》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《单片机接口设计》课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。

《单片机接口设计》课程设计报告.docx

《单片机接口设计》课程设计报告

 

《单片机接口设计》

课程设计报告

 

专业:

电气工程及其自动化

班级:

学号:

姓名:

指导教师:

时间:

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系列单片机的驱动能力有了进一步的认识,在限流电阻、上拉电阻的计算以及发光二极管的压降、复位的理解等方面更进一步。

提高了在数电中学到的八路转换器,六路反相器等芯片的应用能力。

为时两周的课程设计虽然忙碌,却也丰富。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1