打印
[MCU]

1602显示温度缓冲数组乱码倒是显示乱码怎么解决??

[复制链接]
2306|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 xiaohuihui241 于 2013-10-11 21:11 编辑

AT91sam7x256+LCD+18B20 显示问题
上图为main.c文件中开始部分,可以看出Current_Temp_Display[]={“TEMP:             ”};以开辟内存设定初值,但是鼠标接近时可以看出Current_Temp_Display[]内是一堆乱码。
进入while循环当中将温度数据显示函数Disp_Temperature();
进入Disp_Temperature();函数,里面依然是乱码。
最终显示如下图所示。
第一行显示DS18B20 TEST PRG是正常的,下图是显示这句的程序LCD1602_WriteString(0,0,“DS18B20 TEST PRG ”);怎么第二行就是不正常。。。。
最终希望第二行能够显示为Temp: 24.2℃   这样,但是总是因为Current_Temp_Display[]中的数据不知为何总是乱码,就有点晕了,希望大家能给指点一下


相关帖子

沙发
xiaohuihui241|  楼主 | 2013-10-10 23:20 | 只看该作者
求助啊~大神来呀来呀~~~

使用特权

评论回复
板凳
airwill| | 2013-10-11 06:17 | 只看该作者
液晶驱动部分的程序没有问题。
关键是液晶不支持中文字符。:改成半角的 : 就可以

使用特权

评论回复
地板
xiaohuihui241|  楼主 | 2013-10-11 15:54 | 只看该作者
airwill 发表于 2013-10-11 06:17
液晶驱动部分的程序没有问题。
关键是液晶不支持中文字符。:改成半角的 : 就可以 ...

十分感谢,我赶快试一试~~:handshake

使用特权

评论回复
5
xiaohuihui241|  楼主 | 2013-10-11 21:02 | 只看该作者
airwill 发表于 2013-10-11 06:17
液晶驱动部分的程序没有问题。
关键是液晶不支持中文字符。:改成半角的 : 就可以 ...

试了一下,还是结果是一样的,我那个可能是手机照相的问题,程序里就是英文格式的,而且为什么连空格也显示乱码呢??

使用特权

评论回复
6
ballack_linux| | 2013-10-12 00:00 | 只看该作者
LCD1602_WriteString函数贴出来看下

使用特权

评论回复
7
xiaohuihui241|  楼主 | 2013-10-12 08:40 | 只看该作者
ballack_linux 发表于 2013-10-12 00:00
LCD1602_WriteString函数贴出来看下

void LCD1602_WriteString(unsigned x,unsigned y,char *s)
{
    unsigned i=0;
   
    for(i=0;i<16&&s!='\0';i++)
    {
      
      LCD1602_write_char(x,y,s);
      delay_nus(3000);
      x++;
    }
}

使用特权

评论回复
8
ballack_linux| | 2013-10-12 09:12 | 只看该作者
for(i=0;i<16&&s!='\0';i++)  
你确定是s!='\0'?   应该是*s!='\0'才对

使用特权

评论回复
9
xiaohuihui241|  楼主 | 2013-10-12 09:32 | 只看该作者
本帖最后由 xiaohuihui241 于 2013-10-12 09:35 编辑
ballack_linux 发表于 2013-10-12 09:12
for(i=0;i

贴了好几次都显示有问题,您看看这个截图吧

使用特权

评论回复
10
ningling_21| | 2013-10-12 09:54 | 只看该作者
不指定显示位置吗?
/*************************************************************/
/*                                                           */
/* 设定显示位置                                              */
/*                                                           */
/*************************************************************/
void lcd_PrPos(uchar row,uchar col)
{                          
        if(row == 0)
       lcd_wcmd(col | 0x80);     //数据指针=80+地址变量
    if(row == 1)
       lcd_wcmd(col | 0x80 | 0x40);

        delay_nms(1);
}

使用特权

评论回复
11
ballack_linux| | 2013-10-12 09:56 | 只看该作者
额 你这个问题怎么这么奇怪 , 你把
LCD1602_WriteString(0,0,"DS18B20 TEST PRG");
改为
LCD1602_WriteString(0,1,"DS18B20 TEST PRG");
只要这一句 试试结果如何??

使用特权

评论回复
12
xiaohuihui241|  楼主 | 2013-10-14 11:05 | 只看该作者
ningling_21 发表于 2013-10-12 09:54
不指定显示位置吗?
/*************************************************************/
/*                ...

有啊LCD1602_write_char(x,y,s);那句函数里面有显示位置的  x, y就是

使用特权

评论回复
13
dirtwillfly| | 2013-10-14 11:15 | 只看该作者
xiaohuihui241 发表于 2013-10-11 21:02
试了一下,还是结果是一样的,我那个可能是手机照相的问题,程序里就是英文格式的,而且为什么连空格也显 ...

你是不是用的全角的空格?空格也要用半角字符

使用特权

评论回复
14
lawdge| | 2013-10-16 18:15 | 只看该作者
把显示的刷新频率降低

使用特权

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

本版积分规则

4

主题

19

帖子

0

粉丝