在12864液晶上用动态变化的进度条长度来反映某一变量的变化,例如反映AD测量值等,以下是代码:
void line(uint q)
{
uchar i,t,x,y,line[16]={0x00};
uint j="0";
line[0]=0x80; //开头一位自己根据具体程序需要填上
t=q/8+1; //求出满显示
for(i=1;i<t;i++)
{
line=0xff; //填满
}
switch(q%8) //求出最后一位显示数据中显示的像素点个素
{
case 1: line[t]=128;break;
case 2: line[t]=128+64;break;
case 3: line[t]=128+64+32;break;
case 4: line[t]=128+64+32+16;break;
case 5: line[t]=128+64+32+16+8;break;
case 6: line[t]=128+64+32+16+8+4;break;
case 7: line[t]=128+64+32+16+8+4+2;break;
case 8: line[t]=128+64+32+16+8+4+2+1;break;
}
for(i=t+1;i<16;i++)
{
line=0x00;
}
line[15]=0x01; //最后一位更具自己的需要填上
for(y=21;y<25;y++)
for(x=0;x<8;x++)
{
SeGcom(y+0x80);
SeGcom(x+0x80+8);
LCD_DW(line[j++]);
LCD_DW(line[j++]);
if(j>15)
j="0";
}
}
文章评论(0条评论)
登录后参与讨论