一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2311|回复: 6
收起左侧

[51单片机] 51单片机刷屏刷串口福音 printf()函数

[复制链接]
发表于 2015-8-7 12:33 | 显示全部楼层 |阅读模式
提供一种思路,刷屏的福音
相信各位如果接触过电脑C语言那么就一定接触过printf函数非常好用的输出函数,可以很简单的将数据显示到屏幕上面
对于51单片机来说标准printf函数可能很少有人去用,但是一旦知道怎么用会使显示变得非常简单
首先KEIL官方在STDIO.H里面定义了printf()函数,一般玩51的可能都知道,将数据字符通过标准串口进行输出,这对刷屏显然没用
但是很少有人知道这个库里面KEIL定义了vsprintf()函数
这个函数就好玩了,作用是把标准printf数据解析到一个数组里面.
于是就有这个程序
#include <stdio.h> //vsprintf()所在库
#include <stdarg.h> //va_start()  va_end()所在库
            
char xdata string[100]; //输出数组,长度任意
void lcd_printf(char *fmt,...) //解析函数,输入量为标准printf内容
{
char* ap;
va_start(ap,fmt);
vsprintf(string,fmt,ap);
va_end(ap);
}


很简单的小程序,功能就是解析数据进入数组
假如输入这样
main()
{lcd_printf("P =% 07.3f 安培",8.1);}
那么char型数组里面内容就是   
string[]={P = 08.100 安培\0}     (安培是双字节字符,玩过字库的都知道)




假如输入lcd_printf("P %c",68);
那么char型数组里面内容就是   
string[]={P D\0};
  

在解析后将string数组里的内容用自制的刷字符串函数刷到屏上面
1602,12864,彩屏,只要例程里面有刷字符串函数,将会非常惬意的进行刷屏操作
是不是很简单?

PS,伸手系的别找我要程序,懂点单片机的自然能写出来,明白的花5分钟就能移植过去.自己不咋玩lcd只有刷OLED的函数



发表于 2015-8-7 13:07 | 显示全部楼层
我表示51单片机,直接用printf()函数。。。。
发表于 2015-8-7 13:24 | 显示全部楼层
51可以直接用sprintf
发表于 2015-8-7 18:35 | 显示全部楼层
直接sprintf不就完了
发表于 2015-8-7 18:55 | 显示全部楼层
是的,楼上两位说的也是,直接sprintf,不过就看谁的效率高,编译后的代码小了。
发表于 2015-8-7 23:15 | 显示全部楼层
还没玩上12864,看看先
发表于 2015-9-1 23:21 来自手机 | 显示全部楼层
这个还真可以。有思路

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-7 01:15 , Processed in 0.063153 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表