上位机报告.docx

上传人:b****1 文档编号:12790210 上传时间:2023-04-22 格式:DOCX 页数:16 大小:91.88KB
下载 相关 举报
上位机报告.docx_第1页
第1页 / 共16页
上位机报告.docx_第2页
第2页 / 共16页
上位机报告.docx_第3页
第3页 / 共16页
上位机报告.docx_第4页
第4页 / 共16页
上位机报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

上位机报告.docx

《上位机报告.docx》由会员分享,可在线阅读,更多相关《上位机报告.docx(16页珍藏版)》请在冰豆网上搜索。

上位机报告.docx

上位机报告

 

单片机接口设计

上位机

 

一、设计要求

1.定时呼叫下面每一个下位机(如5秒)

应答则表示通,显示:

地址_P(如1_P)

不应答表示不通,显示:

地址_E(如3_E)

2.可通过按键决定反复呼叫某个地址

3.通过按键控制要某地址的数据并显示(要数据命令为AAH)

4.通过按键控制修改某地址的数据并显示(修改定值或指示电梯楼层命令为55H)

5.显示下位机报警,如:

1:

FF

二、硬件系统设计

1、元件列表

元件

数量

AT89C51

1

75452

2

8段数码管(共阴)

4

300Ω电阻

9

2KΩ电阻

8

5KΩ电阻

1

晶振12M

1

20pF非极性电容

2

20uF电解电容

1

按钮

4

开关

4

 

2、整体电路图

 

单片机的引脚资源分配:

18、19脚接12M晶振,9脚接按键复位,20脚接地,40脚接VCC,P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6接7个控制开关和按钮,P1.7接发光二极管,P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7接共阴极数码管字形码控制端,P2.0,、P2.1、P2.2、P2.3接数码管驱动电路75452,RXD和TXD接口用于通信接口与从机相连。

 

3、整体实物电路图

 

三、软件系统说明

 

1、软件流程图

 

 

说明:

图中只画出了查询过程,还有定时5s后调用M0,并发送非法命令03H。

 

2、软件清单

说明:

1、工作寄存器分配:

R0:

用于发送数据寻址,初值:

30H

R1:

用于接收数据寻址,初值:

40H

R2:

用于存放通信地址

R3:

用于存放命令

R4:

用于存放数据传输个数

R5:

用于存放定时器中断次数

R5、R6:

用于DELY延时

2、I/O分配

P0:

数码管显示的字形码输出

P1:

接控制开关和按钮

P2:

数码管显示的片选

P3:

通行口P3.0、P3.1

ORG0000H;定义段首地址

LJMPMAIN;跳到主程序

ORG000BH;定时器1中断入口

LJMPT0

ORG0023H;串行口中断入口

LJMPCUK

ORG0030H

MAIN:

MOVTMOD,#21H;初始化定时器0,1

MOVTH0,#3CH

MOVTL0,#0B0H

MOVR5,#100

MOVTL1,#0FCH

MOVTH1,#0FCH

MOVPCON,#00H

MOVSCON,#0D8H;选择串行口方式3

SETBTR1;开T1定时器,产生波特率

SETBEA

CLRES

SETBET0

MOV30H,#01H

MOV31H,#01H

MOV32H,#01H

MOV33H,#01H

LCALLDSP1;开始显示横杠等待

SETBTR0

MOVR2,#0FFH

MOVP1,#0FFH;将P1口电平抬高,P1作输入

MOVA,P1

AA:

JBACC.4,BB;查询P1.4口,判断是否反复呼叫

CLRTR0

ANLA,#0FH

MOVR2,A

MOVR3,#03H

LCALLM0;调用通信子程序

SETBTR0

BB:

MOVP1,#0FFH

MOVA,P1

JBACC.5,CC;查询P1.5,判断是否向下位机要数据

CLRTR0

ANLA,#0FH

MOVR2,A

MOVR3,#0AAH

LCALLM0;调用通信子程序

SETBTR0

CC:

MOVP1,#0FFH

MOVA,P1

JBACC.6,AA;查询P1.5,判断是否向下位机传数据

CLRTR0

ANLA,#0FH

MOVR2,A

MOVR3,#55H

LCALLM0;调用通信子程序

SETBTR0

AJMPAA

ORG0100H

T0:

MOVTL0,#0B0H;T0中断服务程序

MOVTH0,#3CH

DJNZR5,TM

INCR2

MOVR3,#03H

MOVR4,#6

LCALLM0;定时5S后,调用通信子程序

MOVR5,#100

TM:

RETI

CUK:

JNBTI,C1;串行口中断服务程序

CLRTI

C1:

MOVA,SBUF

CJNEA,#0FFH,DD;判断下位机发的数据是否为报警

LCALLDSPF;调用报警显示子程序

 

DD:

RETI

;通信服务子程序

M0:

MOVR0,#30H;初始化,传输数据和接收数据首地址

MOVR1,#40H

MOVR4,#6

MOVSCON,#0D8H

M1:

CJNER2,#3,EE;判断查询的下位机的数是否超过范围

SJMPFF

EE:

JCFF

MOVR2,#0

FF:

MOVA,R2

MOVSBUF,A;发送地址

GG:

LCALLDELY1;延时

JNBRI,M2;判断是否能正常通信

CLRRI

MOVA,SBUF;判断下位机是否收到

XRLA,R2

JZM3;建立一对一连接

M2:

LCALLFALL;连接失败,显示EE

LCALLDSP1;显示横杆等待

SETBTB8

SJMPBACK

M3:

LCALLSUCC;连接成功,显示PP

LCALLDSP1;显示横杆等待

CLRTB8

CLRTB8

MOVSBUF,R3;发送指令

JNBRI,$

CLRRI

MOVA,SBUF;接收下位机状态字

JNBACC.7,M4;下位机收到的命令是否合法

SJMPBACK

M4:

CJNER3,#55H,M5

JNBACC.0,M2;下位机接收收是否就绪

MOVR0,#30H

MOVR4,#04H

TRAN:

MOVSBUF,@R0;主机向下位机发送数据

JNBTI,$

CLRTI

LCALLDELY

INCR0

DJNZR4,TRAN

 

MOVR0,#30H

LCALLOUT;调用OUT发送数据显示

LCALLDSP1

RET

M5:

JNBACC.1,M2;下位机发送是否就绪

MOVR1,#40H

MOVR4,#4

RECE:

JNBRI,$;主机接收数据

CLRRI

MOVA,SBUF

MOV@R1,A

INCR1

DJNZR4,RECE

MOVR1,#40H

LCALLIN;调用IN接收数据显示

LCALLDSP1

BACK:

RET

DSP1:

MOVP2,#00001111B;显示等待横杆子程序

MOVP0,#40H

LCALLDELY

RET

DSPF:

MOVDPTR,#TABL;显示报警错误子程序

MOVA,R2

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000001B

LCALLDELY

MOVP2,#00000010B

MOVP0,#08H

LCALLDELY

MOVP2,#00001100B

MOVP0,#71H

LCALLDELY

RET

SUCC:

MOVDPTR,#TABL;显示连接成功主程序

MOVA,R2

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000001B

LCALLDELY

MOVP2,#00000010B

MOVP0,#08H

 

LCALLDELY

MOVP2,#00000011B

MOVP0,#73H

LCALLDELY

RET

FALL:

MOVDPTR,#TABL;显示连接失败子程序

MOVA,R2

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000001B

LCALLDELY

MOVP2,#00000010B

MOVP0,#08H

LCALLDELY

MOVP2,#00000100B

MOVP0,#79H

LCALLDELY

RET

OUT:

MOVDPTR,#TABL;显示发送数据子程序

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000001B

LCALLDELY

INCR0

MOVA,@R0

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000010B

LCALLDELY

INCR0

MOVA,@R0

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000100B

LCALLDELY

INCR0

MOVA,@R0

MOVDPTR,#TABL

MOVCA,@A+DPTR

 

MOVP0,A

MOVP2,#00001000B

LCALLDELY

RET

IN:

MOVDPTR,#TABL;显示接收数据子程序

MOVA,@R1

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000001B

LCALLDELY

INCR1

MOVA,@R1

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000010B

LCALLDELY

INCR1

MOVA,@R1

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00000100B

LCALLDELY

INCR1

MOVA,@R1

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#00001000B

LCALLDELY

RET

DELY:

MOVR6,#0FFH;延时子程序DELY

DY:

MOVR7,#0FFH

NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZR7,$

 

DJNZR6,DY

RET

DELY1:

MOV50H,#0FFH;延时子程序DELY1

XX:

MOV51H,#0FFH

DJNZ51H,$

NOP

NOP

NOP

NOP

DJNZ50H,XX

SETB00H

RET

TABL:

DB3FH06H5BH4FH66H6DH7DH07H7FH6FH

END

 

四、调试过程

1、程序编写完后,首先使用了PROTEUS软件进行模拟仿真。

但是始终无法正常通信。

(主机发送数据,从机收不到,而主机收到的数据一直是00H),经过2天反复调试始终没有结果,最终放弃了PROTEUS的模拟仿真,直接使用伟福实验箱进行主从机通信实验。

2、在用伟福实验箱进行调试过程中,也不是一帆风顺,经过了反复的调试。

可是在主机发出地址呼叫从机的时候,主机总是不能接受到从机发来的地址验证,而通过程序执行指示灯从机确实接收到主机发送的地址,并返回了地址验证,而主机接收不到地址验证,一直等待接收。

在经过老师的指导下,发现是因为串行通信未接地。

最终使得通信正常(可能是因为没有共公的地线,单片机无法确定收到和接受到信号的电平)。

接下来的调试都比较顺利,很快就使得程序能实现功能。

3、因为没有印刷的电路板,电路的焊接的工作量很大。

元件布局和走线都很麻烦。

但幸运的是没有焊接和连线的错误,所以硬件调试很顺利。

4、为了确定硬件的显示是否正常,先编了一个小显示程序检验电路的数码管显示功能。

正常后重新写入程序,演示功能。

 

五、心得体会

课程设计的时间比较短,所以这6天一直没闲着,从第一天选题到最后验收,中间没有中断过。

源程序的编写难度并不大,整体的思路很容易想的,但是最令我头疼的是软件仿真调试和和硬件调试。

程序有错很好改,程序执行功能没实现也好办,就怕在不应该出错的地方出错,那就无从下手。

编程一天,但是调试用了3天,焊接电路一天。

值得庆幸的是硬件焊接没有出错,也许是布线和焊接都比较小心的原因吧!

通过本次单片机接口的课程设计,熟悉了基本的单片机系统的开发过程,最重要的是有积累了一些软件和硬件调试的技巧。

以往做实验没有考虑单片机系统的硬件是个什么样子。

此次课程设计彻底明白了单片机硬件的连接和部分元件的使用,可以说是受益匪浅。

以前的学习都只是停留在课本上基本的思想,之前总以为想着很简单的事,但实际做的时候却出现这样、那样的问题。

要在实践中发现问题、解决问题。

空想是要不得的。

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

当前位置:首页 > 自然科学 > 数学

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

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