📄 lcd.c
字号:
/*=========================================================================================*/
/*张刚--最后修改于2005年03月18日*/
/*晶采光电12232液晶处理子程序*/
/*=========================================================================================*/
#include <reg52.h>
#include <intrins.h>
#include <constdef.h>
#include <x25045.h>
#include <Table.h>
#include <Name.h>
#define DataPort P0
sbit c_d=P2^7;
sbit MasterE=P2^5; //E1
sbit SlaveE=P2^6; //E2
void OutComMaster(uchar cCommand)
{
WatchDog();
c_d=0;_nop_();_nop_();
MasterE=1;_nop_();_nop_();
DataPort=cCommand;_nop_();_nop_();
MasterE=0;_nop_();_nop_();
}
void OutComSlave(uchar cCommand)
{
WatchDog();
c_d=0;_nop_();_nop_();
SlaveE=1;_nop_();_nop_();
DataPort=cCommand;_nop_();_nop_();
SlaveE=0;_nop_();_nop_();
}
// 发送数据
void OutDataMaster(uchar cData)
{
WatchDog();
c_d=1;_nop_();_nop_();
MasterE=1;_nop_();_nop_();
DataPort=cData;_nop_();_nop_();
MasterE=0;_nop_();_nop_();
}
void OutDataSlave(uchar cData)
{
WatchDog();
c_d=1 ;_nop_();_nop_();
SlaveE=1;_nop_();_nop_();
DataPort=cData;_nop_();_nop_();
SlaveE=0;_nop_();_nop_();
}
//设置地址和页数
void SetAddress(uchar PageAddress,uchar LineAddress)
{
WatchDog();
if(LineAddress<61)
{
OutComMaster(LineAddress&0x7f);
OutComMaster(PageAddress|0xb8);
}
else
{
OutComSlave((LineAddress-61)&0x7f);
OutComSlave(PageAddress|0xb8);
}
}
// LCD 初始化
void LcdIni()
{
WatchDog();
OutComMaster(0xe2);
OutComSlave(0xe2);
OutComMaster(0xae);
OutComSlave(0xae);
OutComMaster(0xa4);
OutComSlave(0xa4);
OutComMaster(0xa9);
OutComSlave(0xa9);
OutComMaster(0xa0);
OutComSlave(0xa0);
OutComMaster(0xee);
OutComSlave(0xee);
OutComMaster(0xb8);
OutComSlave(0xb8);
OutComMaster(0x00);
OutComMaster(0xc0);
OutComSlave(0x00);
OutComSlave(0xc0);
OutComMaster(0xaf);
OutComSlave(0xaf);
}
// 清屏
void ClrLcd()
{
uchar page,i;
WatchDog();
for (page=0;page<4;page++)
{
SetAddress(page,0);
SetAddress(page,61);
for (i=0;i<61;i++)
{
OutDataMaster(0);
OutDataSlave(0);
}
}
}
void ClrRect(uchar cStartPage,uchar cStartLine,uchar cEndPage,uchar cEndLine)
{
uchar cTemp0,cTemp1;
WatchDog();
for (cTemp0=cStartPage;cTemp0<=cEndPage;cTemp0++)
{
SetAddress(cTemp0,cStartLine);
for(cTemp1=cStartLine;cTemp1<=cEndLine;cTemp1++)
{
if (cTemp1==61)
SetAddress(cTemp0,61);
if (cTemp1>60)
OutDataSlave(0);
else
OutDataMaster(0);
}
}
}
void ShowHZ(uchar cLine,uchar cCloumn,uchar cHZCode,bit bWhite)
{
uchar i;
uchar iCloumn;
WatchDog();
iCloumn=cCloumn;
SetAddress(cLine*2,cCloumn);
for(i=0;i<16;i++)
{
if(iCloumn>60)
{
if(iCloumn==61)
SetAddress(cLine*2,iCloumn);
if(bWhite)
OutDataSlave(~HZTable[cHZCode][i]);
else
OutDataSlave(HZTable[cHZCode][i]);
}
else
if(bWhite)
OutDataMaster(~HZTable[cHZCode][i]);
else
OutDataMaster(HZTable[cHZCode][i]);
iCloumn++;
}
SetAddress(cLine*2+1,cCloumn);
iCloumn=cCloumn;
for(i=16;i<32;i++)
{
if(iCloumn>60)
{
if(iCloumn==61)
SetAddress(cLine*2+1,iCloumn);
if(bWhite)
OutDataSlave(~HZTable[cHZCode][i]);
else
OutDataSlave(HZTable[cHZCode][i]);
}
else
if(bWhite)
OutDataMaster(~HZTable[cHZCode][i]);
else
OutDataMaster(HZTable[cHZCode][i]);
iCloumn++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -