搜索
bottom↓
回复: 21

1602这种乱码情况有人遇到过吗,请看图片

[复制链接]

出0入0汤圆

发表于 2013-3-22 21:42:39 | 显示全部楼层 |阅读模式

请看第一行的最后两个字符,倒数第二个还查不到啊

//在1602上显示日期时间函数
void Time_Disp(unsigned char * date ,unsigned char * time)
{
        //LCD_send_command(0x01);         //清屏
        //年
          LCD_write_char(0,0,'2');
        LCD_write_char(0,1,'0');
        LCD_write_char(0,2,date[0]/10+0x30);
        LCD_write_char(0,3,date[0]%10+0x30);
        LCD_write_char(0,4,'-');
        //月
        LCD_write_char(0,5,date[1]/10+0x30);
        LCD_write_char(0,6,date[1]%10+0x30);
        LCD_write_char(0,7,'-');
        //日
        LCD_write_char(0,8,date[2]/10+0x30);
        LCD_write_char(0,9,date[2]%10+0x30);
        LCD_write_char(0,10,' ');
        //时
        LCD_write_char(0,11,time[1]/10+0x30);
        LCD_write_char(0,12,time[1]%10+0x30);
        LCD_write_char(0,13,':');
        //分
        LCD_write_char(0,14,time[0]/10+0x30);
        LCD_write_char(0,15,time[0]%10+0x30);
}

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-3-22 22:05:13 | 显示全部楼层
感觉还是你程序的问题,你看一下分的取值范围是否正确

出90入372汤圆

发表于 2013-3-22 22:36:20 | 显示全部楼层
1.可能如楼上所说取值不对
2.Keil 0xFD Bug是否已经修复

出0入0汤圆

 楼主| 发表于 2013-3-23 08:35:38 | 显示全部楼层
keshipt 发表于 2013-3-22 22:36
1.可能如楼上所说取值不对
2.Keil 0xFD Bug是否已经修复

0xfd的bug从论坛上下载个补丁修复,但是最后都显示编译器没找到,修复完成……取值范围还没看,不过之前在其他电脑,其他板子上都用这个程序,显示也没啥问题。还有就是这个乱码时而出现时而正常.

出0入0汤圆

发表于 2013-3-23 08:48:07 | 显示全部楼层
给你一个OXFD的补丁修复压缩包, 重点如前面两位所讲的那样,看下分的取值是否正确.

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-3-23 09:13:07 | 显示全部楼层
//分

time[0]=time[0]%60----------------------------------------------------------增加
        LCD_write_char(0,14,time[0]/10+0x30);
        LCD_write_char(0,15,time[0]%10+0x30);

出0入0汤圆

 楼主| 发表于 2013-3-23 09:25:26 | 显示全部楼层
lryxr2507 发表于 2013-3-23 08:48
给你一个OXFD的补丁修复压缩包, 重点如前面两位所讲的那样,看下分的取值是否正确. ...

谢谢,用过补丁之后出现这个界面
算是成功吗?
还有发现这乱码出现的位置也不固定,有时会出现在小时和年的位置上。我用的是stc12c5a60s2
取值直接输出到1602上看是正常的,只是这时乱码也变了
您看看
//在1602上显示日期时间函数
void Time_Disp(unsigned char * date ,unsigned char * time)
{
        unsigned char displine[17];
        displine[0]='2';
        displine[1]='0';
        displine[2]=date[0]/10+0x30;
        displine[3]=date[0]%10+0x30;
        displine[4]='-';
        displine[5]=date[1]/10+0x30;
        displine[6]=date[1]%10+0x30;
        displine[7]='-';
        displine[8]=date[2]/10+0x30;
        displine[9]=date[2]%10+0x30;
        displine[10]=' ';
        displine[11]=time[1]/10+0x30;
        displine[12]=time[1]%10+0x30;
        displine[13]=':';
        displine[14]=time[0]/10+0x30;
        displine[15]=time[0]%10+0x30;
        displine[16]=0;
        displine[15]=time[0]+0x30;
        LCD_disp_string(0,0,displine);
}

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-3-23 09:49:07 | 显示全部楼层
catshit_one 发表于 2013-3-23 09:25
谢谢,用过补丁之后出现这个界面
算是成功吗?
还有发现这乱码出现的位置也不固定,有时会出现在小时和年 ...


这个修正是不成功的,解压后选择你的KEIL版本点击修正,会出现如附图所示的对话框,你要选择你KEIL安装的位置,然后找到BIN文件,点击下面的打开即可。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2013-3-23 10:43:24 | 显示全部楼层
lryxr2507 发表于 2013-3-23 09:49
这个修正是不成功的,解压后选择你的KEIL版本点击修正,会出现如附图所示的对话框,你要选择你KEIL安装的 ...

重装了keil,再修正只有ax51.exe未找到,算修正成功吗?还有,我是win7 64位 I5笔记本这个有影响吗?
或者编译优化选项设置和STC12有冲突?
我试了下不同优化级别,乱码出现的位置和时间都不同 ;但都是“@5”这个乱码

出0入0汤圆

发表于 2013-3-23 11:20:11 | 显示全部楼层
應該是數位轉換問題,以前有發生過,LCD_write_char(0,15,time[0]%10+0x30);改
LCD_write_char(0,15,time[0]%10/10+0x30);可以嗎?

出0入0汤圆

发表于 2013-3-23 14:01:53 | 显示全部楼层
6楼正解

出0入0汤圆

 楼主| 发表于 2013-3-23 14:12:15 | 显示全部楼层
sufeila 发表于 2013-3-23 09:13
//分

time[0]=time[0]%60----------------------------------------------------------增加

这个不能保证值是正确的,只能保证不显示未知字符,如果加%60就变成“45”一直在跳了

出0入0汤圆

 楼主| 发表于 2013-3-23 14:14:04 | 显示全部楼层
本帖最后由 catshit_one 于 2013-3-23 19:32 编辑
liweiqiang668 发表于 2013-3-23 11:20
應該是數位轉換問題,以前有發生過,LCD_write_char(0,15,time[0]%10+0x30);改
LCD_write_char(0,15,time[0 ...


这样写不对吧,是不是写错了,/10%10这样才对吧,多谢提醒

出0入0汤圆

发表于 2013-3-23 15:46:22 来自手机 | 显示全部楼层
没遇到过

出0入0汤圆

发表于 2013-3-23 20:51:12 | 显示全部楼层
如果程序没有问题,并且其他位偶尔也出现,你应该检查一下硬件了,是否有接触不良、虚焊的地方,或者更换一下芯片及LCD模块。

出0入0汤圆

发表于 2013-3-23 21:26:21 | 显示全部楼层
你是否有判断新片读出的时间格式对不对?

出0入0汤圆

发表于 2013-3-23 21:54:59 | 显示全部楼层
把1602写数据的延时稍微加大一点。

出0入0汤圆

 楼主| 发表于 2013-3-24 20:37:10 | 显示全部楼层
sufeila 发表于 2013-3-23 09:13
//分

time[0]=time[0]%60----------------------------------------------------------增加

经过指点,加上些限制,现在不是乱码了,但不是正常时间数据;

当然加上这些限制是一个好习惯,学习了
还是1302读出数据的问题,把STC单片机降为12T模式也不行
最后用下面这个办法算是解决了,虽然很无语,虽然还是不知道什么原因,求指导

/*从DS302读出时钟数据*/
void ds1302_read_time(uchar *buf)  
{
               uchar i;
                uchar time_buf[9];
        time_buf[1]=ds1302_read_byte(ds1302_year_add);                //年
        time_buf[2]=ds1302_read_byte(ds1302_month_add);                //月
        time_buf[3]=ds1302_read_byte(ds1302_date_add);                //日
        time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //时
        time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
        time_buf[6]=ds1302_read_byte(ds1302_sec_add);//秒
        time_buf[7]=ds1302_read_byte(ds1302_day_add);                //周
        time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //时
        time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
                time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
                        time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
                                time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
        time_buf[6]=ds1302_read_byte(ds1302_sec_add);//秒
                time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //时
                        time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //时
                                time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //时
        time_buf[7]=ds1302_read_byte(ds1302_day_add);                //周

        for(i=0;i<8;i++)
        {           //BCD处理
                buf=BCDtoi(time_buf);
        }
}

出0入0汤圆

发表于 2013-3-24 20:43:09 | 显示全部楼层
经过指点,加上些限制,现在不是乱码了,但不是正常时间数据;


You probably want to find why you are having such difficulties. After that, finding the cure is easy.

出0入0汤圆

发表于 2013-3-24 21:02:02 | 显示全部楼层
屏没问题 能够显示就不存在问题 我想知道你的时间是时钟芯片DS1302做的吗?假若是的,DS1302的译码采用BCD吗,并不是我们想的那样。如果不是,那么就应该是取值范围的问题了

出0入0汤圆

发表于 2013-5-16 15:05:58 | 显示全部楼层
我的也乱码   不过调整了一下线路  就可以了

出0入0汤圆

发表于 2013-5-16 16:22:45 来自手机 | 显示全部楼层
看看在说
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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