搜索
bottom↓
回复: 78

12864(st7920)驱动函数库,原创修改后的,开源分享

[复制链接]

出0入0汤圆

发表于 2009-6-21 22:01:12 | 显示全部楼层 |阅读模式
前面发了一个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)

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

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

出0入0汤圆

发表于 2009-6-21 22:37:37 | 显示全部楼层
初学者问,如何改成GCC啊?icc没用过,谢谢了!

出0入0汤圆

发表于 2009-6-21 22:57:49 | 显示全部楼层
牛人,帮顶。下来用

出0入0汤圆

发表于 2009-6-22 00:26:11 | 显示全部楼层
Mark

出0入0汤圆

发表于 2009-6-22 21:54:51 | 显示全部楼层
楼主的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的图片(用清屏指令不行)然后再画线

出0入0汤圆

发表于 2009-6-22 21:56:54 | 显示全部楼层
提到乱码的在这个帖子里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

出0入0汤圆

 楼主| 发表于 2009-6-23 00:27:54 | 显示全部楼层
TO:【5楼】 xinfa190

你说的画图出现乱点的原因就是因为ST7920控制的LCD的清屏指令对画图不太有效果,在画图之前如果需要空白的屏幕的话,先要全屏写0x00,在我的函数里有这个函数,好像是LCD12864Clean吧,记不得了,反正有个Clean,你找下,先用这个全部清屏。

对于“只有x1>x0并且y1>y0时,画线才正确”我测试没有发现问题的。我从屏幕的左下到右上,左上到右下,右下到左上,右上到左下都画了,没有问题的,如果你发现有问题的话可以自己加一个函数,判断X0,X1,Y0,Y1的大小之后交换顺序了再画就可以了

谢谢你提出的问题。

出0入0汤圆

发表于 2009-6-23 15:51:46 | 显示全部楼层

(原文件名:sin.JPG)

出0入0汤圆

 楼主| 发表于 2009-6-24 10:12:35 | 显示全部楼层
呵呵  我下次也画个,最近不怎么用12864了
总觉得这个ST7920的LCD不适合画图,速度也不快。

出0入0汤圆

 楼主| 发表于 2009-6-29 10:24:19 | 显示全部楼层
再顶顶!

出0入0汤圆

发表于 2009-6-29 22:26:04 | 显示全部楼层
学习,12864液晶,并口的使用很麻烦,我的意思是就这么一个简单的往上面弄几个字要浪费那么多口线,还要编一堆初始化代码,有没有个统一的简单的方法呢?呵呵,我只是借宝地发发牢骚,没有针对楼主的意思。:)

出0入0汤圆

 楼主| 发表于 2009-6-29 23:04:15 | 显示全部楼层
LS的朋友的意思具体没看明白呵呵,是不是觉得为了显示个东西用这么多的IO很浪费资源呢?

出0入0汤圆

发表于 2009-8-18 09:46:38 | 显示全部楼层
顶一个。
用12864显示一幅图。最后几行准是乱码???而且只能调用一个图片。

出0入0汤圆

发表于 2009-8-19 17:24:03 | 显示全部楼层
顶起!

出0入0汤圆

发表于 2009-8-20 09:07:31 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-8-21 23:21:30 | 显示全部楼层
顶啊,
显示一幅图片最后几行乱码?我的可以正常显示啊,而且可以显示几幅图片

出0入0汤圆

发表于 2009-8-22 02:33:56 | 显示全部楼层
楼主,你好,我看了你的代码。用到我的实际上,发现了一个极为棘手的问题!
问题;在函数void LCD12864_Clean(void)并行清屏函数中,我完全按照你的思路想法,可是还是出现了一大堆乱点。
而且,这些乱点都是在偶数行的,奇数行的点都被清除了。
请问:这是为什么?应该怎么做,才可以完全清除?
谢谢!急救!

出0入0汤圆

发表于 2009-8-30 21:21:24 | 显示全部楼层
没一个点清两次 就OK了   lcdcomd(0,1,0x00);
                        lcdcomd(0,1,0x00);

出0入0汤圆

发表于 2009-9-18 21:31:25 | 显示全部楼层
楼主是用16L吗?

出0入0汤圆

 楼主| 发表于 2009-9-18 22:41:08 | 显示全部楼层
我用的是16 不是L的。

出0入0汤圆

发表于 2009-9-18 23:07:52 | 显示全部楼层
哦 知道了
楼主 我初学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是显示的首地址吧

出0入0汤圆

发表于 2009-9-18 23:17:29 | 显示全部楼层
还有我想用12864的OCMJ4X8C该怎么转呢 需要哪些地方要注意
楼主提个建议吧

出0入0汤圆

 楼主| 发表于 2009-9-19 01:06:55 | 显示全部楼层
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的话,应该只用修改宏命令里的引脚定义就可以了。
    如果是其他的主控芯片就要重新写程序了。。。

出0入0汤圆

发表于 2009-9-19 08:58:15 | 显示全部楼层
我也记得__flash好像可以用const来代替

   

谢谢的楼主解答 感谢楼主 提供这么好的源


楼主程序很规范 很漂亮

出0入0汤圆

发表于 2009-9-20 20:14:52 | 显示全部楼层
楼主可以 共享下ICCAVR7.21吗?

出0入0汤圆

发表于 2009-9-20 20:18:55 | 显示全部楼层
不好意思 已经找到了 不用了

出0入0汤圆

发表于 2009-11-1 22:45:38 | 显示全部楼层

出0入0汤圆

发表于 2009-11-26 21:28:57 | 显示全部楼层
mark~

出0入0汤圆

发表于 2009-11-27 01:28:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-5 17:35:53 | 显示全部楼层
写得不错!

出0入0汤圆

发表于 2009-12-10 19:16:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-11 20:54:41 | 显示全部楼层
厉害,学习了

出0入0汤圆

发表于 2009-12-30 16:17:46 | 显示全部楼层
回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------

请问 我在iccavr里使用abs  咋就不好使呀 包含头文件了。请你简单示范一下:谢谢

出0入0汤圆

发表于 2010-1-5 23:33:41 | 显示全部楼层
东西很不错~~ 代码写的很清楚。 建议置COOL

出0入0汤圆

发表于 2010-1-10 15:32:04 | 显示全部楼层
楼主写的代码很规范,很漂亮啊,一直想找点这样的代码学习学习,不知楼主能否再给小弟一些资料,不甚感激。邮箱:dyong_2008@163.com  谢谢你。

出0入0汤圆

发表于 2010-1-10 17:31:51 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-1-10 18:22:10 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-1-10 19:50:09 | 显示全部楼层
MARK

出0入85汤圆

发表于 2010-1-11 20:18:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 23:10:15 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-2-24 11:50:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-24 11:55:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-24 12:35:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-26 17:24:41 | 显示全部楼层
回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------

请教小菜:
           Dx = abs(x1-x0);中abs是什么?

出0入0汤圆

发表于 2010-4-8 00:07:14 | 显示全部楼层
帮顶!!!

出0入0汤圆

发表于 2010-5-11 15:58:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-4 22:37:40 | 显示全部楼层

出0入0汤圆

发表于 2010-9-3 21:45:11 | 显示全部楼层
也MARK一哈!

出0入0汤圆

发表于 2010-9-6 16:52:16 | 显示全部楼层
学习一下!!!!!!!!!!

出0入0汤圆

发表于 2010-9-6 19:15:08 | 显示全部楼层
记号下!

出0入0汤圆

发表于 2010-10-9 21:58:34 | 显示全部楼层
学习了 谢谢..

出0入0汤圆

发表于 2010-10-11 21:11:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-12 11:58:11 | 显示全部楼层
这个要顶了,强人,只有羡慕的份

出0入0汤圆

发表于 2010-10-12 20:57:04 | 显示全部楼层
好东西,顶顶

出0入0汤圆

发表于 2010-10-15 10:14:22 | 显示全部楼层
ST7920驱动的12864的确有点慢,向各位兄台求一款速度快的显示器

出0入0汤圆

发表于 2010-10-21 16:54:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-7 20:21:15 | 显示全部楼层
dingding

出0入0汤圆

发表于 2011-4-24 00:35:55 | 显示全部楼层
太猛了!! 厉害啊!

出0入0汤圆

发表于 2011-7-30 12:20:11 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-20 19:41:20 | 显示全部楼层
回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------

楼主,我拿了你的程序试了一下,效果不一样,我们两个字明显比你的小,求解

出0入0汤圆

发表于 2011-8-25 22:56:55 | 显示全部楼层
写得很不错

出0入0汤圆

发表于 2011-8-26 09:10:33 | 显示全部楼层
cool

出0入0汤圆

发表于 2011-8-26 12:37:41 | 显示全部楼层
这个要顶了,强人,只有仰视的份

出0入0汤圆

发表于 2011-8-26 16:01:08 | 显示全部楼层
忘了记没有

出0入0汤圆

发表于 2011-8-26 19:37:02 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-9 14:09:31 | 显示全部楼层
学习了

出0入0汤圆

发表于 2012-5-30 18:34:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-7-7 21:46:54 | 显示全部楼层
多谢分享!

出0入0汤圆

发表于 2012-8-30 09:31:59 | 显示全部楼层
楼主厉害!!!

出0入0汤圆

发表于 2012-8-31 14:08:20 | 显示全部楼层
not bad !!

出0入0汤圆

发表于 2012-9-9 23:33:12 | 显示全部楼层
good

出0入0汤圆

发表于 2013-1-15 10:37:08 | 显示全部楼层
学习了 下载研究
头像被屏蔽

出0入0汤圆

发表于 2013-3-10 21:13:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-3-11 20:27:57 | 显示全部楼层
谢谢楼主啦

出0入0汤圆

发表于 2013-3-11 20:45:45 | 显示全部楼层
不错不错..

出0入0汤圆

发表于 2013-3-12 14:47:36 | 显示全部楼层
mark,thanks.

出0入0汤圆

发表于 2013-3-16 11:20:45 | 显示全部楼层
谢谢了。。。。

出0入0汤圆

发表于 2013-5-4 21:51:38 | 显示全部楼层
不错,记下学习了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-23 23:36

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

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