#include <C8051F350.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define HT1621Delay() {;}/*在此可调节数据传输速度*/
#define Bias_Duty 0x52 /*此处设置LCD的COM数量和偏置*/
#define Rc256 0x30 /*启用内部RC振荡*/
#define LCD_ON 0x6 /*打开LCD偏置发生器*/
#define SIS_EN 0x2 /*打开系统振荡*/
#define TONE_OFF 0x10 /*内部蜂鸣器关*/
#define TONE_2K 0x13 /*打开蜂鸣器并且频率为2KHz*/
#define TONE_4K 0x12 /*打开蜂鸣器并且频率为4KHz*/
/*没用用到蜂鸣器可以不用理睬*/
/*端口根据自己需要修改*/
sbit CS2=P1^0; /*定义片选端口*/
sbit Wr=P0^7; /*定义写命令端口*/
sbit Dat=P0^6; /*定义数据线端口*/
////////////////////////////////////////////////////////
/////////////////*写控制命令函数*///////////////////////
void WrCmd(uchar Cmd)/*写控制命令函数*/
{
uchar data i,CmdByte=0x80;
CS2=0; /*低电平有效*/
for(i=0;i<4;i++)
{
Dat=(bit)(CmdByte&0x80);
Wr=0;;
HT1621Delay();
Wr=1;
CmdByte<<=1;
}
for(i=0;i<8;i++)
{
Dat=(bit)(Cmd&0x80);
Wr=0;
HT1621Delay();
Wr=1;
HT1621Delay();
Cmd<<=1;
}
CS2=1; /*低电平有效*/
}
////////////////////////////////////////////////////////
////////////////*写数据函数 一次处理四位*///////////////
void WrAddDdat(uchar Add,uchar Ddat,uchar Bit_4_8)/*写数据函数 uchar Bit_4_8 表示一次写入四位还是一次写入八位*/
{
uchar i,Cmdbyte=0xA0;
CS2=0;
for(i=0;i<3;i++)
{
Dat=(bit)(Cmdbyte&0x80);
Wr=0;
HT1621Delay();
Wr=1;
Cmdbyte<<=1;
}
Add<<=2;
for(i=0;i<6;i++)
{
Dat=(bit)(Add&0x80);
Wr=0;
HT1621Delay();
Wr=1;
Add<<=1;
}
for(i=0;i<Bit_4_8;i++) // 地址自动加一 四位处理
{
Dat=(bit)(Ddat&0x80);
Wr=0;
HT1621Delay();
Wr=1;
Ddat<<=1;
}
CS2=1;
}
////////////////////////////////////////////////////////
/////////*写数据函数 一次处理八位 1622地址地动加1*//////
////////////////////////////////////////////////////////
///////////////*初始化函数*/////////////////////////////
void Init_LCD(void)
{
WrCmd(Bias_Duty);
WrCmd(Rc256);
WrCmd(SIS_EN);
WrCmd(LCD_ON);
WrCmd(TONE_OFF);
}
////////////////////////////////////////////////////////
///////////////*清屏函数*///////////////////////////////
void Cls(void)/*清屏函数*/
{
uchar i;
for(i=0;i<64;i+=2)
{
WrAddDdat(i,0x00,8);
}
}