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

[复制链接]
2952|13
 楼主| xiaohuihui241 发表于 2013-10-10 23:20 | 显示全部楼层 |阅读模式
本帖最后由 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
 楼主| xiaohuihui241 发表于 2013-10-11 21:02 | 显示全部楼层
airwill 发表于 2013-10-11 06:17
液晶驱动部分的程序没有问题。
关键是液晶不支持中文字符。:改成半角的 : 就可以 ...

试了一下,还是结果是一样的,我那个可能是手机照相的问题,程序里就是英文格式的,而且为什么连空格也显示乱码呢??
ballack_linux 发表于 2013-10-12 00:00 | 显示全部楼层
LCD1602_WriteString函数贴出来看下
 楼主| 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++;
    }
}
ballack_linux 发表于 2013-10-12 09:12 | 显示全部楼层
for(i=0;i<16&&s!='\0';i++)  
你确定是s!='\0'?   应该是*s!='\0'才对
 楼主| xiaohuihui241 发表于 2013-10-12 09:32 | 显示全部楼层
本帖最后由 xiaohuihui241 于 2013-10-12 09:35 编辑
ballack_linux 发表于 2013-10-12 09:12
for(i=0;i

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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);
}
ballack_linux 发表于 2013-10-12 09:56 | 显示全部楼层
额 你这个问题怎么这么奇怪 , 你把
LCD1602_WriteString(0,0,"DS18B20 TEST PRG");
改为
LCD1602_WriteString(0,1,"DS18B20 TEST PRG");
只要这一句 试试结果如何??
 楼主| xiaohuihui241 发表于 2013-10-14 11:05 | 显示全部楼层
ningling_21 发表于 2013-10-12 09:54
不指定显示位置吗?
/*************************************************************/
/*                ...

有啊LCD1602_write_char(x,y,s);那句函数里面有显示位置的  x, y就是
dirtwillfly 发表于 2013-10-14 11:15 | 显示全部楼层
xiaohuihui241 发表于 2013-10-11 21:02
试了一下,还是结果是一样的,我那个可能是手机照相的问题,程序里就是英文格式的,而且为什么连空格也显 ...

你是不是用的全角的空格?空格也要用半角字符
lawdge 发表于 2013-10-16 18:15 | 显示全部楼层
把显示的刷新频率降低
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部