42回答

2收藏

[软件] 单片机C语言模块化编程方法

 

回答|共 42 个

倒序浏览

11#

dwwzl

发表于 2012-10-17 09:08:09 | 只看该作者

分享到:
不错,学习一下,
用技术,爱生活!
12#

dwwzl

发表于 2012-10-17 09:31:43 | 只看该作者

请教 sprintf()怎么用法
用技术,爱生活!
13#

陈克雄

发表于 2012-10-17 10:16:41 | 只看该作者

dwwzl 发表于 2012-10-17 09:31
请教 sprintf()怎么用法

类似于printf,不过printf是直接输出,而sprintf可以将处理后的结果存到一个指定地址
比如:
int num=26;
char table[20];
sprintf(table, "The num equals %d", num);
printf(table);
//Output: The num equals 26

如果自己为液晶屏编写类似格式转换输出、浮点输出的程序,调用这个很方便的
14#

dwwzl

发表于 2012-10-17 10:24:20 | 只看该作者

谢谢,有点明白了
用技术,爱生活!
15#

dwwzl

发表于 2012-10-17 10:24:41 | 只看该作者

不过从sprintf(table, "The num equals %d", num);这一句,怎么会显示到显示屏上去呢?比如我用的lcd12864,要显示在第3行 起始空两格的位置?
用技术,爱生活!
16#

陈克雄

发表于 2012-10-17 10:44:53 | 只看该作者

本帖最后由 Kite 于 2012-10-17 10:45 编辑
dwwzl 发表于 2012-10-17 10:24
不过从sprintf(table, "The num equals %d", num);这一句,怎么会显示到显示屏上去呢?比如我用的lcd12864 ...

最简单的液晶输出就像下面这样的(包含两个部分)

LCD_Set_XY(x, y);                   //设定显示位置
LCD_Write_Data(table);             //输出字符串

经过封装之后可以得到的函数:
LCD_Printf(unsigned char x, unsigned char y, unsigne char *s)
{
      LCD_Set_XY(x, y);
      LCD_Write_Data(s);
}
这样就是普通的输出。

再加一个sprintf的话可以完成浮点输出:输入一个浮点数,显示在相应位置
LCD_Printf_float(unsigned char x, unsigned char y, float f_num)
{
      unsigned char table;
      sprintf(table, "The number equals %.2f", f_num);   //保留小数点后两位并插入字符串
      
      LCD_Set_XY(x, y);
      LCD_Write_Data(table);                 //液晶写数据
}

这样调用的时候就可以直接输入一个浮点数,比如:

LCD_Printf_float(3, 2, 24.32);

那么就会在第3行第2列的位置输出:The number equals 24.32
17#

陈克雄

发表于 2012-10-17 10:55:28 | 只看该作者

dwwzl 发表于 2012-10-17 10:24
不过从sprintf(table, "The num equals %d", num);这一句,怎么会显示到显示屏上去呢?比如我用的lcd12864 ...

如果对效率要求比较高的话,更好的办法是自己根据需求编写一个类似的格式转换的函数(把输入的数按十进制位权分离成独立位,然后分别转换成char型,即减去48)。

自己编写比调用标准库效率要高很多,不过没有那么灵活
18#

dwwzl

发表于 2012-10-17 10:55:30 | 只看该作者

感谢,看来底层函数还是要自个来移植的,
不知有没有做好的STM的库函数可以直接调用呢
用技术,爱生活!
19#

dwwzl

发表于 2012-10-17 10:58:31 | 只看该作者

我试着改写一下,受教了,谢谢
用技术,爱生活!
20#

陈克雄

发表于 2012-10-17 11:05:25 | 只看该作者

dwwzl 发表于 2012-10-17 10:55
感谢,看来底层函数还是要自个来移植的,
不知有没有做好的STM的库函数可以直接调用呢 ...

STM的库函数可以帮助快速搭建工程,不过一些非标准件的驱动还得自己写,官方不提供例程。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条