1602这种乱码情况有人遇到过吗,请看图片
请看第一行的最后两个字符,倒数第二个还查不到啊
//在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/10+0x30);
LCD_write_char(0,3,date%10+0x30);
LCD_write_char(0,4,'-');
//月
LCD_write_char(0,5,date/10+0x30);
LCD_write_char(0,6,date%10+0x30);
LCD_write_char(0,7,'-');
//日
LCD_write_char(0,8,date/10+0x30);
LCD_write_char(0,9,date%10+0x30);
LCD_write_char(0,10,' ');
//时
LCD_write_char(0,11,time/10+0x30);
LCD_write_char(0,12,time%10+0x30);
LCD_write_char(0,13,':');
//分
LCD_write_char(0,14,time/10+0x30);
LCD_write_char(0,15,time%10+0x30);
} 感觉还是你程序的问题,你看一下分的取值范围是否正确 1.可能如楼上所说取值不对
2.Keil 0xFD Bug是否已经修复 keshipt 发表于 2013-3-22 22:36 static/image/common/back.gif
1.可能如楼上所说取值不对
2.Keil 0xFD Bug是否已经修复
0xfd的bug从论坛上下载个补丁修复,但是最后都显示编译器没找到,修复完成……取值范围还没看,不过之前在其他电脑,其他板子上都用这个程序,显示也没啥问题。还有就是这个乱码时而出现时而正常. 给你一个OXFD的补丁修复压缩包, 重点如前面两位所讲的那样,看下分的取值是否正确. //分
time=time%60----------------------------------------------------------增加
LCD_write_char(0,14,time/10+0x30);
LCD_write_char(0,15,time%10+0x30);
lryxr2507 发表于 2013-3-23 08:48 static/image/common/back.gif
给你一个OXFD的补丁修复压缩包, 重点如前面两位所讲的那样,看下分的取值是否正确. ...
谢谢,用过补丁之后出现这个界面
算是成功吗?
还有发现这乱码出现的位置也不固定,有时会出现在小时和年的位置上。我用的是stc12c5a60s2
取值直接输出到1602上看是正常的,只是这时乱码也变了
您看看
//在1602上显示日期时间函数
void Time_Disp(unsigned char * date ,unsigned char * time)
{
unsigned char displine;
displine='2';
displine='0';
displine=date/10+0x30;
displine=date%10+0x30;
displine='-';
displine=date/10+0x30;
displine=date%10+0x30;
displine='-';
displine=date/10+0x30;
displine=date%10+0x30;
displine=' ';
displine=time/10+0x30;
displine=time%10+0x30;
displine=':';
displine=time/10+0x30;
displine=time%10+0x30;
displine=0;
displine=time+0x30;
LCD_disp_string(0,0,displine);
} catshit_one 发表于 2013-3-23 09:25 static/image/common/back.gif
谢谢,用过补丁之后出现这个界面
算是成功吗?
还有发现这乱码出现的位置也不固定,有时会出现在小时和年 ...
这个修正是不成功的,解压后选择你的KEIL版本点击修正,会出现如附图所示的对话框,你要选择你KEIL安装的位置,然后找到BIN文件,点击下面的打开即可。 lryxr2507 发表于 2013-3-23 09:49 static/image/common/back.gif
这个修正是不成功的,解压后选择你的KEIL版本点击修正,会出现如附图所示的对话框,你要选择你KEIL安装的 ...
重装了keil,再修正只有ax51.exe未找到,算修正成功吗?还有,我是win7 64位 I5笔记本这个有影响吗?
或者编译优化选项设置和STC12有冲突?
我试了下不同优化级别,乱码出现的位置和时间都不同 ;但都是“@5”这个乱码 應該是數位轉換問題,以前有發生過,LCD_write_char(0,15,time%10+0x30);改
LCD_write_char(0,15,time%10/10+0x30);可以嗎? 6楼正解 sufeila 发表于 2013-3-23 09:13 static/image/common/back.gif
//分
time=time%60----------------------------------------------------------增加
这个不能保证值是正确的,只能保证不显示未知字符,如果加%60就变成“45”一直在跳了 本帖最后由 catshit_one 于 2013-3-23 19:32 编辑
liweiqiang668 发表于 2013-3-23 11:20 static/image/common/back.gif
應該是數位轉換問題,以前有發生過,LCD_write_char(0,15,time%10+0x30);改
LCD_write_char(0,15,time
这样写不对吧,是不是写错了,/10%10这样才对吧,多谢提醒 没遇到过 如果程序没有问题,并且其他位偶尔也出现,你应该检查一下硬件了,是否有接触不良、虚焊的地方,或者更换一下芯片及LCD模块。 你是否有判断新片读出的时间格式对不对? 把1602写数据的延时稍微加大一点。 sufeila 发表于 2013-3-23 09:13 static/image/common/back.gif
//分
time=time%60----------------------------------------------------------增加
经过指点,加上些限制,现在不是乱码了,但不是正常时间数据;
当然加上这些限制是一个好习惯,学习了
还是1302读出数据的问题,把STC单片机降为12T模式也不行
最后用下面这个办法算是解决了,虽然很无语,虽然还是不知道什么原因,求指导
/*从DS302读出时钟数据*/
void ds1302_read_time(uchar *buf)
{
uchar i;
uchar time_buf;
time_buf=ds1302_read_byte(ds1302_year_add); //年
time_buf=ds1302_read_byte(ds1302_month_add); //月
time_buf=ds1302_read_byte(ds1302_date_add); //日
time_buf=ds1302_read_byte(ds1302_hr_add); //时
time_buf=ds1302_read_byte(ds1302_min_add); //分
time_buf=ds1302_read_byte(ds1302_sec_add);//秒
time_buf=ds1302_read_byte(ds1302_day_add); //周
time_buf=ds1302_read_byte(ds1302_hr_add); //时
time_buf=ds1302_read_byte(ds1302_min_add); //分
time_buf=ds1302_read_byte(ds1302_min_add); //分
time_buf=ds1302_read_byte(ds1302_min_add); //分
time_buf=ds1302_read_byte(ds1302_min_add); //分
time_buf=ds1302_read_byte(ds1302_sec_add);//秒
time_buf=ds1302_read_byte(ds1302_hr_add); //时
time_buf=ds1302_read_byte(ds1302_hr_add); //时
time_buf=ds1302_read_byte(ds1302_hr_add); //时
time_buf=ds1302_read_byte(ds1302_day_add); //周
for(i=0;i<8;i++)
{ //BCD处理
buf=BCDtoi(time_buf);
}
} 经过指点,加上些限制,现在不是乱码了,但不是正常时间数据;
You probably want to find why you are having such difficulties. After that, finding the cure is easy.
屏没问题 能够显示就不存在问题 我想知道你的时间是时钟芯片DS1302做的吗?假若是的,DS1302的译码采用BCD吗,并不是我们想的那样。如果不是,那么就应该是取值范围的问题了 我的也乱码 不过调整了一下线路就可以了 看看在说
页:
[1]