本次测试驱动LCD19264显示屏,这块LCD显示屏共有5个控制引脚(电源及背光除外),其中复位引脚我采用了硬件RC电路,因此只需要4个引脚来驱动,在MCC中的配置如下:
驱动程序是从其它项目移植过来的,只需要稍作修改就可以了,不过编译时却出错了:
经过分析,也许是我的字库文件过大造成的,于是尝试先剔除了6*10点阵的ASCII码字库,只保留5*7点阵的字库,同时将汉字字库的子集删减到最少,再次测试,屏幕显示出了字符,但显示的速度很慢,于是只有减少写LCD时的延时,最后减少到只有一个指令周期(代码如下):
/*********************************************
* 函数名称:WriteData(uint8_t,data,uint8_t C)
* 函数功能:向LCD19264写入命令或显示数据)
* 入口参数:uint8_t date(一字节命令或显示数据)
* uint8_t C(0=写入显示数据、1=写入命令)
* 出口参数:无
* 备注:
*********************************************/
void WriteData(unsigned char data, unsigned char C)
{
unsigned char i,dat; //i用于循环写入8位数据,dat用于缓存数据
// LCD_DIN_SetDigitalOutput(); //设置数据端口模式
CS_0(); //使能片选
if(C==1) //判断要写入的是指令还是数据
{
CD_1(); //等于1 就是数据
}
else
{
CD_0(); //等于0 就是指令
}
dat=data; //缓存数据
for(i=0;i<8;i++) //循环发送8位数据
{
if((dat&0x80)==0x80) //判断最高位是否为1
{
SDT_1(); //为1 拉高总线写入1
}
else
{
SDT_0(); //为0 拉低总线写入0
}
SCK_0(); //产生一个时钟
// Delay(1);
NOP();
SCK_1(); //时钟结束
// Delay(1);
NOP();
dat<<=1; //左移一位 准备写入下一位
}
CS_1(); //写入完毕,取消片选
}
下面是测试过程的照片:
这是测试项目的压缩包:
MyTest.X.rar
(318.74 KB)
|