单片机接口设计 上位机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机接口设计

上位机

班级:电0901-2

姓名:

学号:20092368

指导老师:

组员:

负责任务:主机硬件部分

实习时间:2012.6.13—6.23

一、设计要求

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

应答则表示通,显示:地址_P(如1_P)

不应答表示不通,显示:地址_E(如3_E)

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

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

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

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

二、硬件系统设计

1、整体电路图

主机仿真图:

从机仿真图:

2说明:

1、单片机的引脚资源分配: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接口用于通信接口与从机相连。

当从机程序运行时,显示从0号机到3号机反复查询,按住P1.4,

2、主机反复查询从机,查询从机由P1.0和P1.1决定;按住P1.5,主机接收从机发送的数据,如1234并显示;按住P1.6,主机发送修改信息给从机,如1111并显示。从机应答则显示1-PP,无应答则显示0-EE等。

3、整体实物电路图

三、软件系统说明

1、软件流程图

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

2、软件清单:

1、工作寄存器分配:

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

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

R2:用于存放通信地址

R3:用于存放命令

R4:用于存放数据传输个数

R5:用于存放定时器中断次数

R5、R6、R7:用于DELY延时

2、I/O分配

P0:数码管显示的字形码输出

P1:接控制开关和按钮

P2:数码管显示的片选

P3:通行口P3.0、P3.1

3、程序代码

主机程序部分

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0

ORG 0023H

LJMP CUK

ORG 0030H

MAIN:MOV TMOD,#21H

MOV TH0,#4CH

MOV TL0,#00H

MOV R5,#100

MOV TL1,#0A0H

MOV TH1,#0A0H

MOV PCON,#00H

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

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

SETB EA

CLR ES

SETB ET0

MOV 30H,#01H

MOV 31H,#01H

MOV 32H,#01H

MOV 33H,#01H

LCALL DSP1 ;开始显示横杠等待

SETB TR0

MOV R2,#0FFH

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

MOV A,P1

AA:JB ACC.4,BB ;查询P1.4口,判断是否反复呼叫

CLR TR0

ANL A,#0FH

MOV R2,A

MOV R3,#03H

LCALL M0 ;调用通信子程序

SETB TR0

BB:MOV P1,#0FFH

MOV A,P1

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

CLR TR0

ANL A,#0FH

MOV R2,A

MOV R3,#0AAH

LCALL M0 ;调用通信子程序

SETB TR0

CC:MOV P1,#0FFH

MOV A,P1

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

CLR TR0

ANL A,#0FH

MOV R2,A

MOV R3,#55H

LCALL M0 ;调用通信子程序

SETB TR0

AJMP AA

ORG 0100H

T0:MOV TL0,#00H ;T0中断服务程序

MOV TH0,#4CH

DJNZ R5,TM

INC R2

MOV R3,#03H

MOV R4,#4

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

MOV R5,#100

TM:RETI

CUK:JNB TI,C1 ;串行口中断服务程序

CLR TI

C1:MOV A,SBUF

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

LCALL DSPF ;调用报

警显示子程序

DD:RETI

;通信服务子程序

M0:MOV R0,#30H ;初始化,传输数据和接收数据首地址

MOV R1,#40H

MOV R4,#4 ;存放4个数据

MOV SCON,#0D8H

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

SJMP FF

EE:JC FF

MOV R2,#0

FF:MOV A,R2

MOV SBUF,A ;发送地址

GG:LCALL DELY1 ;延时JNB RI,M2 ;判断是否能正常通信

CLR RI

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

XRL A,R2

JZ M3 ;建立一对一连接

M2:LCALL FALL ;连接失败,显示EE

LCALL DSP1 ;显示横杆等待

SETB TB8

SJMP BACK

M3:LCALL SUCC ;连接成功,显示PP

LCALL DSP1 ;显示横杆等待

CLR TB8

CLR TB8

MOV SBUF,R3 ;发送指令

JNB RI,$

CLR RI

MOV A,SBUF ;接收下位机状态字

JNB ACC.2,AE

LCALL DSPF

LCALL DELY

RET

AE:

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

SJMP BACK

M4:CJNE R3,#55H,M5

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

MOV R0,#30H

MOV R4,#4

TRAN:MOV SBUF,@R0 ;主机向下位机发送数据

JNB TI,$

CLR TI

LCALL DELY

INC R0

DJNZ R4,TRAN

MOV R0,#30H

LCALL OUT ;调用OUT发送数据显示

LCALL DSP1

RET

M5:JNB ACC.1,M2 ;下位机发送是否就绪

MOV R1,#40H

MOV R4,#4

RECE:JNB RI,$ ;主机接收数据

CLR RI

MOV A,SBUF

MOV @R1,A

INC R1

DJNZ R4,RECE

相关文档
最新文档