广州大学单片机原理与接口技术实验串行通讯实验.docx
- 文档编号:20783730
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:12
- 大小:730.35KB
广州大学单片机原理与接口技术实验串行通讯实验.docx
《广州大学单片机原理与接口技术实验串行通讯实验.docx》由会员分享,可在线阅读,更多相关《广州大学单片机原理与接口技术实验串行通讯实验.docx(12页珍藏版)》请在冰豆网上搜索。
广州大学单片机原理与接口技术实验串行通讯实验
广州大学学生实验报告
实验课程名称
单片机原理与接口技术实验
成绩
实验项目名称
串行通讯实验
指导老师
一、实验目的
二、实验原理
三、使用仪器、材料
四、实验步骤
五、实验过程原始记录(数据、图表、计算等)
六、实验结果及分析
1、实验目的
1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。
2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。
3、学习串口通讯的中断方式的程序编写方法。
二、实验原理
显示电路和键盘电路和实验七一致。
串口连线如下:
连线
连接孔1
连接孔2
1
甲方TXD
乙方RXD
2
甲方RXD
乙方TXD
3
甲方GND
乙方GND
4
KEY/LED_CS
CS0
1、8051RXD、TXD接线柱在POD51/96仿真板上。
2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。
也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。
3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。
可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。
可以用实验仪上的逻辑分析仪采样串口通信的波形。
目的是利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。
实验程序框图:
3、使用仪器、材料
1、LAB6000通用微控制器实验系统。
2、计算机,WAVE集成调试软件。
3、连线若干。
四、实验步骤
1、编制程序。
2、进行实验线路的接线。
3、按要求进行实验系统的联接与启动。
4、输入程序并检查,保存程序,编译程序。
5、用示波器观测串口线上数据的变化
5、实验过程原始记录
实验程序如下:
OUTBIT equ08002h ;位控制口
OUTSEG equ08004h ;段控制口
IN equ08001h ;键盘读入口
HasRcvequ 20h.0 ;接收标志位
LEDBufequ 40h ;显示缓冲
RCVBufequ 50H ;接收缓冲
ORG 0000H
LJMP START
;串行口中断程序
ORG 0023H
JNB TI,S0_R
CLR TI
NOP
SJMP S0_RET
S0_R:
;接收数据
CLR RI
MOV RCVBUF,SBUF ;保存数据
SETB HasRcv ;提示收到数据
NOP
S0_RET:
RETI
LEDMAP:
;八段管显示码
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
mov r7,#0
DelayLoop:
djnz r7,DelayLoop
djnz r6,DelayLoop
ret
DisplayLED:
mov r0,#LEDBuf
mov r1,#6 ;共6个八段管
mov r2,#00100000b ;从左边开始显示
Loop:
mov dptr,#OUTBIT
mov a,#0
movx @dptr,a ;关所有八段管
mov a,@r0
mov dptr,#OUTSEG
movx @dptr,a
mov dptr,#OUTBIT
mov a,r2
movx @dptr,a ;显示一位八段管
mov r6,#1
call Delay
mov a,r2 ;显示下一位
rr a
mov r2,a
inc r0
djnz r1,Loop
ret
TestKey:
mov dptr,#OUTBIT
mov a,#0
movx @dptr,a ;输出线置为0
mov dptr,#IN
movx a,@dptr ;读入键状态
cpl a
anl a,#0fh ;高四位不用
ret
KeyTable:
;键码定义
db 16h,15h,14h,0ffh
db 13h,12h,11h,10h
db 0dh,0ch,0bh,0ah
db 0eh,03h,06h,09h
db 0fh,02h,05h,08h
db 00h,01h,04h,07h
GetKey:
mov dptr,#OUTBIT
mov P2,dph
mov r0,#Low(IN)
mov r1,#00100000b
mov r2,#6
KLoop:
mov a,r1 ;找出键所在列
cpl a
movx @dptr,a
cpl a
rr a
mov r1,a ;下一列
movx a,@r0
cpl a
anl a,#0fh
jnz Goon1 ;该列有键入
djnz r2,KLoop
mov r2,#0ffh ;没有键按下,返回0ffh
sjmp Exit
Goon1:
mov r1,a ;键值=列X4+行
mov a,r2
dec a
rl a
rl a
mov r2,a ;r2=(r2-1)*4
mov a,r1 ;r1中为读入的行值
mov r1,#4
LoopC:
rrc a ;移位找出所在行
jc Exit
inc r2 ;r2=r2+行值
djnz r1,LoopC
Exit:
mov a,r2 ;取出键码
mov dptr,#KeyTable
movc a,@a+dptr
mov r2,a
WaitRelease:
mov dptr,#OUTBIT ;等键释放
clr a
movx @dptr,a
mov r6,#10
call Delay
call TestKey
jnz WaitRelease
mov a,r2
ret
START:
MOV SP, #60H
MOV IE, #0 ;DISABLEALLINTERRUPT
MOV TMOD,#020H ;定时器1工作于方式2(8位重装)
MOV TH1,#0F3H ;波特率?
2400BPS@12MHz
MOV TL1,#0F3H
ANL PCON,#07FH ;SMOD位清零
orl PCON,#80h
MOV SCON,#050H ;串行口工作方式设置
MOV LEDBuf, #0ffh ;显示8.8.8.8.
mov LEDBuf+1,#0ffh
mov LEDBuf+2,#0ffh
mov LEDBuf+3,#0ffh
mov LEDBuf+4,#0
mov LEDBuf+5,#0
SETB TR1
SETB ES
SETB EA
MLoop:
jb HasRcv,RcvData ;收到数据?
call DisplayLED ;显示
call TestKey ;有键入?
jz MLoop ;无键入,继续显示
call GetKey ;读入键码
MOV SBUF,A
LJMP MLoop
RcvData:
clr HasRcv ;是
mov a,RcvBuf ;显示数据
mov b,a
anl a,#0fh ;显示低位
mov dptr,#LEDMap
movc a,@a+dptr
mov LEDBuf+5,a
mov a,b
swap a ;显示高位
anl a,#0fh
mov dptr,#LEDMap
movc a,@a+dptr
mov LEDBuf+4,a
ljmp MLoop
END
指导书上的程序缺少显示高位键码的部分,而且把高位键码覆盖了,而且缺少了循环的入口地址,这里把循环入口地址放在jb HasRcv,RcvData 语句前,去掉anla,#0fh
增加了显示高位键码程序段
mov a,b
swap a ;显示高位
anl a,#0fh
mov dptr,#LEDMap
movc a,@a+dptr
mov LEDBuf+4,a
实验现象:
自发自收,本机RXD连本机TXD
按下here键显示键码12
按下RST键显示键码FF
2串口助手和伟福互连连接情况如下:
显示出串口助手上的信息
六、实验结果及分析
1、画出硬件连线示意图。
单机自发自收:
key/LED_CS-------CS0
本机RXD----------本机TXD
两台机互连:
甲方 乙方
甲方key/LED_CS-------甲方CS0
乙方key/LED_CS-------乙方CS0
2、说明程序的执行是否已实现程序设计的要求。
改进后的程序已实现了利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示的功能。
3、说明实验程序采用的是哪种串行通讯方式。
根据语句MOVSCON,#050H,可知使用的串行通讯方式是方式1,该方式波特率可变,由定时器一的预设值和SMOD位决定波特率,是常用的通信方式。
4、据实验系统的振荡器,计算实验程序的波特率。
实验系统的晶振为6Mhz,根据语句
MOV TH1,#0F3H
ANL PCON,#07FH
orl PCON,#80h
波特率=(2^SMOD/32)*f/12/(2^8-X)
其中f为晶振频率,X为定时器1预设值,6MHZ/16/12/13约等于2403.8,想设定的波特率应该是2400,这是由于使用6MHZ的晶振造成的,如果使用11.0592MHZ的晶振,则设定常用波特率时不会出现误差,另外单片机波特率误差对2片同晶振同型号单片机之间通信不会有影响,例如本实验双机都是以2403.8的实际波特率在通信。
而波特率误差对计算机和单片机之间通信有影响,应为计算机波特率较准,软件设定为2400就为2400,而此时单片机的实际波特率依然是2403.8,所以会造成累积误差。
继续阅读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广州大学 单片机 原理 接口 技术 实验 串行 通讯