打印

求助有两个HT1621的液晶如何驱动

[复制链接]
2473|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
milktang|  楼主 | 2011-10-6 08:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 milktang 于 2011-10-7 16:56 编辑

两个HT1621一个是IC1,一个是IC2,对IC1单独片选操作,IC1控制的段能显示,对IC2单独操作,IC2控制的段没有显示。对IC1,IC2一起片选操作,IC1控制的段显示,IC2控制的段没显示。

段码的真值表是怎么确定的啊,不知道是不是IC2的地址操作有问题

如果我想显示PIN34 的6A段,应该怎么操作地址呢
已将IC引脚与LCD引脚连接关系注明,黑色是IC1引脚,红色是IC2引脚

相关帖子

沙发
ljhtj| | 2011-10-6 08:18 | 只看该作者
顶,等待学习

使用特权

评论回复
板凳
milktang|  楼主 | 2011-10-7 07:49 | 只看该作者
等待求解!

使用特权

评论回复
地板
jin7727| | 2011-10-7 10:41 | 只看该作者
我不知,高手请进

使用特权

评论回复
5
gx_huang| | 2011-10-7 11:06 | 只看该作者
先搞清楚IC和LCD是如何连接的,再看看IC数据手册。
可以先让所有RAM都写“1”

使用特权

评论回复
6
milktang|  楼主 | 2011-10-7 13:38 | 只看该作者
我的测试程序就是将RAM的所有位都置1,但是IC2的段就是没有显示

使用特权

评论回复
7
milktang|  楼主 | 2011-10-7 16:41 | 只看该作者
注明了IC引脚与LCD引脚的连接关系

使用特权

评论回复
8
milktang|  楼主 | 2011-10-9 08:32 | 只看该作者
大家帮看看程序有没有问题
#include "pic.h"
#define uchar unsigned char
#define uint unsigned int
#define CS1 RB2
#define CS2 RB3
#define WR RB1
#define DATA RB0
#define BIAS   0x50  //0b1000 0101 0010  1/2duty 4com
#define SYSEN  0X02    //0b1000 0000 0010 打开系统振荡器
#define LCDON  0X06    //0b1000 0000 0110  打开LCD偏压
#define TIMERDIS  0X08 //0b1000 0000 1000  时基输出失效
#define nop()  NOP();NOP()
const uchar Ht1621Tab[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                                        0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
const uchar Ht1621Tab1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void delayms(uint x)
{
      uchar j;
      for(;x>0;x--)
      {
            for(j=0;j<40;j++);
       }
}
void init()
{
     ADCON1=0x07;
     TRISA=0x00;
     TRISB=0x00;
      TRISC=0x00;
}
void SendBit_1621(uchar dat,uchar cnt)//DATA的高cnt位写入1621,高位在前
{
     uchar i;
     for(i=0;i<cnt;i++)
    {
        if((dat&0x80)==0)DATA=0;
        else DATA=1;
        WR=0;
        NOP();
        NOP();
        NOP();
        NOP();
        WR=1;
         NOP();
          NOP();
         NOP();
        NOP();
        dat<<=1;
     }
}
void SendDataBit_1621(uchar dat,uchar cnt) //DATA的低cnt位写入1621,低高位在前
{
      uchar i;
       for(i=0;i<cnt;i++)
      {
            if((dat&0x01)==0)DATA=0;
            else DATA=1;
             WR=0;
            NOP();
            NOP();
            NOP();
            NOP();
            delayms(50);
             WR=1;
             NOP();
             NOP();
              dat>>=1;
      }
}
void SendCmd(uchar Cmd)  //写命令
{
      CS1=0;
      CS2=0;
      nop();
      SendBit_1621(0x80,4); //写入命令标志100
       SendBit_1621(Cmd,8);  //写入9位数据,其中前8位为Cmd命令,最后1位任意
       CS1=1;
       CS2=1;
       NOP();
       NOP();
       NOP();
      NOP();
      DATA=1;
}
void Write_1621_CS1(uchar Addr,uchar Data)
{
     CS1=0;
     SendBit_1621(0xa0,3);  //写入数据标志101
     SendBit_1621(Addr<<2,6); //写入6位地址数据
     SendDataBit_1621(Data,4); //写入数据的低4位
     CS1=1;
      nop();
      DATA=1;
      NOP();
}
void Write_1621_CS2(uchar Addr,uchar Data)
{
     CS2=0;
     SendBit_1621(0xa0,3);  //写入数据标志101
     SendBit_1621(Addr<<2,6); //写入6位地址数据
     SendDataBit_1621(Data,4); //写入数据的低4位
     CS2=1;
      nop();
      DATA=1;
       NOP();
}
void WriteAll_1621_CS1(uchar Addr,const uchar *p,uchar cnt)
{
     uchar i;
     CS1=0;
     SendBit_1621(0xa0,3); //写入数据标志101
     SendBit_1621(Addr<<2,6); //写入6位地址数据
     for (i=0;i<cnt;i++)
    {
          SendDataBit_1621(*p,8); //写入数据
           p++;
     }
    CS1=1;
    nop();
}
void WriteAll_1621_CS2(uchar Addr,const uchar *p,uchar cnt)
{
      uchar i;
      CS2=0;
      SendBit_1621(0xa0,3); //写入数据标志101
      SendBit_1621(Addr<<2,6); //写入6位地址数据
     for (i=0;i<cnt;i++)
      {
          SendDataBit_1621(*p,8); //写入数据
       p++;
      }
     CS2=1;
      nop();
}
void init1621()
{
     CS1=1;
     CS2=1;
     WR=1;
     DATA=1;
    SendCmd(SYSEN);
    SendCmd(LCDON);     
   SendCmd(BIAS);
   SendCmd(TIMERDIS);
}
void main()
{
     init();
     init1621();
     init1621();
     while(1)
    {
        WriteAll_1621_CS1(0x00,Ht1621Tab,16);
        WriteAll_1621_CS2(0x00,Ht1621Tab,16);
     }
}

使用特权

评论回复
9
milktang|  楼主 | 2011-10-10 16:56 | 只看该作者
问题已解决,PCB上有问题IC的VLCD脚没供电

使用特权

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

本版积分规则

10

主题

267

帖子

4

粉丝