独闷闷网

标题: 【疯道】字库型LCD12864显示图片(基于51) [打印本页]

作者: 疯道    时间: 2014-9-11 19:00
标题: 【疯道】字库型LCD12864显示图片(基于51)
字库型LCD12864显示图片
   在网上看到好多大牛用LCD12864显示图片,作为新手的我,顿时感到其无比神奇(好奇归好奇,要学会还得下点功夫),萌生学习的念头,再网上找了好多资料,代码。经过几天研究略有成就(自我感觉良好,其实就是能够显示出来一个整屏的图片而已)。
呵呵,,,仅供同为新手,同样好奇的朋友参考,(大牛勿笑,可以多多指教,分享经验哦),好了废话少说,先上几张效果图

(手机拍摄,像素不佳,还望体谅。图片大小用画图工具进行了调整,,被逼的,不然太大穿不上来啊。。。)

打一下广告,哈哈哈


搞笑一下(是个冷笑话)


欣赏一下美女吧。。。。(本想养眼,,没想到点阵屏。。5555.。。)


小时候回家,在坑坑洼洼的土路上,骑个自行车还是蛮高兴地,,,,
现在呢。。。。。。。。。。。。。。



好了,,不多说了,,分享一下

(基本的操作大家自己查看手册,仅分享主体部分,当然代码等会上传)
1、12864绘图分为上下两个半屏
上半屏:x地址为0x80-0x80+7共8列
        y地址为0x80-0x80+31共32行
上半屏:x地址为0x88-x88+7共8列
        y地址为0x80-0x80+31共32行

2、绘图 RAM(GDRAM)
绘图显示 RAM提供 128 ×8 个字节的记忆空间,在更改绘图RAM时,     先连续写入水平与垂直的坐标值,
    再写入两个字节的数据到绘图 RAM,而地址计数器( AC)会自动加一;在写入绘图RAM的期间,绘图
显示必须关闭,整个写入绘图 RAM的步骤如下:
  1)、关闭绘图显示功能。
  2)、先将水平的位元组坐标(Y )写入绘图RAM地址;
    再将垂直的坐标(X )写入绘图 RAM地址;
     将D15—— D8写入到 RAM中;
    将D7——D0写入到 RAM中;  
打开绘图显示功能。

注意:这部分是手册上的,地址计数器( AC)会自动加一,(这句话我的理解是在一个X地址中连续写入两个字节时,AC自动加一),,,网上有资料说,每次只需改变Y地址,X自动加不用改,我用时发现X也必须修改,,(可能是我对资料理解有误,愿大家共同讨论)。

3、绘图显示指令


(1)、首先设置绘图RAM地址时需要先写入一条指令,将指令集设置为扩充功能,
(2)、写入地址之前关闭绘图RAM.
  (综上两条,需写入指令0x34)
(3)、先写入Y,在写入X,然后打开绘图RAM。故写入地址后,需要写入指令0x36.

说的再多不如代码看着感性,,哈哈,,下面把这部分代码赋值过来。(为了保证的代码整齐,直接截图,)


(为了能够用一副图表示,缩小了字号,不过大家应该看得清,,代码会上传,,,不要着急哦,,可以下下来白看代码边看资料 哦)

4、分析代码(水平有限,错误在所难免,望指正,高手跳过)
   该代码用了for的嵌套,第一个for是为了控制上下半屏,第二个for是Y地址,第三个for是X地址控制。
  在最内层,先写指令WriteCommand_LCD12864(0x34);打开扩充指令集,关闭绘图RAM,
  再写入Y地址,由于上下半屏Y都是从0x80-(0x80+31),故无需考虑j值,即半屏控制。
  写入X地址时需要考虑j的值,(对代码改进的话可以省略半屏控制,,楼主很懒,,这里跳过,,哈哈哈)
   打开绘图RAM,WriteCommand_LCD12864(0x36);

   注意: WriteData_LCD12864(*(ucpWriteGDRAM++));为两条。每个X地址为16位,而我们的数据传输用的8位,故先要写入高位在写入低位。


5、显示效果
  效果图已经传了,,还有几张要修改大小,,,楼主很懒,,,,这里跳过喽。。。。



6、图片需要用单色位图(BMP格式),这里就不多说了,,可以自己制作(楼主也不会啊,,,,求指教,,求带,,求罩。。。)
  当然,,可以网上下载的哦,,,(其实楼主用的是现成的,,,别人用过的)

7、对位图需要进行编码,这里可以用的软件很多,,
本人用的zimo软件



标记2处,用横向取模
标记3处,必须去掉勾,即不选择,,因为先写入的是高位

好了,,就歇着吧。。。希望大家指正,,多多交流,,多多指导,,
希望高手教我动画现实啊 ,,,,

整个程序,包括BMP图片都在压缩包中,,,,

04、LCD12864图片显示.rar

69.18 KB, 下载次数: 836

源码及BMP图片


作者: jianhong_wu    时间: 2014-9-11 23:39
厉害。感谢分享。
作者: 疯道    时间: 2014-9-12 00:54
jianhong_wu 发表于 2014-9-11 23:39
厉害。感谢分享。

多谢鸿哥支持,,呵呵,,鸿哥以后多指教哦
作者: 又一个暑假    时间: 2014-9-12 09:54
不错,学习学习
作者: 又一个暑假    时间: 2014-9-12 20:56
程序编译通不过啊??
作者: 疯道    时间: 2014-9-12 22:10
又一个暑假 发表于 2014-9-12 20:56
程序编译通不过啊??

不可能啊,,,等一下,我下下来试一下
作者: 疯道    时间: 2014-9-12 22:15
疯道 发表于 2014-9-12 22:10
不可能啊,,,等一下,我下下来试一下

能通过啊。。。只是有两个函数没用,有警告而已,不影响,没来得及改,你可以删掉那两个函数

QQ截图20140912221202.jpg (41.54 KB, 下载次数: 409)

QQ截图20140912221202.jpg

作者: 疯道    时间: 2014-9-12 22:20
可以看这个,,这个把那两个函数删了,,没有警告

04、LCD12864图片显示.rar

66.4 KB, 下载次数: 851

没有警告的


作者: 疯道    时间: 2014-9-13 16:42
自己顶。。。哈哈
代码不通过问题1


这个问题已解决,,软件未破解,有代码大小限制



欢迎指教,欢迎交流,,欢迎,,,,,,

作者: 电子00    时间: 2014-9-23 11:39
感谢分享。资料很好很不错。
作者: 又一个暑假    时间: 2014-10-6 10:35
弱弱问一句图片.jpg怎么转成.bmp
作者: 疯道    时间: 2014-10-6 19:41
又一个暑假 发表于 2014-10-6 10:35
弱弱问一句图片.jpg怎么转成.bmp

用电脑自带的画图工具,保存成BMP格式,就OK了

作者: 又一个暑假    时间: 2014-11-18 14:34
“疯道“我原来那QQ被盗了,现在需要你协助,麻烦你加我新QQ帮忙一下3030034835




欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2