目录
参考“实验5 AT89C51单片机入门”的“(二)程序实现 2”对编写好的程序进行编译,并导入到AT89C51微控制器。
如图 20所示,在对话框输入任意字符,依次点击“打开串口”和点击“发送”按钮,并查看数据收发情况。
实验目的
掌握单片机串口接收与发送方法。
掌握串口助手使用方法。
了解单片机串口中断服务函数用法。
实验内容
绘制单片机AT89C51的最小系统并连接上物理串口,即保证系统必须包含MCU、电源、时钟、复位电路和COMPIM端口。
利用串口调试助手发送数据实验。
环境搭建
(若具备相关实验环境可跳过此步骤)
软件下载
表 1附上了虚拟串口6.9、串口调试助手sscom、stc-isp-15xx-v6.92D的下载链接,可以直接“Ctrl键+右键”点击链接进入下载。
虚拟串口6.9 | ||
串口调试助手sscom | ||
stc-isp-15xx-v6.92D |
STC资源网站
表 2的链接可以用于“四 (二)程序实现”的研究,可以直接“Ctrl键+右键”点击网址打开相关链接。
STC | |
STC手册 |
实验过程
硬件连接
打开Proteus并创建新项目
打开Proteus软件。
参考“实验5 AT89C51单片机入门”绘制好51单片机的最小系统。
绘制仿真电路图
对晶振、51单片机和COMPIM物理端口,设置好如图 15所示设置好相关参数。
参考表 3的元器件,来绘制如图 16所示的电路图,即在51单片机的最小系统的RXO和TXD端口上连接上COMPIM物理串口。
元器件 | 名称 | 数量 | 备注 |
AT89C51 | 51单片机 | 1 | 元件模式 |
BUTTON | 按钮 | 1 | 元件模式 |
CAP | 电容 | 2 | 元件模式 |
CAP-POL | 极性电容 | 1 | 元件模式 |
COMPIM | 物理串口 | 1 | 元件模式 |
CRYSTAL | 晶振 | 1 | 元件模式 |
RES | 电阻 | 1 | 元件模式 |
POWER | VCC电源 | 2 | 终端模式 |
GROUND | GND接地 | 1 | 终端模式 |
/ | 导线 | 若干 | / |
程序实现
根据实验要求,编写基于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所示的虚拟串口
如图 18所示,点击“开始仿真”来启动仿真。
打开串口调试助手,并参照来设置相关参数
图 19 串口调试助手参数设置
如图 20所示,在对话框输入任意字符,依次点击“打开串口”和点击“发送”按钮,并查看数据收发情况。
总结拓展
这个实验演示了如何通过AT89C51微控制器,完成单片机串口通信实验。可以根据需要扩展和定制程序,添加更多的功能和交互。确保正确连接元件并配置相关引脚,以串口正常工作。