51单片机串口程序实例(51单片机串口程序详解)

51单片机串口程序实例介绍

51单片机作为最常用的嵌入式系统开发平台之一,其需要大量的实例来加深基本功的理解和掌握。本文将带领读者探索如何利用51单片机完成串口程序的开发,通过分析串口通信的原理和写程序的步骤,进一步加深对51单片机的理解。

串口通信原理

串口通信是指将数据从一个设备传输到另一个设备时,将数据位逐一送出,并在每个数据位前加上一个起始位和一个停止位,这样有间隔的数据位称为“字符”,多个字符组成的字符串我们称之为“指令”。

51单片机串口程序实例(51单片机串口程序详解)

在串口通讯中一般常常采用ASCII编码,即一个字符由八个二进制位表示。需注意的是,串口通信是同步通信,因此,接收端必须在预定时间内读到数据位,在字符传输完成后,必须等停止位和下一起始位之间有一定的间隔时间,称之为“停止位”。

51单片机串口程序实例

下面是一个实现串口通信功能的51单片机程序:

```
void Init_Uart()
{
TMOD = 0x20; //设定计数器1的工作方式2
TH1 = 0xfd; //设定定时器的初始值
TL1 = 0xfd; //同上
SCON = 0x50; //设定通信模式1
PCON = 0x80; //设定波特率不加倍
EA = 1; //开总中断
ES = 1; //开串口中断
TR1 = 1; //开计数器1的总线
}

void Send_Char(char c)
{
SBUF = c; // 将字符放入缓存
}

void Send_String(char *s)
{
while(*s) Send_Char(*s++);
}

void main()
{
Init_Uart();

while(1)
{
Send_String("Hello, World!");
delay_ms(1000);
}
}

void Uart_Isr() interrupt 4
{
if(TI) // 判断是否为发送中断
{
TI = 0; // 若是发送中断,清零TI
}
if(RI) // 判断是否为接收中断
{
RI = 0; // 若是接收中断,清零RI
}
}
```

以上程序通过串口发送“Hello, World!”这一字符串,每隔一秒钟循环发送,需要注意的是,c51单片机中串口通信的波特率计算公式为:

波特率=BRT(设定值)/(2(SMOD) + 32(12(DIV)))

其中,SMOD为加倍标志,DIV为波特率计算值除12的结果。

结语

通过以上的内容,相信读者已经对51单片机串口程序开发有了更深刻的理解,能够理解其通信原理。串口通信在嵌入式系统中具有十分重要的地位,因此我们需要如此透彻认识编写模式,通过不断练习实践,不停地加深对基础的理解,更进一步向着智能化的目标前行原则。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcu937x.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月26日 上午5:32
下一篇 2023年4月26日 上午5:32

猜你喜欢