OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4723|回复: 2

STC8单片机控制1621B驱动断码液晶,液晶无显示?

[复制链接]

15

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-3-16
在线时间
30 小时
发表于 2018-11-2 17:09:01 | 显示全部楼层 |阅读模式
10金钱
请教大神,在使用STC8单片机控制1621B驱动液晶时,液晶不显示,程序及原理图如下
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit _DAT=P1^6; //HT1621数据引脚
sbit _CS=P1^0; //HT1621使能引脚
sbit _WR=P1^1; //HT1621时钟引脚
sbit _Vlcd=P1^7;//液晶/背光电源控制引脚,低电平有效

void delay_ms(uint z)                //主时钟频率24MHz
{
        uchar i=22, j=190;
        _nop_();
        _nop_();
        _nop_();
        while(z--)
        {
                do
                {
                        while (--j);
                } while (--i);
        }
}
void WriteBitR(uchar dat,uchar m)
{
         uchar i;
         for (i=0;i<m;i++)
         {
               _WR=0;
               _nop_();
                   _nop_();
               _DAT=dat&0x80;
               _nop_();
                   _nop_();
               _WR=1;
               _nop_();
                   _nop_();
               dat<<=1;
          }
}
void Write_cmd(uchar Cmd)
{
         _CS=0;
         _nop_();
         _nop_();
         WriteBitR(0x80,4); //写入命令标志100
         WriteBitR(Cmd,8); //写入命令数据
         _CS=1;
         _nop_();
         _nop_();
}
void WriteOneData(uchar Addr,uchar Data)
{
         _CS=0;
         WriteBitR(0xa0,3); //写入数据标志101
         WriteBitR(Addr<<2,6); //写入地址数据
         WriteBitR(Data,8); //写入数据
         _CS=1;
         _nop_();
         _nop_();
}
void LCD_Init(void)
{
         _CS=1;
         _WR=1;
         _DAT=1;
         Write_cmd(0x52);        //0b1000 0101 0010 1/3duty 4com
         Write_cmd(0X30); //0b1000 0011 0000 内部时钟
         Write_cmd(0x00); //0b1000 0000 0000 关振系统荡器和LCD偏压发生器
         Write_cmd(0X0A);        //0b1000 0000 1010 禁止看门狗
         Write_cmd(0X02); //0b1000 0000 0010 打开系统振荡器
         Write_cmd(0X06); //0b1000 0000 0110 打开LCD偏压
}

void display1()
{       
        uchar m;
        for(m=0;m<30;m=m+2)       
                WriteOneData(m,0xff);
}

void Init()
{
        _Vlcd=0;
        LCD_Init();
}
void main()
{
        Init();

        while(1)
        {
                display1();
                delay_ms(1);
        }
}

QQ截图20181030144549.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14287
金钱
14287
注册时间
2018-8-3
在线时间
1147 小时
发表于 2018-11-2 18:53:19 | 显示全部楼层
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3990
金钱
3990
注册时间
2015-11-14
在线时间
541 小时
发表于 2018-11-10 14:15:27 | 显示全部楼层
如果代码无误的话,先降低主频测试吧,毕竟STC8系列的速度快了好多
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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