历史上的今天
返回首页

历史上的今天

今天是:2025年07月21日(星期一)

正在发生

2020年07月21日 | 学51单片机-UART口发送一个字符

2020-07-21 来源:51hei

       UART口,又叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是单片机常用功能的一部分,也是早期台式电脑必备的一个硬件接口。


    当年我调试UART口的时候,用的还是超级终端,现在都用串口助手了,比我们当时方便多了。


       UART口按位发送和接收字节,虽然相比于并口,慢了很多,但是在有限的IO资源面前,这种方式是非常可取的。


       UART口主要用于ASCII码的传输,传输过程遵循ANSI/EIA-232标准。ASCII码是啥?看下表:

       就是说,当我想发送字符“A”的时候,我要向串口发送十进制数65,或者十六进制数41。


       驱动电路主要有有两种,一种是基于MAX232这类芯片的:

       上图中,MAX232的10脚接到单片机的TXD上,9脚接到单片机的RXD上。


       另一种以CH340或者PL2303这类芯片为主,因为电脑上的RS232接口越来越少,所以这类芯片使用USB转UART口的方式来实现,应用电路如下:

       通信过程中主要参数如下:

       波特率:传输速率,常用范围9600~115200.

       数据位:就是每次发送的这个数据有几位,常用的是8位,别的还有4、5、6、7.

       校验位:用来校验传输资料的正确性。

       停止位:是一个字符数据传输结束的标志,一般设为1位。

       波特率如何计算?

       方式1,3的波特率=1/32或1/16*计时器2的溢出率。

此处有一个公式:
波特率=1/16或1/32*(晶振的频率/12*(256-TH1))
代入:
9600=11059200/32*12*(256-TH1)
TH1=TH0=FDH

/**********************51单片机学习例程************************

*  平台:Keil U4 + STC89C52

*  名称:UART口传输一个字符 A

*  编写:起航

*  晶体:11.0592MHZ

******************************************************************/


#include

typedef   unsigned char  uint8;

typedef   unsigned int   uint16;


uint8 num = 65;

/***************************************************

*

*                                                        延时子函数

*

****************************************************/

void delay(uint16 n)

{

        while(n--);

}



/***************************************************

*

*                                                        串口初始化子函数

*

****************************************************/

void UART_init(void)

{

        SCON = 0x50;                                //工作在方式1 ,8位异步收发,波特率由定时器控制

        TMOD = 0x20;                                //选择定时器1做为波特率发生器,方式2

        TH1  = 0xFD;                                //定时器赋初值

        TL1  = 0xFD;

        TR1  = 1;                                                //启动定时器

        ES   = 1;                                                //串口中断允许

        EA   = 1;                                                //开启总中断

}


/***************************************************

*

*                                                        字节发送子函数

*

****************************************************/

void UART_send_byte(uint8 dat)

{

        SBUF = dat;

        while(!TI);                                        //等待发送完成

}




int main()

{

        UART_init();

        while(1)                                                //循环发送字符 A

        {

                UART_send_byte(num);

                delay(20000);

        }

        return(0);

}


推荐阅读

史海拾趣

中科芯(CKS)公司的发展小趣事

人才是企业发展的核心驱动力。中科芯高度重视人才队伍建设,通过引进和培养高素质人才、优化人才结构等措施,不断提升公司的创新能力和竞争力。同时,公司还创新激励机制,通过“揭榜挂帅”等形式吸引和激励人才投身重点项目的研发攻关。这些措施的实施不仅激发了员工的积极性和创造力,也为公司的持续发展提供了有力保障。

以上五个故事分别从中科芯的技术创新、科研成果、业绩增长、产品推广和人才队伍建设等方面展示了公司在电子行业中的发展历程和取得的成就。这些故事不仅展现了公司的实力和潜力,也体现了公司对社会和行业发展的贡献和担当。

EMMICRO公司的发展小趣事

EMMICRO公司始终将产品质量视为企业的生命线。公司建立了严格的质量管理体系,从原材料采购到生产流程,再到成品检验,每一个环节都严格把控,确保产品的品质稳定可靠。这种对品质的执着追求赢得了客户的信任和好评,也为公司赢得了更多的市场份额。

ETC公司的发展小趣事

速通科技始终将用户体验放在首位。公司不断完善ETC系统的服务功能,提高了系统的稳定性和易用性。同时,速通科技还建立了完善的客户服务体系,为用户提供24小时不间断的在线客服支持。这些举措大大提高了用户对ETC系统的满意度和信任度。

ABB Group公司的发展小趣事

在ETC领域,速通科技积极寻求与行业内其他企业的合作。公司与多家银行、保险公司等金融机构建立了合作关系,共同推广ETC系统的应用。此外,速通科技还积极参与行业标准的制定和修订工作,推动ETC行业的健康发展。通过与行业内其他企业的合作,速通科技实现了共赢发展,共同推动了ETC行业的进步。

ADLINK公司的发展小趣事

在ETC领域,速通科技始终保持着技术创新的步伐。公司不断投入研发资源,致力于提高ETC系统的性能、稳定性和安全性。经过多年的努力,速通科技成功研发出了基于国标ETC的自由流收费技术,并获得了多项发明专利。这一技术的推出,大大提高了车辆的通行效率,减少了交通拥堵现象。

GSR Technology Ltd公司的发展小趣事

在快速发展的同时,GSR Technology Ltd始终关注可持续发展和社会责任。公司积极推动绿色生产,采用环保材料和工艺,减少对环境的影响。同时,公司积极参与公益事业,为贫困地区提供技术支持和教育援助。此外,公司还加强知识产权保护,维护行业健康发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示一个类似公司在电子行业中的可能发展路径。实际情况可能因公司具体策略、市场环境等因素而有所不同。

问答坊 | AI 解惑

大家能把你写的闹钟程序让我参考吗?我这个不知道怎么没用。

本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 主要在闹钟调节和显示上出现了问题。  …

查看全部问答>

第三届恩智浦杯创新设计大赛

设计主题: 基于恩智浦公司任何一款微控制器为主芯片的嵌入式系统设计,能够体现恩智浦倡导的IC绿色应用应用设计概念(即健康Healthy、环保Environment、灵活Mobility)。 设计要求: 大赛鼓励参赛者以新颖、原创、绿色、实用的设计作品参赛 第 ...…

查看全部问答>

请问WinCE IE收藏夹文件保存在什么位置? (好像在注册表中)

请问WinCE IE收藏夹文件保存在什么位置? (好像在注册表中)…

查看全部问答>

地址访问的问题!

目前正做一LED显示器,扩展的地址00000H-7FFFFH为字库区,81000H-82FFFH为显存区,P1口的高4位为翻页控制,测试时,P1.7赋值1就选中显存区了,然后往1000H-2FFFH写入FF就点亮所有的LED了,我是用C写程序的,#define  base_address (volat ...…

查看全部问答>

请列出威世Fred PT Tandem 二极管的料号(至少3个)。

你好。请问威世Fred PT Tandem 二极管的料号有哪些(至少3个)?…

查看全部问答>

【求助】在c里怎样操作IO口?

想要操作具体的某一位,可以把它定义成变量吗. sbit DQ =P6.2; 51l里好像有这么写的,是什么意思呢?…

查看全部问答>

msp430f5529的官方代码的疑惑

 使用此程序后是这个结果:ACLK = REFO = 32.768kHz, MCLK = SMCLK = Default 1MHz include <msp430f5529.h> void main(void){  volatile unsigned int i;   WDTCTL = WDTPW+WDTHOLD;      &n ...…

查看全部问答>

驱动LED恒流IC TM1804

驱动TM1804 LED恒流芯片。需要用到的知识 SPI 或者IO模拟 及有关归零码的知识 http://baike.baidu.com/view/491480.htm  有关归零码的知识 阅读TM1804的芯片手册 后 我选择用SPI的方式去驱动。  该芯片采用归零码方式  如果表示灰 ...…

查看全部问答>

英特尔代工 新处理器内含ARM核心

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 无晶圆厂网路处理器开发商 Netronome Systems 稍早前公布最新 NFP-6xxx 系列流量处理器(flow processor)细节,该处理器速度达每秒200Gbit,采用英特尔 (Intel)的22nm FinFET 制程技术。 Netron ...…

查看全部问答>

官方工程为什么还会出现问题

在使用CCS5.3时,我用的是官方提供的工程文件怎么会出现那么多警告呀?…

查看全部问答>