//PIC16C72單片機控制HT1621B驅(qū)動LCD
#include
#define BIAS 0X50 //1/2偏壓,4背極
#define RC256 0X30 //系統(tǒng)時鐘選擇為片內(nèi)RC振蕩器
#define WDTDIS1 0X0A //禁止WDT溢出標志輸出
#define TIMERDIS 0X08 //時基輸出禁能
#define SYSEN 0X02 //打開系統(tǒng)時鐘
#define LCDON 0X06 //打開偏壓發(fā)生器
#define SYSDIS 0X00 //關(guān)閉系統(tǒng)時鐘和偏壓發(fā)生器
#define CS RB5
#define WR RB6
#define DATA RB7
#define uchar unsigned char
#define uint unsigned int
void SENDBYTE (uchar dat);
void SENDBIT (uchar dat,uchar bitcnt);
/***************************延時子函數(shù)******************************/
void delay() //延時
{
uchar i=0;
while(i<10)
i++;
}
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;
WR=1;
DATA=1;
delay();
CS=0;
CS=0;
WR=0;
WR=0;
}
/*************************發(fā)送命令子函數(shù)A***************************/
void SENDCOMA(uchar com) //發(fā)送命令A(yù),ID=100+0
{
START_HT1621();
SENDBIT(0X80,4);
SENDBYTE(com);
}
/*************************發(fā)送命令子函數(shù)B***************************/
void SENDCOMB(uchar adr) //發(fā)送命令B,發(fā)送顯示數(shù)據(jù)
{
START_HT1621(); //HT1621初始化
SENDBIT(0XA0,4);
//發(fā)送寫數(shù)據(jù)ID:101+6位LCD之RAM地址第1位
SENDBIT(adr,5); //然后發(fā)送地址后5位
}
/*************************發(fā)送命令子函數(shù)C***************************/
void SENDCOMC(uchar com) //發(fā)送命令C,ID=100+1
{
START_HT1621();
SENDBIT(0X90,4);
SENDBYTE(com);
}
/***********************按位發(fā)送數(shù)據(jù)子函數(shù)**************************/
void SENDBIT (uchar dat,uchar bitcnt) //按位發(fā)送數(shù)據(jù)
{
uchar i;
for(i=0;i