12864显示图片,中间正常,上下有噪点
如图
恳请有遇到过这问题的朋友,帮忙解决。 /*~~~~~~~~~~~~~~~~~~~~
绘图函数
~~~~~~~~~~~~~~~~~~~~*/
void DrawImg(const uchar *pImg)
{
uchar i,j;
ClearScreen();
WriteLCD(COMM,0x34);//扩充指令,G=OFF
Delayms(10);
for(i=0;i<32;i++)//画上半屏
{
WriteLCD(COMM,0x80+i);//垂直坐标
WriteLCD(COMM,0x80);//水平坐标
for(j=0;j<16;j++)
{
//Delayus(5);
WriteLCD(DATA,*pImg);
pImg++;
}
}
for(i=0;i<32;i++)//画下半屏
{
WriteLCD(COMM,0x80+i);//垂直坐标
WriteLCD(COMM,0x88);//水平坐标
for(j=0;j<16;j++)
{
//Delayus(5);
WriteLCD(DATA,*pImg);
pImg++;
}
}
WriteLCD(COMM,0x36);//G=ON
WriteLCD(COMM,0X30);
} 2L 是我的绘图函数
在51单片机中使用时显示正常,我移植到AVR 则显示有问题{:cry:} yuesheng1991 发表于 2014-3-31 14:41
2L 是我的绘图函数
在51单片机中使用时显示正常,我移植到AVR 则显示有问题 ...
AVR移植做忙检查了吗。 hyghyg1234 发表于 2014-3-31 14:55
AVR移植做忙检查了吗。
首先感谢你的回复。
忙检查有了。。 显示字符 都是正常的 AVR中 RS RW E CS 等 跳变间隔延时变短了。 楼主试下,全屏点亮,是否可行~~ 写数据时没有加延时吧,单片机管脚反转的速度大于lcd的速度了 无级电工 发表于 2014-3-31 15:27
AVR中 RS RW E CS 等 跳变间隔延时变短了。
谢谢回复,应该不是延时的问题。延时时间跟51是一样的。 祥子 发表于 2014-3-31 15:34
楼主试下,全屏点亮,是否可行~~
全屏点亮可以的 本帖最后由 yuesheng1991 于 2014-3-31 15:51 编辑
weichao4808335 发表于 2014-3-31 15:35
写数据时没有加延时吧,单片机管脚反转的速度大于lcd的速度了
加了延时还是一样啊
况且中间部分显示是正常的
{:dizzy:} 弄了一下午,还没弄好 郁闷
热传印的?效果不错,可否分享下经验 yuesheng1991 发表于 2014-3-31 15:48
全屏点亮可以的
数组里的数换成全0xFF(假设1点亮), 可以全部点亮;
——多测试几次,如果都是OK的话, 那就说明是你 图片取模时出错了 祥子 发表于 2014-3-31 16:10
数组里的数换成全0xFF(假设1点亮), 可以全部点亮;
——多测试几次,如果都是OK的话, 那就说明是你...
换成0xff之后是这样的效果,这块液晶是好的。 woshigeshuai 发表于 2014-3-31 15:57
热传印的?效果不错,可否分享下经验
不是,雕刻机雕刻的 感觉就像是延时的问题,AVR的晶振和51的一样? 你的延时是让CPU原地打转么? WriteLCD(DATA,*pImg);
这个指针问题机会大点
本人也试过画图出现问题
后面不知道该那里好了
好像就是这个指针的
楼主你自己改下看看 能设置断点的话就方便多了~~
下一步,建议从两个方面排除:
(1) 操作的延时
(2)数组的指针出发,不断加加,会不会就跑到其他地方去了~~
——可增加测试下,WriteLCD(DATA,*pImg); 直接写OxFF,看下是否正常 如果直接写数据正常的话, 建议多测试几次(一直写如0x00,FF,55,AA,等比较容易看结果的数);
——那么说明操作延时是没有问题的;
操作没问题的话,可能写入的数据有问题啦~
可能的话,每次写数据前,把数组的内容通过串口发送回来~
换单片机啦~~ 可以在线调试的,省时省力 两个方向:
第一,单片机上电初始化GDRAM, 用0x00清除。
如果上面动作无效果,检查忙等待是否使用了读FLAG标志,如有有读,检查输出,输出切换部分有没有问题,
如果没有问题,增加EN控制线之间的延时到us级。
mcu_lover 发表于 2014-3-31 17:48
两个方向:
第一,单片机上电初始化GDRAM, 用0x00清除。
如果上面动作无效果,检查忙等待是否使用了读FLAG ...
多谢红金龙大哥回复。
初始化GDRAM,我试过了,没有效果。 忙等待也有。 EN控制线的延时我也加了。
当我把绘图函数中,写入字模函数改为写入固定的值时却能够显示正常。
显示效果如下:
mcu_lover 发表于 2014-3-31 17:48
两个方向:
第一,单片机上电初始化GDRAM, 用0x00清除。
如果上面动作无效果,检查忙等待是否使用了读FLAG ...
将字模数组内容全部设为0x01 ,用指针取字模写入时,显示又有问题。
不知问题到底在哪里
祥子 发表于 2014-3-31 17:05
如果直接写数据正常的话, 建议多测试几次(一直写如0x00,FF,55,AA,等比较容易看结果的数);
——那么 ...
看看上两楼 问题还没解决。{:sad:} xiaorenren 发表于 2014-3-31 16:47
WriteLCD(DATA,*pImg);
这个指针问题机会大点
本人也试过画图出现问题
我也觉得指针问题 可看来看去都发现不了问题在哪里 楼主,你能把你的uchar t改成const uchar t试下吗 lusson 发表于 2014-3-31 19:11
楼主,你能把你的uchar t改成const uchar t试下吗
我原来就是const uchar t的 以为是这个的问题所以改成了uchar t; 楼主你搞好了吗?
你看下我这个不要把指针累加
直接加j
希望可以
for(i=0;i<8;i++)
{
led_CS_clr();
transfer_command(0xb0+i);
transfer_command(0x10);
transfer_command(0x00);
for(j=0;j<128;j++)
{
//k=*(dp+j);
transfer_data(*(dp+j));
//k++;
//transfer_data(0x33);
}
}
个人觉得若全屏清1和清0有问题,那肯定是时序或者硬件有问题 xiaorenren 发表于 2014-4-1 11:14
楼主你搞好了吗?
你看下我这个不要把指针累加
直接加j
搞好了,谢谢
是编译器问题 编译器没有设置对造成的 浪费了一个下午的时间
页:
[1]