[国产单片机] HT1621 LCD 显示问题

[复制链接]
 楼主| fengrenjie 发表于 2018-2-17 16:25 | 显示全部楼层 |阅读模式
小弟第一次用HT1621驱动段码LCD,遇到了问题:1、液晶初始化时,使用        SendCmd(LCDON);                SendCmd(LCDOFF); 能够正确地开、关LCD。
2、Write_1621(0xff,0xff); 不能使整个屏幕字段都点亮,一小部分不亮。

3、Write_1621(0xff,0x00); 屏幕大部分字段还是能亮,不能灭
4、测试时发现,无论Write_1621(),什么数据,部分字段一直是亮的,小部分字段才正确地受控。
5、示波器的接地夹子,碰HT1621引脚时,LCD显示会变。


单片机新唐、HT1621、LCD电压都是3.3V。
请大神们指点。
Write_1621(0xff,0x00)命令的波形如下,分别是HT1621的cs、wr、data三个引脚的波形


HT1621驱动部分的源码如下,稍改动了合泰的源码,数据的频率在300K:
void SendBit_1621(uchar sdata,uchar cnt)               
{
        uchar i;
        for(i =0; i <cnt; i ++)
        {
                if((sdata&0x80)==0)
                {
                        dat=0;
                }
                else
                {
                        dat=1;
                }
                wr=0;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                wr=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                sdata<<=1;
        }
}

void SendDataBit_1621(uchar sdata,uchar cnt)       
{
        uchar i;
        for(i =0; i <cnt; i ++)
        {
                if((sdata&0x01)==0)
                {
                        dat=0;
                }
                else
                {
                        dat=1;
                }
                wr=0;
                _nop_();
                _nop_();
                _nop_();
                wr=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                                _nop_();
                _nop_();
                _nop_();
                sdata>>=1;
        }
}

void SendCmd(uchar command)
{
        cs=0;
        SendBit_1621(0x80,4);                       
        SendBit_1621(command,8);                
        cs=1;                                       
}

void Write_1621(uchar addr,uchar sdata)
{
        cs=0;
        SendBit_1621(0xa0,3);                       
        SendBit_1621(addr,6);                       
        SendDataBit_1621(sdata,4);               
        cs=1;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| fengrenjie 发表于 2018-2-19 14:10 | 显示全部楼层
已搞定。自己傻掉了。。。。。
dirtwillfly 发表于 2018-2-22 10:55 | 显示全部楼层
fengrenjie 发表于 2018-2-19 14:10
已搞定。自己傻掉了。。。。。

能者自答
一路向北lm 发表于 2018-2-23 08:41 来自手机 | 显示全部楼层
怎么回事?
ddllxxrr 发表于 2018-2-23 08:58 | 显示全部楼层
楼主搞定了????
zqx1000 发表于 2018-4-10 18:21 | 显示全部楼层
kankan
xushuo888 发表于 2018-8-3 14:21 | 显示全部楼层
我之前也有用过1621的驱动IC,当时有拿到开发资料和驱动程序,发给参考参考

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

25

主题

332

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部