|
发表于 2006-7-17 16:50:47
|
显示全部楼层
选几个IO口模拟就可以,这是51的参考程序:
/*-----------------------------------------------------------
功能:用51驱动1621芯片的段码液晶
------------------------------------------------------------*/
sbit CS = P1^0;
sbit WR_ = P1^2;
sbit DAT = P1^3;
/*------------------------
功能:延时
参数:uint y
返回:无
说明:无
-------------------------*/
void Delay(uint n)
{
uint j,i;
for(j=0;j<n;j++)
{
i=0;
}
}
/*------------------------
功能:写字节
参数:uchar k,uchar N
返回:无
说明:无
-------------------------*/
void write_byte(uchar k,uchar n)
{
uchar i,j;
for(i=0;i<n;i++)
{
//
if(k&0x80) //p2.3
DAT = 1;
else
DAT = 0;
WR_ = 1; //WR_=1;
j=0;
k=k<<1;
j=0;
WR_ = 0; //WR_=0;
}
}
//
void write_byte1(uchar k,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
//
if(k&0x01)
DAT = 1;
else
DAT = 0;
//
WR_ = 1; //WR_=1;
//
k=k>>1;
//
WR_ = 0; //WR_=0;
}
}
/*------------------------
功能:写命令
-------------------------*/
void write_com(uchar com)
{
CS = 0;//cs=0;
//
write_byte(0x80,3); //写100
write_byte(com,8);
WR_ = 1; //WR_=1
//
WR_ = 0; //WR_=0
//
CS = 1;// cs=1;
}
/*------------------------
功能:写数据
-------------------------*/
void write_dat(uchar add,uchar mdata)
{
CS = 0;//cs=0;
//
add=add<<2;
write_byte(0xa0,3); //写101
write_byte(add,6);
write_byte1(mdata,4);
//
CS = 1;// cs=1;
}
/*------------------------
功能:清屏
-------------------------*/
void display_clr(void)
{
uchar i;
for(i=0;i<32;i++)
{
write_dat(i,0);
}
}
/*------------------------
功能 满屏
-------------------------*/
void display_full(void)
{
uchar i;
for(i=0;i<16;i++)
{
write_dat(i,0xff);
}
}
/*-------------------------
功能:初始化液晶
-------------------------*/
void int1621(void)
{
CS = 1;// cs=1;
//
WR_ = 0; //WR_=0
//
DAT = 1;//dat=1;
//
write_com(0x29); //BIAS1/3
write_com(0x18); //RC256K
write_com(0x06); //WDT溢出标志失效
write_com(0x04); //时基输出失效
write_com(0x01); //SYS EN,打开系统振荡器
write_com(0x03); //打开LCD偏压发生器
display_clr();
}
/*-------------------------
功能:显示
-------------------------*/
/*
void display(uchar add,uchar dat)
{
write_dat(add,dat>>4);
write_dat(add+1,dat);
}
*/ |
|