在8051系列单片机如:89S51、89C51 这些单片机上,用11.0592M晶振实现115200波特率通信,几乎是不可能的。
如果换了STC单片机,例如在STC12C5A60S2实现115200的高速通信就相当简单了。
因为,STC12单片机有独立的波特率发生器。
#include "STC12C5A60S2.H"
#include "stdio.h"
void init_uart()
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
BRT = 0xFD; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
}
char putchar (unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
return SBUF;
}
记得头文件加上 stdio.h,然后在代码里实现 putchar 函数,这样你就可以很方便的用 printf函数进行串口输出了。
例如
int hh=0,mm=0,ss=0;
printf("现在的时间:%d:%d:%d\r\n", hh,mm,ss);
是不是串口输出变简单多了。
关键字:STC单片机 晶振 波特率 串口通信
引用地址:
STC单片机11.0592晶振实现115200波特率串口通信
推荐阅读最新更新时间:2024-03-16 14:54
基于STM32F103入门4——串口通信
最近能抽点时间学一下stm32了,串口通信用的挺多的,比如wifi模块,GSM模块,指纹模块等等…在这里用自己理解的写一下总结,如果有误的话请大家多多指点。 串口的基本概念 串行和并行 串行 串行是一位一位的传输。 常用的有 USART、IIC、SPI等… 串行也分为 同步通信 和 异步通信 同步: 就是一般有一根时钟线,有时钟就可以大家一起同步嘛。靠时钟来约定。一根数据线。一般一个时钟传输一个Bit位。同步的话 他们大部分都是有效数据来的。但是对于双方的时钟允许误差较小。 异步: 异步就是我们平常玩串口用的最多的,它不像同步有个时钟,异步是没有时钟,那我们得为了数据不出错,所以通过 起始位、奇偶校验位、停止位这些来降低数据的
[单片机]
c51 串口 波特率的计算
在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS 51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T溢出率决定。 串行口的四种工作方式对应着三种波特率。由于输人的移位时钟的来源不同,所以,各种方式的波特率计算公式也不同。 一、方式0的波特率 方式0时,移位时钟脉冲由56(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。所以,波特率为振荡频率的十二分之一,并不受 PCON寄存器中SMOD的影响,即: 方式0的波特率=fosc/12 三、方式l和方式3的波特率 方式1和方式3
[单片机]
单片机入门经验分享1-晶振 复位电路与电源
学单片机也好长时间了,走过许多弯路,挖过许多坑,浪费了很多时间,做过实际产品后回顾过去的学习经历,发现很多坑其实是可以避免的,单片机的入门应该可以更轻松一点,借51黑电子论坛一方宝地,写写我的一些学习经历,希望对刚入门甚至还没有入门的新手有所帮助,心愿足矣,本人水平有限,求老手轻拍,有错请指出,有事请留言。。。 单片机的学习,模电数电是最基本的,也是最重要的,构成单片机最小系统的三个要素,是电源,晶振和复位电路,话说这是之前的STC89C52了,现在的STC15系列,晶振和复位电路都内置了,但是电源还是要有的{:lol:},我们就以这2者做对比来学习,看看有何不一样的地方。 关于单片机的电源 通过查看单片机的型号可知,STC8
[单片机]
学习笔记之-51单片机串口通信
1.原理 8051系列单片机有通用异步收发器(UART,universal Asynchronous Receiver/Transimitter)用于串口通信,发送时数据由TXD引脚引出,接收时数据从RXD引脚输入,有两个缓存器(Serial Buffer),一个作为发送缓存器,另一个作为接收缓存器。它们占用同一地址99H 。UART是可编程的全双工的串行口,短距离的机间通信可以使用UART的TTL电平,使用驱动芯片(MAX232)可以与通用微机进行通信。更多通信的知识可以看我的串口通信。 1.1 51单片机串行口的结构 : 1.2 51单片机串行口的控制寄存器 : 51单片机串口通信,重点就SCON,PCON,
[单片机]
STM32串口通信(一)
关于STM32串口通信USART的一些个人浅见: 1:对STM32中文数据手册解读之后,相信大家对USART串行通信有些了解,学习51的时候也都接触过,使用串口只要弄明白原理就很简单了 发送和接收数据的过程从图上可以直观的看出 USART串口通信涉及到几个重要的寄存器 1:)状态寄存器 2)数据寄存器 3)波特比率寄存器 例:若要设置比特率为9600,那么DIV就是468.75,则此寄存器的高12位应存值:468,低4位存值:0.75*16=12(十进制小数换算成十六进制小数);最后将整数和小数拼接:BRR=468 4+12;(详细过程可参照源代码;) 4)控制寄存器1: 5)控制寄存
[单片机]
51单片机与上位机串口通信程序设计
51 单片机 与上位机串口通信程序设计 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对 单片机 进行实时控制。 程序如下: //这是一个 单片机 C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #include reg51.h #include stdio.h #include string.h #define INBUF_LEN 4 //数据长度 unsigned ch
[单片机]
基于VB 6.0串口通信的气压测高系统数据采集
串口通信在系统控制的范畴中一直占据着极其重要的地位,在规格上越来越完善,应用也越来越广泛,使用串行通信的方式可以达到系统控制的目的。以往,要实现计算机的串口通信需要做大量复杂的工作,如今,Visual Basic 6.0(VB 6.0)在开发可视化环境下的监控系统时有其独特的优势,VB 6.0提供了串行通信控件,可以轻松实现串口数据的交换。本文介绍了基于VB 6.0的ActiveX控件——Microsoft Communication(MSComm)通信控件,实现了PC机对气压测高系统的串行通讯功能,完成了对多台气压测高设备进行数据采集。 1 气压测高测试系统的基本构成 气压测高系统的基本构成如图1所示,由PC机
[测试测量]
基于CPLD的电池管理系统双CAN控制器的设计
电池管理系统是混合动力汽车中重要的电子控制单元,具有保障电池正常、可靠和高效工作的作用,是电池与用电设备之间的桥梁。在研制以及批量生产过程中都需要对其内部控制参数进行离线或在线匹配标定,而电池管理系统需要采集和处理大量的数据,本文选用TMS320LF2407作为标定用CAN控制器。作为电动汽车上的一个CAN节点,需要接收整车发来的CAN消息来执行对外部继电器、风扇以及电池等器件的控制命令,本文选用SJA1000。 双CAN硬件电路和CPLD逻辑设计 双CAN硬件电路设计 TMS320LF2407基于增强的哈佛结构,是地址线和数据线分离的微处理器,对晶振倍频后,频率高达40MHz。而SJA1000的地址线和数据线复用,增加了D
[应用]