amobbs.com 阿莫电子技术论坛

标题: [古董贴][范例]使用级联595驱动的LCD12864 —— 595驱动LCD1602的姊妹篇 [打印本页]

作者: Gorgon_Meducer    时间: 2006-2-16 21:35
标题: [古董贴][范例]使用级联595驱动的LCD12864 —— 595驱动LCD1602的姊妹篇
在上一次成功使用 单个 595 驱动了1602以后,使用 级联 595 驱动 LCD12864的想法自然就浮出水面了。

参考了网友的 LCD12864驱动以后,我们编写了一个支持位操作、普通端口操作、并行操作、串行操作等多种模式的12864驱动。

试验成功,不敢独享,上传共勉。



点击此处下载armok01102811.rar


-----此内容被Gorgon Meducer于2006-02-16,21:43:48编辑过
作者: Gorgon_Meducer    时间: 2006-2-16 21:37
核心程序思想说明:

-----------------------------

1、这次使用了和上次一样SerialToCollateral.h的头文件。

2、编写了一个兼容位操作的LCD12864驱动,主要考虑到,很多人并不习惯使用位段方式作的位操作支持,所以这次使用宏定义的方法,把很多接口引了出来,提高的代码的适应性和复用性。



硬件连接说明:



595端:

VCC

SER       PD5

SRCLK     PD4

RCLK      PD3

GND



595虚拟端口连接方式



第一级595

   QA   RS

   QB   R/W

   QC   E

   QD   CS1

   QE   CS2

   QF   RST

   

   第二级595

   QA~QH 数据端口
-----此内容被Gorgon Meducer于2006-02-16,21:38:40编辑过
作者: Gorgon_Meducer    时间: 2006-2-16 21:42
核心代码讲解:

-----------------------------------

# include "SerialToCollateral.h"



/*-----------------定义虚拟端口--------------------*/



# define LCD12864_RS            PV0

# define LCD12864_RW            PV1

# define LCD12864_E             PV2

# define LCD12864_CSA           PV3

# define LCD12864_CSB           PV4

# define LCD12864_RST           PV5



# define SETBIT_RS         LCD12864_RS = High;

# define CLRBIT_RS         LCD12864_RS = Low;

# define SETBIT_RW         LCD12864_RW = High;

# define CLRBIT_RW         LCD12864_RW = Low;

# define SETBIT_E          LCD12864_E  = High;refreshVirtualPORT();

# define CLRBIT_E          LCD12864_E  = Low;refreshVirtualPORT();

# define SETBIT_CS1        LCD12864_CSA = High;

# define CLRBIT_CS1        LCD12864_CSA = Low;

# define SETBIT_CS2        LCD12864_CSB = High;

# define CLRBIT_CS2        LCD12864_CSB = Low;

# define SETBIT_RST        LCD12864_RST = High;refreshVirtualPORT();

# define CLRBIT_RST        LCD12864_RST = Low;refreshVirtualPORT();



/*-----------------定义虚拟端口下的写数据方式------------------*/

# define LCD12864_DataTransfer(a)  VPORT &= 0x00ff;VPORT |= (a<<8); refreshVirtualPORT();         



/*------------------保持与并行模式兼容性的鸡肋宏定义--------------------*/

# define ReadDataPORT

# define SetDataPORTDirection_READ

# define SetDataPORTDirection_WRITE





/*---------说明驱动LCD12864不读取状态-----------*/

# define _LCD12864_WriteOnly                     



/*---------设置在只写状态下的延时等待周期---------*/   

# define LCD12864_WaitTime 1





# include "RD_LCD12864.h"
作者: avrboy    时间: 2006-2-16 22:28
呵呵,樓主用595用上隱了!!
作者: Gorgon_Meducer    时间: 2006-2-16 22:49
伤自尊了……
作者: avrboy    时间: 2006-2-16 22:53
其實我也是用上了隱的

http://www.ouravr.com/bbs/bbs_upload3433344123780210/files_5/armok0192766.gif
作者: avrboy    时间: 2006-2-16 22:58
還有這個

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=448564&bbs_page_no=1&bbs_id=1000
作者: Gorgon_Meducer    时间: 2006-2-16 23:09
晕……原来我们一样哈。
作者: onorg    时间: 2006-2-17 08:47
够详细。。支持。。。
作者: xusp    时间: 2006-6-12 17:01
请问楼主,这个LCD12864的主芯片是T6963C的吗
作者: Gorgon_Meducer    时间: 2006-6-12 23:51
没有注意看过,应该是吧
作者: yxlcarter    时间: 2008-9-11 15:33
方法是不错,可是驱动一个1602加两个595,省了,4个IO口,成本没考虑吗?
作者: kdtcf    时间: 2008-9-11 17:25
用595传输会不会减慢刷新速度,视觉上会不会受影响呢?
作者: Gorgon_Meducer    时间: 2008-9-13 17:05
to 【12楼】 kdtcf 春风
    速度变慢是很明显的。在图像刷新速度要求不严格的场合可以使用。
作者: linghu2    时间: 2011-5-9 15:15
用IO模拟SPI,速度肯定慢了!
作者: pjn74a    时间: 2011-5-12 16:59
595传输线长了容易受到干扰
作者: banye2010    时间: 2013-3-29 11:55
12864貌似本来就支持行的
作者: sdyzxue    时间: 2013-4-1 10:14
谢谢分享,适用于端口紧张的情况下。
作者: OYL    时间: 2013-4-23 09:22
其实12864不算VCC和GND只要两根线就可以驱动
作者: YS126    时间: 2013-4-24 22:09
记号,留着以后找
作者: jxchen    时间: 2019-3-15 23:50
棒棒棒~~~~~~~~~~~~~~~~




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4