liudeee 发表于 2009-6-21 22:01:12

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)

534117403 发表于 2009-6-21 22:37:37

初学者问,如何改成GCC啊?icc没用过,谢谢了!

zhangjw 发表于 2009-6-21 22:57:49

牛人,帮顶。下来用

liangbmw 发表于 2009-6-22 00:26:11

Mark

xinfa190 发表于 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的图片(用清屏指令不行)然后再画线

xinfa190 发表于 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

liudeee 发表于 2009-6-23 00:27:54

TO:【5楼】 xinfa190

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

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

谢谢你提出的问题。

xinfa190 发表于 2009-6-23 15:51:46

http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_455550.JPG
(原文件名:sin.JPG)

liudeee 发表于 2009-6-24 10:12:35

呵呵我下次也画个,最近不怎么用12864了
总觉得这个ST7920的LCD不适合画图,速度也不快。

liudeee 发表于 2009-6-29 10:24:19

再顶顶!

vv3g 发表于 2009-6-29 22:26:04

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

liudeee 发表于 2009-6-29 23:04:15

LS的朋友的意思具体没看明白呵呵,是不是觉得为了显示个东西用这么多的IO很浪费资源呢?

wowu 发表于 2009-8-18 09:46:38

顶一个。
用12864显示一幅图。最后几行准是乱码???而且只能调用一个图片。

yanghuagui 发表于 2009-8-19 17:24:03

顶起!

guangan854214 发表于 2009-8-20 09:07:31

标记

trent5145 发表于 2009-8-21 23:21:30

顶啊,
显示一幅图片最后几行乱码?我的可以正常显示啊,而且可以显示几幅图片

bise 发表于 2009-8-22 02:33:56

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

zxy1217 发表于 2009-8-30 21:21:24

没一个点清两次 就OK了   lcdcomd(0,1,0x00);
                        lcdcomd(0,1,0x00);

xhero 发表于 2009-9-18 21:31:25

楼主是用16L吗?

liudeee 发表于 2009-9-18 22:41:08

我用的是16 不是L的。

xhero 发表于 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是显示的首地址吧

xhero 发表于 2009-9-18 23:17:29

还有我想用12864的OCMJ4X8C该怎么转呢 需要哪些地方要注意
楼主提个建议吧

liudeee 发表于 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的话,应该只用修改宏命令里的引脚定义就可以了。
    如果是其他的主控芯片就要重新写程序了。。。

xhero 发表于 2009-9-19 08:58:15

我也记得__flash好像可以用const来代替

   

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


楼主程序很规范 很漂亮

xhero 发表于 2009-9-20 20:14:52

楼主可以 共享下ICCAVR7.21吗?

xhero 发表于 2009-9-20 20:18:55

不好意思 已经找到了 不用了

huajank 发表于 2009-11-1 22:45:38

i387DX 发表于 2009-11-26 21:28:57

mark~

wuxianglei 发表于 2009-11-27 01:28:32

mark

a730598 发表于 2009-12-5 17:35:53

写得不错!

hero751 发表于 2009-12-10 19:16:08

mark

xlshaoscu 发表于 2009-12-11 20:54:41

厉害,学习了

paopaoyu800 发表于 2009-12-30 16:17:46

回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------

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

qilin3 发表于 2010-1-5 23:33:41

东西很不错~~ 代码写的很清楚。 建议置COOL

dyong_2008 发表于 2010-1-10 15:32:04

楼主写的代码很规范,很漂亮啊,一直想找点这样的代码学习学习,不知楼主能否再给小弟一些资料,不甚感激。邮箱:dyong_2008@163.com谢谢你。

ratrat 发表于 2010-1-10 17:31:51

MARK

wxfhw 发表于 2010-1-10 18:22:10

记号

sitongwl 发表于 2010-1-10 19:50:09

MARK

bluefeel 发表于 2010-1-11 20:18:18

mark

tingfenghu 发表于 2010-1-30 23:10:15

记号

wugaohui04 发表于 2010-2-24 11:50:03

mark

wugaohui04 发表于 2010-2-24 11:55:17

mark

fy024 发表于 2010-2-24 12:35:38

mark

wugaohui04 发表于 2010-2-26 17:24:41

回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------

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

sky_walker 发表于 2010-4-8 00:07:14

帮顶!!!

chahu1227 发表于 2010-5-11 15:58:18

mark

hehelloook 发表于 2010-6-4 22:37:40

sunquanliang 发表于 2010-9-3 21:45:11

也MARK一哈!

hpdell 发表于 2010-9-6 16:52:16

学习一下!!!!!!!!!!

qinhya 发表于 2010-9-6 19:15:08

记号下!

liujinyong 发表于 2010-10-9 21:58:34

学习了 谢谢..

YanGaruruga 发表于 2010-10-11 21:11:47

mark

bowen_fang 发表于 2010-10-12 11:58:11

这个要顶了,强人,只有羡慕的份

fanbinhua 发表于 2010-10-12 20:57:04

好东西,顶顶

speedway 发表于 2010-10-15 10:14:22

ST7920驱动的12864的确有点慢,向各位兄台求一款速度快的显示器

cb1680 发表于 2010-10-21 16:54:22

mark

fanbinhua 发表于 2010-11-7 20:21:15

dingding

ys5227952 发表于 2011-4-24 00:35:55

太猛了!! 厉害啊!

haolaishi 发表于 2011-7-30 12:20:11

MARK

cjx19728 发表于 2011-8-20 19:41:20

回复【楼主位】liudeee 小菜
-----------------------------------------------------------------------

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

wbanng 发表于 2011-8-25 22:56:55

写得很不错

AVR_MD_AVR 发表于 2011-8-26 09:10:33

cool

makeawish 发表于 2011-8-26 12:37:41

这个要顶了,强人,只有仰视的份

power_check 发表于 2011-8-26 16:01:08

忘了记没有

blackhorse21 发表于 2011-8-26 19:37:02

MARK

szwg048 发表于 2011-9-9 14:09:31

学习了

jiaweiqiang 发表于 2012-5-30 18:34:15

{:smile:}{:smile:}{:smile:}{:smile:}mark

good200xyz 发表于 2012-7-7 21:46:54

多谢分享!

11mashengligong 发表于 2012-8-30 09:31:59

楼主厉害!!!

hclin 发表于 2012-8-31 14:08:20

not bad !!

jinniuxing88 发表于 2012-9-9 23:33:12

{:smile:}good

fover 发表于 2013-1-15 10:37:08

学习了 下载研究

chao8828276 发表于 2013-3-10 21:13:22

jz701209李 发表于 2013-3-11 20:27:57

谢谢楼主啦

paul_guo 发表于 2013-3-11 20:45:45

不错不错..

jlian168 发表于 2013-3-12 14:47:36

mark,thanks.

xingke.mo 发表于 2013-3-16 11:20:45

谢谢了。。。。

freethink168@ 发表于 2013-5-4 21:51:38

不错,记下学习了

yikuang 发表于 2013-8-8 00:01:42

不错!十分感谢!
页: [1]
查看完整版本: 12864(st7920)驱动函数库,原创修改后的,开源分享