|
本帖最后由 电路板 于 2019-5-3 23:51 编辑
/************* 上面是底层时序函数,下面是高层时序函数 ***************/
/*********************************************************************
* 函 数 名 : Lcd12864Init
* 函数功能 : 按照LCD12864低层时序进行初始化序列
* 参数列表 : 无
* 函数输出 : 无
*********************************************************************/
void Lcd12864Init(void)
{
//gLcd12864_PSB = 1; // 选定8位并行模式
// 发送初始化序列
Lcd12864WriteCmd(0x30); // 0x30为基本指令集
Lcd12864WriteCmd(0x02);
Lcd12864WriteCmd(0x0c); // 整体显示、游标关闭
Lcd12864WriteCmd(0x01); // 0x01为清屏指令
Lcd12864WriteCmd(0x80); // 地址自动加1
}
/*********************************************************************
* 函 数 名 : Lcd12864ShowStr
* 函数功能 : 从坐标(x, y)开始显示字符串str,注意这个函数不能跨行
* 显示,因为显存地址是不连续的。
* 参数列表 : x - 横向坐标,范围是0-7
* y - 纵向坐标,范围是0-3
* pStr - 指向待显示的字符串的指针
* 函数输出 : 无
*********************************************************************/
void Lcd12864ShowStr(u8 x, u8 y, u8 *pStr) //显示字符串
{
switch (y)
{
case 0:
x |= 0x80; break; // 第一行
case 1:
x |= 0x90; break; // 第二行
case 2:
x |= 0x88; break; // 第三行
case 3:
x |= 0x98; break; // 第四行
default:
break;
}
Lcd12864WriteCmd(x); // 发送地址码
while (*pStr != '\0') // 若到达字串尾则退出
{
Lcd12864WriteData(*pStr); //
pStr++;
delay_1ms(5);
}
}
/*********************************************************************
* 函 数 名 : Lcd12864heng()
* 函数功能 : 显示图片
* 参数列表 : *pData
* 函数输出 : 无
*********************************************************************/
void Lcd12864heng()
{
u8 x = 0, y = 0, i = 0,k;
for(i=0;i<9;i=i+8)
for(y=0;y<32;y++)
{
if((y%8)==1)k=0xff;
else k=0;
for(x=0;x<8;x++)
{
Lcd12864WriteCmd(0x36);
Lcd12864WriteCmd(0x80+y);
Lcd12864WriteCmd(0x80+x+i);
Lcd12864WriteData(k);
Lcd12864WriteData(k);
Lcd12864WriteCmd(0x30);
}
}
}
|
评分
-
查看全部评分
|