- 6
- 0
- 约2.26千字
- 约 4页
- 2015-09-22 发布于山西
- 举报
实验六 串行口通信实验
2010.06.02
一、实验目的
通过实验掌握串口通信的基本原理,同时熟悉串口通信的编程。
学会单片机串口中断的使用。
二、实验原理
指令 MOV SBUF,A 启动一次数据发送,可向SBUF再发送下一个数
指令 MOV A,SBUF 完成一次数据接收,SBUF可再接收下一个数
接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。
????? 2、波特率选择 波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MSC-51串行端口在四种工作模式下有不同的波特率计算方法。???? 在串行端口工作于1,其波特率将由计时/计数器1来产生,通常设置定时器工作于2(自动)。在此下波特率计算公式为:????????????????????????????????????? 波特率=(1+SMOD)*晶振频率/(384*(256-TH1))???? 其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;????????????? TH1——定时器的重载值。???? 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。??? 下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则???????????????????????????????????? TH1=256-62500/波特率???? 根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值、???? 51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
??????????????????????????????????????? 使用MAX232串口通信电路图(9孔串口接头)
实验电路图
???? 四、实验程序:
ORG 0000H
AJMP START
ORG 23H
LJMP WAIT1
ORG 30H
START: MOV R6,#36
MOV TMOD,#20H ;T1: 工作模式2
MOV PCON,#80H ;SMOD=1
MOV TH1,#0FDH ;初始化波特率(参见表)
MOV SCON,#50H ;STANDARD UART SETTINGS
MOV R0,#0
SETB ES
SETB EA
SETB REN ;允许接收
SETB TR1 ;T1开始工作
LOOP: MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV SBUF,A
LCALL DELAY
LJMP $
WAIT1: JBC RI,READ
;如果RI等于1,则清RI并转READ
CLR TI
DJNZ R6,GOON
AJMP READ
GOON: INC R0
MOV A,R0
MOVC A,@A+DPTR
MOV SBUF,A
LCALL DELAY
LCALL SEND
READ: MOV A,SBUF ;将取得的数送P1口
MOV P1,A
SEND: RETI
DELAY: MOV R1,#50 ;延时子程序
Y1: MOV R2,#100
Y2: MOV R3,#100
DJNZ R3,$
DJNZ R2,Y2
DJNZ R1,Y1
RET
TAB: DB1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
END
五、实
原创力文档

文档评论(0)