单片机通过如何发送字符串?
来源:互联网 发布:知乎个人封面图片 编辑:程序博客网 时间:2024/06/06 23:56
关于printf的知识很零碎,感觉成体系的总结有点麻烦,这里就用列出的方法。
printf 与 fputc、putchar…的关系
无论是51还是ARM,都可以在标准输入输出头文件“iostd.h”中找到printf函数;
printf函数可以方便的选择输出的内容,包括字符串,甚至是汉字形式的字符串;
当使用printf函数输出字符串的时候,肯定是一个字节一个字节的输出,而fputc和putchar是printf的子函数,就是用来输出一个字节的;
fputc是STM32里面的,putchar是51里面的,他们都是printf的子函数;
在vc中,使用printf默认输出到当前输出设备——一般是显示屏;
在单片机里面,可以通过更改putchar函数或fputc函数,自己设定printf输出的方向。通过串口实现高级打印函数printf
很简单,在单片机里面,只需要对putchar函数做出如下定义:
在STM32里面,需要对fputc函数做出如下定义:
很明显,以上工作都是有芯片库的支持,比如printf函数的搭建,定义printf和putchar函数的关系,把字符串变量转换为单个字节,识别%d,%f……等工作的完成。我们不需要关心这个,只要会调整printf函数的方向就好了。
还有一个哥们,说用printf实现OLED屏幕的显示很方便;
我们可以想一下这样的话,需要做什么条件:
1.假如OLED显示屏是SPI或者I2C通信,要在fputc函数中换成响应写一个字节的函数;
2.它的这个OLED屏要有相应的软件或硬件库,把接收到的字符串按照通信标准(ASCII或者其他)转化为字节;自己写串口打印程序prints
prints是自己写的函数,名字是随便取的;
发送之前我们需要了解,当我们用printf发送字符串的时候,我们发送的实际是什么?
英文字符串,发送的其实是ASCII编码对应的十进制序号;
比如h在ASCII中对应序号为104,那就拿出一个字节,用来发送104;
由于计算机常用16进制表示,所以在串口助手上会显示“68”;
实际上,发送的既不是10进制,也不是16进制,而是104表示成8位的二进制代码,一串01而已;中文的话,会有另外一种编码机制(UCS2?),但这个不重要,我们只要在串口助手里面写上中文,点击16进制发送,就可以得到中文字节,每个中文占两个字节;
其他和英文字符串没有区别;使用printf函数,发送的其实是表示字符串的一个个字节,字符串与字节的对应关系就是上面说的,是固定的。
每次发送字符串,发送的都是字符串的表示字节;
字符串和表示字节之间有转化规则,我们不用知道是什么规则,用指针发送就省去了这个规则——无论什么规则,转化成什么字节,我都可以通过指针寻址找到这些字节,并发送。比如,我写发送:
prints(“hello world”);执行的是:
其中,“hello world”字符串,作为输入参数,说明字符串其实表示的这个字符串的首地址!
自己写的字符串打印程序,只能输出字符串,不能处理%d,%f等,不能随意设定输出的格式。
- 单片机通过如何发送字符串?
- 小蜜蜂单片机串口发送字符串
- 51单片机STC89C52 串口发送字符串
- 如何通过JAVA发送邮件
- 关于单片机通过串口发送浮点数信息
- msp430单片机通过串口向上位机发送浮点数
- 利用51单片机 串口通信实现字符串发送
- 51单片机串口通信(字符串接收和发送)
- 单片机==iic_发送接受字符串(26)
- MSP430单片机USART串口发送字符和字符串
- CC2530通过串口向PC发送字符串
- 单片机如何串口发送数值,带小数点的。
- 单片机中串口如何发送超过8位的数据
- 如何使用PHP通过SMTP发送电子邮件
- jira,tomcat 如何通过代理服务器发送邮件
- 如何通过EasyDgm发送中文短信(unicode)
- 如何通过URLConnection向HttpServlet发送信息
- PHP如何通过SMTP验证发送邮件
- IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)
- SELU激活函数,scaled exponential linear units
- 比特币源码解析(17)
- OpenGL从1.0开始--输出图元
- GKMinmaxStrategist
- 单片机通过如何发送字符串?
- 关于单例模式
- Windows下搭建Wordpress博客网站
- [RK3288][Android6.0] 调试笔记 --- Camera动态热插拔支持
- log4j.properties配置详解与实例
- Leetcode 221 & 85
- [论文解读] MSCNN: A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection
- 流表
- 排序算法:最简单粗暴的冒泡排序