/********************************************************************* *****************AT89C51 单片机控制HT1621B 驱动LCD********************* ***************** (全显示程序) ********************* *********************************************************************/ #include #include #define BIAS 0X50 //1/2 偏压,4 背极 //#define RC256 0X30 //系统时钟选择为片内 RC 振荡器 #define RC256 0X38 #define WDTDIS1 0X0A //禁止 WDT 溢出标志输出 #define TIMERDIS 0X08 //时基输出禁能 #define SYSEN 0X02 //打开系统时钟 #define LCDON 0X06 //打开偏压发生器 #define SYSDIS 0X00 //关闭系统时钟和偏压发生器 #define _NOP() _nop_() sbit LED=P2^0; sbit CS=P2^7; sbit WRD=P2^6; sbit DATA=P2^5; #define uchar unsigned char #define uint unsigned int void SENDBYTE (uchar dat); void SENDBIT (uchar dat,uchar bitcnt); /***************************延时子函数******************************/ void delay1s() //延时1S { uchar i; uint j; for(i=0;i<10;i++) for(j=0;j<1300;j++); } /**************************HT1621B 初始化****************************/ void START_HT1621() //初始化HT1621 { CS=1; WRD=1; DATA=1; //delay(); _NOP(); CS=0; CS=0; WRD=0; WRD=0; } /*************************发送命令子函数 A***************************/ void SENDCOMA(uchar com) //发送命令 A,ID=100+0 { START_HT1621(); SENDBIT(0X80,4); SENDBYTE(com); } /*************************发送命令子函数 B***************************/ void SENDCOMB(uchar adr) //发送命令 B,发送显示数据 { START_HT1621(); //HT1621 初始化 SENDBIT(0XA0,4); //发送写数据ID:101+6 位LCD 之RAM 地址第1 位 SENDBIT(adr,5); //然后发送地址后5 位 } /*************************发送命令子函数C*************************** void SENDCOMC(uchar com) //发送命令C,ID=100+1 { START_HT1621(); SENDBIT(0X90,4); SENDBYTE(com); } /***********************按位发送数据子函数**************************/ void SENDBIT (uchar dat,uchar...