搜索
bottom↓
回复: 2

请大家帮忙看看HT1623程序哪不对?CS,DATA,WR都有波形,但是液晶不显示

[复制链接]

出0入4汤圆

发表于 2012-2-25 16:06:37 | 显示全部楼层 |阅读模式
#include "STC51.H"
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int

#define _Nop() _nop_()
#define SYSDIS  0X00           //  关振系统荡器和LCD偏压发生器
#define SYSEN   0X01           // 打开系统振荡器
#define LCDON   0X03           //  打开LCD偏压
#define RC256   0X18           // 内部时钟
#define WDTDIS  0X05        //  禁止看门狗
#define TONE4K  0X40
sbit HT1623_DAT=P0^1;         //HT1623数据引脚
sbit HT1623_CS=P0^3;    //HT1623使能引脚
sbit HT1623_WR=P0^0;    //HT1623时钟引脚
sbit led = P3^6;
unsigned char ttt=0;   
uchar code Ht1623Tab[]={0x55,0x32,0x15,0x68,0x87,0x43,0x4,0x4,0x5,0x70,0x04,0x00,0x00,0x00,0x00,0x00};
//uchar  Ht1623Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xeb,0x00};
//uchar code Ht1623Tab[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};



void delay(unsigned int ms)
{
        uint i,j;
        for(i=0;i<ms;i++)
        for(j=0;j<65;j++);

}
void wr_cmd_bit(unsigned char Data,unsigned char n)
{
unsigned char i;

for(i=0;i<n;i++)
{
if(Data&0x80)
HT1623_DAT=1;
else
HT1623_DAT=0;
HT1623_WR=0;
_Nop();
_Nop();
HT1623_WR=1;
Data <<= 1;
}
}
/******************************************************
写数据函数,cnt为传送数据位数,数据传送为低位在前
*******************************************************/
void wr_bit(uchar Data,uchar cnt)
{
        uchar i;
        for(i=0;i<cnt;i++)
        {   
if (Data& 0x01)
HT1623_DAT=1;
else
HT1623_DAT=0;
HT1623_WR=0;
_Nop();
_Nop();
_Nop();
_Nop();
HT1623_WR=1;
Data >>= 1;  
        }
}


/********************************************************
HT1623命令写入函数
********************************************************/
void wr_cmd(uchar Cmd)
{
        HT1623_CS=0;
        _Nop();
        wr_cmd_bit(0x80,3);        //写入命令标志100
        wr_cmd_bit(Cmd,9);         //写入命令数据
        HT1623_CS=1;
        _Nop();  
}


/********************************************************
HT1623在指定地址写入数据函数
********************************************************/
void wr_byte(uchar Addr,uchar Data)
{
        HT1623_CS=0;
        wr_cmd_bit(0xa0,3);         //写入数据标志101
        wr_cmd_bit(Addr<<1,7);        //写入地址数据
        wr_bit(Data,4);        //写入数据
        HT1623_CS=1;   
        _Nop();  
}

/********************************************************
HT1623连续写入方式函数
********************************************************/
void wr_all(uchar Addr,uchar *p,uchar cnt)
{
        uchar i;
        HT1623_CS=0;
        wr_bit(0xa0,3);        //写入数据标志101
        wr_bit(Addr<<2,6);        //写入地址数据
        for(i=0;i<cnt;i++)
        {
                wr_bit(*p,8);        //写入数据
                p++;
        }
        HT1623_CS=1;   
        _Nop();  
}



/********************************************************
功能描述: HT1623初始化
********************************************************/
void Ht1623_Init(void)
{
        HT1623_CS=1;
//        HT1623_WR=1;
//        HT1623_DAT=1;
        delay(2000);              //延时使LCD工作电压稳定
        wr_cmd(RC256);            //使用内部振荡器
        wr_cmd(SYSDIS);
        wr_cmd(WDTDIS);
        wr_cmd(SYSEN);
        wr_cmd(LCDON);
        wr_cmd(TONE4K);         
}
void timer0() interrupt 1
{
        TMOD = 0x11;
        TH0 = 0XFc;
        TL0=0X33;
        ttt++;
        if(ttt>=200)
        {
                ttt=0;
                led=!led;
        }
        wr_all(0,Ht1623Tab,48);//清除1623寄存器数据,暨清屏


}

void main()
{
//        uchar i,j,t;
        Ht1623_Init();     //上电初始化LCD
        EA = 1;
    ET0 = 1;
    TR0 = 1;
        delay(1000);        //延时一段时间
        P0M1=0X00;
        P0M0=0X00;
        P3M1=0X00;
        P3M0=0Xff;

        while(1)
        {  
       
          wr_all(0,Ht1623Tab,48);
        }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入4汤圆

 楼主| 发表于 2012-2-25 16:09:27 | 显示全部楼层
程序是参考论坛1621的,但是屏幕不刷新,只是固定显示几个点

出0入0汤圆

发表于 2012-5-14 21:49:16 | 显示全部楼层
你的液晶点起来了吗? 我也遇到问题了,刷新屏幕能成功但是显示的字很淡 从正面根本看不见,得侧着看才能看见。我得液晶是5V的VLCD原来通过560电阻接VDD(+5V)后来短接也没效果。 看HT1623的偏压是1/4 那偏压后的电压岂不是1.25V了?  头一次用液晶真搞不懂啊。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 23:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表