C51单片机 串口通信RX&TX

发布者:快乐的舞蹈最新更新时间:2022-06-20 来源: eefocus关键字:C51  单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章

画图

在这里插入图片描述

最简单的串口通信代码

*难解释。没了解单片机内部怎么运行,可能看不懂 *


#include

#include

sbit led=P1^0;

void initUart()//最最最基本的  *串口通信初始化*  要熟记

{

//首先来个定时器1工作方式2//0010 0000

TMOD = 0x20;

TH1 = 0xfd;//波特率9600/晶振11.0592Mhz

TL1 = 0xfd;

TR1=1;

//串口工作方式1为最常用0101 0000

SCON=0x50;

//打开总中断

EA=1;

//允许串口中断

ES=1;

}


void main()

{

initUart();

led=0;

while(1);

}

//这里解释一下TI和RI:

/*TI为发送中断标志位,

TI=0时开始传送数据,

知道TI=1时结束,当TI一

直为1时就没法传送数据。



同样,RI为接收中断标志位,RI=0开始接收,RI=1接收完毕,不清零无法继续接收,

左移在下面的在中断要手动清零,让单片机可以开始接收下一次的数据*/

void intt() interrupt 4

{

if(RI==1)//接收数据完毕

{

SBUF='1';

led=~led;

RI=0;

}

}

在这里插入图片描述

代码效果:电脑发送数据给单片机,单片机的SBUF接收到之后,触发了中断,中断函数开始工作,RI=1是因为SBUF接收完数据了,然后SBUF=‘1’,是将字符1传给SBUF,然后由SBUF发送给电脑,此时电脑收到1;led=~led:仿真软件里面的LED的在闪。

定时器的初始化知识就先不说了,有机会再说。记吧记吧记吧。


1、不要将串口工作方式和定时器工作方式搞混了。


2、为什么选择定时器1的工作方式2呢?

答:因为工作方式2有自动重装初值的功能,避免了通过程序反复装入初值而引起的定时误差,使得波特率更稳定。


3、定时器与波特率有关。所以串口初始化一定要有定时器的存在,否则波特率都没有,怎么收发数据?

这里可以先硬性记一下定时器的初值TL1=0xfd,TH1=0xfd,对应的波特率是9600,要记住是因为这将是我们最常用的。


4、什么是SBUF?

SBUF通俗点说就是一个数据缓冲区,可接受数据,也可发送数据。

比如上面的SBUF=‘1’,就是把字符‘1’存到SBUF中,然后由单片机发给其他终端,比如我的电脑是接收方,则收到了数据1。

在这里插入图片描述

打开虚拟串口工具,打开里面的vspd7.2.308.zip,然后一路next、next、next。安装完之后,记的把另一个不起眼的文件(vspdctl.dll)复制到安装目录下,覆盖原来的 打开就这个样(可能win10直接双击快捷方式打不开,右键管理员打开即可):

在这里插入图片描述


点击添加虚拟串口后会产生两个COM,第一个用于串口工具,第二个用于单片机,比如我的虚拟串口是com1和com2,然后com1在串口工具那里选择,com2则在单片机的RS232那里选择

在这里插入图片描述

具体操作

1画好线路图

2将c代码用keil生成hex文件

3在仿真软件里双击串口接口,设置好波特率为9600,设置好你电脑对应的第二个虚拟COM号

在这里插入图片描述

4打开电脑的串口工具sscom5.13.1.exe

选择串口(你电脑对应的第一个虚拟COM号)

5用串口工具发送数据

6此时你会发现单片机返回给串口工具的是一些乱码

在这里插入图片描述

7那我们去改一下晶振,也就是晶振频率:双击单片机,讲12改为11.0592

在这里插入图片描述

8重新来一遍发送数据,此时返回就正常了

在这里插入图片描述

关键字:C51  单片机  串口通信 引用地址:C51单片机 串口通信RX&TX

上一篇:c51单片机中断详解
下一篇:c51单片机中断详解--适合初学者

推荐阅读最新更新时间:2024-11-12 11:26

单片机---HLK-W801开发环境搭建
最近刷淘宝,偶尔就会刷到一些国产芯片,于是买了一块海凌科的开发板,型号HLK-W801。 这是一块基于W801芯片设计的开发板,支持平头哥自研指令集C-SKY架构。底板上提供RST复位按键、BOOT升级按键和USB20接口,扩展接口支持Touch、UART、PWM、GPIO SPI、I2C、I2S、ADC、LCD等外设。 挺起来怪厉害的,还有阿里的C-SKY自研指令集…… 那么这个开发环境,肯定是和阿里的指令架构有关系,没错,用的是平头哥CDK开发平台。不过打开之后,配置的布局,跟ST的IAR,kail-MDK都差不多。 为啥不弄个中文的? 开发工具安装 阿里的开发工具下载 链接 提取码:aso9。 双击setup.
[单片机]
<font color='red'>单片机</font>---HLK-W801开发环境搭建
基于STM32单片机低功耗模式机制详细解析
本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库实现STM32低功耗会变的非常简单。 一、STM32芯片性能 使用芯片型号:stm32f030f4,CORTEX-M0.封装TSSOP20. 运行模式:内部时钟(HSI),系统时钟频率采用48MHZ。 工作电压:3.3V 芯片具体参数如下: 二、芯片功耗 功耗: 芯片工作模式: 工作模式:外设正常运行,内核CPU及SRAM供电,未使用外设的时钟默认关闭。 睡眠模式:只有CPU停止工作,各个外设正常工作,依靠任何中断/事件唤醒。 停机模式:1.8V供电区域时钟被停止,内部HSI,PLL,外部时钟HSE均关闭,同时
[单片机]
基于STM32<font color='red'>单片机</font>低功耗模式机制详细解析
一文读懂汽车控制芯片(MCU
本文从工作要求,性能要求,产业格局,行业壁垒四个维度,分别介绍车身、底盘、动力、座舱四个域的MCU芯片。并整理了国产MCU芯片的应用现状,供从业者参考。 1. 控制类芯片介绍 控制类芯片主要就是指MCU(Microcontroller Unit),即微控制器,又叫单片机,是把CPU的主频与规格做适当缩减,并将存储器、定时器、A/D转换、时钟、I/O端口及串行通讯等多种功能模块和接口集成在单个芯片上,实现终端控制的功能,具有性能高、功耗低、可编程、灵活度高等优点。 车规级MCU示意图 ※资料来源:公开资料、编写单位提供 汽车是MCU的一个非常重要的应用领域,据IC Insights数据,2019年全球MCU应用于汽车电子
[嵌入式]
C51读写AT24C04源代码及AT24C04测试程序
一、C51读写AT24C04源代码 /*=============================================*/ /*;***********************************/ /*;起动24C01时序*/ void Start() { SCL=1; SDA=1; SDA=0; SCL=0; } /*;************************************/ /*;停止24C01时序*/ void Stop() { SDA=0; SCL=1; SDA=1; } /*;**************************************/ /*;检测24C01的
[单片机]
自制AVR高压编程器,解锁熔丝位错误的avr单片机
这段时间在用atmel的系列单片机at90usb128x/64x和atmega32u4设计键盘,有一块at90的单片机由于熔丝位设置错误被锁死,导致progisp无法给其刷程序,网上查了有几种方法解锁: 用有源晶振的输出脚给到单片机的晶振输入脚。(前提是单片机的熔丝位中设置为外部时钟) 用正常单片机对的晶振输出脚给到熔丝位错误的单片机的晶振输入脚。(前提是单片机的熔丝位中设置为外部时钟) 用正常单片机编程输出时钟给到熔丝位错误的单片机的晶振输入脚。(前提是单片机的熔丝位中设置为外部时钟) 由于我的单片机熔丝位设置成了内部时钟,以上三种方法无效,只能请出最后的救命稻草——高压编程。在百度上找的一些方案大都只支持atm
[单片机]
自制AVR高压编程器,解锁熔丝位错误的avr<font color='red'>单片机</font>
如何设置51单片机的串行口来实现与PC机通信
一、原理简介 51单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,
[单片机]
如何设置51<font color='red'>单片机</font>的串行口来实现与PC机通信
基于AT89C2051单片机的智能化快速充电系统设计
1.前 言   自1859年法国物理学家普兰特(Plante)发明了铅酸蓄电池至今已有140年的历史。铅酸蓄电池有着成本低,适用性宽,可逆性好,大电流放电性能良好,单体电池电压高,并可制成密封免维护结构等优点,而被广泛地应用于车辆启动、邮电、电力、铁路、矿山、采掘、计算机UPS等各个领域中。蓄电池也是国民经济以及国防建设的重要能源,在许多行业的发展中,也迫切需要容量大、循环寿命长、充电时间短、价格低的蓄电池。而快速充电技术也成为了其中的关键技术,它对电池的使用有着非常重要的影响。目前,国内外都在不断地研究这一技术,而在快速充电技术中引入计算机控制,是非常有效的,且有着非常明显的经济效益。而单片机又以其低廉的成本,灵活的控制方式
[单片机]
基于AT89C2051<font color='red'>单片机</font>的智能化快速充电系统设计
Holtek全新TinyPowerTM LCD Flash MCU适合各应用领域
Holtek推出全新系列的TinyPowerTM LCD Flash MCU,全系列包含HT69F30A、HT69F40A及HT69F50A三个MCU,符合工业上-40℃ ~ 85℃工作温度与高抗噪声之性能要求,且提供48 ~ 80-pin的不同封装型式,搭配TinyPowerTM Flash MCU的丰沛硬件资源及使用弹性,适合各种应用领域的产品,诸如家电、工业控制、面板显示及医疗保健等。 HT69FxxA系列Program Memory为2K~8K Words、SRAM由128~384 Bytes、内建64/128 Bytes Data EEPROM、具有96~192点的LCD Driver、同时支持R-type及C-ty
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved