单片机串口通信实验报告
单片机串口通信实验报告

单片机串口通信实验报告Abstract本实验旨在通过单片机串口通信的方式,实现两个或多个单片机之间的数据传输与交互。
通过该实验,旨在加深对串口通信的理解,以及掌握单片机串口通信的配置与应用。
1. 实验背景在现代电子产品中,单片机广泛应用于各个领域。
而串口通信作为一种常见的单片机通信方式,被广泛使用。
通过串口通信,单片机可以与其他设备或单片机进行数据传输和通信。
2. 实验目的本实验的目的如下:- 了解串口通信的基本原理和工作方式;- 掌握单片机串口通信的配置方法;- 实现两个或多个单片机之间的数据传输与交互。
3. 实验原理3.1 串口通信的基本原理串口通信通过发送和接收两个引脚实现数据的传输。
典型的串口通信包含一个发送引脚(Tx)和一个接收引脚(Rx)。
发送端将数据通过发送引脚逐位发送,接收端通过接收引脚逐位接收。
3.2 单片机串口通信的配置在单片机中进行串口通信配置,需要设置波特率、数据位、停止位和校验位等参数。
波特率用于控制数据的传输速率,数据位决定发送和接收的数据位数,停止位用于标识数据的停止位,校验位用于检测数据传输的错误。
4. 实验步骤4.1 硬件准备(描述实验所需硬件的准备,例如单片机、串口模块等)4.2 软件配置(描述实验所需软件的配置,例如开发环境、编译器等)4.3 单片机串口通信程序编写(描述如何编写单片机串口通信程序,包括发送和接收数据的代码)4.4 程序下载与调试(描述如何下载程序到单片机,并进行调试)5. 实验结果与分析(描述实验的结果,并进行相应的分析和解释)6. 实验总结通过本实验,我深入了解了串口通信的基本原理和工作方式。
通过编写单片机串口通信程序,实现了两个单片机之间的数据传输与交互。
在实验过程中,我掌握了单片机串口通信的配置方法,并解决了一些可能出现的问题。
通过实验,我加深了对单片机串口通信的理解,并提升了自己的实践能力。
参考文献:(列出参考文献,不需要链接)致谢:(感谢相关人员或机构对实验的支持与帮助)附录:(附上相关的代码、电路图等附加信息)以上为单片机串口通信实验报告,通过该实验,我掌握了串口通信的基本原理和工作方式,以及单片机串口通信的配置与应用方法。
单片机串行通信实验报告

实验六串行通信实验报告班级:学号:姓名:教师:一、双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。
我们U1为甲机,U2为乙机。
甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。
电路如图1所示。
要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。
实验电路图:1、C源程序清单甲机(U1)代码:#include<STC12C5A60s2.h>#define uchar unsigned charvoid delay(uchar i);void send(uchar temp);void init(void);void main(void){init();delay(200);while(1){send('^');send(1);send(2);send(1);send(3);send(2);send(2);send(3);send(1);}}/***********初始化***********/void init(void){SCON=0x40; //串口模式1 只发送不接收 TMOD=0x20; //T1 工作模式2TH1=0xf4; //波特率2400TL1=0xf4;PCON=0x00; //不加倍 SMOD=0TI=0;TR1=1; //开定时中断}/*********发送函数**********/void send(uchar temp){SBUF=temp;while(TI==0);TI=0;delay(50);}/**********延时函数**********/void delay(uchar i){unsigned int j;for(i;i>0;i--)for(j=0;j<100;j++);}乙机(U2)代码:#include<STC12C5A60s2.h>#define uchar unsigned char#define uint unsigned intvoid init(void);void delay(uchar t);void xianshi(void);uchar code distable[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管段码uchar code wi[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};uchar tab[9] = {0,0,0,0,0,0,0,0,0};uchar i=0,temp;uint a,b,c,d,e,f,g,h;void main(){init();while(1){xianshi();}}/////////////初始化///////////////void init(void){PCON = 0x00; //不加倍SMOD=0SCON = 0x50; //设置串口方式1且允许串口接收 REN=1TMOD = 0x20; //设置T1为方式2TH1 = 0xf4;TL1 = 0xf4; //设置波特率2400TR1 = 1; //开启定时器1ES = 1; //允许串行口中断EA = 1; //允许全局中断}////////////串口中断接收程序////////////void receive() interrupt 4{temp=SBUF;while(RI==0);RI=0;if(temp=='^')temp=0;tab[i]=temp;i++;if(i ==9){i=0;a=tab[1];b=tab[2];c=tab[3];d=tab[4];e=tab[5];f=tab[6];g=tab[7];h=tab[8];}}/////////////数码管显示/////////////void xianshi(void){uchar i,dm,wx;//m1:m0 00=标准; 01=推挽; 10=输入; 11=开漏输出P1M1 = 0X00;P1M0 = 0Xff;P2M1 = 0X00;P2M0 = 0Xff; //设定P1,P2推挽输出while(1){for(i=1;i<9;i++){//ram[i]=tab[i];dm=distable[tab[i]]; //取显示段码wx=wi[i-1]; //取位选码P1=0x00; //关显示P2=dm; //段码赋给P2口P1=wx; //点亮位选的那个数码管delay(1) ; //延时}}/*uchar k,ram[8];ram[0] = a;ram[1] = b;ram[2] = c;ram[3] = d;ram[4] = e;ram[5] = f;ram[6] = g;ram[7] = h;for(k=0;k<8;k++){P2=distable[ram[k]];P1=wi[k];P2=0x00;delay(1);}*/}//////////////延时函数/////////////void delay(uchar t ){uchar x,y,z;for(x=t;x>0;x--)for(y=25;y>0;y--)for(z=100;z>0;z--);}2、仿真结果3、问题分析在数码管显示这块,刚开始是这样写的在proteus上仿真的时候是没有任何问题的,但是后来在实验板上数码管显示特别暗,几乎看不出来有显示数字,想了想可能是没有加推挽输出,然后就将推挽输出代码加入,然后重新下载,但是结果和之前没什么不同。
单片机双机串行实验报告

单片机双机串行实验报告实验报告:单片机双机串行通信实验一、实验目的本实验旨在通过单片机实现双机间的串行通信,包括数据的发送和接收,并利用这种通信方式完成一定的任务。
二、实验原理1.串行通信:串行通信是将数据一个个位发送或接收的方式。
数据通过一个线路逐位发送或接收,可以减少通信所需的线路数目。
2. UART串口通信:UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的简称,是一种最常用的串口通信方式,通常用于单片机与计算机、单片机与单片机之间的通信。
3.串口模块:串口模块是负责将数据转变为串行传输的硬件模块,包括发送端和接收端。
通过设置波特率、数据位、校验位和停止位等参数,可以实现数据的可靠传输。
4.单片机串口通信:单片机内部集成了UART串口通信接口,只需要通过相应的寄存器配置,可以实现串口通信功能。
5.双机串行通信:双机串行通信是通过串口将两台单片机进行连接,一台单片机作为发送端,负责将数据发送出去;另一台单片机作为接收端,负责接收并处理发送的数据。
三、实验器材与软件1.实验器材:两台单片机、USB转TTL模块、杜邦线若干。
2. 实验软件:Keil C51集成开发环境。
四、实验内容与步骤1.配置发送端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的TXD端连接到单片机的P3口,将GND端连接到单片机的地线。
(2)在Keil C51环境下创建新工程,编写发送端程序。
(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口发送中断。
(4)循环发送指定的数据。
2.配置接收端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的RXD端连接到单片机的P3口,将GND端连接到单片机的地线。
(2)在Keil C51环境下创建新工程,编写接收端程序。
(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口接收中断。
单片机串口通信实验报告

单片机串口通信实验报告
实验目的:
1.掌握单片机串口通信的基本原理和实现方法;
2.学会使用串口模块与上位机进行数据交互;
3.进一步巩固单片机的编程与调试能力。
实验原理:
实验器材:
1.STC89C52单片机开发板1块
2.PC机一台
3.串口线1根
4. 上位机调试软件(如Tera Term) 1个
实验步骤:
1.将STC89C52单片机开发板与PC机通过串口线连接起来;
2. 使用Keil等编程软件编写单片机程序,实现串口通信功能;
4.在PC机上打开上位机调试软件,设置波特率和数据位;
5.测试通信功能,查看上位机接收到的数据是否正确。
实验结果:
经过调试和测试,实验结果如下:
1.单片机程序正常运行,可以通过串口与PC机进行数据交互;
2.上位机调试软件能够正确接收到单片机发来的数据,并显示在界面上;
实验总结:
通过本次实验,我掌握了单片机串口通信的基本原理和实现方法。
在
实验中,我学会了使用串口模块与上位机进行数据交互,并进一步提高了
单片机的编程与调试能力。
这对于今后的电子设计与开发工作将具有很大
的帮助。
同时,在实验过程中,我也遇到了一些问题和困难,如串口连接错误、波特率设置错误等,但通过仔细检查和调试,最终我成功解决了这些问题。
在以后的学习和工作中,我将进一步熟悉串口通信的相关知识,并通
过实际项目的实践,提升自己的实际操作能力和解决问题的能力。
我相信,通过不断的学习和实践,我会越来越熟练地掌握串口通信技术,为以后的
工作打下坚实的基础。
双单片机串口通信实验

单片机原理及应用实验报告实验项目名称: 双单片机串口通信实验实验日期: 2013.11.10 实验成绩:一、实验目的二、掌握单片机串口通信的设计方法, 了解双单片机通信的原理。
三、实验器材Keil uvision2软件 Proteus仿真软件单片机AT89C51 CRYSTAL 11.0592MHZ 数码管电解电容CAP--ELEC 电阻RES 瓷片电容CAP 22pF四、实验内容编写发送程序, 接收程序。
发送程序:ORG 0000HLJMP TRSORG 0030H TRS: MOV R7,#10H MOV R0,#40HMOV A,#0TRS1: MOV @R0,AINC AINC R0DJNZ R7,TRS1MOV SCON,#90HMOV PCON,#80HMOV R0,#40HMOV R2,#10H LOOP: MOV A,@R0MOV C,PMOV TB8,CMOV SBUF,AMOV P1,ALCALL DELAY WAIT: JBC TI,CONT SJMP WAIT CONT: JBC RI,RESJMP CONTRE: MOV A,SBUFCJNE A,#00H,LINC R0DJNZ R2,LOOPL: SJMP LDELAY: MOV R7,#3 DD1: MOV R6,#0FFH DD2: MOV R5,#0FFH DJNZ R5,$DJNZ R6,DD2DJNZ R7,DD1RETEND接收程序:ORG 0000HLJMP REVORG 30HREV: MOV SCON,#90H MOV PCON,#80HMOV R7,#10H LOOP: JBC RI,READSJMP LOOP READ: MOV A, SBUFJB PSW.0,ONEJB RB8,RIGHTSJMP RIGHT ONE: JB RB8,ERR RIGHT: SWAP AMOV P1,ALCALL DELAYMOV SBUF,#00HDJNZ R7,LOOPL: SJMP LERR: MOV P1,#0FFH LCALL DELAYMOV SBUF,#0FFHDJNZ R7,LOOP LL: SJMP LLDELAY: MOV R7,#3 DD1: MOV R6,#0FFH DD2: MOV R5,#0FFH DJNZ R5,$DJNZ R6,DD2 DJNZ R7,DD1 RET END实验参考电路:五、实验步骤打开Keil程序, 执行菜单命令“project”->"new project"创建“双单片机串口通信”项目, 并选择单片机型号为AT89C51.执行菜单命令“File”->"new"创建文件, 输入源程序, 保存为“双单片机串口通信.A51”.在“project”栏的File项目管理窗口中点击文件组, 选择: "Add File to Group 'Source Group1'"将源程序“双单片机串口通信.A51”添加项目中。
单片机实验报告-串口通信

单片机实验报告姓名___ _ 学号___一、实验项目单片机串行口通讯实验二、实验要求利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。
三、实验目的1.掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。
2.了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。
3.学习串口通讯的中断方式的程序编写方法。
四、实验说明1、8051、80C196 的RXD、TXD接线柱在POD51/96 仿真板上,8088/86的TXD、RXD在POD8086仿真板上的8251芯片旁边。
2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。
也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。
3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。
可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。
可以用实验仪上的逻辑分析仪采样串口通信的波形五、程序框图六、源程序发射程序:org 0000hljmp mainorg 0023hljmp com_in ;串行口中断服务子程序入口org 1000hmain: mov sp,#50h ;设置堆栈指针mov dptr,#7f00h ;81c55初始化mov a,#03hmovx @dptr,amov tmod,#20h ;设置定时器T1工作方式为方式2mov th1,#0f4h ;设置定时器T1计数初值mov tl1,#0f4hmov pcon,#80h ;波特率加倍setb tr1 ;打开定时器mov scon,#40h ;设置串行口工作方式为方式1,8位异步收发,波特率可变mov ie,#90h ;打开中断允许寄存器,采用中断方式发送数据clr ti ;关闭发送中断标志位T1loop: acall key1 ;调用读取键值子程序mov r0,a ;键值存入R0setb ti ;开发送中断标志位T1ljmp loopcom_in: clr ti ;关闭发送中断标志位T1mov sbuf,r0 ;发送数据retikey1: acall ks1 ;调用判定有无键闭合子程序jnz lk1 ;有键闭合,跳转lk1acall dir ;无键闭合,调用显示子程序ajmp key1lk1: acall dir ;可能有键闭合,延时24msacall diracall ks1 ;调用判定有无键闭合jnz lk2 ;经去抖动,判断有键闭合跳转lk2acall dir ;无键闭合,调用延时子程序ajmp key1lk2: mov r2,#0feh ;列选码送到R2mov r4,#00h ;r4为列号计数器lk4: mov dptr,#7f01h ;列选码送到PA口mov a,r2movx @dptr,amov dptr,#7f03Hmovx a,@dptr ;读PC口jb acc.0,lone ;0行线为高电平,无键闭合,跳转lone,转判1行mov a,#00h ;0行有键闭合,首键号0→Aajmp lkp ;跳转lkp,计算键号lone: jb acc.1,ltw0 ;1行线为高电平,无键闭合,跳转ltwo,转判2行mov a,#06h ;1行有键闭合,首键号8→Aajmp lkp ;跳转lkp,计算键号ltw0: jb acc.2,lthr ;2行线为高电平,无键闭合,跳转lthr,转判3行mov a,#12h ;2行有键闭合,首键号10H→Aajmp lkp ;跳转lkp,计算键号lthr: jb acc.3,next ;3行线为高电平,无键闭合,跳转next,准备下一列扫描mov a,#18h ;3行有键闭合,首键号18H→Alkp: add a,r4 ;计算键号,即行首键号+列号=键号push a ;键号进栈保护lk3: acall dir ;调用显示子程序,延时6msacall ks1 ;调用判定有无键闭合子程序,延时6msjnz lk3 ;判定键释放否,未释放,则循环pop a ;键已释放,键号出栈→Aretnext: inc r4 ;列计数器加1,为下一列扫描做准备mov a,r2 ;判定是否已扫到最后一列jnb acc.5,knd ;键扫描已到最后一列,跳转knd,重新扫描rl a ;键未扫到最后一列,位选码左移一位mov r2,a ;位选码→R2ajmp lk4knd: ajmp key1ks1: mov dptr,#7f01h ;判定有无键闭合子程序,全0→扫描口(PA口)mov a,#00h ;即列线全为低电平movx @dptr,amov dptr,#7f03h ;PC口地址movx a,@dptr ;从PC口读行线状态cpl a ;行线状态取反,如无键按下,则A中内容为0anl a,#0fh ;屏蔽无用的高四位ret接受程序:org 0000hljmp mainorg 0023hljmp com_inorg 1000hmain: mov sp,#50h ;设置堆栈指针mov 60h,#0 ;显示缓冲区初始化mov 61h,#0mov 62h,#0mov 63h,#0mov 64h,#0mov 65h,#0mov dptr,#7f00h ;81c55初始化mov a,#03hmovx @dptr,aacall dir ;调用显示子程序mov tmod,#20h ;设置定时器T1工作方式为方式2mov th1,#0f4h ;设置定时器T1计数初值mov tl1,#0f4hmov pcon,#80h ;波特率加倍setb tr1 ;打开定时器mov scon,#50h ;设置串行口工作方式为方式1,允许串行接受位REN置1 mov ie,#90h ;打开中断允许寄存器,采用中断方式发送数据com_in: clr ri ;接收中断标志位清0mov a,sbuf ;接收数据retiloop: mov r1,a ;键值转换为显示数据mov r0,#0f0hmov a,r1anl a,r0mov 61h,a ;61h对应的数码管显示大于16的数mov r2,#0fhmov a,r1anl a,r2mov 60h,a ;60h对应的数码管显示小于16的数acall dirhere: sjmp $dir: mov r0,#60h ;置缓冲器指针初值mov r3,#01h ;位选码的初值送R3mov a,r3ld0: mov dptr,#7f01h ;位选码→PA口movx @dptr,ainc dptr ;指向PB口mov a,@r0 ;显示数据送到Aadd a,#0dh ;加偏移量movc a,@a+pc ;根据显示数据来查表取段码movx @dptr,a ;段码→PB口acall delay ;延时1ms,即该位显示1msinc r0 ;显示数据缓冲区指针指向下一个数据单元mov a,r3 ;位选码送入A中jb acc.5,ld1 ;判断是否扫描到最右边的LED,如到,则返回rl a ;位选码向左移一位,准备让显示位右边的下一位LED亮mov r3,a ;位选码送r3中保存ajmp ld0ld1: rettab: db 3fh,06h,5bh,4fh,66h,6dh ;共阴极LED段码表db 7dh,07h,7fh,6fh,77h,7chdb 39h,5eh,79h,71h,73h,3ehdb 31h,6eh,1ch,23h,40h,03hdb 18h,00hdelay: mov r7,#02h ;延时1ms子程序D1: mov r6,#0FFHD2: djnz r6,D2djnz r7,D1ret七、实验小结单片机实验报告姓名:毛幸林班级:2010138学号:201013803专业:电子信息工程。
单片机串行通信实验报告

单片机实验报告(三)实验名称:串行通信姓名:张昊学号: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.准备实验所需材料和工具2.配置单片机与串口的连接3.编写单片机程序,完成串口通信的初始化设置4.设计并实现发送和接收数据的功能5.调试程序,验证通信是否正常实验结果与分析•描述实验过程中的观察和测量结果•对实验结果进行分析和解释实验总结•总结实验的目标、方法和结果•分析实验中可能存在的问题和改进的空间•强调实验对于学习和应用单片机串口的重要性参考资料•列出参考过的相关教材、论文或网络资源以上是关于“单片机串口应用实验报告”的相关文章,希望对您有所帮助。
抱歉,以上是一份简要的实验报告的大纲,以下是对每个部分的详细描述:引言在引言部分,可以简要介绍单片机串口应用实验的背景和意义。
可以提到单片机串口通信在电子产品中的广泛应用,以及为什么学习和掌握串口通信对于创作者和工程师来说非常重要。
实验原理在实验原理部分,可以详细介绍串口的工作原理和基本概念。
可以解释串口是如何通过串行传输数据的,以及常见的串口通信协议。
还可以介绍单片机与串口通信的原理和方法,包括如何将单片机与电脑或其他设备连接进行通信。
实验步骤在实验步骤部分,可以按照以下方式列出实验步骤: 1. 准备实验所需材料和工具:列出实验所需的单片机模块、串口模块、电脑等设备。
2. 配置单片机与串口的连接:描述如何将单片机与串口模块连接起来。
3. 编写单片机程序:详细介绍如何编写单片机程序,并完成串口通信的初始化设置,包括波特率、数据位、校验位等。
4. 设计并实现发送和接收数据的功能:介绍如何设计程序使单片机能够发送和接收数据,可以包括简单的数据收发、数据加工处理等。
5. 调试程序:描述如何进行程序调试,验证通信是否正常,可以介绍使用示波器、串口调试助手等工具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息工程学院实验报告
课程名称:单片机原理及接口
实验项目名称:串口通信实验实验时间: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构成接收线路。
一台计算机的TxD、RxD线分别与
另一台计算机的RxD、TxD线相连。
由于在串行通信过程中的并串转换、串并转换、线路检测、采样判决、组帧、拆帧、发送和接收等操作需消耗CPU大量时间,以至CPU无法处理其它工作,因而开发出专用于处理异步串行通信发送和接收工作的芯片UART(通用异步串行通信接收发送器)。
CPU只需将要发送的一个字节数据交给UART,其它发送工作由UART自动完成,当UART将一帧数据发送完毕,会通知CPU 已发送完,可提交下一个字节。
UART自动监测线路状态并完成数据接收工作,当接收到一个字节数据后,UART会通知CPU来读取。
采用UART后,CPU的负担大大减轻了。
6、MCS—51的串行通信接口
MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以同时发送、接收数据。
它有两个互相独立的接收、发送缓冲器,这两个缓冲器同名SBUF,共用一个地址号(99H)。
发送SBUF:只能写,不能读;SBUF = a;
接收SBUF:只能读,不能写。
a = SBUF;
串行接口有四种工作方式,有的工作方式时其波特率是可变的。
用户可以用软件编程的方法在串行控制寄存器SCON 中写入相应的控制字就可改变串行口的工作方式。
串行口结构图如下:
串行通信的传送过程说明:
甲方发送时,CPU执行指令SBUF =A 启动了发送过程,数据并行送入SBUF ,在发送时钟shift的控制下由低位到高位一位一位发送,乙方在接收时钟shift 的控制下由低位到高位顺序进入移位寄存器SBUF ,甲方一帧数据发送完毕,置位发送中断标志TI,该位可作为查询标志(或引起中断),CPU可再发送下一帧数据。
乙方一帧数据到齐即接收缓冲器满,置位接收中断标志RI,该位可作为查询标志(或引起接收中断),通过A=SBUF CPU将这帧数据并行读入。
由上述可知:
1.甲、乙方的移位时钟频率应相同,即应具有相同的波特率,否则会造成数据丢失。
2.发送方是先发数据再查标志,接收方是先查标志再收数据。
通信过程图如下:
7、串行接口的控制寄存器:
串行接口的控制寄存器有两个,串行控制寄存器SCON和能改变波特率的特殊功能寄存器PCON。
其作用如下:(1)SCON,字节地址98H,(可位寻址)
SCON用于确定串行通道的操作方式和控制串行通道的某些功能。
也可用于发送和接收第九个数据位(TB8、RB8),并有接收和发送中断标志(RI及TI)位。
SCON各位的意义如下:
此处,SM0、SM1指定了串行通信的工作方式,若设振荡器频率为fosc,则规定如下图:
SM2:在方式2、3时,多机通信的控制位。
方式0:SM2=0;
方式1:①若SM2=0,只要接收到8位数据,就激发中断标志(RI=1);
②若SM2=1,则只有在接收到有效停止位时才能激发中断标志(RI=1),否则接收数据无效,且RI仍为0。
8、串行口波特率计算方式:
9、串行口的波特率有两种方式:固定波特率和可变波特率
10、串行通信编程方式:查询方式和中断方式。
查询方式:查TI或Ri是否为“1”。
中断方式:如果预先开了中断,当TI、RI为“1”,会自动产生中断。
注意:两种方式中当发送或接受数据后都要注意清Ti或RI。
查询方式发送程序:(先发后查)
发送一个数据→查询TI →发送下一个数据
查询方式接收程序:(先查后收)
查询RI→读入一个数据→查询RI→读下一个数据
中断方式发送程序:
发送一个数据→等待中断,在中断中再发送下一个数据。
中断方式接收程序:
等待中断,在中断中再接收一个数据。
查询方式发送流程图以及接收流程图:
中断方式发送流程图以及接收流程图如下:
三、实验内容与步骤
实验内容:
1,验证开发板例程中的电脑通过串口助手发送数据给开发板,单片机收到后返回电脑的例子。
2,、修改例程,实现上课串口例子中,第一个发送字符串的程序。
四、实验结果及分析:
程序如下:
#include<reg51.h>
#include<string.h>
char s[]="陈玮老师最帅";
char a=0,b=0;
void main()
{
TMOD=0x20;
SCON=0x50;
PCON=0x80;
TH1=0xf3;
TL1=0xf3;
TR1=1;
ET1=0;
a=strlen(s);
for(b=0;b<a;b++)
{
SBUF=s[b];
while(!TI) ;
TI=0;
}
while(1) ;
}
五、实验总结:
通过本次实验,了解并掌握串口通信的方式,以及数据传输的两种方式——查询方式和中断方式。