功能
裸機(jī)程序,實(shí)現(xiàn)LCD顯示數(shù)字時鐘
主要代碼
1)背景繪制
void Brush_ U32 c)
{
int x,y ;
for ( y = 0 ; y < LCD_HEIGHT ; y++ )
{
for ( x = 0 ; x < LCD_WIDTH ; x++ )
{
LCD_BUFFER[y][x] = c ;
}
}
}
2)文字繪制
void Draw_Text16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[])
{
unsigned short int i,j;
unsigned char mask,buffer;
/*一個漢字16行*/
for (i=0;i<16;i++)
{
/*漢字左半部分*/
mask=0x80; //從bit7開始判斷
buffer=ch[i*2]; //提取一行的第一個字節(jié)
/*一個字節(jié)有8個位,每一位代表字模數(shù)據(jù)對應(yīng)的點(diǎn)是否描顏色*/
for (j=0;j<8;j++)
{
if (buffer&mask)
{
PutPixel(x+j,y+i,color); //為筆畫上色
}
else
{
PutPixel(x+j,y+i,backColor); //背景色
}
mask=mask>>1; //移位,為判斷下一位作準(zhǔn)備
}
/*漢字右半部分*/
mask=0x80; //從bit7開始判斷
buffer=ch[i*2+1]; //提取一行的第二個字節(jié)
/*一個字節(jié)有8個位,每一位代表字模數(shù)據(jù)對應(yīng)的點(diǎn)是否描顏色*/
for (j=0;j<8;j++)
{
if (buffer&mask)
{
PutPixel(x+j+8,y+i,color); //為筆畫上色
}
else
{
PutPixel(x+j+8,y+i,backColor);//背景色
}
mask=mask>>1; //移位,為判斷下一位作準(zhǔn)備
}
}
}
3)時鐘設(shè)置
void RTC_Time_Set( void )
{
/*RTC讀寫使能,選擇BCD時鐘、計(jì)數(shù)器,無復(fù)位,1/32768*/
rRTCCON = 1 ;
rBCDYEAR = 0x13; /*年*/
rBCDMON = 0x05; /*月*/
rBCDDATE = 0x09; /*日*/
rBCDDAY = 0x04; /*星*/
rBCDHOUR = 0x10; /*小時*/
rBCDMIN = 0x57; /*分*/
rBCDSEC = 0x20; /*秒*/
/*關(guān)讀寫使能*/
rRTCCON &= ~1 ;
}
4)數(shù)字繪制
void Draw_Text_8_16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *chs)
{
U32 i=0;
while (*chs != '