打印
[STM32]

各位帮我看看12864为什么无法显示变量

[复制链接]
2558|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大虾快来|  楼主 | 2015-1-12 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序在下面,其中cnt是我定义的变量,已经测试过cnt值是不断变化的,还有改程序显示固定值是没问题的
u8 size=0;
u8 disp1[]="00";

int main(void)
{
size=sizeof(disp1);
while(1)
   {
disp1[0]=cnt/10+48;        //得到cnt的十位
  disp1[1]=cnt%10+48;         //得到cnt的个位
wr_cmd(0x80+0x00);//写命令
   wr_dat(disp1[0]);//写数据
   wr_dat(disp1[1]);//写数据
   delay_ms(5);
   }
}

相关帖子

沙发
雪驹| | 2015-1-12 16:12 | 只看该作者
本帖最后由 雪驹 于 2015-1-12 16:16 编辑

显示的是字符或字符串,要经过转换的,比如1,显示就是1+0x30
你应该先建一个函数用来显示字符串void display(*char),然后 display(disp1)

使用特权

评论回复
板凳
yimankehao| | 2015-1-12 16:35 | 只看该作者
雪驹 发表于 2015-1-12 16:12
显示的是字符或字符串,要经过转换的,比如1,显示就是1+0x30
你应该先建一个函数用来显示字符串void disp ...

它的程序后面已经加了48了,十进制的48就是16进制的0X30

使用特权

评论回复
地板
yimankehao| | 2015-1-12 16:36 | 只看该作者
首先你要知道你的cnt变化的频率是多少?才能确定LCD是否能及时显示。

使用特权

评论回复
5
ayb_ice| | 2015-1-12 17:06 | 只看该作者
先送个ASCII码试试,再试变量

使用特权

评论回复
6
大虾快来|  楼主 | 2015-1-12 17:20 | 只看该作者
yimankehao 发表于 2015-1-12 16:36
首先你要知道你的cnt变化的频率是多少?才能确定LCD是否能及时显示。

cnt在我的程序里其实是红外对射器的计数值,挡一下红外对射器就会加1,然后我是用状态机来做的,扫描频率是360000Hz,扫面频率是快了点,可是cnt的变化频率肯定是很慢的

使用特权

评论回复
7
yimankehao| | 2015-1-12 22:43 | 只看该作者
大虾快来 发表于 2015-1-12 17:20
cnt在我的程序里其实是红外对射器的计数值,挡一下红外对射器就会加1,然后我是用状态机来做的,扫描频率 ...

你可以把把个位和十位单独定义看下效果。不要用DISP1[]这样定义。

使用特权

评论回复
8
原野之狼| | 2015-1-13 08:37 | 只看该作者
目测  还是检查下LCD的驱动吧

使用特权

评论回复
9
梦在那| | 2015-10-10 19:50 | 只看该作者
这个应该你每次显示完后要把这一位给清楚了,再重新赋值吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝