单片机接口设计 上位机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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