找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4604|回复: 12
打印 上一主题 下一主题
收起左侧

单片机控制lcd12864在一行如何显示多个变量的值?

[复制链接]
回帖奖励 2 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
12864在一行如何显示多个变量的值  如a=2,b=3,C是点,d=5 ,e=6

让12864显示23.56
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2019-3-4 07:56 | 只看该作者
对于12864来说没有什么变量不变量,它驱动是128*64个点,你让哪个点亮它就亮哪个点。你要显示23.56,先告诉它在什么位置,再告诉它,让组成23.56那些点亮。这样就OK了。
回复

使用道具 举报

板凳
ID:158375 发表于 2019-3-4 08:20 | 只看该作者
这个也问?资料上应该有咋显示吧;
回复

使用道具 举报

地板
ID:267330 发表于 2019-3-4 09:07 | 只看该作者
不断刷新频率就可以了
回复

使用道具 举报

5#
ID:484037 发表于 2019-3-4 09:40 | 只看该作者
首先要看你的12864是否有字库芯片,如果有的话你的送显方式一般是发送字符,你只需要将你的变量串植入到你将要发送的字符串中就可以了,如果你屏幕是ASCII码接收,那你就做个HEX转ASCII码的函数就可以了。要是没有字库芯片,你发送的是点阵数据,那你就做个0~9数字点阵的表,然后查表送显就可以了。
回复

使用道具 举报

6#
ID:209101 发表于 2019-3-4 11:04 | 只看该作者
把这几个变量放在一个数组里,显示数组就行吧
回复

使用道具 举报

7#
ID:7485 发表于 2019-3-4 17:18 | 只看该作者
你需要再复习基础知识。
回复

使用道具 举报

8#
ID:581882 发表于 2019-11-11 16:54 | 只看该作者
printf("%d%d%.%d%d",a,b,c,d,e);
回复

使用道具 举报

9#
ID:245004 发表于 2019-11-11 22:11 | 只看该作者
本帖最后由 bh2030693 于 2019-11-12 14:10 编辑

假设你的“写指令”和“写数据”函数已经写好了,初始化也完成了,下面是一种写法:

code uchar TabNumASCII[10] = {'0','1','2','3','4','5','6','7','8','9'}; //液晶屏显示数字字符表格
code uchar TabLineAddr[4] = {0x80,0x90,0x88,0x98};

float flData = 23.56;   // 原始值
unsigned int uiNumber = flData * 100;   // uiNumber = 2356; 如果直接取整数上一行可以省略

uiNumber %= 10000;    // 过滤无效位,可省略这行
// 设置显示位置
// LCD12864_WriteCommand(y + x);
LCD12864_WriteCommand(TabLineAddr + x);  // i = 0~3; 第几行,  x是字符横向位置
LCD12864_WriteData(TabNumASCII[uiNumber / 1000]);       // 显示千位:2
LCD12864_WriteData(TabNumASCII[uiNumber % 1000 / 100]); // 显示百位:3      
LCD12864_WriteData('.');
LCD12864_WriteData(TabNumASCII[uiNumber % 100 / 10]);
LCD12864_WriteData(TabNumASCII[uiNumber % 10]);


这只是常见的一种写法,写法很多。

补充:在显示汉字的时候,有的编译器需要选择字符编码为中文简体GB2312,是否需要设置根据实际情况决定。




注:昨天发上去的代码不知道为什么不完整,特编辑了一下。

回复

使用道具 举报

10#
ID:245004 发表于 2019-11-11 22:17 | 只看该作者
本帖最后由 bh2030693 于 2019-11-12 14:14 编辑

补充:如果真是显示多个变量,那就直接写成这样:

LCD12864_WriteCommand(TabLineAddr[0] + 2);  // 设置显示位置
LCD12864_WriteData(TabNumASCII[a]); // 显示a
LCD12864_WriteData(TabNumASCII
); // 显示b   
LCD12864_WriteData('.');
LCD12864_WriteData(TabNumASCII[c]);
LCD12864_WriteData(TabNumASCII[d]);

LCD12864_WriteCommand()和LCD12864_WriteData()换成你自己程序里的函数。


回复

使用道具 举报

11#
ID:245004 发表于 2019-11-12 14:59 | 只看该作者
不知道为什么?第一次审核后代码不全,编辑后还是不完整,下面截个图:




i和x要换成实际需要的位置,例如,第一行第二个字符(汉字)位置写成:(TabLineAddr[0] + 2)。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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