实验(七):串行口实验
创始人
2024-03-25 22:32:53
0

一、实验目的与任务

        实验目的:

                 1.运行Keil开发环境,完成串行口通信软件编程;

                2.利用单片机串行口方式1与主机通信,建立Proteus仿真模型。

                3.完成系统仿真与调试。。

        任务:

                1.根据要求编写程序,并写出原理性注释;

                2. 将检查程序运行的结果,分析一下是否正确;

                3. 完成所建工程的仿真及调试;

                4. 将设计程序下载至开发板验证实验结果。

二、实验内容

        设计AT89S51单片机的串行口通过RS232通信接口与PC机进行通信,让单片机把接收到的每一帧数据(即PC机发送给单片机的每一帧数据)直接再发送给PC机,收到的字符通过串口在PC 机的串口调试工具上显示出来。(串行口波特率设定为9600Bit/s,晶振11.0592MHz,使用方式1)。

        注意:Proteus仿真中,需要利用仿真图中按键SW1,每按下按键一次就会在两个虚拟终端分别显示单片机上发送的一个字符“01”。

三、实验内容

(1)软件实现:

实验步骤:

        1.运行Keil uVision5开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立程esimlab7. uvproj,CPU 为AT89S51,包含启动文件STARTUP.A51。

        2.输入源程序,在Keil uVision5 开发环境中,建立源程序esimlab7.c,将上述程序加入该程序文件。并将该文件加入工程esimlab7.uvproj。

        3.设置工程esimlab7. uvproj 属性,将其晶振频率设置为11.0592MHz,选择输出可执行文件(HEX 文件),仿真方式为“Use Simulator”。

        4.构造(Build)工程esimlab7.uvproj。如果输入有误进行修改,直至调试正确,生成可执行程序 esimlab7.hex 为止。

图1 串口通信流程图

(2)Proteus仿真:

实验步骤:

        1.运行Proteus 开发环境,建立工程,新建原理图设计文件esimlab7.pdsprj,参考图一。

图一 串口通信仿真图(传输字符用按键SW1输入)

         2.设置单片机属性,将其晶振频率设置为11.0592MHz,载入KEIL生成的文件esimlab7.hex。

        3.启动Proteus仿真,debug菜单选择两个虚拟终端(见图二),鼠标右键单击虚拟终端1,弹出的虚拟终端窗口选中“HEX DISPLAY MODE”(见图三),虚拟终端2设置同前,每次按下按键SW1,就会在两个虚拟终端分别显示单片机上发送的一个字符“01”,运行仿真并观察结果。

 图二 虚拟终端VT1和VT2(传输字符用按键SW1输入)

 图三 选中“HEX DISPLAY MODE”

(3)开发板实验验证:(本次实验条件所限,此步骤可忽略)

实验步骤:

        1.关掉实验箱电源。将CPU板插接在JK1、JK2 上,注意CPU板的插接方向。使用串口线连接PC机和DB9 接口。按照下表连接关系将硬件连接好。

杜邦线连接关系

线序号

线端A插接位置

线端B插接位置

开发板

端子

开发板

端子

S1

MAIN_BOARD

J57/J59:TXD

CPU_51

P2:P3.1

S2

MAIN_BOARD

J57/J59:RXD

CPU_51

P2:P3.0

        2.在仿真器断电情况下将仿真器插在 CPU 板的 CPU 插座上。将仿真器与开发 PC 机的 USB 通信口连接好,母板上电。

        3.通过PROGISP 烧写软件,利用ISP 下载线(见“模块化单片机教学实验平台配套的实验指导书1.3 节”)把HEX (esimlab7.hex)文件下载到单片机中。

        4.运行程序,在通信接收端用串口调试工具观察通信数据。观察结果是否符合程序要求,若不符合,分析出错原因,至结果正确。

四、实验报告

main.c

#include sbit SW1 = P3^5;void Delay(unsigned int t)//延时函数
{unsigned char i, j;while(t){i = 2;j = 239;do{while (--j);} while (--i);t--;}
}void send(unsigned char dat){SBUF = dat;//待发送数据写入发送缓冲寄存器while(TI == 0);//串口未发生完,等待;TI = 0;//1个字节发送完毕,等待
}
void main(){unsigned char i = 01;TMOD &= 0x0F;		//清除定时器1模式位TMOD |= 0x20;		//设定定时器1为8位自动重装方式PCON = 0x00;		//波特率不倍速SCON = 0x40;		//8位数据,可变波特率TL1 = 0xFD;		//设定定时初值TH1 = 0xFD;		//设定定时器重装值TR1 = 1;		//启动定时器1while(1){if(SW1 == 0){send(i);Delay(200);}}
}

        通过本次实验,练习了串口通信编程,熟练掌握了方式1的使用,同时锻炼了Keil仿真调试的能力。

        串口以方式1输出时,数据位由TXD端输出,发送一帧信息为10位,包括一位起始位0,8位数据位,1位停止位1,当CPU执行写数据到发送缓冲器SBUF的命令后,就启动发送。

        在工业现场的测控系统中,常使用单片机进行监测点的数据采集,然后单片机通过串口与PC通信,把采集的数据串行传送到PC上,再在PC上进行数据处理。PC配置的都是RS-232标准串口,为“D”型9针插座,输入/输出为RS-232电平。由于两者电平不匹配,因此必须把单片机输出的TTL电平转换为RS-232电平。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...