实验四基于单片机的串行通信

合集下载

单片机串行通信实验

单片机串行通信实验

实验四单片机串行通信实验一、实验目的1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。

2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。

3、学习串口通讯的中断方式的程序编写方法二、实验说明利用单片机串行口,实现两个实验台之间的串行通讯。

其中一个实验台作为发送方,另一侧为接收方。

发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。

三、实验仪器计算机伟福实验箱(lab2000P )四、实验内容与软件流程图1、8051的RXD、TXD接线柱在POD51/96仿真板上。

2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。

也可以将本机的TXD 接到RXD上,这样按下的键,就会在本机LED上显示出来。

3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。

可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。

可以用实验仪上的逻辑分析仪采样串口通信的波形4、软件流程图5、实验电路连接方式①双机串行通信方式。

TXD脚和RXD脚分别用于发送和接收数据。

②单机通信的情况下,只需将自己的TXD脚与RXD脚连接就可以,不用公地操作。

五、思考题1、接收到的数据加1显示出来;2、保存前一个接收到的数据,数据向前推动显示。

六、源程序修改原理及其仿真结果实验结果图源程序:加1显示:接收到的数据先前推送:七、心得体会通过这次实验,我掌握了单片机串行口工作方式的程序设计,及简易三线式通讯的方法。

了解了实现串行通讯的硬环境、数据格式的协议、数据交换的协议。

学习了串口通讯的中断方式的程序编写方法。

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。

2.掌握Keil与Proteus的联调技巧。

3.掌握串行通信在单片机系统中的使用。

4.掌握调度器设计的基础知识:函数指针。

二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。

b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。

i.甲机发送“A”,控制乙机LED1闪烁。

ii.甲机发送“B”,控制乙机LED2闪烁。

iii.甲机发送“C”,控制乙机LED1,LED2闪烁。

iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。

c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。

两机的程序要分别编写。

d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。

2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。

b.单片机把计算结果向PC机发送字符串。

c.PC机接收计算结果并显示出来。

d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。

单片机指令的串口通信实现方法

单片机指令的串口通信实现方法

单片机指令的串口通信实现方法串口通信是指通过串行通信接口实现的数据传输方式。

在单片机系统中,串口通信是一种重要的通信方式,可以实现与外部设备(如PC 机、传感器等)的数据交互。

本文将介绍单片机指令的串口通信实现方法,包括硬件连接和软件编程两方面。

一、硬件连接串口通信需要通过发送器和接收器两个设备来完成数据的发送和接收。

在单片机系统中,可使用通用异步收发器(UART)作为串行通信接口。

下面是串口通信的硬件连接步骤:1. 将单片机与UART连接:首先,确保单片机具有UART接口,并根据其引脚定义将UART的发送线(TXD)连接到单片机的接收引脚,接收线(RXD)连接到单片机的发送引脚。

2. 选择波特率:波特率指每秒钟传送的位数,通常使用的波特率有9600、115200等。

在发送和接收数据时,单片机和外部设备需要使用相同的波特率,以保证数据的正确传输。

3. 连接外部设备:根据实际需求,将UART的发送线和接收线分别连接到外部设备的接收引脚和发送引脚。

二、软件编程实现单片机指令的串口通信需要编写相应的软件程序。

下面是基于C语言的软件编程实现方法:1. 初始化串口:在程序开始时,需要对串口进行初始化设置。

通过设置寄存器来配置波特率、数据位、停止位等参数。

2. 发送数据:使用发送指令将待发送的数据写入UART的数据寄存器,等待数据传输完成。

3. 接收数据:通过接收指令读取UART接收到的数据,并进行相应的处理。

可以使用中断或轮询方式进行数据接收。

4. 错误处理:在数据传输过程中,可能会出现错误,例如帧错误、奇偶校验错误等。

需要进行相应的错误处理操作,例如重新发送数据或发出错误提示。

5. 通信协议:根据通信需求,可以制定相应的通信协议。

通信协议包括数据帧结构、数据格式、数据校验等内容,用于确保数据的可靠传输。

三、实例演示下面通过一个简单的示例来演示单片机指令的串口通信实现方法。

假设我们需要实现从单片机向PC机发送一条消息,并接收PC机返回的确认信息。

单片机实验四 串行通信实验实验

单片机实验四 串行通信实验实验

昆明理工大学信息工程与自动化学院学生实验报告( 2014 — 2015 学年第 2 学期)课程名称:嵌入式技术开课实验室:信自楼402 2015年6月2日年级、专业、班计科122 学号201210405204 姓名邹华宇成绩实验项目名称实验四串行通信实验指导教师江虹教师评语该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□该同学的实验能力: A.强□ B.中等□ C.差□该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□实验报告是否规范: A.规范□ B.基本规范□ C.不规范□实验过程是否详细记录: A.详细□ B.一般□ C.没有□教师签名:年月日一、实验目的掌握单片机系统中串行端口的编程控制方法,学会实时程序的调试技巧。

二、实验原理89C51单片机的串行端口结构上有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。

单片机的串口可以由特殊功能寄存器SCON设置其工作方式,是否允许接受等,由PCON 设置其波特率是否倍增。

发送和接收工作可以由中断完成,也可以不用中断,其中断矢量编号为4。

串口的处理主要涉及以下几个方面的内容:串口初始化发送程序设计(字节,字符串)接收程序设计是否用中断三、实验内容利用TX-1C实验板上及串口助手实现PC机与单片机的互相通信。

编写程序实现:当PC 机给单片机发送一个字符后,单片机回传PC机发送给它的字符的十六进制数。

四、实验步骤1、按实验要求在KeilC中创建项目,编辑、编译程序。

源代码:#include <reg52.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intbit bsf=0;uchar g_uRev;//uchar code table[]="I Love MCU!\n";//uchar code table1[]="昆明理工大学\n";void DelayMS(uint x){uchar i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void UartInit(void) //9600bps@11.0592MHz{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率TMOD &= 0x0F; //清除定时器1模式位TMOD |= 0x20; //设定定时器1为8位自动重装方式TL1 = 0xFD; //设定定时初值ET1 = 0; //禁止定时器1中断TR1 = 1; //启动定时器1}void Send_Byte(uchar uDat){SBUF = uDat;while(!TI);TI = 0;}void Send_Str(uchar *pstr){while(*pstr){Send_Byte(*pstr++);}}uchar UART_Rev(void){static uchar g_uRev;if(RI){g_uRev = SBUF;RI = 0;bsf=1;}return g_uRev;}void senddata(void)uint utemp=0;utemp=UART_Rev();if(bsf){Send_Str("Y ou give me the number is ");Send_Byte(utemp);TI=1;printf("\n");printf("His ASCII number is 0x%x\n",utemp);while(!TI);TI=0;bsf=0;}}void main(){UartInit();DelayMS(10);//Send_Str("Kmust\n");// TI = 1;//printf("昆明理工大学\n");//while(!TI);// TI = 0;//while(1);while(1){senddata();P1=UART_Rev();}2、将编译生成的目标码文件(后缀为.Hex)下载到实验板电路中。

单片机课程设计实验单片机间串行通信

单片机课程设计实验单片机间串行通信
关键词:单片机 AT89C51 串行通信
1 设计任务
单片机间串行通信,是工业自动化、智能终端、通信管理等领域传统且重要的通讯手段。
此次设计单片机串行通信,就是为了了解单片机的工作原理,从而学会制作数字钟。本次课程设计通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机原理与应用及C51程序设计》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。
AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。其基本结构如图1
图 1 AT89C51单片机的基本结构
AT89C51 是一个低电压,高性能CMOS 8 位单片机,片内含8kB 的可反复擦写的Flash 只读程序存储器和256B 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51 指令系统及8052 产品引脚兼容,片内置有通用8 位中央处理器(CPU)和Flash 存储单元。
《题目:单片机间串行通信原理
专业班级:2012级电子信息科学与技术
学生姓名:罗滨志
学号:120802010051
成绩:
2014年12月27日
4实验步骤14
4.1实验程序调试14
4.1.1发送端程序调试14
4.1.2接收端程序调试15
4.2实验仿真16

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而AT89C51单片机是各单片机中最为典型和最有代表性的一种,本设计是基于MCS51系列单片机中AT89C51所设计的一种具有一个全双工的串行通信口,可以实现单片机与单片机之间点对点串行通信,主从通信以及上,下位机互相通信等。本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,由单片机与键盘控制数码管的显示,修改设置LED显示由按键开关控制,通过硬件电路制作以及软件程序的编制,设计制作一个简单的单片机间串行通信。

实验四(一) 串并转换实验(2学时)

实验四(一)  串并转换实验(2学时)
ZW=table2[0]; //再送字位
delay(10); //延时一小段时间
ZX=0xff; //
数码管消影
ZX=table[buffer[1]]; //显示ASCII的十位
ZW=table2[1];
delay(10);
ZX=0xff;
ZX=table[buffer[2]]; //显示ASCII值的个位
num++;
if(num==10) //定时1S时间到
{Hale Waihona Puke num=0;i++;
if(i==10) i=0; //数码管反复扫描
SBUF=~Table[i]; //取反,送数码管显示数字
}
}
实验四(二) 单片机与PC机串行通信实验(2学时)
一、实验目的
⑴掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。
0x49,0x41,0x1F,0x01,0x09}; //共阳数码管字段
void main()
{ TMOD=0x01; //定时器T0方式1
TH0=(65536-50000)/256;//定时器赋初值,定时100ms,(12MHz晶振)
TL0=(65536-50000)%256;
EA=1; //总中断打开
湖北民族学院科技学院
信息工程学院
单片机原理实验报告
实验名称:单片机串口应用
专业班级
学号
姓名
指导教师
实验四(一) 串并转换实验(2学时)
一、实验目的
⑴掌握8031串行口方式0工作方式及编程方法。
⑵掌握利用串行口扩展并行I/O通道的方法。
二、实验内容
(1)在实验箱上完成:

单片机 串行口通信实验

单片机 串行口通信实验

实验三串行口通信实验一、实验内容据图1所示电路,两个同学为一组分为甲方、乙方,所有实验都采用方式3,偶校验,波特率为2400bit/s,采用T1作波特率发生器,均采用中断发送和接收。

按键值a:按K1,a=0x01;按K2,a=0x02;按K3,a=0x04;按K4,a=0x08。

1、单向通信向甲方连续不断地发送变量a的值,未按键,a=0x0f,按键后根据按键确定a值;并将a的值取反从P0口输出,控制D0、D1、D2、D3相应点亮。

乙方接收到数据并偶校验正确后,将接收数据取反从P0口输出,控制D0、D1、D2、D3相应点亮。

2、双向通信甲方连续不断地发送变量a的值,未按键,a=0x0f,按键后根据按键确定a 值;乙方未按键不发送,按键后将a*16发送;甲乙双方都将发送数据与接收数据相或后再取反,从P0口输出控制D0—D7相应点亮。

3、间隔发送未按键,甲方不发送数据,按键后甲方每隔50ms连续发送4个字节:0xff、a、a、a。

乙方只在收到甲方数据0xff后的3个数据并验证相同时,才将接收数据*16发送。

甲乙双方都将发送数据与接收数据相或后,从P0口输出控制D0—D7相应点亮。

二、实验方案本人负责编程和处理乙机的编程和实验。

1、总体方案设计所用硬件:AT89C52、BUTTON、LED、10BQ040、电源共有4个按键K1、K2、K3、K4,分别连接到单片机P2.0、P2.1、P2.2、P2.3引脚,按键后对应引脚为低电平,通过4个二极管5连接到P3.2(外部中断0),通过通信接口排插将甲机的TXD、RXD连接到乙机的RXD、TXD。

软件设计:1、按键处理采用中断处理按键,甲方在外部中断0服务程序中:判断按键确定发送数据,并判断是否开始发送,若未开始发送,设置TI=1。

2、双向通信串行口中断后要注意判断是发送中断( TI=1 ) 还是接收中断( RI=1 ),判断完后要清除标志。

发送数据和接收数据函数void send(uchar dat){ACC=dat;TB8=P;//将奇偶校验位作为第9位数据发送,采用偶校验SBUF=ACC;}uchar receive(){ACC=SBUF;//将接收缓冲器的数据存于ACCif(RB8==P){//只有奇偶校验成功才能往下执行,接收数据return ACC;//返回接收缓冲器的数据}else{return 0x00;}}主要算法1(单向通信和双向通信实验项目合一):1、全局变量的定义:uchar a; //记录发送数据uchar b;//记录接收数据2、外部中断0键控函数(用来发送数据给甲机):void keyControl() interrupt 0{if(INT0==0){//K1键按下,a=0x01if(K1==0){a=0x01*16;}//K2键按下,a=0x02if(K2==0){a=0x02*16;}//K3键按下,a=0x04if(K3==0){a=0x04*16;}//K4键按下,a=0x08if(K4==0){a=0x08*16;}}TI=1;}3、串行口中断函数:void ES_int() interrupt 4{//串行口中断函数if(RI){RI=0;b=receive();}if(TI){TI=0;send(a);}}主要算法2(间隔发送):1、全局变量的定义:uchar a;//发送数据int send_time=0;//记录发送的次数uchar b; //接收数据int receive_time=0;//记录接收的次数uchar c[3];//判断接收值是否相同2、串行口中断函数:void ES_int() interrupt 4{//串行口中断函数if(RI){//接收中断RI=0;if(receive_time==1){if(receive()==0xff){//判断第一次接收的数据是否为0xff,是继续接收后面的三个数据,否重新接收第一个数据receive_time++;}else{receive_time=1;}}else if(receive_time>=2&&receive_time<=4){if(receive_time==2){//接收第一位个数据c[0]=receive();}if(receive_time==3){//接收第二个数据c[1]=receive();}if(receive_time==4){//接收第三个数据c[2]=receive();if(c[0]==c[1]&&c[1]==c[2]){//判断后三个数据是否相同,相同就把接收到的数据*16然后发送给甲机b=c[0];a=b*16;send_time=1;TI=1;}}receive_time++;}}if(TI){//发送中断TI=0;if(send_time==1){send(0xff);}else if(send_time>=2&&send_time<=4){send(a);}if(send_time==4)//发送成功显示LEDlight(~(a|b));send_time++;}}2、实验原理图图2-1 实验原理图3、程序流程图图2-2 双向通信程序流程图图2-3 间隔发送程序流程图三、源程序双向通信程序源代码:#include"reg51.h"#define uchar unsigned char#define uint unsigned int//#define TH(a) (65536-a)/256//定义装入定时器高8位的时间常数//#define TL(a) (65536-a)%256//定义装入定时器低8位的时间常数sbit p=PSW^0;sbit K1=P2^0;sbit K2=P2^1;sbit K3=P2^2;sbit K4=P2^3;uchar a; //记录发送数据uchar b;//记录接收数据void light(uchar dat){//亮灯函数P0=dat;}void send(uchar dat){ACC=dat;TB8=P;//将奇偶校验位作为第9位数据发送,采用偶校验SBUF=ACC;}uchar receive(){ACC=SBUF;//将接收缓冲器的数据存于ACCif(RB8==P){//只有奇偶校验成功才能往下执行,接收数据return ACC;//返回接收缓冲器的数据}else{return 0x00;}}void main(){TMOD=0x20;//设置定时器T1为方式2定时IE=0x91;//总中段开,允许串行、外部中断0中断IT0=1;//选择外部中断0为跳沿触发方式SCON=0xd0;//设置串口为方式3并允许串口接收数据PCON=0x00;//SMOD=0;TH1=0xf4;TL1=0xf4; //给定时器T1赋初值,波特率设置为2500 TR1=1;//启动定时器T1while(1){light(~(a|b));//将发送数据和接收数据相或后取反显示}}void ES_int() interrupt 4{//串行口中断函数if(RI){RI=0;b=receive();}if(TI){TI=0;send(a);}}void keyControl() interrupt 0{if(INT0==0){//K1键按下,a=0x01if(K1==0){a=0x01*16;}//K2键按下,a=0x02if(K2==0){a=0x02*16;}//K3键按下,a=0x04if(K3==0){a=0x04*16;}//K4键按下,a=0x08if(K4==0){a=0x08*16;}}TI=1;}间隔发送程序源代码:#include"reg51.h"#define uchar unsigned char#define uint unsigned int#define TH(a) (65536-a)/256//定义装入定时器高8位的时间常数#define TL(a) (65536-a)%256//定义装入定时器低8位的时间常数sbit p=PSW^0;sbit K1=P2^0;sbit K2=P2^1;sbit K3=P2^2;sbit K4=P2^3;uchar a;//发送数据int send_time=0;//记录发送的次数uchar b; //接收数据int receive_time=0;//记录接收的次数uchar c[3];//判断接收值是否相同void light(uchar dat){//亮灯函数P0=dat;}void send(uchar dat){ACC=dat;TB8=P;//将奇偶校验位作为第9位数据发送,采用偶校验SBUF=ACC;}uchar receive(){ACC=SBUF;//将接收缓冲器的数据存于ACCif(RB8==P){//只有奇偶校验成功才能往下执行,接收数据return ACC;//返回接收缓冲器的数据}else{return 0x00;}}void main(){TMOD=0x21;//设置定时器T1为方式2定时,T0为方式1定时IE=0x93;//总中段开,允许串行、外部中断0、定时器T0中断IT0=1;//选择外部中断0为跳沿触发方式SCON=0xd0;//设置串口为方式3并允许串口接收数据PCON=0x00;//SMOD=0;TH1=0xf4;TL1=0xf4; //给定时器T1赋初值,波特率设置为2500 TR1=1;//启动定时器T1TH0=TH(50000);TL1=TL(50000);//给定时器T0赋初值,50msTR0=1;//定时器T0初始为开启状态while(1){}}void ES_int() interrupt 4{//串行口中断函数if(RI){//接收中断RI=0;if(receive_time==1){if(receive()==0xff){//判断第一次接收的数据是否为0xff,是继续接收后面的三个数据,否重新接收第一个数据receive_time++;}else{receive_time=1;}}else if(receive_time>=2&&receive_time<=4){if(receive_time==2){//接收第一位个数据c[0]=receive();}if(receive_time==3){//接收第二个数据c[1]=receive();}if(receive_time==4){//接收第三个数据c[2]=receive();if(c[0]==c[1]&&c[1]==c[2]){//判断后三个数据是否相同,相同就把接收到的数据*16然后发送给甲机b=c[0];a=b*16;send_time=1;TI=1;}}receive_time++;}}if(TI){//发送中断TI=0;if(send_time==1){send(0xff);}else if(send_time>=2&&send_time<=4){send(a);}if(send_time==4)//发送成功显示LEDlight(~(a|b));send_time++;}}void T0_int() interrupt 1{receive_time=1;RI=1;TH0=TH(50000);TL1=TL(50000);}void keyControl() interrupt 0{/*if(INT0==0){//K1键按下,a=0x01if(K1==0){a=0x01*16;}//K2键按下,a=0x02if(K2==0){a=0x02*16;}//K3键按下,a=0x04if(K3==0){a=0x04*16;}//K4键按下,a=0x08if(K4==0){a=0x08*16;}}*/}四、实验结果单向通信及双向通信:1、开机即接收来自甲机发送的默认数据0x0f,取反通过LED输出(如图4-1)图4-1 接收甲机发送的默认数据2、接收到来自甲机的数据0x02并取反通过LED输出(如图4-2)图4-2 接收来自甲机的数据0x023、K3键按下向甲机发送数据0x04*16并输出接收数据及发送数据相或并取反到LED(如图4-3)图4-3 K3键按下向甲机发送数据,本机输出数据间隔发送:1、接收到甲机发送的数据0x02,三次校验成功后发送0x02*16到甲机,输出接收数据和发送数据相或并取反后的结果到LED(如图4-4)图4-4 K3键按下恢复原来的交通灯状态并正常运行五、实验思考题1、为什么串行口中断后要注意判断是发送中断( TI=1 ) 还是接收中断( RI=1 ),判断完后要清除标志。

单片机串行通信实验报告

单片机串行通信实验报告

单片机实验报告(三)实验名称:串行通信姓名:张昊学号:110404247班级:通信2班时间:2013.11南京理工大学紫金学院电光系一、实验目的1、理解单片机串行口的工作原理;2、学习使用单片机的TXD、RXD口;3、了MAX232解芯片的作用。

二、实验原理计算机与其外部设备之间进行数据交换称为通信。

通信的基本方式可分为并行通信和串行通信两种。

并行通信中数据至少有8路,可以同时将一个字节的8位二进制代码发送到对方。

串行通信用两根传输线进行数据的传输,一次只能发送一位二进制。

串行通信技术根据传送的编码格式不同,可分为同步通信和异步通信两种方式:1、同步方式:数据以数据块为单位传送。

在开始传送前用同步字符来指示,并由时钟来实现发送端和接收端同步。

2、异步方式:数据时不连续传送的。

以字符为单位进行传送。

被传送字节分为:起始位、数据位、校验位和停止位,称为一帧。

常用格式:a、1bit起始位+8bit数据位+无校验位+1bit停止位b、1bit起始位+8bit数据位+1位偶校验位+1bit停止位串行通信技术根据数据流动方向分为三种方式:1、单工通信:数据流动方向是固定的,数据只能由一方发送到另一方。

2、半双工通信:数据的流动方向是双向的,但一时刻,数据只能在一个方向流动。

3、全双工通信:允许数据在两个方向流动,即通信双方的数据发送和接收是同时的。

串行口控制寄存器SCON的格式如下:D7 D6 D5 D4 D3 D2 D1 D0SM0、SM1:由软件置位或清零,用于选择串行口四种工作方式。

SM2:多机通信控制位。

在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断请求。

当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。

嵌入式系统串口通信实验

嵌入式系统串口通信实验

实验四串口通信实验一.实验目的:1.掌握ARM的串行口工作原理。

2.学习并编程实现AR,的UART通信。

3.掌握S3C2410X寄存器配置方法。

二、实验设备:PC机一台 ADT IDE集成开发环境 JXARM9-2410教学实验箱三、实验内容:实现查询方式串口的收发功能。

接受来自串口(通过超级终端)的字符,并将接收到的字符发送到超级终端。

四、基础知识:1.异步串行通讯(1)异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。

(2)数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。

接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。

为了恢复发送的信息,双方必须协调工作。

(3)在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。

但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

2.异步串行通信中的字符传送格式❑开始前,线路处于空闲状态,送出连续“1”。

传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。

❑每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。

后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。

也可以约定不要奇偶校验,这样就取消奇偶校验位。

最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。

❑至此一个字符传送完毕,线路又进入空闲,持续为“1”。

经过一段随机的时间后,下一个字符开始传送才又发出起始位。

3.DB-25 DB-9引脚定义DB-25 DB-9引脚说明:RS-232C接口通信的两种基本连接方式:五、实验步骤:1.新建一个工程UART,将对应的文件添加到工程中去。

单片机串行通信

单片机串行通信

实验报告课程名称单片机原理及接口技术实验项目串行通信实验仪器计算机、单片机实验箱系别信息与通信工程专业电子信息工程班级/学号学生姓名实验日期成绩_______________________指导教师王勇实验四串行通信一、实验目的1、掌握串行口编程控制方法2、掌握串口调试和仿真器的烧写方法3、综合应用定时器、串行接口及中断等二、实验内容1、编写一个程序,利用单片机的串行口向PC机循环发送0x55,每发送一次数据用P1的0管脚控制LED亮灭。

2、编写一个程序,每当串行口接收到PC机发送的0x55(ASCII码为字母U)时,返回一个0x41(ASCII码为字母A)。

在PC机一端,以接收窗口收到0x41为完成(可以循环此过程),每发送一次数据用P1的0管脚控制LED亮灭。

3、PC机向单片机发送0—9(无需编程,在DPFlash的串口调试软件下配置即可),单片机在接收到数据后送数码管循环显示;同时,单片机每隔0.5S向PC机发送a—z的ASCII码(0x61~0x7a,每秒发2个),在PC机的串口调试软件中显示结果。

三、实验步骤1、新建工程,编写程序,实现通过串行口向PC机发送0x55(可采用串口模式1,波特率2400),注意工程的环境变量设置,Output程窗口下里面晶振设置为11.0592MHz,仿真器设置为硬件仿真选中Create Hex选项,编译生成HEX 文件。

2、按下JP17开关,使仿真器工作于仿真Debug模式,连接P1和8位LED区的JP32,连接JP1 232串口通信电缆到电脑主机COM上,或者通过USB转COM连接。

编译程序下载到仿真器上,应该看到指示灯在闪烁。

长按仿真器复位键3S以上,仿真器自动运行上次下载的程序。

3、通过“我的电脑”文件夹中输入FTP://59.64.74.111/12单片机/实验箱光盘/工具软件/中下载sscom30串口调试工具,打开sscom30软件,设置串口模式,打开串口,观察结果。

实验四 串行通信实验

实验四  串行通信实验

实验四 串行通信实验一、实验目的1.了解51单片机串行口的结构、串行通讯的原理。

2.掌握51单片机与PC 机之间通讯的方法。

3. 学习系统应用程序的设计和调试二、实验设备PC 机一台 、 实验教学板一块。

三、实验原理51单片机的串行接口是全双工的,它能做异步接收器/发送器(UART ),也能做同步移位寄存器使用。

在做UART 使用时,相关的寄存器有SBUF 、SCON 、和PCON 中的波特率倍增位SMOD 。

SBUF 是数据发送缓冲器和接收缓冲器,逻辑上用同一个地址,物理上是分开的,用读写操作来选择。

SCON 是串行口控制寄存器,用于设定串行口的工作方式;保存方式2和方式3的第9位数据;存放发送、接收的中断标志。

在串行通讯的方式1和方式3中,通信的波特率是可以设置的,满足下式:2/132SMOD=⨯波特率(定时器计数器的溢出率)PC 机的串行通讯口是借助通用异步接收发送器8250(或16C550等)实现的,可使用comdebug.exe 等提供了有关串行口的收、发操作窗口的软件实现通讯。

PC 机的串行通讯采用RS232电平,因此要求单片机的实验板也要配置RS232接口,解决逻辑电平的配接。

如果通讯距离较远,则要配接调制解调器。

四、实验内容1, 自发自收用一根短路线,将实验板中RS232插口的RXD 和TXD 两个插孔短路。

然后编程设定串行口为工作方式1,传送55H 和0AAH 两个数据。

实验要求:程序采用查询方式。

每传送、接收一个数据,做一次检查,看是否正确,若两次都正确,则在显示器上显示“GOOD”,若不正确,则不显示,并要重新传送。

2, 单片机与PC 机的通信先使用通讯电缆将单片机的RS232接口与PC 机的COM1口连接,PC 机起动并运行comdebug.exe 软件,窗口上设置波特率为1200,8位数据、一个停止位。

单片机端也采用工作方式1,波特率为1200,完成单片机与PC 机的通信。

单片机实验8031 串行口应用

单片机实验8031 串行口应用

南昌航空大学实验报告二0一一年十月二十三日课程名称:单片微型机实验名称:实验四 8031 串行口应用班级: 080611 姓名:学号: 08061108指导教师评定:签名:一、实验目的1 掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

2 了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。

3 了解PC机通信的基本要求。

二、实验内容1 利用8031单片机串行口,实现与PC机通信。

2 本实验实现以下功能,将实验机键盘上键入的数字、字母显示到PC机显示器上,反过来从PC机键盘上输入的字符(0—F)显示到实验仪的数码管上。

三、实验步骤1、实验电路原理图1)实验系统中考虑用户可以方便使用串行口实现双机或和上位机通信,系统有用户专用串行接口,只要配上用户专用通信电缆线就可以实现和上位机通信,不影响监控系统和上位机的联机工作。

J10就是用户专用串行接口,将J10用用户专用通信线连到上位机的串口上。

注意不要和上位机系统用串行口冲突。

2)实验时需将8031串行接收信号线P3.0(RXD)连到J10下面RXD插孔;8031的P3.1(TXD)连到J10下面TXD插孔上。

3 )两台实验机必须共地2 、实验操作1)在DVCC实验系统处于“P ”状态下。

2)输入四位起始地址0D00后,按EXEC键连续运行程序。

3)在上位机上运行DVSIO程序。

4)从DVCC实验系统的键盘上输入数字键,会显示在上位机屏幕上,从上位机键盘上输入数字键会显示在实验系统的数码管上。

3、8031 串行口应用一(与PC机通信)程序ORG 07F0HSTART: MOV SP,#60HMOV A,#02H;初始化显示缓冲区MOV R0,#79HMOV @R0,AINC R0MOV A,#10HMOV @R0,AINC R0MOV A,#01HMOV @R0,AINC R0MOV A,#03HMOV @R0,AINC R0MOV A,#00HMOV @R0,AINC R0MOV A,#08HMOV @R0,AMOV A,#7EH;置显示位置指针MOV DPTR,#1FFFHMOVX @DPTR,AMOV 87H,#80H;置SMOD=1MOV SCON,#50H;串口方式1MOV TMOD,#20H;T1 方式1MOV TL1,#0F3H;波特率 2400 的常数MOV TH1,#0F3HSETB TR1;启动定时器CLR ET1 ;关中断CLR ESWAIT: JBC RI,DIS_REC;是否接收到数据LCALL DISP;无数据调用显示程序SJMP WAIT;循环等待DIS_REC:MOV A,SBUF;读串口接收到的数据LCALL DATAKEY;显示输入的数字(0-F)DB 79H,7EHAJMP WAIT ;循环DATAKEY:MOV R4,A;数字处理子程序MOV DPTR,#1FFFHMOVX A,@DPTRMOV R1,AMOV A,R4MOV @R1,ACLR APOP 83HPOP 82HMOVC A,@A+DPTRINC DPTRCJNE A,01H,DATAKEY2DEC R1CLR AMOVC A,@A+DPTRDATAKEY1: PUSH 82HPUSH 83HMOV DPTR,#1FFFHMOVX @DPTR,APOP 83HPOP 82HINC DPTRPUSH 82HPUSH 83HRETDATAKEY2: DEC R1MOV A,R1SJMP DATAKEY1DISP : SETB 0D4H;调用显示子程序MOV R1,#7EHMOV R2,#20HMOV R3,#00HDISP1 : MOV DPTR,#DATACOMOV A,@R1MOVC A,@A+DPTRMOV DPTR,#0FF22HMOVX @DPTR,AMOV DPTR,#0FF21HMOV A,R2MOVX @DPTR,ADEC R1LCALL DELAYCLR CMOV A,R2RRC AMOV R2,AJNZ DISP1CLR 0D4HRETDELAY: MOV R7,#03H DELAY0: MOV R6,#0FFHDELAY1: DJNZ R6,DELAY1DJNZ R7,DELAY0RETDATACO:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80 H,90HDB88H,83H,0C6H,0A1H,86H,8EH,0BFH,0CH,89H, 0DEHEND四、实验小结通过本次实验初步掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

单片机实验四 双向通信

单片机实验四 双向通信

实验四:双向通信一、实验要求实验目的:了解MCS-51单片机串行口(UART)的结构、工作方式、了解串行通信的原理和数据交换过程,掌握单片机之间进行串行通信的编程方法。

实验内容:将甲乙两台MCS-51单片机串行口连接,即甲机的TXD与乙机的RXD相连,甲机的RXD与乙机的TXD相连,并实现双机共地。

整个系统实现双向通信。

具体是:1、甲机的K1键可通过串行口分别控制乙机的LED1点亮、LED2点亮、LED1和LED2全亮或全灭。

2、乙机的K2按键可通过串行口向甲机发送数字,甲机将接收到的数字显示在P0段的LED数码管上。

二、实验原理串行口工作方式2MCS-51串行口工作方式2是9位异步通信接口。

每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位串行口工作为方式2时,被定义为9位异步通信接口。

其时序如图所示。

串行口工作方式2的波特率当采用方式2时,波特率仅仅与晶振频率有关。

在方式0中,波特率为时钟频率的1/12,即f osc/12,固定不变。

在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为f osc/64;当SMOD=1时,波特率为f osc/32。

双机通信硬件电路三、程序设计1、甲机程序ORG 0000HAJMP MAINTORG 0003HAJMP EX_INT0MAINT: MOV SCON, #90H ;串口工作方式2,允许接收MOV PCON, #80H ;波特率加倍MOV R0, #00HMOV SP, #40HMOV DPTR, #TABSETB IT0SETB EASETB EX0SETB ESHERE: SJMP HEREORG 0200HEX_INT0:MOV A, R0MOV SBUF, ACHECK: JBC TI, GOONSJMP CHECKGOON: CLR TIINC R0WAIT: JBC RI, NEXT ;接收部分SJMP W AITNEXT: MOV A,SBUFMOV R1, AMOVC A, @A+DPTRMOV P1,ACLR RIRETITAB: DB 0C0H, 0F9H, 0A4H, 0B0HEND2、乙机程序ORG 0000HAJMP RECSRECS: MOV SCON, #90HMOV PCON, #80HWAIT: JBC RI, NEXTSJMP W AITNEXT: MOV A, SBUFMOV B, #04HMOV P1, ADIV ABCLR RITRANS: MOV SBUF, BCHECK: JBC TI, WANLESJMP CHECKWANLE: LJMP RECSEND设计思路:用R0的最后两位共有00,01,10,11四种状态控制LED1、LED2的亮灭,将R0从甲机传到乙机的P0口,最后两位控制LED灯。

单片机串口通信实验报告

单片机串口通信实验报告

信息工程学院实验报告课程名称:单片机原理及接口实验项目名称:串口通信实验实验时间:2017.5一、实验目的:1.了解什么是串口,串口的作用等。

2、了解串口通信的相关概念3、利用keil软件,熟悉并掌握中串口通信的使用4、通过实验,熟悉串口通信程序的格式,串口通信的应用等二、实验原理1、串口通信概念:单片机应用与数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。

如下图所示。

2、串口数据通信方式及特点★数据通信方式有两种:并行通信与串行通信★并行通信:所传送数据的各位同时发送或接收,数据有多少位就需要多少根数据线。

特点:速度快,成本高,适合近距离传输如计算机并口,打印机,8255 。

★串行通信:所传送数据的各位按顺序一位一位地发送或接收。

只需一根数据,一根地线,共2 根特点:成本低,硬件方便,适合远距离通信,传输速度低。

串行通信与并行通信示意图如下:成绩:指导老师(签名):3、串行通信基本格式①单工通信:数据只能单向传送。

②半双工通信:通信是双向的,但每一时刻,数据流通的方向是单向的。

③全双工通信:允许数据同时在两个方向流动,即通信双方的数据发送和接收是同时进行的。

4、异步串行通信/同步串行通信①异步串行通信:异步串行通信采用如下的帧结构:起始位+ 8位数据位+ 停止位或起始位+ 9位数据位+ 停止位其中:起始位为低电平,停止位为高电平。

优点:硬件结构简单缺点:传输速度慢②同步串行通信:在同步通信中,发送方在数据或字符开始处就用同步字符(常约定1~2个字节)指示一帧的开始,由时钟来实现发送端和接收端同步,接收方一旦检测到与规定的同步字符符合,下面就连续按顺序传送若干个数据,最后发校验字节。

见下图:5、串行通信过程与UART基本的计算机异步串行通信系统中,两台计算机之间通过三根信号线TxD、RxD和GND连接起来,TxD与GND构成发送线路,RxD与GND构成接收线路。

单片机课程设计实验---单片机间串行通信

单片机课程设计实验---单片机间串行通信

《单片机原理及应用》课程设计报告课程设计题目:单片机间串行通信原理专业班级:2012级电子信息科学与技术学生姓名:罗滨志学号:120802010051成绩:2014 年12 月 27日目录摘要 (1)1 设计任务 (1)1.1 功能要求 (2)1.2 总体方案及工作原理 (2)2 系统硬件设计 (2)2.1 器件选择 (2)2.1.1主要器件的型号 (2)2.1.2 AT89C51 (3)2.1.3键盘输入电路 (5)2.1.4晶振电路方案 (6)2.1.5数码管显示 (6)2.1.6复位电路方案 (6)2.2 硬件原理图 (7)3 系统软件设计 (7)3.1基本原理 (8)3.2系统软件设计流程图 (8)3.3 按键程序设计 (9)3.3.1串口通信程序设计: (10)3.3.2 显示程序设计: (10)3.4软件清单 (10)3.4.1发送端程序 (10)3.4.2接收端程序 (9)4实验步骤 (14)4.1实验程序调试 (14)4.1.1发送端程序调试 (14)4.1.2接收端程序调试 (15)4.2实验仿真 (16)5设计总结 (17)6参考文献: (17)摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

而AT89C51单片机是各单片机中最为典型和最有代表性的一种,本设计是基于MCS51系列单片机中AT89C51所设计的一种具有一个全双工的串行通信口,可以实现单片机与单片机之间点对点串行通信,主从通信以及上,下位机互相通信等。

本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,由单片机与键盘控制数码管的显示,修改设置LED显示由按键开关控制,通过硬件电路制作以及软件程序的编制,设计制作一个简单的单片机间串行通信。

关键词:单片机 AT89C51 串行通信1 设计任务单片机间串行通信,是工业自动化、智能终端、通信管理等领域传统且重要的通讯手段。

单片机实验四串行口应用实验

单片机实验四串行口应用实验

实验四串行口应用实验一、实验目的掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

二、实验内容1、重复发送同一个数据,观察TXD端输出的波形。

将8031串口设为工作方式1,即10位异步收发,发送时钟由计数器控制;计数器T1设为定时工作,工作方式2,即自动重装8位计数器;波特率取1000 bps,不加倍;单片机采用6MHZ晶振。

计数初值的计算:TH1=256-[(1+0)*fosc]/(12*32*BPS) P3.1复用为串行发送端TXD,将其接至示波器,观察输出波形。

注意观察8位数据位前后的起始位和停止位。

(1)电路图:(2)程序:ORG 0000HAJMP MAINORG 0040HMAIN: MOV R0,#76H ;设置发送的数据位76H即01110110MOV TMOD,#20H ;设置定时器1为工作方式2MOV TL1,#0F0H ;设置计数初值,使得波特率为1000bpsSETB TR1 ;启动T1MOV PCON,#0 ;SMOD=0MOV SCON,#40H ;设置串口为工作方式1LOOP: MOV A,R0 ;向SBUF装入待发送数据MOV SBUF,AL0: JNB TI,L0 ;判断发送数据完毕CLR TI ;发送完毕,清零TIMOV TH1,#0F0H ;重装初值SJMP LOOP ;重复发送END(3)仿真图:分析:如波形图所示,发送的数据位为1001100,起始位为0,停止位为1.2、自发自收。

将代码段中定义的10个数据0~9,通过串口发送和接收,将接收到的数据送P1口以LED灯显示。

(采用中断方式)(1)程序:ORG 0000HAJMP STARTORG 0023HLJMP LOORG 0030HSTART:MOV SCON,#50H ;设置串口为工作方式1,允许接收数据MOV TMOD,#20H ;设置定时器T1为工作方式2MOV TH1,#0F0H ;设置计数初值,使得波特率为1000bps MOV TL1,#0F0HSETB TR1 ;启动定时器T1SETB EA ;开中断SETB ET1 ;开串口中断LOOP:MOV DPTR,#TAB ;设置取数指针MOVC A,@A+DPTR ;取数赋给AMOV SBUF,A ;将待传送的数据放在缓冲器中MOV P1,A ;送至P口显示LO: JNB TI,LO ;判断是否发送完毕CLR TI ;发送完毕,清零TILCALL DELAYAJMP LOOP ;循环发送数据TT0: MOV TH1,#0F0H ;重置初值RETIORG 1000HDELAY: MOV R0,#0F0HDL2:MOV R1,#07DHDL1:NOPNOPDJNZ R1,DL1DJNZ R0,DL2RETORG 0F00H ;定义要发送的数据段TAB:DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,0AHEND(2)仿真结果:分析:发送的数据内容可在P口所接的LED灯上显示,如图当前发送的是08H,显示的是00001000。

单片机串口通信实验

单片机串口通信实验

滨江学院单片机原理及应用题目—单片机串口通信实验院系_______ 子工程系_________专业________ 信工程___________ 学生姓名****************二0—二年六月十日单片机串口通信实验摘要:CPU 与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。

串行通信是指数据逐位顺序串行传送的通信方式。

串行通信只需一对传输线,并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本。

关键字:51单片机,串口通信,全双工正文:MCS 一51 系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收和发送器,也可作为同步移位寄存器用。

该串行口有 4 种工作模式。

片内的定时器/计数器可用作波特率发生器。

接收、发送均可工作在查询方式或中断方式。

MCS 一51 系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲器SBUF,对外也有两条独立的收、发信号线RxD (P3.0 )和TxD( P3.1 )。

可以同时发送、接收数据,实现全双工传送。

发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不能读出, 接收缓冲器只能读出不能写入。

两个缓冲器占用同一个端口地址( 99H )。

具体对哪一个缓冲器进行操作,取决于所用的指令是发送还是接收。

一、实验1 、实验目的掌握单片机串行口工作原理,单片机串行口与PC机的通信工作原理及编程方法。

2、实验器材微机、串口通讯软件、程序烧录软件、面包板一块、芯片一块、电焊等3、实验内容实验板上有RS-232 接口,将该接口与PC 机的串口连接,可以实现单片机与PC 机的串行通信,进行双向数据传输。

本实验要求当PC 机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC 机上显示,并用串口助手工具软件进行调试。

4、实验原理51 单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。

【大学】单片机实验 串行通信实验

【大学】单片机实验 串行通信实验
.
实验四 串行通信实验
一、实验目的和要求:
1、熟练掌握串行口的工作原理 2、掌握单片机串行口的工作方法和串行口控制寄存 器的编程使用方法 3、掌握串行口中断的使用方法
.
二、实验内容:
编写一段程序,利用PC机和单片机的串行口相连接进行双工异 步通信,采用方式1,波特率为9600bps。利用PC机向单片机发送数据,单 片机在接收到该数据后将数据保存并返回给PC机。编写程序,调试运行, 数据收发正确。
.
三、实验步骤:
1、KEIL环境下编写程序 利用实验一的过程进行程序的编写、编译操作,然后进行调试,并生
成HEX文件。注意:发送和接收语句 中断子函数的编写方法,另外注意在中断服务函数中对TI和RI的判断和TI、RI 清零。
.
2、用PROTEUS软件编辑电路原理图
.
3、虚拟串口软件 添加COM3和COM4一对虚拟口。
.
单片机端注意COM口的选择和波特率的设置
.
4、串口调试助手
PC机端注意COM口的选择和波特率的设置与单片机一致。另外注意将 “十六进制发送”和“十六进制显示”选项选中。
.
在PROTUES软件里启动单片机,在串口调试助手的发送窗口输入 数据,观察接收窗口的数据。

单片机串行通信实验报告材料实验要求、原理、仿真图及例程

单片机串行通信实验报告材料实验要求、原理、仿真图及例程
case 1: D1=1;while(1){D3=~D3;delay_ms(150);if(debouncing()){break;}}break;//甲机D1灯灭状态,D3灯不断闪烁,直到有新的按键按下为止
case 2: D3=1;while(1){D1=~D1;D3=~D3;delay_ms(150);if(debouncing()){break;}}break;//甲机D1、D3灯一起不断闪烁,直到有新的按键按下为止
*******************************************************************
上图所示按键第三次按下,控制甲机发送字符'C',并同时闪烁D1和D3灯,与此同时,乙机接收甲机发来的字符'C',并同时闪烁D2、D4灯。图中所示的是LED灯一闪一灭时的亮状态,灭状态的截图此处省去。
《嵌入式系统原理与实验》实验指导
实验三
一、实验目的和要求
1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。
2.掌握Keil与Proteus的联调技巧。
3.掌握串行通信在单片机系统中的使用。
4.掌握调度器设计的基础知识:函数指针。
二、实验设备
1.PC机一套
2.Keil C51开发系统一套
****************************************************************
上图所示虚拟终端相关参数设置应该注意的地方,虚拟终端相关参数设置应该与串口的相关参数设置一致,也应该与C51编程中串口初始化时设定的波特率的数值一致,即都应该是2400bps。
case 3: D1=1;D3=1;break;//甲机D1、D3灯均处于灭状态
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四基于单片机的串行通信一、 实验目的1.了解串行通信的基本知识;2.掌握用单片机串行口实现串行通信的方法。

二、 实验器材微机、示波器、万用表、电源、AEDK仿真开发系统,面包板一块,MAX202C芯片一块,电容、电阻、导线若干。

三、 实验原理此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见本讲义实验七。

1.串行通信的异步和同步传送方式CPU与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。

通信的基本方式可分为并行通信和串行通信两类。

并行通信是指数据各位同时并行传送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图4.1所示)。

在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。

但当多位数据远程传输时,传输线路的开销就成为突出问题。

由于串行通信只需一对传输线,并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本。

一般而言,串行通信的传送速度明显低于并行通信。

(a)并行通信 (b)串行通信图4.1 通信方式示意图串行通信分为异步传送和同步传送两类。

异步通信是一种字符再同步的通信方式,而同步通信是靠识别同步字符来实现数据的发送和接收的。

(1) 异步传送方式异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的内部的传送是同步的)。

各字符的传送依发送方的需要可连续,也可间断。

②通信双方用各自的时钟源来控制发送和接收。

③通信双方按异步通信协议传输字符。

异步通信格式如图4.2所示,每个字符由起始位、数据位、奇偶校验位和停止位四个部分顺序组成。

这四个部分组成异步传输中的一个传输单元,即字符帧。

z 起始位:为“0”信号,占1位。

起始位的作用有两个:①表示一个新字符帧的开始。

即线路上不传送字符时,应保持为“1”。

接收端检测线路状态连续为“1”后或在停止位后有一个“0”,就知道将发来一个新的字符帧。

②用以同步接收端的时钟,以保证后续的接收能正确进行。

z 数据位:紧接于起始位后面,它可以占5、6、7或8位不等,数据的位数依最佳传送速率来确定。

如所传数据为ASCII 码字符,则常取7位。

数据位传输的顺序,总是最低位(LSB )D 0在先。

z 奇偶校验位:在数据位之后,占1位。

它用来检验信息传送否有错。

它的状态常由发送端的奇偶校验电路确定。

奇偶位的值取决于校验类型,若为偶校验,则数据位和校验位中逻辑“1”的个数必须是偶数;若为奇校验,则数据位和校验位中逻辑“1”的个数必须是奇数。

也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送过程是否有错。

z 停止位:用“1”来表征一个字符帧的结束。

停止位可以占1位、1.5位或2位不等。

接收端收到停止位时,表明这一字符已接收完毕,也表明下一个字符帧可能到来。

若停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态。

图4.2既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。

串行通信的一个重要指标是波特率。

它定义为每秒钟传送二进制数码的位数(亦称波特率),以“位/秒”(bps )为单位。

在异步通信中,波待率=(每个字符帧的位数)×(每秒传送的字符数)常用的波特率有600、1200、2400、4800、9600、19200(bps )等。

由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会产生接收错误。

时钟频率应比波特率高,时钟频率与波特率的比一般选16:1或者64:1。

采用较高频率的时钟,在一位数据内就有16或64个时钟,就可以保证捕捉正确的信号。

空闲位 起校停起校停空闲位 第n 个字符帧 第n +1个字符帧图4.2异步通信的字符帧格式因此,在异步通信中,收发双方必须事先约定两件事:一是规定字符帧格式,即规定字符各部分所占的位数,是否采用校验,以及校验的方式等;二是规定所采用的波特率以及时钟频率和波特率间的比例关系。

异步传送由于不传送同步时钟脉冲,所以设备比较简单,实现起来方便,它还可根据需要连续地或有间隙地传送数据,对各字符间的间隙长度没有限制。

缺点是在数据字符串中要加上起同步作用的起始位和停止位,降低了有效数据位的传送速率,仅适合于低速通信的场合。

(2) 同步传送方式同步传送方式以许多字符或许多位组成的数据块为传输单位连续地传送数据。

在通信开始以后,发送端连续发送字符,接收端也连续接收字符,直到一个数据块传送结束。

同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,这就提高了数据传送的效率,其符号格式如图4.3所示。

同步通信可以分为单同步字符方式和双同步字符方式,图4.3(a)为双同步字符方式,图4.3(b)为单同步字符方式,同步字符之后是连续的数据块。

同步字符可以由用户约定,当然也可以采用ASCII码中规定的SYN代码,即16H。

按同步方式通信时,在发送时要插入同步字符,接收方检测到同步字符时,即准备开始接收,因此,硬件设备需有插入同步字符和相应的检测手段,设备较复杂。

在同步传送时,无论接收或发送,都要求统一时钟。

为了保证接收正确无误,发送方除了传送数据外还要把时钟信号同时传送出去。

同步传送的优点是传送速率较高,可达56K波特或更高。

图4.3同步传送符号格式2.MCS-51系列单片机的串行通信接口MCS一51系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收和发送器,也可作为同步移位寄存器用。

该串行口有4种工作模式(详见下文2.6)。

片内的定时器/计数器可用作波特率发生器。

接收、发送均可工作在查询方式或中断方式。

2.1串行通信接口结构MCS一51系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲器SBUF,对外也有两条独立的收、发信号线RxD(P3.0)和TxD(P3.1)。

可以同时发送、接收数据,实现全双工传送。

发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。

两个缓冲器占用同一个端口地址(99H)。

具体对哪一个缓冲器进行操作,取决于所用的指令是发送还是接收。

接收是双缓存的,以避免在接收下一帧数据之前,CPU未能及时响应接收中断, 未把上一帧数据取走而产生两帧数据重叠的问题。

而对于发送器,,因为发送时CPU是主动的,不会产生写重叠的问题,所以不需要双缓存。

与串行通信口有关的寄存器有多个,除SBUF之外,还有SCON、PCON、IE和定时器/计数器,用校验方式进行通信,有时也会用到程序状态字寄存器PSW。

2.2串行口控制寄存器SCONSCON用于控制和监视串行口的工作状态,定义如下:表4.2 SCON 寄存器(MSB) (LSB)SM0 SM1 SM2 REN TB8 RB8 TI RIz SM0和SM1:串行口工作模式选择位,对应四种模式,见表4.3。

z SM2:在模式0时,SM2不用,应设置为0。

在模式1时,SM2一般也应设置为0。

若SM2=1,则只有收到有效停止位才会激活RI,并自动发出串行口中断请求(设中断是开放的),若没有接收到有效停止位,则RI清零。

在模式2或模式3下,SM2的设置与字符帧第九位的作用有关。

①在第九位用作奇偶位的情形,应置SM2=0。

②在第九位用于表示是地址帧还是数据帧的多机通信情形,若SM2=1和RB8=1时,RI不仅被激活,而且可以向CPU请求中断;若SM2=0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活。

SM2在多机通信中的使用方法,详见本讲义P.34的有关主从式多机通信过程的说明。

表4.3 串行口工作模式选择SM0 SM1 模 式 功 能 波 特 率0 00 11 0 1 1 0123同步移位寄存器8位UART9位UART9位UARTf OSC/12可变f OSC/64或f OSC/32可变z REN:允许接收控制位,由软件置位或清除。

REN=1则允许接收, REN=0, 禁止接收。

z TB8:该位是模式2和3中要发送的第九位数据。

在许多通信协议中, 该位是奇偶位,可以按需要由软件置位或清除。

在多机通信中, 该位用于表示是地址帧还是数据帧。

z RB8:该位是模式2和3中已接收的第九位数据(可能是奇偶位, 或是地址帧/数据帧标识位)。

在模式1中, 若SM2=0, RB8是已接收的停止位。

在模式0中, RB8未用。

z TI:发送中断标志。

在模式0中, 在发送完第8位数据时, 由硬件置位;在其他模式中, 在发送停止位之初, 由硬件置位,申请中断, CPU响应中断后, 发送下一帧数据。

在任何模式中, 都必须由软件清除TI.z RI:接收中断标志。

在模式0中, 接收第8位数据结束时, 由硬件置位;在其他模式中, 在接收停止位的半中间, 由硬件置位,申请中断, 要求CPU取走数据。

但在模式1中, SM2=1时, 若未接收到有效的停止位, 则不会对RI 置位。

在任何模式中,都必须由软件清除RI.2.3 电源控制寄存器PCON 中的波特率倍增控制位SMODPCON 中有与串行口通信波特率有关的控制位SMOD ,SMOD =1时波特率加倍。

2.4 允许中断寄存器IE 的串行口中断控制位ESIE 中的ES 位为串行口中断控制位,ES=1且总中断允许位EA=1时,允许串行口中断。

2.5 定时器/计数器1作波特率发生器在模式1和模式3下,其中f osc 为晶振频率, TH1为定时器1的重装载值.,定时器/计数器1工作于自动重装载模式, 即模式2。

定时器1中断应禁止。

2.6 串行口的工作模式串行口的四种工作模式中,模式1、2、3用于通信,模式0主要用于I/O 口扩展。

模式0在模式0状态下,串行口为同步移位寄存器方式,其波特率固定为f osc /12。

RxD (P3.0)端输入/输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。

发送、接收的是8位数据,低位在先。

模式1串行口工作在模式1,为8位异步通信口,即一字符帧由10位组成:1位起始位、8位数据位和1位停止位。

模式1发送图4.4模式1发送时序图4.4示意模式1的发送时序。

模式1的发送是在发送中断标志TI=0时,由一条写SBUF 的指令启动发送控制器的SEND 端,使SEND=0。

启动发送后,串行口能自动地插入一()125612322TH f osc SMOD−××=()计数器溢出速率定时器波特率/322×=SMOD位起始位0,在字符结束前插入一位停止位1,然后在发送移位脉冲SHIFT作用下,依次由TxD线上发出。

一个字符发完之后,自动维持TxD线的信号为1,在8位数据发出之后,也就是在停止位开始时,使TI置1,用以通知CPU可以发出下一个字符。

相关文档
最新文档