[古董贴][范例]使用级联595驱动的LCD12864 —— 595驱动LCD1602的姊妹篇
在上一次成功使用 单个 595 驱动了1602以后,使用 级联 595 驱动 LCD12864的想法自然就浮出水面了。参考了网友的 LCD12864驱动以后,我们编写了一个支持位操作、普通端口操作、并行操作、串行操作等多种模式的12864驱动。
试验成功,不敢独享,上传共勉。
点击此处下载armok01102811.rar
-----此内容被Gorgon Meducer于2006-02-16,21:43:48编辑过 核心程序思想说明:
-----------------------------
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编辑过 核心代码讲解:
-----------------------------------
# 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" 呵呵,樓主用595用上隱了!! 伤自尊了…… 其實我也是用上了隱的
http://www.ouravr.com/bbs/bbs_upload3433344123780210/files_5/armok0192766.gif 還有這個
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=448564&bbs_page_no=1&bbs_id=1000 晕……原来我们一样哈。 够详细。。支持。。。 请问楼主,这个LCD12864的主芯片是T6963C的吗 没有注意看过,应该是吧 方法是不错,可是驱动一个1602加两个595,省了,4个IO口,成本没考虑吗? 用595传输会不会减慢刷新速度,视觉上会不会受影响呢? to 【12楼】 kdtcf 春风
速度变慢是很明显的。在图像刷新速度要求不严格的场合可以使用。 用IO模拟SPI,速度肯定慢了! 595传输线长了容易受到干扰 12864貌似本来就支持行的 谢谢分享,适用于端口紧张的情况下。{:victory:} 其实12864不算VCC和GND只要两根线就可以驱动 记号,留着以后找 棒棒棒~~~~~~~~~~~~~~~~
页:
[1]