📄 c_lcd19264_driver.c
字号:
}
/***********************************************************************
* 名 称:Wcommand19264_x()
* 功 能:LCd19264读写,数据,命令子程序群
* 入口参数:输人一个8位整型变量
* 出口参数:无
* 说明 :占用
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
/***********************************************************************************************
*** 命令输出到左边控制口
*********************************************************************************************/
void LCD19264_Writecommand_L(uint8 Command)
{
lcd19264busy_L(); //定位左边HD61202
LCD19264_SE();
LCD19264_CE();
LCD19264_CDI(); //命令
LCD19264_CRW(); //写
LCD19264_SE();
LCD19264_BusData(Command); //数据输出
DelayNS(1);
LCD19264_CE(); //读入LCM
LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
}
/***********************************************************************************************
*** 命令输出到中控制口
*********************************************************************************************/
void LCD19264_Writecommand_M(uint8 Command)
{
lcd19264busy_M(); //定位左边HD61202
LCD19264_SE();
LCD19264_CE();
LCD19264_CDI(); //命令
LCD19264_CRW(); //写
LCD19264_SE();
LCD19264_BusData(Command); //数据输出
DelayNS(1);
LCD19264_CE(); //读入LCM
LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
}
/***********************************************************************************************
*** 命令输出到右边控制口
*********************************************************************************************/
void LCD19264_Writecommand_R(uint8 Command)
{
lcd19264busy_R(); //定位左边HD61202
LCD19264_SE();
LCD19264_CE();
LCD19264_CDI(); //命令
LCD19264_CRW(); //写
LCD19264_SE();
LCD19264_BusData(Command); //数据输出
DelayNS(1);
LCD19264_CE(); //读入LCM
LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
}
/***********************************************************************
* 名 称:Fix_point ()
* 功 能:LCd19264根据设定坐标,定位LCM上的操作单元位置
* 入口参数:无
* 出口参数:无
* 说明 :占用
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
void LCD19264_Fix_point (void)
{
unsigned char x,y; //实际输出占存
switch ( X & 0XC0) //选择所用HD61202
{
case (0) : {lcd19264busy_L();break;}
case (0X40) : {lcd19264busy_M();break;}
case (0X80) : {lcd19264busy_R();break;}
}
x = (X&0X3F)|SETX; //X与,限制X命令长度
y = (Y&0X07)|SETY; //Y与,限制Y命令长度
Lcd19264_Busy();
LCD19264_CDI(); //命令
LCD19264_CRW(); //写
LCD19264_SE();//写Y
LCD19264_BusData(x);
LCD19264_CE();
Lcd19264_Busy();
LCD19264_CDI(); //命令
LCD19264_CRW(); //写
LCD19264_SE();
LCD19264_BusData(y);
LCD19264_CE();
Lcd19264_Busy();
LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
}
/***********************************************************************
* 名 称:WDatalcd19264 (),RDatalcd19264 ()
* 功 能:LCd19264写,读数据到任何一个位置
* 入口参数:两个8位整型变量(两个坐标值),WDatalcd19264 ()输入要写入数据
* 出口参数:RDatalcd19264 ()返回当前坐标的数据,
* 说明 :
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
void LCD19264_Writedata(uint8 x,uint8 y,uint8 Data)
{
if ( x >=192 ) x -= 192;
X = x;
Y = y;
LCD19264_Fix_point(); //定位输入位置
LCD19264_SDI(); //数据
LCD19264_CRW(); //写
LCD19264_SE();
#if TURNOVER_EN > 0 //是否反色显示
Data = ~Data;
#endif
LCD19264_BusData(Data);//总线上写入数据
DelayNS(1);//调节速度,根据液晶品质调校
LCD19264_CE();
LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
}
uint8 LCD19264_RDatalcd19264(uint8 x,uint8 y)
{ uint8 RD_Data;
X = x;
Y = y;
LCD19264_Fix_point(); //定位坐标
IO0DIR =IO0DIR & ~(0xFF << LCD19264_BusLSB) ; //设成输入方式
DelayNS(3);//延时等待稳定
LCD19264_SDI(); //数据
LCD19264_SRW(); //读
LCD19264_SE();
RD_Data = LCD19264_BusData_Read() ;
LCD19264_CE(); //虚读一次
LCD19264_SDI(); //数据
LCD19264_SRW(); //读
LCD19264_SE();
DelayNS(3); //调节速度,根据液晶品质调校
RD_Data = LCD19264_BusData_Read() ;
IO0DIR =IO0DIR | (0xFF << LCD19264_BusLSB) ; //重新设成输出方式
LCD19264_CE(); //读
DelayNS(1);
#if TURNOVER_EN > 0 //是否反色显示
RD_Data = ~RD_Data;
#endif
LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
return ( RD_Data );
}
/***********************************************************************
* 名 称:LCD19264_Cls(),LCD19264_Turn_over()
* 功 能:LCd19264清屏.反屏
* 入口参数:无
* 出口参数:无
* 说明 :,
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
void LCD19264_Cls(void)
{
for ( Y =0 ; Y< 8; Y++)
{
for ( X =0 ; X < 192 ; X++ )
LCD19264_Writedata(X,Y,0x00);
}
}
void LCD19264_Turn_over(void)
{ uint8 Tstr;
for ( Y =0 ; Y< 8; Y++)
{
for ( X =0 ; X < 192 ; X++ )
{
Tstr = ~LCD19264_RDatalcd19264(X,Y);//读后取反
LCD19264_Writedata(X,Y,Tstr);
}
}
}
#endif
/***********************************************************************
* 名 称:Lcd19264_16X16(),Lcd19264_32X32()
* 功 能:写不SIZE的字
* 入口参数:X轴坐标,Y坐标,字符串指针,字的个数
* 出口参数:无
* 说明 :,
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
#if LCD19264_API_EN >0
/***********************************************************************************************
*** 写一个列16位
*********************************************************************************************/
void Lcd19264_Line (uint8 x,uint8 y,uint8 const *str)//输入坐标,数组指针,字符个数
{ uint8 i;
for ( i = 0; i < 2; i ++)
{
LCD19264_Writedata(x ,(y+i),*str);
str++;
}
}
/***********************************************************************************************
*** 写,一个6X16 的字
*********************************************************************************************/
void Lcd19264_6X16 (uint8 x,uint8 y,uint8 const *str, uint8 n)//输入坐标,数组指针,字符个数
{ uint8 i,j;
while (n--!= 0)
{ for ( i = 0; i < 2; i ++)
for (j = 0; j < 6; j ++ )
LCD19264_Writedata(x + j,y + i,*(str ++));
x = x + 6;
}
}
/**********************************************************************************************
*** 写,一个8X16 的字
*********************************************************************************************/
void Lcd19264_8X16 (uint8 x,uint8 y,uint8 const *str, uint8 n)//输入坐标,数组指针,字符个数
{ uint8 i,j;
while (n--!= 0)
{ for ( i = 0; i < 2; i ++)
for (j = 0; j < 8; j ++ )
LCD19264_Writedata(x + j,y + i,*(str ++));
x = x + 8;
}
}
/***********************************************************************************************
*** 写N个8X16 的字,可反色turnover==1就反色显示
*********************************************************************************************/
void Lcd19264_8X16COVE (uint8 x,uint8 y,uint8 const *str, uint8 n,uint8 turnover)//输入坐标,数组指针,字符个数
{ uint8 i,j;
while (n--!= 0)
{ for ( i = 0; i < 2; i ++)
for (j = 0; j < 8; j ++ )
if(turnover==1) LCD19264_Writedata(x + j,y + i,~(*(str ++)));
else LCD19264_Writedata(x + j,y + i,*(str ++));
x = x + 8;
}
}
/***********************************************************************************************
*** 擦除,n个8X16 的字
*********************************************************************************************/
void Lcd19264_8X16_Cls (uint8 x,uint8 y, uint8 n)//输入坐标,数组指针,字符个数
{ uint8 i,j;
while (n--!= 0)
{ for ( i = 0; i < 2; i ++)
for (j = 0; j < 8; j ++ )
LCD19264_Writedata(x + j,y + i,0);
x = x + 8;
}
}
/***********************************************************************************************
*** 写,n个16X16 的字,横写
*********************************************************************************************/
void LCD19264_16X16 (uint8 x,uint8 y,uint8 const *str, uint8 n)//输入坐标,数组指针,字符个数
{ uint8 i,j;
while (n--!= 0)
{ for ( i = 0; i < 2; i ++) //写上下两个半部分
for (j = 0; j < 16; j ++ ) //整行16个
LCD19264_Writedata(x + j,y + i,*(str ++));//遇到‘/0’不写
x = x + 16;
}
}
/***********************************************************************************************
*** 写,n个32X32 的字,横写
*********************************************************************************************/
void LCD19264_32X32 (uint8 x,uint8 y,uint8 const *str, uint8 n)//输入坐标,数组指针,字符个数
{ uint8 i,j;
while (n--!= 0)
{ for ( i = 0; i < 4; i ++)
for (j = 0; j < 32; j ++ )
LCD19264_Writedata(x + j,y + i,*(str ++));
x = x + 16;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -