单片机实验报告-串口通信
单片机串口通信实验报告
单片机串口通信实验报告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上仿真的时候是没有任何问题的,但是后来在实验板上数码管显示特别暗,几乎看不出来有显示数字,想了想可能是没有加推挽输出,然后就将推挽输出代码加入,然后重新下载,但是结果和之前没什么不同。
单片机串口通信设计报告
单片机串口通信设计报告一、实验目的将单片机IO 口状态通过串口发送至PC 机,PC 上位机程序使用串口调试助手或自行编程。
二、串口通信方式串口通信分为两种:串行同步通信、串行异步通信本实验采用串行异步通信,即RS232通信。
在异步通行中有两个比较重要的指标:字符帧格式和波特率。
数据通常以字符或者字节为单位组成字符帧传送。
字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。
发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
数据传输特点:从低位开始发送到高位(起始位一般是1位的低电平开始的,接着的是数据位5-10位,一般是8位,接下来是奇偶校验位1位,停止位1-2位,空闲位)帧格式图起始位数据位奇偶校验位停止位空闲位起始位数据位硬件原理图三、相关寄存器1、串行接口控制寄存器SCON用于选择串行通信的工作方式和某些控制功能。
(1)、SM0 SM1:串行口工作方式控制位SM0、SM1工作方式 :00方式0 ;01方式1;10方式2;11方式3。
(2)、SM2:多机通信控制位多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。
接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF ,且置位RI 发出中断申请,否则会将接受到的数据放弃。
当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF ,并发出中断申请。
工作于方式0时,SM2必须为0。
(3)、REN :允许接收位内部CPU 总线(TXD )(RXD )D0D1D2D3D4D5D6D7SCON: 可位寻址字节地址:98HREN 用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
(4)、TB8:发送接收数据位8在方式2和方式3中,TB8是要发送的——即第9位数据位。
在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
单片机串口通信实验报告
单片机串口通信实验报告
实验目的:
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.上位机调试软件能够正确接收到单片机发来的数据,并显示在界面上;
实验总结:
通过本次实验,我掌握了单片机串口通信的基本原理和实现方法。
在
实验中,我学会了使用串口模块与上位机进行数据交互,并进一步提高了
单片机的编程与调试能力。
这对于今后的电子设计与开发工作将具有很大
的帮助。
同时,在实验过程中,我也遇到了一些问题和困难,如串口连接错误、波特率设置错误等,但通过仔细检查和调试,最终我成功解决了这些问题。
在以后的学习和工作中,我将进一步熟悉串口通信的相关知识,并通
过实际项目的实践,提升自己的实际操作能力和解决问题的能力。
我相信,通过不断的学习和实践,我会越来越熟练地掌握串口通信技术,为以后的
工作打下坚实的基础。
单片机实验报告数码管与串口通信
单片机实验报告 ----数码管、串口数码管显自己学号、单片机和电脑串口通信一.数码管在学习板上用数码管来显示数字。
在单片机中下载数码管程序如下:/*此程序可以实现,数码管显示0123的状态,用户可以自己根据前边的试验程序,自行编写按下某个按键时,数码管显示某个数字*/#include <reg52.h>#define uchar unsigned charsbit P2_0 = P2^0;sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uchar i){uchar j,k;for(j=i;j>0;j--)for(k=125;k>0;k--); }void display(){P0=table[0];P2_0 = 0;delay(5);P2_0 = 1;P0=table[1];P2_1 = 0;delay(5);P2_1 = 1;P0=table[2];P2_2 = 0;delay(5);P2_2 = 1;P0=table[3];P2_3 = 0;delay(5);P2_3 = 1;}/*演示主程序*/void main(void){unsigned int a;while(1){for(a=100;a>0;a--){display();}}}学习板上会显示0123四个数字。
如图所示更改程序,使其显示为自己的学号。
本人的学号后四位为0248.修改程序如下:#include <reg52.h>#define uchar unsigned charsbit P2_0 = P2^0;sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uchar i){uchar j,k;for(j=i;j>0;j--)for(k=125;k>0;k--);}void display(){P0=table[0];P2_0 = 0;delay(5);P2_0 = 1;P0=table[2]; P2_1 = 0;delay(5);P2_1 = 1;P0=table[5]; P2_2 = 0;delay(5);P2_2 = 1;P0=table[0]; P2_3 = 0;delay(5);P2_3 = 1;}/*演示主程序*/void main(void){unsigned int a;while(1){for(a=100;a>0;a--){display();}}}学习板上会显示自己的学号后四位0250.本实验完成。
单片机实验报告-串口通信
单片机实验报告姓名___ _ 学号___一、实验项目单片机串行口通讯实验二、实验要求利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在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专业:电子信息工程。
单片机实验报告八-串口通信
单片机串口通信实验报告
单片机串口通信实验报告篇一:串行口通信实验单片机实验报告实验六串行口通信实验一、实验内容实验板上有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的通信控件解决这一问题。
单片机间的串口通信
实验十一单片机之间的串口通信
一、实验目的
1.学习单片机串口工作方式的程序设计。
2.学习串行通信的协议。
3.利用单片机串口,实现两个单片机之间的串行通信,通过拨码开关控制相应的发光二极管亮和灭。
二、电路设计
1.从PROTEUS库中选取元件
①AT89C51.BUS:总线式的单片机;
②RES:电阻;
③LED-YELLOW:黄色发光二极管;
④CAP、CAP-ELEC:电容、电解电容;
⑤CRYSTAL:晶振;
⑥DIPSW_8:8位拨码开关。
2.放置元器件
3.放置电源和地
4.连线
5.元器件属性设置
6.电气检测
三、源程序设计、生成目标代码文件
1.流程图
2.源程序设计
通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC11.ASM。
通过菜单“sourc e→DZC11.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。
程序编辑好后,单击按钮存入文件DZC11.ASM。
3.源程序编译汇编、生成目标代码文件
通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。
若编译失败,可对程序进行修改调试直至汇编成功。
四、PROTEUS仿真
1.加载目标代码文件
2.仿真
五、思考题:
1.简述串行口接收、发送缓冲区SBUF的工作机制以及串行口进行数据收发的过程。
2.简述串行口通信波特率的计算方法。
串口通信实验报告
串口通信实验报告摘要本实验旨在通过串口通信实现两个设备之间的数据传输。
通过使用串口通信协议,我们能够在不同设备之间进行双向数据传输,实现设备之间的数据交互。
本文将介绍串口通信的基本原理、实验设备和步骤、实验结果以及讨论与总结。
一、引言串口通信是一种常用的通信方式,它被广泛应用于计算机、嵌入式系统、智能设备等领域。
串口通信通过连接计算机或其他设备的串口接口,实现设备之间的数据交换。
串口通信具有传输速度快、稳定可靠、易于实现等优点,因此在实际应用中得到了广泛的应用。
二、实验设备和步骤1. 实验设备本实验使用以下设备进行串口通信实验:- 一台计算机- 一块开发板或者单片机- 两根串口线- 软件串口调试助手2. 实验步骤(1)连接串口线首先,将一根串口线的一个端口连接到计算机的串口接口,另一个端口连接到开发板或者单片机的串口接口。
然后,将另一根串口线的一个端口连接到计算机的另一个串口接口,另一个端口连接到开发板或者单片机的另一个串口接口。
(2)设置串口参数打开软件串口调试助手,在设置界面中选择正确的串口号和波特率,并设置其他参数,如数据位、停止位、奇偶校验等。
(3)发送和接收数据在软件串口调试助手的发送界面中输入要发送的数据,并点击发送按钮。
然后,在接收界面中即可看到接收到的数据。
三、实验结果本实验通过串口通信成功地实现了数据的发送和接收。
在软件串口调试助手的发送界面中,我们输入了一段文本,并成功发送到开发板或者单片机。
在接收界面中,我们成功接收到了从开发板或者单片机发送过来的数据,并正确显示在接收界面上。
四、讨论与总结通过本次实验,我们深入了解了串口通信的基本原理和实验步骤。
串口通信具有不同的参数设置,需要根据实际情况进行调整。
同时,在实际应用中,应注意串口接口的连接问题,确保连接正确、稳定。
另外,在数据传输过程中,也需要注意数据的格式和校验问题,以保证数据的准确性。
在今后的学习和实践中,我们可以进一步探索串口通信的应用领域。
单片机串口应用实验报告
单片机串口应用实验报告
实验名称:单片机串口应用实验
实验目的:
1. 学习串口通信的基本原理和工作机制;
2. 掌握单片机串口通信的配置方法和编程技巧;
3. 实现单片机与电脑的数据传输和通信。
实验器材和软件:
1. 单片机:STC89C52RC(或其他型号的单片机);
2. 串口模块:MAX232(或其他型号的转换电路);
3. USB转串口模块;
4. 电脑;
5. Keil C51开发环境;
6. 串口调试助手。
实验原理和步骤:
1. 硬件连接:将单片机的RX和TX引脚分别连接到串口模块的TX和RX引脚,并连接串口模块的VCC和GND引脚到单片机的VCC和GND引脚。
将串口模块的TX和RX引脚分别连接到USB转串口模块的RX和TX引脚,并将USB转串口模块插入电脑的USB接口。
2. 软件配置:
a. 打开Keil C51开发环境,选择对应的单片机型号;
b. 配置串口通信参数,如波特率、数据位、停止位等;
c. 编写程序,实现串口通信的功能;
d. 编译、烧录程序到单片机中。
实验结果:
在串口调试助手中输入数据,单片机接收到数据后进行处理,并将结果反馈给电脑进行显示。
实验总结和体会:
通过本实验,我了解了串口通信的原理和工作机制,掌握了单片机串口通信的配置方法和编程技巧。
实现了单片机与电脑的数据传输和通信,对单片机串口应用有了更深的理解和实践经验。
单片机串口通讯实验报告
试验十单片机串行口与PC机通讯试验汇报㈠试验目旳1.掌握串行口工作方式旳程序设计, 掌握单片机通讯旳编制;2.理解实现串行通讯旳硬环境, 数据格式旳协议, 数据互换旳协议;3.理解PC机通讯旳基本规定。
㈡试验器材1.G6W仿真器一台2.MCS—51试验板一台3.PC机一台㈢试验内容及规定运用8051单片机串行口, 实现与PC机通讯。
本试验实现如下功能, 将从试验板键盘上键入旳字符或数字显示到PC 机显示屏上, 再将PC机所接受旳字符发送回单片机, 并在试验板旳LED上显示出来。
㈣试验环节1.编写单片机发送和接受程序, 并进行汇编调试。
2.运行PC机通讯软件“commtest.exe”, 将单片机和PC机旳波特率均设定为1200。
运行单片机发送程序, 按下不一样按键(每个按键都定义成不一样旳字符), 检查PC机所接受旳字符与否与发送旳字符相似。
将PC机所接受旳字符发送给单片机, 与此同步运行单片机接受程序, 检查试验板LED数码管所显示旳字符与否与PC机发送旳字符相似。
㈤试验框图源程序代码:ORG 0000HAJMP STARTORG 0023HAJMP SERVEORG 0050HSTART: MOV 41H,#0H ;对几种寄存地址进行初始化MOV 42H,#0HMOV 43H,#0HMOV 44H,#0HMOV SCON,#00H ;初始化串行口控制寄存器, 设置其为方式0LCALL DISPLAY ;初始化显示MOV TMOD,#20H ;设置为定期器0, 模式选用2MOV TL1, #0E6H ;设置1200旳波特率MOV TH1, #0E6HSETB TR1 ;开定期器MOV SCON,#50H ;选用方式1, 容许接受控制SETB ESSETB EA ;开中断LOOP: ACALL SOUT ;键盘扫描并发送, 等待中断SJMP LOOPSERVE JNB RI,SEND ;判断是发送中断还是接受中断, 若为发送中断则调用ACALL SIN ;发送子程序, 否则调用接受子程序RETISEND: CLR TI ;发送子程序RETISIN: CLR RI ;接受子程序MOV SCON, #00HMOV A, SBUF ;接受数据LCALL XS ;调用显示子程序RETI子程序:SOUT: CLR TI ;清发送中断标志位LCALL KEY ;调用判断按键与否按下子程序MOV A,R0 ;将按键对应旳数字存入AMOV SBUF,A ;输出按键数字给锁存RETKEY: MOV P1,#0FFH ;将P1设置为输入口MOV A, P1CPL A ;将A内值取反ANL A, #0FFHJZ KEY ;将A与FFH与后判断与否为0, 若为0则表达无按键按下跳回KEYLCALL D ;调用延时子程序消抖MOV A, P1CPL AANL A, #0FFHJZ KEYMOV B,A ;判断有按键按下, 将值赋给BKEY1: MOV A, P1CPL AANL A,#0FFHJNZ KEY1LCALL DMOV A,BJB ACC.0,PKEY1 ;依次判断A内数据每个位与否为1, 并跳JB ACC.1,PKEY2 ;转到相对应位旳子程序JB ACC.2,PKEY3JB ACC.3,PKEY4JB ACC.4,PKEY5JB ACC.5,PKEY6JB ACC.6,PKEY7JB ACC.7,PKEY8EKEY: RETPKEY1: A JMP K1PKEY2: A JMP K2PKEY3: A JMP K3PKEY4: A JMP K4PKEY5: A JMP K5PKEY6: A JMP K6PKEY7: A JMP K7PKEY8: A JMP K8K1: MOV R0,#01H ;将对应旳数据赋给R0后跳转到EKEY SJMP EKEYK2: MOV R0,#02HSJMP EKEYK3: MOV R0,#03HSJMP EKEYK4: MOV R0,#04HSJMP EKEYK5: MOV R0,#05HSJMP EKEYK6: MOV R0,#06HSJMP EKEYK7: MOV R0, #07HSJMP EKEYK8: MOV R0, #08HSJMP EKEYXS:MOV SCON,#00H ;显示子程序, 采用同步移位寄存器CLR TIMOV DPTR, #TABMOVC A,@A+DPTR ;将对应数值旳数码管显示数值送入SBUF MOV R5,#04H ;共四位需要显示MOV 41H, AMOV R0, #41HDISPLAY1: MOV A,@R0MOV SBUF, AJNB TI,$ ;与否传完了CLR TI ;清除中断标志位INC R0DJNZ R5, DISPLAY1MOV S CON, #50HRETD: ;延时子程序MOV R7, #10HDELAY1: MOV R6, #0FFHDELAY2: DJNZ R6, DELAY2DJNZ R7, DELAY1RETTAB: DB 0BBH, 09H, 0EAH, 6BHDB 59H, 73H, 0F3H, 0BHDB 0FBH本次试验中处理了怎样判断数据是发送还是接受旳问题和怎样判断数据与否发送或接受完毕旳问题, 通过试验中旳讨论和研究书上有关串行口旳内容, 我们通过中断标志位和循环很好旳处理了这个问题。
单片机-实验三-串行口通信实验
实验三串行口通信实验一、实验目的1、掌握单片机串行口的工作原理及工作方式;2、掌握单片机串行口波特率的设置方法;3、掌握单片机串行口查询方式程序的设计方法。
二、实验内容及要求1、单片机的串行口经RS-232 电平变换后和PC 机相连;2、单片机系统的晶振频率选择11.0592MHz,串行口设置为9600bps、无校验位、8 位数据位、1 位停止位(简记为N81)模式;3、单片机采用查询方式收发数据,将PC 机送来的除回车/换行之外的数据加1 后送回。
三、实验设备硬件:PC 机,nKDE-51 单片机实验教学系统;软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。
四、实验原理及步骤MCS-51 串行口的结构、原理及各种工作方式参阅教材相关内容。
本实验使用串行口工作方式1,通过定时器1(T1)产生波特率时钟,通过查询串行口收发中断标志RI 和TI 来判断单片机串行口数据收发的状态。
步骤如下:1、创建新项目:Project—New Project—命名、存储—CPU类型(philips P89C52X2)2、创建新程序:编译程序—完成后保存为“.c”格式3、添加程序:Target1—Source Group—add……(程序)4、检测程序:Project—Build Target5、选择烧录程序的方式(右键点target1--opption):output—Creat Execulate:Dubug Information Browse、Creat HexDebug 右侧选择use “Keil Monitor-51 Driver”6、选择程序执行点:在Debug程序烧路后,在开始执行的程序断点上鼠标右键—Set Program Counter7、Go执行五、实验过程1. 电路连接PC 机串行口为RS-232 标准的串行接口,用-15V~-5V 表示1,+5V~+15V 表示0,而单片机的串行口为TTL 电平,+5V 表示1,0V 表示0,因此单片机的串行口不能直接和PC 机的串行口相连,必须经过电平变换才能和PC 机通信。
单片机串口实验
单片机课程设计报告实验一串口通信实验系别年级专业班级班学号学生姓名指导教师设计时间目录1.题目 (2)2.实验要求 (2)2.1实验目的 (2)2.2实验内容 (2)3.总体设计 (4)2.1硬件设计 (4)2.2软件设计 (8)4. 运行结果 (12)5.结论 (12)6.心得体会 (13)7.参考文献............. 错误!未定义书签。
31.题目串口通信实验2.实验要求2.1:实验目的1、掌握8051单片机串行口工作原理;2、掌握串口编程与调试方法;3、了解Modbus协议及其应用;4、了解数据传输的可靠性措施与CRC校验实现方法;5、掌握8051单片机的Modbus编程;2.2:实验内容1、串口功能验证:PC机与8051单片机通信实验:若PC机发送数据a,则单片机接收到a后向PC机发送a+1;用串口工具软件(sscom32)观察通信结果。
设计思路:PC机采用主动方式,单片机为被动方式,因单片机端不知道PC何时发数据,若单片机采用查询方式接收,会产生接收不到PC数据而“死等”的现象。
因此为了不影响单片机端的主程序运行,单片机应采用中断方式接收;参考源码://中断服务程序unsigned char Rxd_Data;//串口接收数据unsigned char Rxd_Over;//串口接收完成标志//串口初始化函数9600bpsvoid Sbuf_Init(void){SCON=0x50; //10位方式//波特率设置PCON=0x00; //波特率不倍增TMOD=(TMOD&0x0f)|0x20;//T1方式2TH1=0xfd; //T1计数初值TL1=0xfd;ES=1;EA=1; //串口中断使能TR1=1; //启动定时器}void UART_ISR(void) interrupt 4{if(RI)//接收产生的中断{RI=0;//清接收标志Rxd_Data=SBUF; //接收数据Rxd_Over=1; //置Rxd_Over标志}}void main(void){Sbuf_Init(); //串口初始化while(1){if(Rxd_Over) //若接收完成{//串口数据发送SBUF=a+1; //串口发送while(TI==0); //等待发送完成TI=0;//清发送标志Rxd_Over=0; //清Rxd_Over标志}}}利用此程序可以判断串口通信是否正常。
单片机串口通讯实验报告
单片机串口通讯实验报告实验报告:单片机串口通讯实验一、实验目的1.掌握单片机串口通讯原理和方法。
2.学习如何通过单片机与计算机进行串口通讯。
3.熟悉串口通讯的相关命令和编程方法。
二、实验原理串口通讯是一种数据交换的方式,通过串口可以将数据从计算机发送到单片机,也可以将数据从单片机发送到计算机。
在单片机中,常用的串口通讯方式有UART和USART。
串口通讯的基本原理是通过两根信号线(TX-发送线和RX-接收线)进行数据的传输。
在本实验中,我们将使用UART通讯方式,通过串口将单片机接收到的数据发送到计算机上,并将计算机发送的数据显示在液晶屏上。
三、实验器材1.STM32F103C8T6开发板一块2.杜邦线若干B转串口模块一块4.计算机一台四、实验步骤1.连接硬件设备:将STM32F103C8T6开发板通过USB转串口模块与计算机相连。
2.配置串口参数:在单片机开发环境中,选择正确的串口号和波特率参数。
3.配置中断优先级:为了确保串口接收中断能够正常工作,需要设置中断优先级。
4.编写程序代码:根据实验要求,编写单片机的串口通讯程序。
5.烧录程序代码:将编写好的程序代码烧录到单片机中。
6.运行程序:在计算机上打开串口调试工具,观察串口通讯是否正常。
五、实验结果通过实验,我们成功实现了单片机与计算机之间的串口通讯。
通过串口调试工具,我们可以在计算机上看到从单片机发送过来的数据,并且可以通过计算机发送数据,从而在液晶屏上显示出相应的结果。
六、实验分析1.串口通讯是一种较为常见且灵活的数据传输方式,能够满足很多实际需求。
2.在编写串口通讯程序时,需要根据具体的芯片和开发环境进行相应的配置。
3.在使用串口调试工具时,需要注意选择正确的串口号和波特率,否则无法正常进行通讯。
4.串口通讯可以在许多领域进行应用,如物联网、机器人控制等。
七、实验总结通过本次实验,我学习到了单片机串口通讯的基本原理和方法,了解了UART通讯方式的具体实现。
串口通信实验报告
一、实验目的1. 了解串口通信的基本原理和作用。
2. 掌握单片机串口通信的编程方法。
3. 通过实验验证串口通信的可靠性和稳定性。
二、实验原理串口通信是指通过串行通信接口进行的数据传输方式。
串口通信具有传输速率较低、通信距离较近等特点,但具有简单、可靠、易于实现等优点。
在单片机应用中,串口通信广泛应用于数据采集、设备控制、远程通信等领域。
单片机串口通信的基本原理是:通过单片机的串行通信接口(如UART、USART等)发送和接收数据。
串口通信的数据格式通常包括起始位、数据位、奇偶校验位和停止位。
三、实验设备1. 单片机开发板(如STC89C52、STM32等)2. 串口调试助手(如PuTTY、串口调试助手等)3. 仿真软件(如Proteus、Keil等)四、实验内容1. 串口通信硬件连接2. 串口通信软件编程3. 串口通信调试与验证五、实验步骤1. 硬件连接(1)将单片机的TXD、RXD、GND等引脚与计算机的串口通信线相连。
(2)将计算机的串口通信线与串口调试助手相连。
2. 软件编程(1)在仿真软件中编写单片机程序,实现数据的发送和接收。
(2)在串口调试助手中编写程序,实现数据的发送和接收。
3. 调试与验证(1)在仿真软件中运行单片机程序,观察串口调试助手中的数据是否正确接收。
(2)修改单片机程序,改变发送和接收的数据,验证串口通信的可靠性。
六、实验结果与分析1. 实验结果通过实验,成功实现了单片机与计算机之间的串口通信。
在串口调试助手中,可以观察到单片机发送的数据被正确接收,同时也可以向单片机发送数据。
2. 实验分析(1)实验验证了单片机串口通信的可靠性和稳定性。
(2)实验过程中,需要注意波特率、数据位、停止位等参数的设置,以保证通信的准确性。
(3)实验过程中,可以尝试不同的通信协议,如ASCII码、十六进制等,以适应不同的应用场景。
七、实验心得1. 串口通信是一种简单、可靠的数据传输方式,在单片机应用中具有广泛的应用前景。
单片机原理与应用A实验报告_UART串口通信
UART串口通信一、实验目的1、学习实验系统的基本操作,了解在实验系统中进行程序设计、仿真和调试的操作方法和步骤;2、熟悉Proteus的虚拟仪器的使用;3、熟悉并灵活运用单片机的UART通信功能;4、熟悉虚拟串口在仿真中的应用;5、实现单片机点对点串口通信,即单片机与单片机间的相互通信;6、实现单片机与计算机串口通信。
二、实验原理1、如图(1),有甲、乙两个单片机,甲单片机外接一个3×3矩阵键盘和8个LED;乙单片机外接一个独立按键和一个数码管;甲乙两个单片机通过串口进行通信(即TXD和RXD引脚)。
图(1)单片机点对点串口通信电路仿真图按下甲单片机矩阵键盘的任意一个按键,将该键编号(编号自己设定)通过串口发送给乙单片机,乙单片机在数码管上显示出对应的按键号;按下乙单片机的外接独立按键控制甲单片机的8个LED(按键之前8个LED灯均点亮),具体关系为:(1)第1次按键,乙单片机向甲单片机通过串口发送命令字符A,甲收到该命令,使前4个LED灯亮,后4个不亮;(2)第2次按键,乙单片机向甲单片机通过串口发送命令字符B,甲收到该命令,使前4个LED不亮,后4个亮;(3)第3次按键,乙单片机向甲单片机通过串口发送命令字符C,甲收到该命令,使奇数个灯亮,偶数个灯不亮;(4)第4次按键,乙单片机向甲单片机通过串口发送命令字符D,甲收到该命令,使偶数个灯亮,奇数个灯不亮;(5)第5次按键,乙单片机向甲单片机通过串口发送命令字符E,甲收到该命令,使所有灯都不亮。
2、单片机与计算机串口通信,如图(2),需要一个单片机和一个COMPIM器件,连接电路时,将单片机的RXD和COMPIM的RXD相连,单片机的TXD与COMPIM的TXD 相连,即同名引脚相连,其它的引脚悬空。
图(2)单片机与与计算机串口通信电路仿真图实验内容:设置单片机的串口为工作方式1,波特率设置为9600。
计算机通过串口调试助手向单片机依次发送字符1、2、3、4,单片机收到每个字符后向计算机回复相应的内容,具体要求如表1所示:表1 单片机与计算机通信内容三、实验步骤1、硬件仿真。
单片机串口实验报告
单片机串口实验报告一、实验目的本实验旨在通过单片机串口通信的方式,实现单片机与计算机之间的数据传输,并掌握串口通信的基本原理和操作方法。
二、实验器材1. STC89C52单片机开发板2. USB转串口模块3. 电脑一台4. 杜邦线若干三、实验原理1. 串口通信原理串口通信是一种异步通信方式,即发送和接收双方没有统一的时钟信号。
在串口通信中,发送方将数据以固定的位数(如8位)分成一个个字符,每个字符之间用一个起始位和一个或多个停止位隔开。
接收方在接收到起始位后开始接收数据,并在停止位处停止接收。
由于每个字符之间有起始位和停止位隔开,因此可以通过这些特殊符号来识别每个字符。
2. 单片机与计算机之间的串口通信单片机与计算机之间的串口通信需要通过USB转串口模块来实现。
USB转串口模块将计算机的USB接口转换成RS232标准接口,单片机则直接使用RS232标准接口进行通讯。
四、实验步骤1. 连接硬件设备:将STC89C52单片机开发板和USB转串口模块通过杜邦线连接起来,并将USB转串口模块插入电脑的USB接口。
2. 编写程序:使用Keil C51软件编写程序,实现单片机通过串口向计算机发送数据,并接收计算机返回的数据。
3. 烧录程序:将编写好的程序烧录到单片机中。
4. 运行程序:在电脑上打开串口调试助手,设置好串口参数(如波特率、数据位、停止位等),并打开串口连接。
然后在单片机上运行程序,观察串口调试助手上是否能够正常接收到单片机发送的数据,并能够将计算机发送过来的数据正确地显示在单片机上。
五、实验结果经过实验,我们成功地实现了单片机与计算机之间的串口通信。
在Keil C51软件中编写了相应的程序,并将其烧录到了STC89C52单片机中。
通过USB转串口模块将单片机与计算机连接起来,在电脑上打开串口调试助手并设置好参数后,我们可以看到成功地从单片机向电脑发送了一些数据,并且也能够正确地接收到电脑返回的数据。
单片机串口通讯实验报告
单片机串口通讯实验报告本实验是基于单片机和串口通讯的实验,旨在通过掌握单片机与计算机之间的串口通讯原理、方法和技巧,提高学生在单片机应用方面的操作技能和实践能力。
本实验将分为以下三个部分进行讲解:一、实验原理串口是指通过一条通信线路,将数据以一定的格式传输到一个设备或计算机上。
单片机是一种非常常见的嵌入式系统,具有很好的应用前景。
通过学习单片机串口通信原理,可以更好地理解嵌入式系统的应用场景。
串口发送数据的基本原理是将二进制的数据码转换成特定规则的数据帧,发送到串口的通信线路上。
串口接收数据的基本原理是从串口线路上读取二进制码,对码进行格式化解码,再存储到相应的缓存区中。
计算机和单片机通讯的原理基本一致,但是具体的实现方法和细节要根据所用的串口模块和单片机芯片来确定。
二、实验步骤该实验将从计算机到单片机的数据传输进行实验。
其中,计算机上将使用串口终端软件RealTERM,单片机使用TTL串口。
1.连接TTL串口首先,将串口线连接到单片机的TTL串口上(RX、TX、GND)。
2.串口设置打开RealTERM软件,设置串口参数(波特率、数据位、奇偶校验、停止位等)。
在Windows系统中,可以通过设备管理器查看串口设备,从而确定串口号(通常为COM1、COM2等)。
3.单片机程序设计单片机程序中需要设置串口参数、发送数据和接收数据等功能。
在发送数据时,需要将发送缓存区中的数据转换成相应的数据帧格式,再通过串口发送到计算机上。
在接收数据时,需要从串口接收缓存区中读取数据,并且解析成特定的格式,再将数据存储到所需的区域。
4.进行实验打开串口终端软件后,点击“打开串口”按钮,可以看到从单片机发送的数据。
可以通过键盘输入数据,以进行数据的发送和接收。
具体操作步骤可以根据实际需要来确定,可以设置不同的数据帧格式和接收响应逻辑。
三、实验结果通过上述实验,可以掌握单片机串口通信的基本原理和实现方法。
可以通过实验得到一些操作技巧,例如:1.根据计算机和单片机所使用的串口模块和相关参数,选择合适的波特率、数据位、奇偶校验和停止位等控制参数。
单片机串口通信实验报告
信息工程学院实验报告课程名称:单片机原理及接口实验项目名称:串口通信实验实验时间: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构成接收线路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告
姓名___ _ 学号___
一、实验项目单片机串行口通讯实验
二、实验要求
利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在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 0000h
ljmp main
org 0023h
ljmp com_in ;串行口中断服务子程序入口
org 1000h
main: mov sp,#50h ;设置堆栈指针
mov dptr,#7f00h ;81c55初始化
mov a,#03h
movx @dptr,a
mov tmod,#20h ;设置定时器T1工作方式为方式2
mov th1,#0f4h ;设置定时器T1计数初值
mov tl1,#0f4h
mov pcon,#80h ;波特率加倍
setb tr1 ;打开定时器
mov scon,#40h ;设置串行口工作方式为方式1,8位异步收发,波特率可变
mov ie,#90h ;打开中断允许寄存器,采用中断方式发送数据
clr ti ;关闭发送中断标志位T1
loop: acall key1 ;调用读取键值子程序
mov r0,a ;键值存入R0
setb ti ;开发送中断标志位T1
ljmp loop
com_in: clr ti ;关闭发送中断标志位T1
mov sbuf,r0 ;发送数据
reti
key1: acall ks1 ;调用判定有无键闭合子程序
jnz lk1 ;有键闭合,跳转lk1
acall dir ;无键闭合,调用显示子程序
ajmp key1
lk1: acall dir ;可能有键闭合,延时24ms
acall dir
acall ks1 ;调用判定有无键闭合
jnz lk2 ;经去抖动,判断有键闭合跳转lk2
acall dir ;无键闭合,调用延时子程序
ajmp key1
lk2: mov r2,#0feh ;列选码送到R2
mov r4,#00h ;r4为列号计数器
lk4: mov dptr,#7f01h ;列选码送到PA口
mov a,r2
movx @dptr,a
mov dptr,#7f03H
movx a,@dptr ;读PC口
jb acc.0,lone ;0行线为高电平,无键闭合,跳转lone,转判1行
mov a,#00h ;0行有键闭合,首键号0→A
ajmp lkp ;跳转lkp,计算键号
lone: jb acc.1,ltw0 ;1行线为高电平,无键闭合,跳转ltwo,转判2行mov a,#06h ;1行有键闭合,首键号8→A
ajmp lkp ;跳转lkp,计算键号
ltw0: jb acc.2,lthr ;2行线为高电平,无键闭合,跳转lthr,转判3行mov a,#12h ;2行有键闭合,首键号10H→A
ajmp lkp ;跳转lkp,计算键号
lthr: jb acc.3,next ;3行线为高电平,无键闭合,跳转next,准备下一列扫描mov a,#18h ;3行有键闭合,首键号18H→A
lkp: add a,r4 ;计算键号,即行首键号+列号=键号
push a ;键号进栈保护
lk3: acall dir ;调用显示子程序,延时6ms
acall ks1 ;调用判定有无键闭合子程序,延时6ms
jnz lk3 ;判定键释放否,未释放,则循环
pop a ;键已释放,键号出栈→A
ret
next: inc r4 ;列计数器加1,为下一列扫描做准备
mov a,r2 ;判定是否已扫到最后一列
jnb acc.5,knd ;键扫描已到最后一列,跳转knd,重新扫描
rl a ;键未扫到最后一列,位选码左移一位
mov r2,a ;位选码→R2
ajmp lk4
knd: ajmp key1
ks1: mov dptr,#7f01h ;判定有无键闭合子程序,全0→扫描口(PA口)mov a,#00h ;即列线全为低电平
movx @dptr,a
mov dptr,#7f03h ;PC口地址
movx a,@dptr ;从PC口读行线状态
cpl a ;行线状态取反,如无键按下,则A中内容为0
anl a,#0fh ;屏蔽无用的高四位
ret
接受程序:
org 0000h
ljmp main
org 0023h
ljmp com_in
org 1000h
main: mov sp,#50h ;设置堆栈指针
mov 60h,#0 ;显示缓冲区初始化
mov 61h,#0
mov 62h,#0
mov 63h,#0
mov 64h,#0
mov 65h,#0
mov dptr,#7f00h ;81c55初始化
mov a,#03h
movx @dptr,a
acall dir ;调用显示子程序
mov tmod,#20h ;设置定时器T1工作方式为方式2
mov th1,#0f4h ;设置定时器T1计数初值
mov tl1,#0f4h
mov pcon,#80h ;波特率加倍
setb tr1 ;打开定时器
mov scon,#50h ;设置串行口工作方式为方式1,允许串行接受位REN置1 mov ie,#90h ;打开中断允许寄存器,采用中断方式发送数据
com_in: clr ri ;接收中断标志位清0
mov a,sbuf ;接收数据
reti
loop: mov r1,a ;键值转换为显示数据
mov r0,#0f0h
mov a,r1
anl a,r0
mov 61h,a ;61h对应的数码管显示大于16的数
mov r2,#0fh
mov a,r1
anl a,r2
mov 60h,a ;60h对应的数码管显示小于16的数
acall dir
here: sjmp $
dir: mov r0,#60h ;置缓冲器指针初值
mov r3,#01h ;位选码的初值送R3
mov a,r3
ld0: mov dptr,#7f01h ;位选码→PA口
movx @dptr,a
inc dptr ;指向PB口
mov a,@r0 ;显示数据送到A
add a,#0dh ;加偏移量
movc a,@a+pc ;根据显示数据来查表取段码
movx @dptr,a ;段码→PB口
acall delay ;延时1ms,即该位显示1ms
inc r0 ;显示数据缓冲区指针指向下一个数据单元
mov a,r3 ;位选码送入A中
jb acc.5,ld1 ;判断是否扫描到最右边的LED,如到,则返回
rl a ;位选码向左移一位,准备让显示位右边的下一位LED亮
mov r3,a ;位选码送r3中保存
ajmp ld0
ld1: ret
tab: db 3fh,06h,5bh,4fh,66h,6dh ;共阴极LED段码表db 7dh,07h,7fh,6fh,77h,7ch
db 39h,5eh,79h,71h,73h,3eh
db 31h,6eh,1ch,23h,40h,03h
db 18h,00h
delay: mov r7,#02h ;延时1ms子程序
D1: mov r6,#0FFH
D2: djnz r6,D2
djnz r7,D1
ret
七、实验小结
单片机实验报告
姓名:毛幸林
班级:2010138
学号:201013803
专业:电子信息工程。