printf 函数的原理以及在单片机上重定向至LCD12832的实现

这篇博客介绍了printf函数的工作原理,并展示了如何在AVR单片机上重定向printf输出至LCD12832。通过理解变参列表和stdarg.h中的宏,作者实现了在单片机环境中将格式化字符串显示在LCD屏幕上的功能。
摘要由CSDN通过智能技术生成

首先,printf 函数的的原型是这样的:

int printf(char const * format, ...);

*format 就是要格式化的字符串的起始地址。注意这个必须是字符串以'\0' 为结尾,否则格式化的的时候会以指针为起点一直向后格式化,直到在后面连续的内存中遇到一个'\0'

后面的 ”...“ 是变参列表。可变参数列表是通过宏来实现的,这些宏定义在 stdarg.h里。这个头文件定义了一个类型 va_list 和三个宏 va_start、va_arg、va_end。我们一边写代码一边讲吧。

首先我们要明白一件事儿,printf 本身是将输出定向到了标准输出流。OK,但是在单片机编程时我们想要将格式化的字符串打印到屏幕上呢?比如串口,或者是LCD。这就需要我们自己实现这个函数。单片机是AVR的ATmega128 编译器是AVR-GCC,目的是将格式化的字符串打印在LCD12832上。代码如下,当然重点在最后,你可以从后往前看。。。

#include<avr/io.h><span style="white-space:pre">	</span>//AVR单品机外设寄存器定义

#include"Delay.h"<span style="white-space:pr
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值