Atmel Segment_LCD1_Xplained_PRO 初体验

作者: keen9327
上传时间为: 2014-10-29 09:37 PM
2014-10-29
阅读:

首先感谢论坛活动,可以免费发放板子给大家体验尝试,其次还是很抱歉,拿到板子很久了,现在才来发帖似乎有点晚了!

不久前偶然看见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); //写入命令标志100
Ht162xWr_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); //写入数据标志101
Ht162xWr_Data(Addr<<2,6); //写入地址数据
Ht162xWr_Data(Data<<4,4); //写入数据
Ht162x_CS=1;
Delay();  
} 

至于之后如何控制,DIY吧!(电路图和工程代码正在完善中。。。未完待续)

相关经验
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示