液晶显示模块通常用来作为控制设备的人机交互的窗口,把机器/设备的内部参数显示在液晶屏幕上,今天和大家来分享一下,如何利用 单片机的总线来点亮液晶显示模块的; 通常情况下,拿到一个液晶屏幕要如何才能点亮他呢,首先得看懂用户手册,也不是要全看懂哈,看懂关键的几个点就可以了: 第一, 接口定义; 第二, 时序图; 第三, 指令表; 看懂这些就差不多了,这里就拿工业显示屏幕里比较知名的拓普微的LM6063CCW的模块(控制器是ST7565的,128x64液晶屏用的最多的控制器了)来做个讲解,首先打开手册(网上一搜一大把哈): 咱按着节奏来: 第一:接口定义
全是英文的,不要被吓到哈,其实这些都是比较简单的英文,我四级都没过都能看懂,相信你们也都可以哈;怕有些草根确实看不明白,我挑几个关键点说一下,首先我们只看8080模式:1.手册里说这个是默认的;2.AT89S52的总线就是8080的; A0 通道选择信号,当A0=0时,选择指令通道;A0=1时,选择数据通道; /RD为读信号,低电平有效; /WR为写信号,低电平有效;注意:/WR和/RD 不能同时为底电平哈 /RES复位脚,低电平有效; /CS1片选型号,低电平有效;与模块通讯都需要片选信号有效情况下; 第二:时序图
如何看懂时序图在这里就不多说了在学校老师应该是有教过的哈,如果已经还给老师了的话,可以私聊我; 第三:指令表
英文的,我也就不多解释了,最好是看ST7565的IC资料也是英文的,不过我找到了中文版的资料需要的童鞋可以私聊我; 好了接下来画重点: 很多人都有用IO口点亮过液晶显示模块,今天咱来介绍一下更高级的点亮办法,因为用IO口模拟时序,就需要一个一个信号的去操作,很耗费时间,从而会导致整幅图片刷新时,能看出刷的效果;那么怎么样才能够避免出现刷的效果呢,可以通过节省送数据的时间,而51单片机设计的时候为了快速访问外部存储,带有16根地址线可直接寻址既80总线,这种方式的好处是,他的读写时序都是单片机内部产生的时序,因此缩短模拟IO口所花费的时间,可能这么说你感觉不到什么,举个实例:假设单片机的指令周期为1us,如果是IO口模拟的话至少需要7us,如果是用总线方式只需要1us,相差7倍!废话少说,直接上干货: 要使用总线方式,首先硬件要连接好,可参照下面的原理图设计硬件:
总线寻址方式是模块的数据总线直接挂在89S52的数据总线上,/RD、/WR作为模块的读、写控制信号,/CS信号和A0信号都由地址线译码产生,模块的/RES接RC复位 电路。 总线寻址方式驱动函数如下:(地址定义,根据用户平台接口修改) 1、指令代码写入函数 voidSdCmd(uchar Command) { uchar xdata *Com_addr; Com_addr =0x8000; // 指令通道地址 *Com_addr = Command; //写指令操作 } 2、显示数据写入函数 voidSdData(uchar DData) { uchar xdata *DData_addr; DData_addr =0x8100; // 数据通道地址 *DData_addr = DData; //写数据操作 } 3、显示数据读取函数 ucharRdData() { uchar DData; uchar xdata *DData_addr; DData_addr =0x8100; //数据通道地址 DData = DData_addr; //读数据操作 return(DData); //返回数据值 } 其他的代码就没啥好说的了,参照附件
|