本帖最后由 ruan18278816371 于 2014-8-7 11:36 编辑
最近用STC15F2K60S2在12864液晶上打点绘制曲线,测试打点函数之前需要图像清屏,但是调用这个图像清屏函数耗时很长,一个点打出来差不多要两分钟这明显不科学啊,查了好久没找出原因请各位大牛指教,下面贴出清屏函数和主函数
void gui_clear(void)
{
uchar i,j,k;
write_com(EXTEND_SET);//扩展指令集,8位数据传输
write_com(DRAW_OFF);//绘图显示关闭
for(i=0;i<2;i++)//分上下两屏写
{
for(j=0;j<32;j++)
{
write_com(0x80+j);//写y坐标
//Delay10ms(); //这儿我以为是耗时长的原因把延时注释了,还是解决不了问题
if(i==0)//写x坐标
{
write_com(0x80);
//Delay10ms();
}
else //写下半屏
{
write_com(0x88);
//Delay10ms();
}
for(k=0;k<16;k++)//写一整行数据
{
write_dat(0x00);//写高字节
write_dat(0x00);//写低字节
//Delay10ms();
}
}
}
write_com(DRAW_ON);//打开绘图显示
write_com(BASIC_SET);//打开基本指令集
}
void main()
{
lcd_init();//lcd初始化
lcd_set_dot(2,1);//打点
while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看是读写函数里面否有忙等待之类的,或者大的延时。
不过是msp430,改一下就能用
/*写指令数据到LCD*/
/*RS=1,RW=1,E=高脉冲,D0-D7=指令码。*/
void write_com(uchar cmd)
{
LCD_RS=0;
LCD_RW=0;
//LCD_EN=0;
P0=cmd;
Delay5ms();
LCD_EN=1;
Delay5ms();
LCD_EN=0;
}
/*写显示数据到LCD*/
/*RS=1,RW=0,E=高脉冲,D0-D7=数据。*/
void write_dat(uchar dat)
{
LCD_RS=1;
LCD_RW=0;
//LCD_EN=0;
P0=dat;
Delay5ms();
LCD_EN=1;
Delay5ms();
LCD_EN=0;
}
一周热门 更多>