[物联网工程]基于Protues仿真平台的C51/2单片机串口通信实验

目录

实验目的

实验内容

环境搭建

软件下载

STC资源网站

实验过程

硬件连接

打开Proteus并创建新项目

绘制仿真电路图

程序实现

根据实验要求,编写基于AT89C51单片机串口通信的程序。

参考“实验5 AT89C51单片机入门”的“(二)程序实现 2”对编写好的程序进行编译,并导入到AT89C51微控制器。

运行仿真

打开“虚拟串口”软件,并添加如图 17所示的虚拟串口

如图 18所示,点击“开始仿真”来启动仿真。

打开串口调试助手,并参照来设置相关参数

如图 20所示,在对话框输入任意字符,依次点击“打开串口”和点击“发送”按钮,并查看数据收发情况。

总结拓展


实验目的

掌握单片机串口接收与发送方法。

掌握串口助手使用方法。

了解单片机串口中断服务函数用法。

实验内容

绘制单片机AT89C51的最小系统并连接上物理串口,即保证系统必须包含MCU、电源、时钟、复位电路和COMPIM端口。

利用串口调试助手发送数据实验。

环境搭建

(若具备相关实验环境可跳过此步骤) 

软件下载

表 1附上了虚拟串口6.9、串口调试助手sscom、stc-isp-15xx-v6.92D的下载链接,可以直接“Ctrl键+右键”点击链接进入下载。

表 1 串口相关必备软件

虚拟串口6.9

虚拟串口6.9.zip - 蓝奏云

串口调试助手sscom

串口调试助手sscom.zip - 蓝奏云

stc-isp-15xx-v6.92D

stc-isp-15xx-v6.92D.zip - 蓝奏云

STC资源网站

表 2的链接可以用于“四 (二)程序实现”的研究,可以直接“Ctrl键+右键”点击网址打开相关链接。

表 2 STC资源网站

STC

深圳国芯人工智能有限公司

STC手册

http://www.stcmcudata.com/datasheet/STC89C52.pdf

实验过程

硬件连接

打开Proteus并创建新项目

打开Proteus软件。

参考“实验5 AT89C51单片机入门”绘制好51单片机的最小系统。

绘制仿真电路图

对晶振、51单片机和COMPIM物理端口,设置好如图 15所示设置好相关参数。

参考表 3的元器件,来绘制如图 16所示的电路图,即在51单片机的最小系统的RXO和TXD端口上连接上COMPIM物理串口。

图 15 调整各部件的相关参数

表 3 器材清单

元器件

名称

数量

备注

AT89C51

51单片机

1

元件模式

BUTTON

按钮

1

元件模式

CAP

电容

2

元件模式

CAP-POL

极性电容

1

元件模式

COMPIM

物理串口

1

元件模式

CRYSTAL

晶振

1

元件模式

RES

电阻

1

元件模式

POWER

VCC电源

2

终端模式

GROUND

GND接地

1

终端模式

/

导线

若干

/

图 16 添加COMPIM端口

程序实现

根据实验要求,编写基于AT89C51单片机串口通信的程序。

使用Keil编程工具搭建好AT89C51的C语言程序运行环境。

利用“定时器”和“外部中断”的相关知识完成程序的编写。

程序示例:

#include "reg51.h"
#include "intrins.h"
typedef unsigned char BYTE;//将BYTE定义为unsigned char型
typedef unsigned int WORD;//将WORD定义为unsigned int型
#define FOSC 11059200L
#define BAUD 9600
bit busy;
void SendData(BYTE dat);//发送一个字节的数据
void SendString(char *s);//发送字符串
void main()
{
SCON = 0x50;//8-bit variable UART
TMOD = 0x20;//设置定时器1为8为自动重载模式
TH1 = TL1 = -(FOSC/12/32/BAUD); //-(时钟频率/12/32/波特率)=-3→-3=0xFD(HEX)
TR1 = 1;//定时器1开始运行
ES = 1;//串口中断
EA = 1;//全局中断
SendString("STC89-90xx\r\nUart Test !\r\n");//发送字符串
while(1);
}
void Uart_Isr() interrupt 4
{
unsigned char res = 0;
if (RI)
{
RI = 0;//手动清零
res = SBUF;//res读取UART数据(接收-读取SBUF;发送-写入SBUF)
SBUF = res;//res写入UART数据
}
if (TI)
{
TI = 0;//手动清零
busy = 0;//手动清零
}
}
void SendData(BYTE dat)
{
while (busy);//等待串口中断完成
busy = 1;
SBUF = dat;
}
void SendString(char *s)
{
while (*s)
{
SendData(*s++);
}
}

参考“实验5 AT89C51单片机入门”的“(二)程序实现 2”对编写好的程序进行编译,并导入到AT89C51微控制器。

运行仿真

打开“虚拟串口”软件,并添加如图 17所示的虚拟串口

图 17 添加虚拟串口

如图 18所示,点击“开始仿真”来启动仿真。

图 18 运行Proteus的仿真电路

打开串口调试助手,并参照来设置相关参数

图 19 串口调试助手参数设置

如图 20所示,在对话框输入任意字符,依次点击“打开串口”和点击“发送”按钮,并查看数据收发情况。

图 20 数据发送/接收测试

总结拓展

这个实验演示了如何通过AT89C51微控制器,完成单片机串口通信实验。可以根据需要扩展和定制程序,添加更多的功能和交互。确保正确连接元件并配置相关引脚,以串口正常工作。

  • 33
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值