本次测试驱动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(); //写入完毕,取消片选
- }
下面是测试过程的照片:
这是测试项目的压缩包:
|