最近看STC的下载软件更新了, 里面居然有一些调试接口。今天研究了一下,成功驱动起来了。使用的是STC8G1K17,其他单片机亦可。
可以写入自定义的字符或者图片,也可以写入内置的汉字。用法和液晶基本一样,只不过STC是通过串口驱动。
STC官网有驱动的例子,结合官网给的例子,自己修改了一下。
这个LCD取模是逐行式,顺向,高位在前。
主要使用了这2个函数:
/***********************************************************
函数结果:STCISP_LCD12864_PosString
备 注:
命令格式: 4CH 43H 44H 80H 03H A7H X Y
命令说明:
1~4字节: 命令头
5字节: 后面有效数据长度
6字节: 功能选择(A7H显示字符串)
7字节: 开始显示字符串的X坐标(列号,范围0~7)
8字节: 开始显示字符串的Y坐标(行号,范围0~3)
***********************************************************/
void STCISP_LCD12864_PosString(uint8_t X,uint8_t Y, char *String)
{
STCISP_LCD12864_SetBuf(strlen(String) + 1, String);//发送到缓冲区
STCISP_LCD12864_SetHeader();
MyLCD.STCISP_UartTxBuf[4] = 3;//有效数据长度
MyLCD.STCISP_UartTxBuf[5] = 0xA7;//功能选择(A7H显示字符串)
MyLCD.STCISP_UartTxBuf[6] = X;
MyLCD.STCISP_UartTxBuf[7] = Y;
Uart_COM1_WR_NByte(8,(uint8_t *)&MyLCD.STCISP_UartTxBuf[0]);
}
/***********************************************************
函数结果:STCISP_LCD12864_PosArray
备 注:
命令格式: 4CH 43H 44H 80H 05H A8H X Y FillHigh FillWide
命令说明:
1~4字节: 命令头
5字节: 后面有效数据长度
6字节: 功能选择(A8H显示图片)
7字节: 开始显示图片的X坐标(列号,范围0~7)
8字节: 开始显示图片的Y坐标(行号,范围0~3)
9字节: 图片的宽度(列数,范围1~8)
10字节: 图片的高度(行数,范围1~64)
***********************************************************/
void STCISP_LCD12864_PosArray(uint8_t X , uint8_t FillWide , uint8_t Y , uint8_t FillHigh , uint8_t *Array)
{
STCISP_LCD12864_SetBuf((uint16_t)(FillHigh*(FillWide*2UL)), Array);//发送到缓冲区
STCISP_LCD12864_SetHeader();
MyLCD.STCISP_UartTxBuf[4] = 5;//有效数据长度
MyLCD.STCISP_UartTxBuf[5] = 0xA8;//功能选择(A8H显示图片)
MyLCD.STCISP_UartTxBuf[6] = X;
MyLCD.STCISP_UartTxBuf[7] = Y;
MyLCD.STCISP_UartTxBuf[8] = FillWide;
MyLCD.STCISP_UartTxBuf[9] = FillHigh;
Uart_COM1_WR_NByte(10,(uint8_t *)&MyLCD.STCISP_UartTxBuf[0]);
}
附件有完整Keil代码工程:
STC8G1K17.zip
(89.49 KB, 下载次数: 21)
|