C51单片机串口发送数据的使用

这篇具有很好参考价值的文章主要介绍了C51单片机串口发送数据的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、先摆上我所使用的C51单片机开发板的原理图

c51串口的硬件电路

C51单片机串口发送数据的使用

 单片机的最小系统

         假如说电路板上没有CH340芯片,我们就要使用TTL转USB模块来进行电平的转换,然后将模块的RX接单片机的TX,模块的TX接单片机的RX,来进行接线连接。

C51单片机串口发送数据的使用

         在连接好连线后,我们打开计算机管理,来查看端口是否存在,如果没有,我们需要下载CH340驱动,驱动的链接在下面

https://download.csdn.net/download/qq_27699199/87017256

C51单片机串口发送数据的使用

 安装后就可以识别了;;;;常见的失败的原因,需要检查自己的usb线是否带数据传送的功能,有些时候我们使用的usb线只有电源充电的功能,而没有通信的功能!!!!血的教训

以上是我们的前期的硬件和软件准备

 2、keil软件的讲解

C51单片机串口发送数据的使用

我将关于串口的程序放在了uart.c文件中了

 该C文件中的uart初始化函数

/*******************************************************************************
* 函 数 名       : uart_init
* 函数功能		 : 串口通信中断配置函数,通过设置TH和TL即可确定定时时间
* 输    入       : baud:波特率对应的TH、TL装载值
* 输    出    	 : 无
*******************************************************************************/
void uart_init(u8 baud)
{
	SCON=0X50;			//设置为工作方式1
	TMOD|=0X20;			//设置计数器工作方式2
	PCON=0X80;			//波特率加倍
	TH1=RELOAD_COUNT;	//计数器初始值设置
	TL1=TH1;
	ES=1;				//关闭接收中断
	EA=1;				//打开总中断
	TR1=1;				//打开计数器
	TI=1;          //发送中断标记位,如果使用printf函数的必须设置	
}

下面是芯片手册中对于  串行口控制寄存器SCON 和  电源控制寄存器PCON寄存器的介绍,这里使用  |=  是为了不改变除了我们设置的位之外的其他的数据位,我们代码实际上是设置了8位UART波特率可变。

C51单片机串口发送数据的使用



---------------------------------------------------------------------------------------分割线--------------------------

通过设置TH1和TL1的值来设置串口的波特率,TH1和TL1填一样的值

C51单片机串口发送数据的使用


 

 设置定时器1的计数值,按下表的预先值设置C51单片机串口发送数据的使用

 

3、printf的重定向

直接上代码:

注意,printf的重写需要增加#include <stdio.h>的头文件

写发送一个字节函数

//串口发送一个字节数据
void UART_Send(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);			//TI:串口1发送完成中断请求标志。需要软件清零。
	TI=0;
}

puchar重写文章来源地址https://www.toymoban.com/news/detail-434840.html

//重定向printf
char putchar(char c)
{
    UART_Send(c);
		//TX1_write2buff(c);
    return c;
}

之后就可以使用printf来使用串口了

printf具体的打印格式为

数据类型 打印格式
u8 %d
s8 %d
u16 %d or %hu
s16 %d or %hd
u32 %u
s32 %d
u64 %llu
s64 %lld
int %d
unsigned int %u
short int %d or %hd
long %ld
unsigned long %lu
long long %lld
unsigned long long %llu
char %c
char * %s
bool (#define stdbool.h) %d
unsigned int/int------>十六进制 %0x
unsigned long/long---->十六进制 %0lx
long long/unsigned long long ----->十六进制 %0llx
unsigned int/int------>八进制 %0o
unsigned long/long---->八进制 %0lo
long long/unsigned long long ----->八进制 %0llo
float %f
double %f or %lf
科学技术类型(必须转化为double类型) %e
限制输出字段宽度 %x.yf (x:整数长度,y:小数点长度)

到了这里,关于C51单片机串口发送数据的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机C51数据类型

    C51数据类型 C语言的基本数据类型:char、int、short、long、float、double。 1、 Keil C51 编译器支持的数据类型。    对于Keil C51编译器,short型与int型相同,double型与float型相同。 Keil C51支持的数据类型表 数据类型 长度 值域 unsigned char 单字节 0~255 signed char 单字节 -128~+127 unsigned

    2024年02月08日
    浏览(76)
  • 使用C51单片机实现红外遥控行为控制

    目录 引言 红外遥控原理 实现红外遥控功能 代码示例 结论

    2024年02月12日
    浏览(42)
  • 51单片机串口通信的原理及使用方法(附串口收发数据例程代码)

    温馨提示:本篇文章详细介绍了串口的原理及使用方法,涉及的内容较多,但也较为全面,学者若想充分掌握串口通信的原理和具体使用方法(部分限于51单片机),请静下心来将其读完,相信一定会受益匪浅!而且对32单片机的串口学习也有非常好的辅助! 一.串行通信的原

    2024年02月09日
    浏览(41)
  • C51单片机——通过使用定时器控制LED闪灭

    目录 0 引言 1 定时的原理 1.1 生活中的定时 1.2单片机中的定时器 2 C语言程序设计 2.1 定时器的内部功能 2.2 设置寄存器 2.3 实验程序 3 有两个小问题(算是延伸吧) 3.1 只能0.05s闪一次吗? 3.2 每次都要在草稿纸手算初始值好麻烦

    2024年02月06日
    浏览(73)
  • 单片机语言--C51语言数据类型与存储类型以及C51的基本运算

    C51的基本语法与标准C相同,C51在标准C的基础上进行了适合于51系列单片机硬件的扩展。 深入理解Keil C51对标准C的扩展部分以及不同之处,是掌握C51语言的关键之一。 C51与标准C的主要区别如下: (1)库函数的不同。 (2)数据类型有一定的区别。 (3)C51的变量存储模式与标

    2024年04月10日
    浏览(47)
  • 51单片机串口使用

    今天将为大家讲解51单片机的串口原理及代码编写。 51单片机串口是一种通信接口,它可以将51单片机与外部设备连接起来,实现数据的双向传输。51单片机串口的原理是,51单片机的串口接口由两个管脚组成,一个是RXD,另一个是TXD,RXD用于接收数据,TXD用于发送数据。当5

    2024年02月05日
    浏览(49)
  • 【个人笔记】51单片机串口通信的字符串接收和发送,串口通信调节数码管显示时钟(串口通信,定时器,数码管)

           目的:利用PROTUES仿真软件、串口调试助手、虚拟串口,搭建单片机与PC通信仿真平台,熟悉单片机串口的配置及与PC机的通信方法;尝试制定通信协议,单片机根据通信协议解析接收到的内容,并根据接收的指令执行相应的操作。 基本功能: 1.时分秒的动态显示。

    2024年02月11日
    浏览(63)
  • 51单片机串口的应用(单片机和电脑互发数据)

    现在来详细看一下寄存器,我们直接查看单片机手册。 SCON寄存器 先来说说SCON寄存器。 前一节我们提过,我们一般使用串口用的是模式1,即8位UART,这样我们就用不到校验位。从手册中可以看到,寄存器SCON中的SM0和SM1配置成01即可。 SM2寄存器明显用不到,因为我们没有用模

    2024年02月07日
    浏览(58)
  • 【51单片机】串口通信&&使用串口通信控制LED灯

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Promise】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔串口通信 😎代码   🍔串口初始化 ⭐分析  🏳️‍🌈确定T1的工作方式 🎈TMOD=0X20;  🏳️‍🌈确定T1的初值 🎈

    2024年02月17日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包