📄 lcd1305.c
字号:
/*=========================================================================================*/
/*张刚--修改于2005年11月18日*/
/*液晶显示驱动程序*/
/*=========================================================================================*/
#include <77e58.h>
#include <constdef.h>
#include <sys.h>
#include <intrins.h>
#include <name.h>
#include <table.h>
#include <x25045.h>
#define DataPort P0
#define NOP5() {_nop_();_nop_();_nop_();_nop_();_nop_();}
sbit Enable=P2^3;
sbit DI=P2^4;
sbit CS1=P2^6;
sbit CS2=P2^2;
//---写命令;cChip=0为1片---//
void OutCommand(uchar cCommand,uchar cChip)
{
switch (cChip)
{
case 0:
CS1=0;
CS2=1;
break;
case 1:
CS1=1;
CS2=0;
break;
default:
CS1=1;
CS2=1;
break;
}
if (cChip<2)
{
DI=0;
DataPort=cCommand;
Enable=1;
Enable=0;
}
return;
}
//---写数据---//
void OutData(uchar cData)
{
DI=1;
DataPort=cData;
Enable=1;
Enable=0;
return;
}
//---设定显示地址---//
void SetLine(uchar cLine)
{
cLine&=0x07; //cLine<=7
cLine|=0xb8; //commond
OutCommand(cLine,0);
OutCommand(cLine,1);
return;
}
void SetCol(uchar cColumn)
{
uchar cTemp;
cTemp=cColumn%64;
cTemp&=0x3f;
cTemp|=0x40;
OutCommand(cTemp,(uchar)(cColumn>63));
return;
}
//设定显示起始行--Z坐标
void SetStartLine(uchar cStartLine)
{
cStartLine&=0x03f;
cStartLine|=0xc0;
OutCommand(cStartLine,0);
OutCommand(cStartLine,1);
return;
}
//---开关显示---//
void SetOnOff(uchar cOnOff) //0-off,1-on
{
cOnOff&=0x01;
cOnOff|=0x3e;
OutCommand(cOnOff,0);
OutCommand(cOnOff,1);
return;
}
// 清屏
void ClrLcd()
{
uchar cLine,cTemp;
WatchDog();
for (cLine=0;cLine<8;cLine++)
{
SetLine(cLine);
SetCol(0);
for (cTemp=0;cTemp<64;cTemp++)
{
_nop_();
OutData(0);
}
SetCol(64);
for (cTemp=0;cTemp<64;cTemp++)
{
_nop_();
OutData(0);
}
}
return;
}
//---初始化LCD---//
void InitLCD()
{
SetOnOff(0); //关显示
ClrLcd(); //清屏
SetOnOff(1); //开显示
SetStartLine(0); //开始行:0
return;
}
//---显示汉字---//
void ShowHZ(uchar cLine,uchar cColumn,uchar cCode,bit bReverse)
{
uchar idata cLinTmp,cTemp;
WatchDog();
for (cLinTmp=0;cLinTmp<2;cLinTmp++)//行数循环
{
SetLine(cLine*2+cLinTmp);
SetCol(cColumn*6);
for (cTemp=0;cTemp<12;cTemp++)//点阵循环
{
if ((cColumn*6+cTemp)==64)
SetCol(64);
if (bReverse)
{
OutData(~HZTable[cCode][cLinTmp*12+cTemp]);
}
else
{
OutData(HZTable[cCode][cLinTmp*12+cTemp]);
}
}
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -