📄 sed1330.txt
字号:
修改时间:无
修改原因:无
******************************************************************************/
void WriteCmd(Uchar cmd)
{
RD=1;
A0=1;
P6=cmd;
CS=0;
WR=0;
WR=1;
CS=1;
}
//-----------------------------------------------------------------------------
// 函数:void WriteData(unsigned char datalcd) (私有函数,其他模块不能调用)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):WriteData(datalcd)
函数描述(Description):数据和指令的附属参数写入函数
入口参数(Parameters):
datalcd--待写入的显示数据或指令的附属参数
返回值(Returns):无
创建时间:16:07,PM,2004.4.19
修改时间:无
修改原因:无
******************************************************************************/
void WriteData(Uchar datalcd){
RD=1;
A0=0;
P6=datalcd;
CS=0;
WR=0;
WR=1;
CS=1;
}
//-----------------------------------------------------------------------------
// 函数:unsigned char ReadfromLcd(void) (私有函数,其他模块不能调用)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):ReadfromLcd()
函数描述(Description):数据和光标地址读出函数
入口参数(Parameters):无
返回值(Returns):数据或光标地址
创建时间:16:07,PM,2004.4.19
修改时间:无
修改原因:无
******************************************************************************/
Uchar ReadfromLcd(void){
Uchar rdata;
P6=0xff;
A0=1;
RD=0;
rdata=P6;
CS=0;
RD=1;
CS=1;
return(rdata);
}
//-----------------------------------------------------------------------------
// 函数:void LcdInit(void)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):LcdInit()
函数描述(Description):液晶初始化函数
入口参数(Parameters):无
返回值(Returns):无
创建时间:16:07,PM,2004.4.19
修改时间:无
修改原因:无
******************************************************************************/
void LcdInit(void){
WriteCmd(0x40); //进行system set,要写入8个参数
WriteData(0x30); //单屏结构,8×8点阵
WriteData(0x87); //字符宽度位7
WriteData(0x07); //字符高度为7
WriteData(0x1d); //一行显示30个字符 (C/R)
WriteData(0x42); //频率转化
WriteData(0x9f); //每帧扫描160行 (L/F)
WriteData(0x1e); //一行共有30个字符
WriteData(0);
WriteCmd(0x44); //进行Scroll,要写入10个参数
WriteData(0x00);
WriteData(0x00);
WriteData(0xa0); //第一显示区地址和所占的行数160行
WriteData(0xc0);
WriteData(0x12);
WriteData(0xa0); //第二显示区地址和所占的行数160行
WriteData(0x80);
WriteData(0x25); //第三显示区地址高8位、低8位和所占的行数160行
// WriteData(0x00);
// WriteData(0x00); //第四显示区地址高8位、低8位和所占的行数160行
WriteCmd(0x5a); //以点为单位的水平移动量
WriteData(0x00); //水平卷动,初始化时必须清零
WriteCmd(0x5b); //显示合成方式设置
WriteData(0x0c); //三屏图形方式相加,或逻辑
WriteCmd(0x59); // 写入指令代码0x59
WriteData(0x04); // 显示1区开显示,2、3、4区关显示;光标关显示
}
//-----------------------------------------------------------------------------
// 函数:void LcdClr(void)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):LcdClr()
函数描述(Description):清显示 32K RAM区(清屏)子程序
入口参数(Parameters):无
返回值(Returns):无
创建时间:16:07,PM,2004.4.19
修改时间:无
修改原因:无
******************************************************************************/
void LcdClr(void){
Uint i1=32768;
WriteCmd( 0x4c ); // 光标移动方向定义:自动右移0x4c
WriteCmd( 0x46 ); // 光标Locate,定位0x46
WriteData( 0 ); // 写入参数CSRL设置参数光标指针低8位
WriteData( 0 ); // 写入参数CSRH设置参数光标指针高8位
WriteCmd( 0x42 ); // 数据写入指令,代码0x42
while(i1--) WriteData( 0x00); // 写入数据0
}
//-----------------------------------------------------------------------------
// 函数:void Locatexy(Uchar x,Uchar y)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):Locatexy(x,y)
函数描述(Description):光标位定位,用于在1区图形方式下
入口参数(Parameters):
x...水平方向字节单位坐标,即可以以半个汉字宽度设定水平坐标
取值范围:0...39
y...垂直方向以行线定位的坐标,可以定位到点单位
取值范围:0...239
左上角约定坐标为(0,0)
返回值(Returns):无
创建时间:16:07,PM,2004.4.20
修改时间:无
修改原因:无
******************************************************************************/
void Locatexy(Uchar x,Uchar y) {
Uint temp;
temp = (Uint)y*paraP9+x;
WriteCmd( CsrW ); // 光标Locate,定位
WriteData( (Uchar)(temp & 0xff) ); // 写入参数CSRL设置参数光标指针低8位
WriteData( (Uchar)(temp /256 ) ); // 写入参数CSRH设置参数光标指针高8位
}
//-----------------------------------------------------------------------------
// 函数:Uchar dprintf(Uchar x,Uchar y,char code *ptr,bit attrib)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):dprintf(x,y,*ptr,attrib)
函数描述(Description):ASCII(8*16) 及 汉字(16*16) 混合字符串显示函数
入口参数(Parameters):
x,y显示字符串的左上角xy坐标
x...8点一字节位置,取值范围:0...29
y...一条扫描线定位,取值范围:0...159
*ptr...字符串指针,本函数所指的是flash字串
attrib:属性参数,为0:反显;为:1正常显示
返回值(Returns):输出字串长度,留意汉字一个算两个
其它假定:调用时汉字必须在字库数组中已经存在,否则将输出不正确的结果
创建时间:16:07,PM,2004.4.20
修改时间:无
修改原因:无
******************************************************************************/
/********************************************************/
/* ASCII(8*16) 及 汉字(16*16) 显示函数 */
/********************************************************/
Uchar dprintf(Uchar x,Uchar y,char code *ptr,bit attrib)
{
Uchar c1,c2;
Uchar i,j,uLen,uRow,uCol,temp;
Uint k;
uRow = x;
uCol = y;
uLen=0;
WriteCmd( CsrDirD ); // 光标移动方向定义:自动下移
Locatexy(uRow,uCol); //起点定位
while ( (Uchar)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
i=0;
while(i= 0x10) {
WriteCmd( mWrite ); // 写数据(命令)
for(j=0;j<16;j++)
if(attrib)WriteData( ASC_MSK[(c1-0x20)*16 +j ]);
else WriteData(~(ASC_MSK[(c1-0x20)*16 +j ]));
}
uRow++; // 列数加1
}
else // 中文
{
for(j=0;j= 30) // 光标后移,原来为40
{
uCol += 16;
uRow = 0;
if( uCol >= 160 ) uCol = 0; //共有160点行
}
Locatexy(uRow,uCol);
i++;
}
return uLen; //返回字串长度,汉字按2字节计算
}
//x...8点一字节位置,取值范围:0...29
//y...一条扫描线定位,取值范围:0...159
void MyGraph(Uchar x,Uchar y,Uchar Weight,Uchar Height,Uchar code *ptr,bit attrib){
Uchar uRow,uCol,temp,nbyte;
Uint k;
uRow = x;
uCol = y;
WriteCmd( CsrDirD ); // 光标移动方向定义:自动下移
Locatexy(uRow,uCol); //起点定位
nbyte=(Uchar)(Weight/8);
for(k=0;k
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -