12864(st7920)驱动函数库,原创修改后的,开源分享
前面发了一个ST7920驱动的12864LCD的驱动函数库,后来有网友说我的函数有点小问题,今天重新看了下,做了点修改,发上来和大家分享下。我使用的是ICCAVR7.21作为开发环境,其他的开发环境可能需要在部分细节处修改。
前面版本的问题:
1、求绝对值的函数问题。
网友xinfa190说用abs代替fabs比较好,今天做了修改。
2、对于网友说的“只有x1>x0并且y1>y0时,画线才正确”我今天测试没有发现为题,在x1<x0,y1<y0时使用没有发现问题。
如果该函数有问题,请大家发上错误时的坐标,我在研究研究。
3、绘图反白的问题
其实这个方法也是在坛子里搜出来的,有朋友以前发过这种反白的方法,今天测试没有发现问题。
如果有问题,请大家附上出问题时的参数
为了方便大家测试,我发上一个自己写的测试函数。
该函数只需要在“SYSTEM.C”中修改MAIN函数即可。
谢谢大家的支持。
12864驱动函数库ourdev_455079.rar(文件大小:9K) (原文件名:LCD12864.rar)
测试函数ourdev_455080.rar(文件大小:107K) (原文件名:12864测试函数.rar) 初学者问,如何改成GCC啊?icc没用过,谢谢了! 牛人,帮顶。下来用 Mark 楼主的1、2两个问题都是我提出来的,我只测试了画线这个函数,别的函数都没有测试,发现“GUI_Line(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char colour) 只有x1>x0并且y1>y0时,画线才正确 ”并且只要把“绝对值函数fabs改成abs就可以了”,我用的是keil环境,你在楼主位提到没有这个问题,估计跟环境有关。我测试的功能太少,并且这个坛子里对keil感兴趣的不多,就不上传代码了。我是画了一个正弦曲线,有时间弄个图片上来
另外还有个问题,我在画线的时候发现如果直接画线,除了这条线之外满屏都是随机的点(好像有人提到过这个问题),所以我在画线前先写入了一幅数据为全部0x00的图片(用清屏指令不行)然后再画线 提到乱码的在这个帖子里http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3383065&bbs_page_no=1&search_mode=1&search_text=7920&bbs_id=1000
这个帖子里面也有http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3272310&bbs_page_no=1&search_mode=1&search_text=7920&bbs_id=1000
这个帖子的四楼也有提到http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3336936&bbs_page_no=1&search_mode=1&search_text=7920&bbs_id=1000 TO:【5楼】 xinfa190
你说的画图出现乱点的原因就是因为ST7920控制的LCD的清屏指令对画图不太有效果,在画图之前如果需要空白的屏幕的话,先要全屏写0x00,在我的函数里有这个函数,好像是LCD12864Clean吧,记不得了,反正有个Clean,你找下,先用这个全部清屏。
对于“只有x1>x0并且y1>y0时,画线才正确”我测试没有发现问题的。我从屏幕的左下到右上,左上到右下,右下到左上,右上到左下都画了,没有问题的,如果你发现有问题的话可以自己加一个函数,判断X0,X1,Y0,Y1的大小之后交换顺序了再画就可以了
谢谢你提出的问题。 http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_455550.JPG
(原文件名:sin.JPG) 呵呵我下次也画个,最近不怎么用12864了
总觉得这个ST7920的LCD不适合画图,速度也不快。 再顶顶! 学习,12864液晶,并口的使用很麻烦,我的意思是就这么一个简单的往上面弄几个字要浪费那么多口线,还要编一堆初始化代码,有没有个统一的简单的方法呢?呵呵,我只是借宝地发发牢骚,没有针对楼主的意思。:) LS的朋友的意思具体没看明白呵呵,是不是觉得为了显示个东西用这么多的IO很浪费资源呢? 顶一个。
用12864显示一幅图。最后几行准是乱码???而且只能调用一个图片。 顶起! 标记 顶啊,
显示一幅图片最后几行乱码?我的可以正常显示啊,而且可以显示几幅图片 楼主,你好,我看了你的代码。用到我的实际上,发现了一个极为棘手的问题!
问题;在函数void LCD12864_Clean(void)并行清屏函数中,我完全按照你的思路想法,可是还是出现了一大堆乱点。
而且,这些乱点都是在偶数行的,奇数行的点都被清除了。
请问:这是为什么?应该怎么做,才可以完全清除?
谢谢!急救! 没一个点清两次 就OK了 lcdcomd(0,1,0x00);
lcdcomd(0,1,0x00); 楼主是用16L吗? 我用的是16 不是L的。 哦 知道了
楼主 我初学12864
有两个问题
第一
void Serial_ImgDisplayCharacter(unsigned char x,unsigned char y,__flash unsigned char img[]);
这个,__flash 是什么意思好像没有用事 编译的错误都指向它
第二
void Serial_DisplayOneChineseCharacter_WithAddress(unsigned char ucAdd,unsigned char *p);
这个 ucAdd是显示的首地址吧 还有我想用12864的OCMJ4X8C该怎么转呢 需要哪些地方要注意
楼主提个建议吧 TO:【20楼】 xhero
-----------------------------------------------------------
第一
void Serial_ImgDisplayCharacter(unsigned char x,unsigned char y,__flash unsigned char img[]);
这个,__flash 是什么意思好像没有用事 编译的错误都指向它
答:__flash是保存在单片机的flash里,而不是RAM,如果字模太大RAM装不下,而且RAM也不是应该用来装字模的,这个事ICCAVR可以使用的,在OPTIONS里有设置,在ICCAVR7.XX(具体记不清了)之前是用const来使实现的。
---------------------------------------------------------------
第二
void Serial_DisplayOneChineseCharacter_WithAddress(unsigned char ucAdd,unsigned char *p);
这个 ucAdd是显示的首地址吧
答:这个库好久不用了,如果没记错,ucAdd屏幕的起始地址,*p是存放字模数组的起始指针。
---------------------------------------------------------------------
还有我想用12864的OCMJ4X8C该怎么转呢 需要哪些地方要注意?
答:如果主控芯片是ST7920的话,应该只用修改宏命令里的引脚定义就可以了。
如果是其他的主控芯片就要重新写程序了。。。 我也记得__flash好像可以用const来代替
谢谢的楼主解答 感谢楼主 提供这么好的源
楼主程序很规范 很漂亮 楼主可以 共享下ICCAVR7.21吗? 不好意思 已经找到了 不用了 好 mark~ mark 写得不错! mark 厉害,学习了 回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------
请问 我在iccavr里使用abs咋就不好使呀 包含头文件了。请你简单示范一下:谢谢 东西很不错~~ 代码写的很清楚。 建议置COOL 楼主写的代码很规范,很漂亮啊,一直想找点这样的代码学习学习,不知楼主能否再给小弟一些资料,不甚感激。邮箱:dyong_2008@163.com谢谢你。 MARK 记号 MARK mark 记号 mark mark mark 回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------
请教小菜:
Dx = abs(x1-x0);中abs是什么? 帮顶!!! mark 好 也MARK一哈! 学习一下!!!!!!!!!! 记号下! 学习了 谢谢.. mark 这个要顶了,强人,只有羡慕的份 好东西,顶顶 ST7920驱动的12864的确有点慢,向各位兄台求一款速度快的显示器 mark dingding 太猛了!! 厉害啊! MARK 回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------
楼主,我拿了你的程序试了一下,效果不一样,我们两个字明显比你的小,求解 写得很不错 cool 这个要顶了,强人,只有仰视的份 忘了记没有 MARK 学习了 {:smile:}{:smile:}{:smile:}{:smile:}mark 多谢分享! 楼主厉害!!! not bad !! {:smile:}good 学习了 下载研究 谢谢楼主啦 不错不错.. mark,thanks. 谢谢了。。。。 不错,记下学习了
不错!十分感谢!
页:
[1]