高级会员

- 积分
- 680
- 金钱
- 680
- 注册时间
- 2015-12-13
- 在线时间
- 243 小时
|

楼主 |
发表于 2016-2-13 16:14:24
|
显示全部楼层
[mw_shl_code=c,true]//显示数字/字母/汉字
//12*24 ZF_12
//24*24 ZF_24
//16*32 ZF_16
//32*32 ZF_32
void LCD_WX(u8 m,u16 x,u16 y,u16 cr,u8 a,u8 b,u8 c)
{
u8 i,j,k,CH,CL;
switch(m)
{
case ZF_12 : LCD_SetWindows(x,y,x+11,y+23);break;
case ZF_16 : LCD_SetWindows(x,y,x+15,y+31);break;
case ZF_24 : LCD_SetWindows(x,y,x+23,y+23);break;
case ZF_32 : LCD_SetWindows(x,y,x+31,y+31);break;
default : return;
}
LCD_RS=1;
F_CS=0;
CH=cr>>8;
CL=cr;
SPDAT=0x03;
while(SPSTAT<0x80);
SPSTAT=0xFF;
SPDAT=a;
while(SPSTAT<0x80);
SPSTAT=0xFF;
SPDAT=b;
while(SPSTAT<0x80);
SPSTAT=0xFF;
SPDAT=c;
while(SPSTAT<0x80);
SPSTAT=0xFF;
SPDAT=0;
while(SPSTAT<0x80);
SPSTAT=0xFF;
for(i=0;i<m;i++)
{
k=SPDAT;
SPDAT=0;
for(j=0;j<8;j++)
{
if(k&0x80)
{
LCD_H=0;
LCD_L=0;
}
else
{
LCD_H=CH;
LCD_L=CL;
}
k<<=1;
LCD_WR=0;
LCD_WR=1;
}
}
SPSTAT=0xFF;
F_CS=1;
}
//输入一个数字,返回尾部横坐标
//自动消隐,ch=1,带小数点
//X,Y,起始坐标值
u16 LCD_WS(u8 m,u16 x,u16 y,u16 cr,u16 dat,bit ch) //输入一个数字,返回尾部横坐标
{
u16 i;
i=x;
if(dat>5000)return 0;
if(dat>999)i=LCD_ZF(m,i,y,cr,dat/1000);
if(dat>99)i=LCD_ZF(m,i,y,cr,(dat%1000)/100);
i=LCD_ZF(m,i,y,cr,(dat%100)/10);
if(ch)i=LCD_ZF(m,i,y,cr,mm_dg);
i=LCD_ZF(m,i,y,cr,dat%10);
return i;
}
u16 LCD_ZF(u8 m,u16 x,u16 y,u16 cr,u16 dat) //显示字符函数
{
u16 i;
u8 a,b,c;
a=0x13;
switch(m)
{
case ZF_12 : i=15620+dat*ZF_12;break;
case ZF_16 : i=14916+dat*ZF_16;break;
case ZF_24 : i=16268+dat*ZF_24;break;
case ZF_32 : i=50380+dat*ZF_32;a=0x1a;break;
default : return 0;
}
b=i>>8;
c=i;
LCD_WX(m,x,y,cr,a,b,c);
switch(m)
{
case ZF_12 : return (x+12);
case ZF_16 : return (x+16);
case ZF_24 : return (x+24);
case ZF_32 : return (x+32);
}
}[/mw_shl_code]
|
|