头像-367742

01eff7be008bf10e

个人成就

获得 0 次赞

帮助过0人

单片机驱动1621B液晶,液晶不显示

各位大佬,画的HT1621B驱动板驱动液晶,烧录程序后液晶不显示程序如下。#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define uint32 unsigned long int#define CKSEL (*(uchar volatile xdata *)0xfe00)#define CLKDIV (*(uchar volatile xdata *)0xfe01)#define IRC24MCR (*(uchar volatile xdata *)0xfe02)sfr P1M0=0x92;sfr P1M1=0x91;sfr P_SW2 = 0xba;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=11 j=190;        _nop_();        _nop_();        _nop_();        while(z--)        {                do                {                        while (--j);                } while (--i);        }}void WriteBitR(uchar datuchar m){         uchar i;         for (i=0;i<m;i++)         {               _WR=0;               _nop_();               _DAT=dat&0x80;               _nop_();               _WR=1;               _nop_();               dat<<=1;          } }void Write_cmd(uchar Cmd){         _CS=0;         _nop_();         WriteBitR(0x804); //写入命令标志100         WriteBitR(Cmd8); //写入命令数据         _CS=1;         _nop_();}void WriteOneData(uchar Addruchar Data){         _CS=0;         WriteBitR(0xa03); //写入数据标志101         WriteBitR(Addr<<26); //写入地址数据         WriteBitR(Data8); //写入数据         _CS=1;         _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 m1;        for(m1=0;m1<30;m1=m1+2)                        WriteOneData(m10xff);}void Init(){        P_SW2=0x80;        CKSEL=0x00;        P_SW2=0x00;        P1M0=0x00;        P1M1=0x00;        _Vlcd=0;        LCD_Init();}void main(){        Init();        while(1)        {                display1();                delay_ms(1);        }}