高级会员
- 积分
- 680
- 金钱
- 680
- 注册时间
- 2015-12-13
- 在线时间
- 243 小时
|
发表于 2016-7-30 00:15:09
|
显示全部楼层
本帖最后由 HER107 于 2016-7-30 00:49 编辑
[mw_shl_code=c,true]/*************************************************
函数名:LCD_SetWindows
功能:设置lcd显示窗口,在此区域写点数据自动换行
*************************************************/
void LCD_SetWindows(u16 xStar, u8 yStar,u16 xEnd,u8 yEnd)
{
LCD_WR_REG(0x52);
LCD_WR_DATA(xStar);
LCD_WR_REG(0x53);
LCD_WR_DATA(xEnd);
LCD_WR_REG(0x50);
LCD_WR_DATA(yStar);
LCD_WR_REG(0x51);
LCD_WR_DATA(yEnd);
LCD_WR_REG(0x21);
LCD_WR_DATA(xStar);
LCD_WR_REG(0x20);
LCD_WR_DATA(yStar);
LCD_WR_REG(0x22);
}
//显示数字/字母/汉字
//12*24 ZF_12
//24*24 ZF_24
//16*32 ZF_16
//32*32 ZF_32
u16 LCD_ZF(u8 m,u16 x,u8 y,u16 cr,u16 dat) //显示字符函数
{
u8 i,j,k; u16 add;
switch(m)
{
case ZF_12 : LCD_SetWindows(x,y,x+11,y+23);add=x+12;
LCD.dat[1]=37444+dat*ZF_12;break;
case ZF_16 : LCD_SetWindows(x,y,x+15,y+31);add=x+16;
LCD.dat[1]=37912+dat*ZF_16;break;
case ZF_24 : LCD_SetWindows(x,y,x+23,y+23);add=x+24;
LCD.dat[1]=40280+dat*ZF_24;break;
case ZF_32 : LCD_SetWindows(x,y,x+31,y+31);add=x+32;
LCD.dat[1]=38616+dat*ZF_32;break;
default : return 0;
}
LCD_RS=1;
F_CS=0;
LCD.dat[0]=0x0315;
FLASH_addr(); //falsh 写入地址
LCD.dat[0]=cr;
for(i=0;i<m;i++)
{ k=FLASH_read();
for(j=0;j<8;j++)
{
if(k&0x80){LCD_H=0;LCD_L=0;}
else {LCD_H=LCD.tab[0];
LCD_L=LCD.tab[1];}
LCD_WR=0;
k<<=1;
LCD_WR=1;
}
}
SPSTAT=0xFF;
F_CS=1;
return add;
}
//===
u16 LCD_WS(u8 m,u16 x,u8 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;
}
void home_wendu(u8 dat) //温度显示
{
u16 i;
if(dat>99)return;
i=LCD_WS(ZF_12,118,28,beijing,dat,0);
LCD_ZF(ZF_24,i,28,beijing,WZ_T);
}[/mw_shl_code]
|
|