打印
[程序源码]

笔段式LCD动态驱动编程

[复制链接]
4355|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cnhjb_16|  楼主 | 2013-11-15 12:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cnhjb_16 于 2013-11-15 12:29 编辑


如图是一款温控器的LCD显示硬件电路,5V供电,用的LCD资料上面写的1/4DUTY,1/2BIAS,此电路是否适合驱动这样的LCD?可以的话,请详细讲一下编程思路,方**
网上看了一些资料,只是讲个大体的意思:COM是一个顺序扫描脉冲序列,SEG端输出笔段选通信号.那么在程序上又怎么实现?请原谅下新手的无知,没编过此类复杂的程序.
如果编过此类程序能否上传一个学习一下.最好是汇编的.打算用三星的9454,51的也可以
适合初学者的资料能否发个给我.

相关帖子

沙发
ayb_ice| | 2013-11-15 14:32 | 只看该作者
外挂一个LCD芯片配置好就可以了,

使用特权

评论回复
板凳
lrhsx33| | 2013-11-15 16:25 | 只看该作者
ayb_ice 发表于 2013-11-15 14:32
外挂一个LCD芯片配置好就可以了,

新生写通信可能不好写,还是直接用IO扫更容易。

使用特权

评论回复
地板
lrhsx33| | 2013-11-15 16:30 | 只看该作者
电路正常。
要先调通164。
建议你先选择多IO直接IO驱动,那样显示COM SEG加电压正反扫(跟LED一样扫,当不知道LED方向,正反都扫);其它不扫的COM设为输入。

使用特权

评论回复
5
cnhjb_16|  楼主 | 2013-11-19 15:17 | 只看该作者
本帖最后由 cnhjb_16 于 2013-11-20 00:15 编辑
lrhsx33 发表于 2013-11-15 16:30
电路正常。
要先调通164。
建议你先选择多IO直接IO驱动,那样显示COM SEG加电压正反扫(跟LED一样扫,当不 ...


LCD_GUANBI:
           CLRBIT  LED_SC
           CLRBIT  FG_SC
           CLRBIT  FK_SC
           CLRBIT  KJ_SC
           LD    P2CONL,#01010101B     ;关闭LCD
           LD    T0CON, #01001000B        
           JP    MAIN                           
LCD_XS:    ;取LCD段码值R12,R11,R10  高,中,低 ,R14,R13中为实际温度值,R14高中位值,R13小数  位 (低位)                              
           LD    R2,#0BH           ;显示段码值表格首地址  高位
           CP    SZAJ,#01H         
           JP    NE,L1                         ;判断显示和设置状态   
           LD    R2,#0AH           ;设置段码值表格首地址  高位
           LD    R14,SV            ;设置值
           CLR   R13               
             JP    L2
L1:        LD    R3,R14
L2:        PUSH  R3
           AND   R3,#0F0H
           RCF
           RL    R3
           RL    R3
           RL    R3
           RL    R3
           RCF
           LDC   R12,@RR2
           POP   R3
           AND   R3,#0FH
           LD    R2,#0AH           ;显示段码值表格首地址  中位
      CP    SZAJ,#01H
           JP    NE,L3
           LD    R2,#0BH           ;设置段码值表格首地址  中位      
L3:        LDC   R11,@RR2
           LD    R2,#0CH           ;低位地址
           LD    R3,R13
           LDC   R10,@RR2
                       
           LD    AMA,R12
           LD    BMA,R11
           LD    CMA,R10
           LD    DMA,#00000001B            
           LD    P2CONL,#10010101B ;开COM1
           LD    R6,#08H         
SENDTO164:
           CLRBIT  SCL1            ;164clock
           NOP
           NOP
           CLRBIT  SDA1            ;164data
SEND1_164A:
           RLC     AMA           
           SETBIT  SDA1
           CLRBIT  COM1      
           JP      C,SEND2_164A   
           CLRBIT  SDA1
           CLRBIT  COM1              
SEND2_164A:
           NOP
           SETBIT  SCL1            ;SCL 上升沿LCD段码输出
           NOP
           NOP
           NOP
           CLRBIT  SCL1      
           DEC     R6
           JP      NZ,SEND1_164A         
           NOP
           NOP
           CLRBIT  SDA1            
           LD      P2CONL,#01100101B           ;开COM2
           LD      R6,#08H
SEND3_164B:
           RLC     BMA            
           SETBIT  SDA1            
           CLRBIT  COM2
           JP      C,SEND4_164B   
           CLRBIT  SDA1              
           CLRBIT  COM2   
SEND4_164B:
           NOP
           SETBIT  SCL1            
           NOP
           NOP
           NOP
           CLRBIT  SCL1      
           DEC     R6
           JP      NZ,SEND3_164B   
           NOP
           NOP
           CLRBIT  SDA1            
           LD      P2CONL,#01011001B            ;开COM3
           LD      R6,#08H
SEND5_164C:
           RLC     CMA            
           SETBIT  SDA1            
           CLRBIT  COM3
           JP      C,SEND6_164C   
           CLRBIT  SDA1           
           CLRBIT  COM3      
SEND6_164C:
           NOP
           SETBIT  SCL1            
           NOP
           NOP
           NOP
           CLRBIT  SCL1      
           DEC     R6
           JP      NZ,SEND5_164C   
           NOP
           NOP
           CLRBIT  SDA1            
           LD      R6,#08H
           LD      P2CONL,#01010110B            ;开COM4           
SEND7_164D:
           RLC     DMA            
           SETBIT  SDA1            
           CLRBIT  COM4
           JP      C,SEND8_164D   
           CLRBIT  SDA1            
           CLRBIT  COM4      
SEND8_164D:
           NOP
           SETBIT  SCL1            
           NOP
           NOP
           NOP
           CLRBIT  SCL1      
           DEC     R6
           JP      NZ,SEND7_164D  
           NOP
           NOP
           CLRBIT  SDA1                        
           RET  

你好,这个是我编的LCD显示的程序,请问问题出在哪里?
不显示.是不是没有考虑COM端与笔段端时序同步的问题?
采用的是20ms定时中断,调用LCD显示程序

使用特权

评论回复
6
ningling_21| | 2013-11-19 17:00 | 只看该作者
STC单片机也有类是驱动例程和电路...

使用特权

评论回复
7
pang7| | 2013-11-19 17:24 | 只看该作者
为什么还用9454呀 应该停产了吧 你可以选择中颖的79f083 用c写起来简单些 汇编看起来好费力

使用特权

评论回复
8
cnhjb_16|  楼主 | 2013-11-21 11:44 | 只看该作者
问个初级问题,请各位指点下新手!
LCD驱动的程序流程该怎么样的,是要不停的扫描LCD的COM端和笔段端吧?那这个频率应该设置多少?如果是不停扫描LCD那如何再运行到主程序中?
我上面编的是用定时器中断,每20MS运行一次LCD显示程序.这个方法是否可行?
上面编的我自己想想也是不对的.这样LCD扫描是断续的了,呵呵.
就是主程序运行中如何连续扫描LCD,多位显示的时序该怎么样的?

使用特权

评论回复
9
cnhjb_16|  楼主 | 2013-11-21 12:10 | 只看该作者
如果LCD显示子程序扫描完就用了1ms,然后退出中断运行其他的程序,这样LCD显示能正常吗?

使用特权

评论回复
10
cnhjb_16|  楼主 | 2014-1-12 23:40 | 只看该作者
lrhsx33 发表于 2013-11-15 16:30
电路正常。
要先调通164。
建议你先选择多IO直接IO驱动,那样显示COM SEG加电压正反扫(跟LED一样扫,当不 ...

你好,我用的单片机IO口不足,只能用164扩展。
请问相对于多IO口直接接到LCD的SEG端,通过164接过去,编程上要注意些什么?看过164驱动数码管的一些资料,发现与我编的差不多啊,我8位扫完后又加了一次反向扫描,另外数码管不显示的COM口不加开启电平,我这里是加1/2VCC电压,从原理上讲应该没问题啊?那到底什么原因呢?
方便的话,请看下我发在技术交流版区的帖子!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

125

帖子

3

粉丝