查看: 103|回复: 0

Atmel Segment_LCD1_Xplained_PRO 初体验

[复制链接]

主题

好友

300

积分

秀才

  • TA的每日心情
    开心
    2019-1-29 13:51
  • 签到天数: 55 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2014-10-29 21:35:51 |显示全部楼层
    首先感谢论坛活动,可以免费发放板子给大家体验尝试,其次还是很抱歉,拿到板子很久了,现在才来发帖似乎有点晚了!
    不久前偶然看见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吧!(电路图和工程代码正在完善中。。。未完待续)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条

    手机版|电路城

    GMT+8, 2019-9-17 13:48 , Processed in 0.327335 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部