《串口通信实验》实验报告
学号:201212235027 姓名: 曹勇发 第 4 次
第二篇:实验8 串口通信实验
实验八 串口通信实验
一、实验目的
1. 理解串行通信的基本概念和51系列单片机的串行通信接口结构。
2. 熟悉串口的4种工作方式、通信连线和应用编程。
二、实验内容
1. 使用串口实现单片机1与单片机2的数据通信,实现互相控制。要求按下单片机1系统板上的S3—S4键,单片机2系统板上LED4—LED5分别点亮。按下单片机2系统板上的S3—S4键,单片机1系统板上LED4—LED5也分别点亮。
2. 使用串口实现单片机与PC机的数据通信。要求按下单片机系统板上中断INT0时,单片机向PC机发送0-9这十个数字,并用“串口调试助手”接收显示。在“串口调试助手”上发送0-9中任何一个数字时,单片机用8个发光二极管显示对应的ASCII码值。
三、实验环境
l 软件资源:编程软件keil,程序烧写软件STC_ISP_V3.1,串口调试工具。
l 硬件资源:两块mini80E开发板,板上资源用到发光二极管LED3,小按键S3,插针J11。
带串口的PC机一台以及串口下载线一根(如果PC机没有串口,请用USB转串口下载线)。
四、实验原理
MAX232芯片用于电平转换,实现RS232电平与TTL电平(单片机)的互相转换。本次实验单片机之间通信不使用握手信号,只需3根信号线:TXD(发送线),RXD(接收线),GND(地线)。单片机之间通信的原理图如图1所示,当单片机1(主机) 查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。
图1 单片机之间通信的原理图
单片机与PC机之间通信原理图如图2所示。S3键接P3.2,作为外部中断INT0输入端,当S3按下,产生中断,执行中断程序发送0-9这十个数字,在PC机上用“串口调试助手”接收并显示。
图2 单片机与PC机之间通信
五、实验步骤
1. 进行单片机1与单片机2的通信实验。
硬件连接:将J11的左边两个引脚针(1和2)用跳冒连接,用三根导线分别连接两个串口的RX、TX、GND。
编写软件:首先设置单片机1和单片机2的TMOD寄存器,使定时器T1为工作方式2,作为波特率时钟。设定波特率为1200,根据公式计算出定时器1的定时初值并启动T1。设置SCON寄存器,使串口工作在方式1(波特率可变10位异步通信方式)。单片机1串口负责发送数据,程序中查询P3.2-- P3.3的电平,其中有一个为低电平表示S3—S4有一个按下,串口发送自定义信号。单片机2串口负责接收数据,收到信号并点亮相对应的灯LED4—LED5。当单片机2这边S3—S4有键按下时,单片机板1上也点亮相对应的灯LED4—LED5。
2. 进行单片机与PC机的通信实验。
硬件连接:将J11左边两个引脚针(1和2)用跳冒连接,用串口下载线将PC机与单片机连接。
编写软件:单片机1串口负责发送0-9十个数据,按照上个实验的设置来配置串口的工作方式。设置中断寄存器IE、IP和TCON,打开中断,当S3按下时出发中断开始发送数据。“串口调试助手”是在电脑上运行的程序,它可以接收并显示电脑串口上的数据,设置如图3所示。
图3 串口调试助手界面
六、实验程序(选用12M晶振)
实验A、单片机1与单片机2的通信实验:
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP INTRT
ORG 0030H
MAIN:MOV TMOD,#20H ;设置定时器1的工作方式
MOV TH1,#0E6H ;设置波特率1200
MOV TL1,#0E6H
SETB TR1 ;启动定时器1
MOV SCON,#50H ;设置串口工作方式
CLR RI ;清除标志位
CLR TI ;清除标志位
SETB ES ;开串口中断
SETB EA ;开总中断
LOOP:JNB P3.2,S3OK ;检测按键是否按下
JNB P3.3,S4OK
AJMP LOOP
S3OK:MOV A,#0FBH ;点亮LED4
MOV SBUF,A
JNB TI,$ ;等待发送完
SJMP LOOP2
S4OK:MOV A,#0F7H ;点亮LED5
MOV SBUF,A
JNB TI,$ ;等待发送完
LOOP2:ACALL DELAY
AJMP LOOP
INTRT:PUSH ACC
JNB TI,NEXT
CLR TI
AJMP OUT
NEXT: CLR RI ;清标志
MOV A,SBUF ;读取接收的数据
MOV P1,A ;送P1口
OUT: POP ACC
RETI
DELAY:MOV R3,#60 ; 延时0.6秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
实验B、单片机与PC机的通信实验:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP IN0
ORG 0030H
MAIN: MOV TMOD,#20H ;设置定时器1的工作方式
MOV TH1,#0E6H ;设置波特率1200
MOV TL1,#0E6H
SETB TR1 ;启动定时器1
MOV SCON,#50H ;设置串口工作方式
CLR TI ;清除标志位
SETB EX0 ;开外部中断
SETB EA ;开总中断
SETB IT0
GO_ON: CLR RI
JNB RI,$
MOV A,SBUF
CPL A
MOV P1,A
SJMP GO_ON ;等待
IN0: PUSH ACC
CLR EX0 ;关外部中断
JB P3.2, OUT
CALL DELAY_10 ;延时10ms去抖动
JNB P3.2,$
CALL DELAY_10 ;延时10ms去抖动
JNB P3.2,$
MOV R0,#30H
LOOP:MOV A,R0 ;向PC机发送P2口采集到的信号
MOV SBUF,A
JNB TI,$ ;等待发送完
CLR TI ;清除标志位
INC R0
CJNE R0,#3AH,LOOP
OUT: SETB EX0 ;开外部中断
POP ACC
RETI
DELAY_10: MOV R7,#20
D4: MOV R6,#250
DJNZ R6,$
DJNZ R7,D4
RET
END
七、实验结果记录
1.请记录实验A的实验现象。
2.在实验A中,若要求按下S3键时LED6点亮,应该如何修改程序?
3. 在实验B中,如果要在“串口调试助手”上显示A,B,C,D,E,F,G,H,I,J这10个字母,程序应该如何修改?
4.请画出实验A和实验B的程序流程图。