为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

人力资源段式液晶显示方法

2017-10-27 10页 doc 174KB 6阅读

用户头像

is_633423

暂无简介

举报
人力资源段式液晶显示方法人力资源段式液晶显示方法 MSP430F413单片机 段式LCD设计 中遇到的晶振、LCD驱动等问题 2011-08-11 17:40 这次设计所用到的微控制器为 德州仪器(TI)的16位单片机 MSP430F413。 单从价格上面来说,这个是单片机也算是TI里面的最便宜的 可以直接驱动段式96段 LCD 的单片机了,当时设计之初也是奔着价位而来的, 由于在工作中用到过MSP430单片机做过低功耗类的产品,所以对单片机的外围以及硬件结构还是略知一二的。 相对于stc单片机的开发工具来说 430的开发工具也只是个JTA...
人力资源段式液晶显示方法
人力资源段式液晶显示方法 MSP430F413单片机 段式LCD设计 中遇到的晶振、LCD驱动等问题 2011-08-11 17:40 这次设计所用到的微控制器为 德州仪器(TI)的16位单片机 MSP430F413。 单从价格上面来说,这个是单片机也算是TI里面的最便宜的 可以直接驱动段式96段 LCD 的单片机了,当时设计之初也是奔着价位而来的, 由于在工作中用到过MSP430单片机做过低功耗类的产品,所以对单片机的外围以及硬件结构还是略知一二的。 相对于stc单片机的开发工具来说 430的开发工具也只是个JTAG接口,但是这个接口的价格嘛也得60元左右,由于以前做过MSP430的项目,所以开发工具是现成的~ 好了,言归正传,这次所用的LCD是淘宝上买的,详细资料如图所示: 是个四位的 lcd, 以前确实没有接触过段式LCD ,数码管倒是接触的不少,所以自己由好奇心的趋势,自己就做了一块开发板,想试试LCD的感觉。 首先开发板打样回来之后,元器件焊好,随便写了个定时器的程序进去,发现程序在10秒钟之内是运行正常的(此时还没有安装LCD,只是个指示灯在跑),不过也有偶尔程序不运行的情况,后来自己就找原因; 1、mcu焊接不好, 2、复位电路焊接不好, 3、晶振焊接不好, 逐一排查,发现前两项是很正常的,虽然PQFP的封装还是焊接的不多,但是自己的焊功还是过的去的 ,于是就找晶振的问题。 但是如果是晶振自身的问题的话,可能就不起振或者起振频率不对,以至于系统根本就无法定时启动。 所以疑点越来越在晶振上面,后来发现晶振自身是没有问题的,主要是原因是因为晶振的管脚焊接位置 距离单片机的 XIN XOUT 管脚的距离着实有点远,大概20mm的样子,加上线走的比较细 0.26mm,所以晶振启动异常,或者有时候根本不起振。 问题处在第3了。 没有办法只好用刻刀将晶振的线从单片机管脚出来大概3mm的地方划断,剥去丝印层,露出黄铜线,将晶振管脚直接焊接在黄铜线上,然后用硅胶枪将晶振和单片机封好,就是下面的样子 (很丑但是很温柔)~ 凑合着先用一下,等实验好了的话,如果有需要就重新打样了。 将晶振如此这般之后,总算定时器稳定的工作在理想状态了,接下里就是经验和教训了,单片机的晶振在设计的时候一定要首先 定位,确定晶振和单片机管脚之间的有效距离,确保晶振的稳定可靠运行,这个小家伙是关键啊 ~ 接下来就是LCD 了~ 段式LCD的驱动方法基本上和数码管是不太一样的,数码管只要给电和选通就亮。 但是段式LCD的驱动是靠两部分组成的 一部分是 不间断的 电压脉冲, 这个电压脉冲还是被分为好几个电压等级了,如果你用的是 1/4 duty 1/3偏压的话,那么就要有四个电压等级。也就是 VCC --- 2/3VCC ---- 1/3VCC-----GND 这几个电压等级直接可以用电阻进行分压得到,然后直接和 413单片机的 R03 ---GND , R13----1/3 VCC ,, R23---2/3VCC R33---VCC 这样直接连接就可以了。这样电压等级就有了,具体在里面生成的电压等级脉冲,413是可以自己生成的,不用我们操心了。 com0--com3就这些个电压等级的输出管脚。直接连上LCD屏的COM0---COM3就可以了。 另一部分是 选通管脚 选通管脚也就是LCD上面的 S0----Sn ,我在做板子的时候是和单片机里面的S0---Sn,直接连的 ,有几个连几个,多余的单片机IO 口直接拉出来,做外置IO口用。 那么如何来写驱动程序呢 , 首先要搞懂每个输出管脚何时输出和输出什么,这样才能得到我们想要的字形。 于是看了资料发现,MSP430F413中配有LCD段码寄存器,就是说你只要把这些你要显示的字形(当然如果你只想显示数字的话,只用存0-9这几个字码就可以了),段码寄存器的地址是从091H开始------到0A4H 每个地址里面可以放一个8位,每一位对应于液晶上面的一段,所以说一个地址对应于液晶上面就是一个字。(一个字的段码也是8位的) 这样的话,我们只要将要显示的一个数字的编码发到这个 单片机的断码寄存器里面,就可以直接显示了,是通过com口的脉冲波形同时将寄存器里面的段进行耦合,产生压差,LCD只有产生压差才能点亮。一直提供一个不变的高电平是要烧坏液晶的,这就是和数码管区别的地方。不过这些脉冲413单片机已经帮我们做好了。 总体的步骤就是 ,我们将LCD的段码先整理好,然后放在一边备用,等到你想显示某个数据的时候,只要将这个8位的段码直接写入单片机留给你的LCD寄存器写入端口数组就可以了。 在413里面也就是 LCDMEM[ ]; 【】中应该写的是要显示的位,这个位是数码管上面的 位置,比如你想显示液晶上面的第2位数,先不说要显示的内容是什么,这里的位选应该是 LCDMEM[1], 因为是从0开始的,所以第二位应该是 LCDMEM[1]. (从091H开始------到0A4H 每个地址都可以存一个8段) 然后说显示的内容: 显示的内容的段码很关键,这个要看 你所拥有的LCD参数手册,一般都是这样的一张: 这个表给我们的信息就是, 第9和第10列 显示一个8字,第11和第12列显示一个8字.....一共可以显示4个8字。 至于1234列先不要去考虑,那些都是字体周围的那些个小三角符号~ 因为LCD段码的等级脉冲方式是从 COM0---COM3 , 所以我们将这些第9和第10列的段码也要按照这个方式编码。 假如我们想显示第一个8字上面的内容: 即: 第一次脉冲出来 COM0 COM1 COM2 COM3, 那么寄存器里面输出来的段选也应该按照 COM0 COM1 COM2 COM3所对应的段码输出,这样才行显示出你想要的结果,那么我们在第一轮的 COM0--COM3输出时 匹配寄存器的段选应该 DP0---C0---b0----a0,第二轮的com0---com3 输出时,匹配寄存器的段选应该是 d0---e0-----g0----f0 这样第一个 8字的显示才完全了, 至于这个 寄存器是怎样把这些段码读并且写 出去呢, com口在启动后总是从COM0—COM3 ,COM0—COM3 ,COM0—COM3 ,一直不停的这样脉冲着.... 排序方法应该根据 com0---c0m3 的 连续输出方式排。 一个8字的段码排序从高到低排,因为我两轮com0--c0m3的输出所以得这样排 第二 轮 第一轮 com3----com2-----com1----cmo0 com3----com2-----com1-- --cmo0 f0---- -----g0------e0---------d0 a0--------b0--- -------c0-------dp0(小数点位) 然后可以理解为 寄存器里的一个8位段码保存的段就是这样的 f0---- -----g0------e0---------d0 -------- a0--------b0----------c0-------dp0(小数点位) 到此我们如果想显示一个数字 2,我们该如何保存段码呢 按照数码管的方法 应该是 显示 a,b,d,e,g 这五段。 那么对于寄存器里面的这8个段 不是按照 ABCDEFGH 来排的,怎么整呢, 不要紧,显示哪一段就把哪一段 置 “1”,不显示的就 置零。 那么2出来了,有高到低就是 0111 1100 这里的小数点暂时不显示。 其中的 f c dp0不显示,所以写0 就可以啦~ 所以2的最终段码就是 7CH 以此类推,你可以把 0---9的 10个段码全部写出来,然后组成一个通用的数组 char tongyong[10] = { 0xBE, // '0' a+b+c+d+e+f 0x06, // '1' 0x7C, // '2' 0x5E, // '3' 0xC6, // '4' 0xDA, // '5' 0xFA, // '6' 0x0E, // '7' 0xFE, // '8' 0xDE // '9' }; 到此为止 基本上的 原理是走通了,那么具体是怎么才能显示呢, 想显示还要先设置,就像定时器一样,要先设置好相关的寄存器,它才会按照你的思想来运行。 这些设置在各种例程里面都有,随便找一个修改一下就可以了。 重点说数据的传送,当所有东西都设置好之后, 你想显示一个 0,在LCD上面的第1个位置,一般我们都是从右到左的 看法。 也就是在最右边的位置显示一个 0出来,我们要做的只有两步: 1. 先清屏 LCDMEM[0] = 0; 这个就是在第0位 不显示任何东西,清屏~ 当然清屏是在要改变显示数据前清的,并不是每时每刻的在清屏~ 我用一秒钟的中断定时器,实现时钟状态下每分钟清屏一次,整机功耗只有42微安~ 一节600MAH的 锂电池应该能工作1年2个月左右,还是比较划算的~ 2,写数据 LCDMEM[0] = tongyong[0]; 这个就是把tongyong【0】;数组中的的第一个段码0xBE,发给显示寄存器。并且显示的地址是LCD屏上的第0位, LCDMEM[ n], 这个n是几,就是在第几位显示。 当然我的屏幕只有4位,那就是最多只有3了。 好了到此为止全部完工。发两张我的显示效果图上来。 当时设计电路板的时候买了是两种不同的液晶屏,设计的时候电路设计成通用的 了所以可以安装两 种规格的液晶 第一次做LCD,也许有很多理解不对的地方,欢迎大家指正,我们好一起进步~~ 下班已经40分钟了,该打卡回家了~~
/
本文档为【人力资源段式液晶显示方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索