|
发表于 2015-1-20 21:11:02
|
显示全部楼层
SH88F166A部分代码,供参考
#define LongToBin(n) \
( \
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define Bin(n) LongToBin(0x##n##l) //write binary charactor set,exsample : Bin(11111111) = 0xff
#define LCDRAM 0x1E0
void LCD_Init()
{
uint8_t i;
DISPCON = Bin(01101111); // DUTY: 1/4 BIAS 1/3
DISPCON1 = Bin(00010011);
DISPCLK1 = 1;
DISPCLK0 = 0x6E;
P0SS = 0X00; // P0 IS GPIO.
P1SS = Bin(00111111); // P1.0 ~ P1.5 IS SEGMENT.
P2SS = Bin(00000000);
P3SS = Bin(00001111); // P3.0~P3.3 IS COMM
for(i=0; i<7; i++) // Test LCD RAM.
XBYTE[LCDRAM+i]=0XFF;
DelayMs(100);
for(i=0; i<7; i++) // clear lcd ram.
XBYTE[LCDRAM+i]=0;
//DelayMs(30);
}
void LCD_Power(uint8_t power)
{
if( power == 0 ) //
{
DISPCON = 0; // DUTY: 1/4 BIAS 1/3
DISPCON1 = 0;
DISPCLK1 = 0;
DISPCLK0 = 0x6E;
}
else
{
DISPCON = Bin(01101111); // DUTY: 1/4 BIAS 1/3
DISPCON1 = Bin(00010011);
DISPCLK1 = 1;
DISPCLK0 = 0x6E;
}
}
void LCD_ShowTemp(uint16_t temp) //ÏÔʾζÈ
{
uint8_t t;
temp = temp/10;
t = digtab[temp/10];
LCD_Power(1);
XBYTE[LCDRAM+2] = t>>4;
XBYTE[LCDRAM+3] = t&0x0F;
t = digtab[temp%10];
XBYTE[LCDRAM+4] = t>>4;
XBYTE[LCDRAM+5] = t&0x0F;
LCD_ShowFlag(S9,1);
if( sys_status == SYS_LOCK) LCD_ShowFlag(S10,1);
}
void LCD_ShowFlag(uint8_t xbit , uint8_t flag) //ÏÔʾ±ê¼ÇS1~S10
{
if( xbit == S1 ) // LOW
{
if( flag )
SET_BIT( XBYTE[LCDRAM+0] , 0);
else CLR_BIT(XBYTE[LCDRAM+0] , 0);
}
else if( xbit == S2 ) // MID
{
if( flag )
SET_BIT( XBYTE[LCDRAM+0] , 1);
else CLR_BIT(XBYTE[LCDRAM+0] , 1);
}
else if( xbit == S3 ) // HIGH
{
if( flag )
SET_BIT( XBYTE[LCDRAM+0] , 2);
else CLR_BIT(XBYTE[LCDRAM+0] , 2);
}
else if( xbit == S4 ) // AUTO
{
if( flag )
SET_BIT( XBYTE[LCDRAM+0] , 3);
else CLR_BIT(XBYTE[LCDRAM+0] , 3);
}
else if( xbit == S5 ) // COOL
{
if( flag )
SET_BIT( XBYTE[LCDRAM+1] , 0);
else CLR_BIT(XBYTE[LCDRAM+1] , 0);
}
else if( xbit == S6 ) // HOT
{
if( flag )
SET_BIT( XBYTE[LCDRAM+1] , 1);
else CLR_BIT(XBYTE[LCDRAM+1] , 1);
}
else if( xbit == S7 ) // SET
{
if( flag )
SET_BIT( XBYTE[LCDRAM+1] , 2);
else CLR_BIT(XBYTE[LCDRAM+1] , 2);
}
else if( xbit == S8 ) // ROOM
{
if( flag )
SET_BIT( XBYTE[LCDRAM+1] , 3);
else CLR_BIT(XBYTE[LCDRAM+1] , 3);
}
else if( xbit == S9 ) // oC
{
if( flag )
SET_BIT( XBYTE[LCDRAM+3] , 0);
else CLR_BIT(XBYTE[LCDRAM+3] , 0);
}
else if( xbit == S10 ) // LOCK TEMP
{
if( flag )
SET_BIT( XBYTE[LCDRAM+5] , 0);
else CLR_BIT(XBYTE[LCDRAM+5] , 0);
}
} |
|