TA的每日心情 | 开心 2019-1-29 13:51 |
---|
签到天数: 55 天 连续签到: 1 天 [LV.5]常住居民I
|
首先感谢论坛活动,可以免费发放板子给大家体验尝试,其次还是很抱歉,拿到板子很久了,现在才来发帖似乎有点晚了!
不久前偶然看见Atmel的评估套件申请活动,本着凑热闹混人品的心态试试,想着做人不能太贪心,不能老想着申请最贵的全套套件,刚好公司有项目在用LCD模块,想着就试试呗,22美金,高大上的感觉!
板子到了,很小很精致,要用起来,首先要去官网下载数据手册吧。。。
正面
背面,接口
Segment LCD1 Xplained Pro User Guide 这个文件,摘录之中关键的部分
硬件ID:
管脚分配和连接功能:
以及段字符的显示:
从上面的表里面看出来,总结一下就是说假如想要E7位置的“AM”字符点亮,就是要让SEG2脚和COM0导通呗,和点普通的跑马灯如出一辙。接下来就是硬件连接的问题,我看过开发套件上的电路,引出了大量的IO口和这个模块相连接,真是醉了。。。
但是我在实际的应用中,真找不到这么多IO口用,怎么办呢?还好,本人之前做个这种段式LCD的驱动电路和程序,照猫画虎,依葫芦画瓢,再来一份!
之前使用了一个驱动芯片HT162x,4-wire serial interface,下面是选型表:
这个因为模块上面有40个SEG,4COM可以选择HT1623、26。下面是模块图:
- CS: Chip selection
- BZ, BZ: Tone outputs
- WR,RD, DATA: Serial interface
- COM0~COM3, SEG0~SEG31: LCD outputs
- IRQ: Time base or WDT overflow output
CPU只要通过连接4个IO(/CS,/RD,/WR,DATA)就能实现对LCD模块的控制,节约了IO外设,至于硬件连接就不用多说了,两边的管脚命名都是SEGx,COMx,很容易!
下面是HT162x的Display MemoryRAM
简单的说就是在想要点亮的位置写“1”了。接下来关心的就是它的读写时序了,下面以写时序为例:
和I2C,SPI类似,也有一次读写模式和地址递增连续读写模式,下来就根据它的时序写驱动吧:(部分驱动代码也是来源于网络上的进行了修改,也感谢原作者ZHCE)
/******************************************************写数据函数,cnt为传送数据位数,数据传送为低位在前*******************************************************/void Ht162xWr_Data(uchar Data,uchar cnt){uchar i;for (i=0;i<cnt;i++){HT162x_WR=0; //WR拉低Delay(); //延时 HT162x_DAT=Data&0x80;Delay();HT162x_WR=1;Delay();Data<<=1;}} /********************************************************函数名称:void Ht162xWrCmd(uchar Cmd)功能描述: Ht162x命令写入函数********************************************************/void Ht162xWrCmd(uchar Cmd){Ht162x_CS=0;Delay(); Ht162xWr_Data(0x80,4); //写入命令标志100Ht162xWr_Data(Cmd,8); //写入命令数据Ht162x_CS=1;Delay(); } /********************************************************函数名称:void Ht162xWrOneData(uchar Addr,uchar Data)功能描述: Ht162x在指定地址写入数据函数********************************************************/void Ht162xWrOneData(uchar Addr,uchar Data){Ht162x_CS=0;Ht162xWr_Data(0xa0,3); //写入数据标志101Ht162xWr_Data(Addr<<2,6); //写入地址数据Ht162xWr_Data(Data<<4,4); //写入数据Ht162x_CS=1;Delay(); } 至于之后如何控制,DIY吧!(电路图和工程代码正在完善中。。。未完待续) |
|