文档库 最新最全的文档下载
当前位置:文档库 › 单片机实验四 串行口实验

单片机实验四 串行口实验

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

姓名学号

时间 2013.12 地点 B526

实验题目实验四串行口实验

一、实验目的

1. 学习MCS-51串行口的工作原理及使用方法。

2. 学习MCS-51串行口的初始化程序、应用程序的编写和调试。

二、实验说明

本实验1单片机通过检测开关,将开关编号存入内部数据存储器并在LED数码管上显示,同时记录开关动作的总次数存入工作寄存器, 然后通过本机的串口发送和接收开关编号。实验2通过单片机的串行口进行双机通信,由甲机将开关编号和开关动作的总次数发往乙机。通过本实验学生可以掌握单片机串口的工作原理及使用方法以及串口的初始化程序、应用程序的编写和调试。

三、实验内容

1、P1.0--P1.7作输入口接拨动开关S0--S7,每当有开关动作(低电平)时,

1)将开关编号(0—7)存入内部数据存储器,要求存入的开关编号数据不少于10个,存储空间自定;

2)采用工作寄存器记录开关动作总次数;

3)通过本机的TXD和RXD进行串行通信,发送开关编号,接收的数据存入另一内部数据存储器,存储空间自定(不能重叠),要求采用方式1,波特率为4800b/s,fosc=11.0592MHz;

4)将接收到的数据显示在LED数码管。

编写初始化程序和中断服务程序,在实验板上调试通过。

2、双机通信:

1)甲机P1.0--P1.7作输入口接拨动开关S0--S7,每当有开关动作(低电平)

A、将开关编号(0—7)存入内部数据存储器,开关编号数据显示在LED数码管上。

B、采用工作寄存器记录开关动作总次数,数据以二进制形式显示在LED上。

C、通过本机的TXD发送开关编号及开关动作总次数,要求采用方式3,奇校验,波特率

为2400b/s,fosc=11.0592MHz;

2)乙机通过本机的RXD接收甲机发送的开关编号及开关动作总次数数据,要求采用方式3,奇校验,波特率为2400b/s,fosc=11.0592MHz;将接收到的开关编号数据显示在LED数码管,开关动作总次数数据以二进制形式显示在LED上。

编写初始化程序和中断服务程序,在实验板上调试通过。将接收和发送互换,将波特率改为9600b/s,完成上述双机通信任务。

四、实验步骤

1.事先写好程序,在WAVE软件上编译仿真通过后,下载到硬件上进行调试。将单片机的P2口与数码管连接以显示编号,将P1.0——P1.7分别通过开关控制高低电平。将串行口输入P3.0与输出3.1接在一起,实现本机向自身传送数据。

2.将P1.0—P1.7与拨动开关连接以控制高低电平,P0.0--P0.7接发光二极管,P2口与数码管相连,甲机的串口输出P

3.1接到乙机的串口输入P3.0,将甲机的GND与乙机的GND接在一起实现双击共地。Array五、实验程序流程框图、实验程序

1、第一个实验的程序与框图如下:

ORG 0000H

LJMP MAIN

ORG 0023H

LJMP SINT

ORG 0100H

MAIN:MOV SP,#60H ;各寄存器初始化

MOV TMOD,#20H ;T1工作方式二

MOV TH1,#0FAH ;设置波特率

MOV TL1,#0FAH

MOV SCON,#50H ;工作方式1

SETB EA

SETB TR1 ;启动T1

CLR ET1

CLR TB8

SETB PT1

CLR PS

SETB ES

MOV R6,#00H ;记录开关总次数

MOV R0,#30H ;地址

MOV R1,#50H

MOV SBUF,#FFH

LP2:MOV A,P1 ;读P1口状态

CJNE A,#0FFH,LP1 ;有键按下则跳置LP1

SJMP LP2 ;无键按下则跳回LP2,等待按键

LP1:INC R0 ;R0加一

MOV @R0,P1 ;读入P1到地址@R0

INC R6 ;R6自加一,记录开关次数

LP3: MOV A,P1

XRL A,@R0 ;比较当前P1口与以前P1

CJNE A,#00H,LP2

SJMP LP3 重新读取P1口

SINT:JNB TI,IT ;由于串口的输入与输出都能产生串口中断, CLR TI 因此应先判定是哪个引起的中断

MOV SBUF,P1 ;发送

LJMP LAST ;中断返回

IT:CLR RI

MOV A,SBUF

MOV @R1,A

INC R1

CJNE A,#0FFH,LC ;如果开关没有动作,LED数码管不显示 MOV P2,#00H

LJMP LAST

LC:LCALL SHU

LAST:RETI ;中断返回

SHU:MOV R7,#00H ;数码管显示子程序

XUN:RRC A

JC L1

MOV A,R7

MOV DPTR,#TAB

MOVC A,@A+DPTR ;查表

MOV P2,A ;显示

LJMP LP4

L1:INC R7

LJMP XUN

LP4:RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

2、第二个实验的程序与框图如下:

发送端:

ORG 0000H

LJMP MAIN

ORG 0023H

LJMP SINT

ORG 0100H

MAIN:MOV SP,#60H ;各寄存器初始化

MOV TMOD,#20H

MOV TH1,#0F4H

MOV TL1,#0F4H

MOV SCON,#0C8H ;设置SCON,方式3

SETB EA

SETB TR1

CLR ET1

CLR TB8

SETB PT1

CLR PS

SETB ES

MOV R6,#00H

MOV R0,#30H ;设置内部存储单元

MOV SBUF,#0FFH

LP2:MOV A,P1

CJNE A,#0FFH,LP1

MOV P2,#00H ;若开关没有动作,数码管与LED灯均不亮 MOV P0,#0FFH

LJMP LP2

LP1:INC R0

MOV @R0,P1

INC R6 ;开关每当有动作,就增加次数

MOV P0,A

LCALL SHU

LP3: MOV A,P1 ;通过比较选择是否跳出循环

XRL A,@R0

CJNE A,#00H,LP2

LJMP LP3

SINT:CLR TI 串口中断服务程序

MOV SBUF,P1

RETI

SHU:MOV R7,#00H ;数码管显示子程序

XUN:RRC A

JC L1

MOV A,R7

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P2,A

LJMP LP4

L1:INC R7

LJMP XUN

LP4:RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

接收端:

ORG 0000H

LJMP MAIN

ORG 0023H

LJMP SINT

ORG 0100H

MAIN:MOV SP,#60H ;各寄存器初始化

MOV TMOD,#20H

MOV TH1,#0F4H

MOV TL1,#0F4H

MOV SCON,#0D4H ;设置SCON,方式3

SETB EA

SETB TR1

CLR ET1

SETB PT1

CLR PS

SETB ES

SJMP $ ;等待中断

SINT:CLR RI ;中断服务程序

MOV A,SBUF ;读入收到的数据

MOV P0,A ;将A的值给P0,控制发光二极管亮

CJNE A,#0FFH,LP1 ;若收到的甲机开关状态有效则显示

MOV P2,#00H

SJMP EN

LP1: LCALL SHU

EN: RETI

SHU:MOV R7,#00H ;数码管显示子程序

XUN:RRC A

JC L1

MOV A,R7

MOV DPTR,#TAB

MOVC A,@A+DPTR ;查表

MOV P2,A

LJMP LP4

L1:INC R7

LJMP XUN

LP4:RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码管显示数表流程图:

六、实验及程序的分析和讨论(结合思考题)

1、串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?答:串行口有四种工作方式.可有8位、10位和11位三种帧格式.

对于方式0,它的波特率固定为fosc/12.

对于方式1,波特率=(2SMOD/32)*定时器T1的溢出率,式中,SMOD为PCON寄存器的最高位的值(0或1).

对于方式2,波特率=(2SMOD/64)*fosc

对于方式3,波特率=(2SMOD/32)*T1的溢出率.

2、MCS-51串行口应怎样与计算机的232C串口接口?为什么?画出接口电路。

答:由于单片机输入.输出的电平为TTL电平,而RS-232是IBM-PC机的标准串行接口,两者的电气规范不一致,因此,要完成232与单片机的数据通信,必须进行电平转换。

电路图如下:

个不同的输入和结果。)

八、体会

这次实验难度比较大,第二个实验需要双机通信,我经过反复的调试和与合作同学的交流才得以完成。

通过这次试验,我进一步理解了MCS-51串行口的工作原理及使用方法,学习了MCS-51串行口初始化程序、应用程序的编写和调试。相信对我今后对单片机的进

一步学习会有所帮助。

51单片机串口调试实验(C语言)

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 /****************************************************************************** * * 实验名: 串口实验 * 使用的IO : P2 * 实验效果: 将接收到发送回电脑上面。 * 注意: ******************************************************************************* / #include void UsartConfiguration(); /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() { UsartConfiguration(); while(1) { } } /****************************************************************************** * * 函数名:UsartConfiguration() * 函数功能:设置串口 * 输入: 无 * 输出: 无 ******************************************************************************* / void UsartConfiguration() { SCON=0X50; //设置为工作方式1

单片机串行通信实验

单片机实验报告 实验名称:串行通信实验 姓名:高知明 学号:110404320 班级:通信3 实验时间:2014-6-11 南京理工大学紫金学院电光系

一、实验目的(四号+黑体) 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD\RXD口; 3、了解MAX232芯片的作用; 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。他有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H)。发送缓冲器只能写入,不能读出,接受缓冲器只能读出,不能写入。要发送的字节数据直接写入发送缓冲器。SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号昨接受或发送移位寄存器的位移时钟。TI与RI分别为发送完数据的中断标志,用来想CPU发中断请求。 三、实验内容 1、发送信号 1)C51程序: #include void main(void) { SCON=0X40; //设置串口为接受,REN=0 PCON=0; //波特率不倍频 REN=1; TMOD=0X20; //启动定时器1的方式2 TH1=0XFD; TL1=0XFD; //初值:0XFD TR1=1; //启动定时器1 while(1) {SBUF='U'; while(!TI); TI=0; //发送中断清0 }} 2)硬件图:

2、接受装置: 1)C51程序: #include char s[32]; void main(void) { char a,b=0; SCON=0X40; //设置串口为接受,REN=0 PCON=0; //波特率不倍频 REN=1; TMOD=0X20; //启动定时器1的方式2 TH1=0XFD; TL1=0XFD; //初值:0XFD TR1=1; //启动定时器1 a=32; for(;b

实验单片机与PC机串口通信

实验单片机与PC机串口通信(C51编程)实验 要求: 1、掌握串行口的控制与状态寄存器SCON 2、掌握特殊功能寄存器PCON 3、掌握串行口的工作方式及其设置 4、掌握串行口的波特率(bondrate)选择 任务: 1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。 采用软件仿真的方式完成,用串口调试助手和KEIL C,或串口调试助手和PROTEUS分别仿真。 需要用到以下软件:KEIL,VSPDXP5(虚拟串口软件),串口调试助手,Proteus。 (1)虚拟串口软件、串口调试助手和KEIL C的联调 首先在KEIL里编译写好的程序。

打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。 接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入 modecom39600,0,8,1 %分别设置com3的波特率、奇偶校验 位、数据位、停止位 assigncom3sout %把单片机的串口和COM3绑定到一 起。因为所用的单片机是

(以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。 实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。 2、以下在Proteus和串口调试助手实现的结果: 将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。 点击串口,可以对串口进行设置: 用串口调试助手发送数据,即可看到仿真结果。 实验参考程序源文件在exp2-comm文件夹中。

单片机串并口转换实验定稿版

单片机串并口转换实验 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。在单片机开发试板上也是完美运行。今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能 #include 本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。实验者请按上图连接好实验电路。

#include #include< intrins.h > #define uchar unsigned char #define uint unsigned int #define ulong unsigned long code uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; sbit SO=P1^0; //定义165的输出 sbit STCP=P1^1; sbit DS=P1^2; sbit SHCP=P1^3; sbit SHLD=P1^4; sbit CLK=P1^5; sbit cs573=P1^6; /**************************************************/

void delay(ulong X) //延时函数,采用了形参传递函数{ while(X--); } /**************************************************/ void LED(); //函数声明 /**************************************************/ void main() //主函数 { while(1) { LED (); } }

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.wendangku.net/doc/0919034472.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

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

实验六串行口通信实验 一、实验内容 实验板上有RS-232接口,将该接口与PC机的串口连接,可以实现单片机与PC机的串行通信,进行双向数据传输。本实验要求当PC机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC机上显示,并用串口助手工具软件进行调试。 二、实验目的 掌握单片机串行口工作原理,单片机串行口与PC机的通信工作原理及编程方法。 三、实验原理 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。进行串行通讯信要满足一定的条件,比如电脑的串口是RS232电平(-5~-15V为1,+5~+15V为0),而单片机的串口是TTL电平(大于+2.4V为1,小于- 0.7V为0),两者之间必须有一个电平转换电路实现RS232电平与TTL电平的相互转换。 为了能够在PC机上看到单片机发出的数据,我们必须借助一个Windows软件进行观察,这里我们可以使用免费的串口调试程序SSCOM32或Windows的超级终端。 单片机串行接口有两个控制寄存器:SCON和PCON。串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12。由软件置位串行控制寄存器(SCON)的REN位后才能启动,串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据输完后,硬件将SCON寄存器的T1位置1,必须由软件清零。 单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和远近通信接口的不同处理技术。在DOS操作环境下,要实现单片机与微机的通信,只要直接对微机接口的通信芯片8250进行口地址操作即可。WINDOWS的环境下,由于系统硬件的无关性,不再允许用户直接操作串口地址。如果用户要进行串行通信,可以调用WINDOWS的API 应用程序接口函数,但其使用较为复杂,可以使用KEILC的通信控件解决这一问题。 四、实验电路 [参考学习板说明书P27]

基于51单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级:xxxxxx 学号:13xxxxxxxxx 姓名:xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计

1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下: 图1.AT89C51(52) (1)数据缓冲器(SBUF) 接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,

单片机串口通讯实验报告

实验十单片机串行口与PC机通讯实验报告 ㈠实验目的 1.掌握串行口工作方式的程序设计,掌握单片机通讯的编制; 2.了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议; 3.了解PC机通讯的基本要求。 ㈡实验器材 1.G6W仿真器一台 2.MCS—51实验板一台 3.PC机一台 ㈢实验内容及要求 利用8051单片机串行口,实现与PC机通讯。 本实验实现以下功能,将从实验板键盘上键入的字符或数字显示到PC 机显示器上,再将PC机所接收的字符发送回单片机,并在实验板的LED上显示出来。 ㈣实验步骤 1.编写单片机发送和接收程序,并进行汇编调试。 2.运行PC机通讯软件“commtest.exe”,将单片机和PC机的波特率均设定 为1200。 3.运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符), 检查PC机所接收的字符是否与发送的字符相同。 4.将PC机所接收的字符发送给单片机,与此同时运行单片机接受程序,检 查实验板LED数码管所显示的字符是否与PC机发送的字符相同。

㈤ 实验框图

源程序代码: ORG 0000H AJMP START ORG 0023H AJMP SERVE ORG 0050H START: MOV 41H,#0H ;对几个存放地址进行初始化 MOV 42H,#0H MOV 43H,#0H MOV 44H,#0H MOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示 MOV TMOD,#20H ;设置为定时器0,模式选用2 MOV TL1, #0E6H ;设置1200的波特率 MOV TH1, #0E6H SETB TR1 ;开定时器 MOV SCON,#50H ;选用方式1,允许接收控制 SETB ES SETB EA ;开中断 LOOP: ACALL SOUT ;键盘扫描并发送,等待中断 SJMP LOOP SERVE JNB RI,SEND ;判断是发送中断还是接收中断,若为发送中 断则调用 ACALL S IN ;发送子程序,否则调用接收子程序 RETI SEND: CLR TI ;发送子程序 RETI SIN: CLR RI ;接受子程序 MOV SCON, #00H MOV A, SBUF ;接收数据 LCALL XS ;调用显示子程序 RETI 子程序: SOUT: CLR TI ;清发送中断标志位 LCALL KEY ;调用判断按键是否按下子程序 MOV A,R0 ;将按键对应的数字存入A MOV SBUF,A ;输出按键数字给锁存 RET KEY: MOV P1,#0FFH ;将P1设置为输入口 MOV A, P1 CPL A ;将A内值取反

单片机实验(简单的串口通信)

单片机技术与应用 实验报告 实验名称:单片机串行口与PC机通讯实验班级:11062811 学号:11061118 姓名:吕琳涛 指导老师:谷雨 2013年5月27日

1.实验要求 利用8031单片机串行口,实现与PC机通讯。 本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符0-F(必须为大写字母)显示到实验机的数码管上。 2. 实验目的 1.掌握串行口工作方式的程序设计,掌握单片机通讯的编制。 2.了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议。 3.了解PC机通讯的基本要求。 3.程序说明: 在本次实验中,我们可以SCON = 0x50;对应的解释为我们在初始化串口接口控制寄存器SCON用于确定串口通道工作方式的选择、接收和发送控制及其串口的状态标志。TMOD = 0x20;表示我们在程序中用于设定定时和计数器的工作方式。TH1 = 0xfd;TL1 = 0xfd;用于对低八位和高八位进行初始化,也就是进行赋值。TR1 = 1;表明我们设定的计数器开始进行计数。ES = 1;是对串行接口中断的中断控制进行设定。EA = 1;是51单片机中断系统的总允许控制端。 s = SBUF;s = s+1;SBUF = s;这三个语句是对我们实验要求的主体部分的代码编写。也就是获取数据,对数据进行自加1然后通过串口返回到我们pc机上。我们知道接受RI = 1单片机没有自动复位的功能,也就是我们需要人为地进行赋值。T1也是这样的。 至此,程序编写完成,放入软件中进行编译和下载。

2.上机调试说明 将程序编写成功后,我们就上机进行调试。 下载成功后,通过键盘我们将我们想要的数据输入pc机里,等待pc 与单片机进行串口通信,单片机进行加一处理之后然后传到pc机里,显示到电脑屏幕上。 至此实验仿真过程结束。 3.写出源程序清单及执行结果。 源程序: #include unsigned char s; void main() { SCON = 0x50; TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; ES = 1; EA = 1; while(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 中的printf来实现字符串的发送。 e.单片机的数码港显示发送的次数,每9次清零。

实验四-串口通信实验

实验报告 课程名称:微机原理与接口技术 指导老师:张军明 成绩:__________________ 实验名称:实验四 串口通信实验 实验类型:________________同组学生姓名:吴越 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的 1、掌握80C51串行口工作方式选择、理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程中的时序关系。 2、掌握串口初始化的设置方法和串行通信编程的能力。 3、了解PC 机通讯的基本要求,掌握上位机和下位机的通讯方法。 4、编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等)。 二、实验器材 1、Micetek 仿真器一台。 2、实验板一块。 3、PC 机电脑一台。 4、九针串口线一条。 三、实验原理 串口通讯对单片机而言意义重大,不但可以实现将单片机(下位机)的数据传输到PC 端(上位机),而且也能实现PC 对单片机的控制,51单片机有一个全双工的串行通讯口,所以单片机和PC 之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL 电平的,两者之间必须有一个电平转换电路,本实验采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。 3.1 RS232九针串口基本功能简介 九针串口即RS-232接口,是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association ,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。该接口分为公头子和母头子。九针串口(母头)的功能如下,请见图1: 专业:电子信息工程 姓名:彭嘉乔 学号:3130104084 日期:2015.05 地点:东3-409

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

《单片机原理及应用》 课程设计报告 课程设计题目:单片机间串行通信原理专业班级: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 设计任务 单片机间串行通信,是工业自动化、智能终端、通信管理等领域传统且重要的通讯手段。 此次设计单片机串行通信,就是为了了解单片机的工作原理,从而学会制作数字钟。本次课程设计通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机原理与应用及C51程序设计》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.wendangku.net/doc/0919034472.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A

LCALL DELAY RL A DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验一、实验目的

熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.wendangku.net/doc/0919034472.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8

单片机串口通信实验报告

信息工程学院实验报告 课程名称:单片机原理及接口 实验项目名称:串口通信实验实验时间: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得负担大大减轻了。

单片机通过串口与电脑连接通信

本实验实现串口中断实验,通过中断和计算机进行通信 * 首先接受联机信号,然后接受计算机的相关控制信号* 本实验中,采用发送不同的字符给计算机来模拟接收到的不同的计算机控制命令* 通过扩展,可以实现不同的功能* * * * * * ********************************************************************************/ #include #define uchar unsigned char uchar time,b_break,b_break_3; ucharbuf; void waitsend() { while(!TI) { }; TI = 0; } //串行中断程序 void int_s(void) interrupt 4 { ES = 0; //关闭串行中断 RI = 0; //清除串行接受标志位 buf = SBUF; //从串口缓冲区取得数据 P1 = buf; //数据送往p1口显示出来 if(buf == 255) SBUF = 255; //发送联络信号 else{

switch(buf) { case 1: SBUF = 'M',waitsend();break; //如果接受到1,发送字符'M'给计算机case 2: SBUF = 'C',waitsend();break; //如果接受到2,发送字符'C'给计算机case 3: SBUF = 'S',waitsend();break; //如果接受到3,发送字符'S'给计算机case 4: SBUF = '5',waitsend();break; //如果接受到4,发送字符'5'给计算机 case 5: SBUF = '1',waitsend();break; //如果接受到5,发送字符'1'给计算机 default: SBUF = 'n',waitsend();break; //如果接受到其它数据,发送n给计算机 } } ES = 1; //允许串口中断 } void main(void) { P0 = 0; P2 = 255; //关闭数码管显示 EA=1; SCON=0x50;PCON=0X80; TMOD=0x20;ES = 1; TL1=TH1=0xf3;TR1=1; //串口工作在模1,波特率4800@12Mhz) while(1); //无限循环等待串行中断 }

51单片机串口通信讲解

51系列单片机串口通信实例教程 单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器,与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了.而前面学习过的定时器与中断将是单片机通信的基础. 单片机的中断系统中第4个中断就是串口中断,要进行串口通信首先就要打开CPU总中断EA,还要打开串口通信中断ES,这是串口通信的前堤,而串口通信也跟计时器一样有很多的模式,因此我们还要设置SCON寄存器来指定采用哪一种方式进行通信,而在通信的过程中,我们还要设定通信的波特率,不然的话,单片机是没办法进行采样的,这样也不会得到正确的结果了.我在实验过程中用到的是1号定时器来设定的波特率,用到了计时器方式2,也就是8位自动重装,这样可以简化编程,她的实现思想就是将常数放入TH,而TL中则是初始化参数,当溢出时,单片机会自动将TH中的常数装入TL中. 再来说说波特率,我们为什么要设定波特率,因为单片机会以16倍波特率的速度进行采样,而在实验中我们用的是10位异步收发方式,因此要将SM0置0,SM1置1.而其中的10位

有8位数据位,第一位和最后一位是发送数据的起始与结束.采用高的皮特率就不会出错啦.而波特率是有一个公式的: 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)· fosc 方式1的波特率 =(2SMOD/32)·(T1溢出率) 方式3的波特率 =(2SMOD/32)·(T1溢出率) T1 溢出率= fosc /{12×[256 -(TH1)]} 根据公式我们很容易就算出当晶振为110592HZ时,要达到9600的波特率,我们只需要将TL1置FDH即可,如下图: 除此之外,你还要将SCON中的REN位置1,不然的话,单片机是不会接收数据的. 还有不要忘了选择定时器的工作方式,设置TMOD为0x20既是工作方式2,8位自动重装定时器. 这样一来,初始批工作算是差不多了.而串口通信分为中断方式,和查询方式,如果你想用查询方式你也不用设置IE寄存器了. 在串口通信中,还有一个很重要的寄存器SBUF,其实也不是一个,是两个,只是它们共用同一个地址,再热气表达式的不同,单片机会自动选择使用哪一个SBUF. 下面是我写的一个例子程序,产生的效果是:向单片机发送任一个0~255之间的数,将会被显示到数码管上.并且单片机还会自动把刚才传过去的数又发送回来 ,实验过程中用到了几个工具如下:

单片机串口通信实验

滨江学院 单片机原理及应用 题目单片机串口通信实验 院系____电子工程系______ 专业_____通信工程_______ 学生姓名_______******_______ 学号______**********___ 二O一二年六月十日

单片机串口通信实验 摘要: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单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。进行串行通讯信要满足一定的条件,比如电脑的串口是RS232电平(-5~-15V为1,+5~+15V为0),而单片机的串口是TTL电平(大于+2.4V

单片机串行通信实验报告

单片机实验报告(三) 实验名称:串行通信 姓名:张昊 学号: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 D0

SM0、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中,并产生中断请求。在方式0时,SM2必须为0。 REN:允许串行接收控制位。若REN=0,则禁止接收;REN=1,则允许接收,该位由软件置位或复位。 TB8:发送数据D8位。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。 RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧的标志。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不使用RB8位。 TI:发送中断标志位。在方式0时,当发送数据第8位结束后,或在其它方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。此外,TI也可供查询使用。 RI:接收中断标志位。在方式0时,当接收数据的第8位结束后,或在其它方式接收到停止位的中间由内部硬件使RI置位,向CPU请求中断。同样,在CPU响应中断后,也必须用软件清零。RI也可供查询使用。 电源控制寄存器PCON的格式如下: D7 D6 D5 D4 D3 D2 D1 D0 PCON的最高位SMOD是串行口波特率系数控制位。SMOD=1时,波特率增大一倍。其余各位与串行口无关。 波特率设置: 串行口的4种工作方式对应着三种波特率模式。 对于方式0,波特率是固定的,为fosc/12。 对于方式2,波特率由振荡频率fosc和SMOD(PCON.7)所决定。其对应公式为 波特率=2SMOD×fosc/64。当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。 对于方式1和方式3,波特率由定时器/计数器T1的溢出率和SMOD决定,即由下式确定: 波特率=2SMOD×定时器/计数器T1溢出率/32 三、实验内容 #include"reg51.h"

相关文档
相关文档 最新文档