📄 lcd_disp.c
字号:
#include "def.h"
#include <stdlib.h>
#include <stdio.h>
#include "function.h"
extern const U8 g_ucHZK16[];
extern const U8 ASCII_table[];
extern int strlen(const char*s);
extern void PutPixel(U16 x,U16 y,U16 c);
void Lcd_disp_word(uint16 x00, uint16 y00, uchar HzColor, char *s)
{
uint16 i,j,k,x,y,xx,ascii_offset;
uchar qm,wm;
uint16 ulOffset;
uchar wordbuf[32];
for( i = 0; i < strlen((const char*)s); i++ )
{
if(((uchar)(*(s+i)))<161 ) //显示ASCII码
{
ascii_offset=*(s+i)*16+1;
for( j = 0; j <16; j ++ )
{wordbuf[j] = ASCII_table[ascii_offset+j];}
for( y = 0; y < 16; y++ )
{
for( x = 0; x < 8; x++ )
{
k = x % 8;
if( wordbuf[y + x / 8] & (0x80 >> k))
{
xx = x00 + x + (i * 8);
PutPixel(xx,y+y00,HzColor);
}
}
}
ascii_offset+=16;
}
else //显示汉字
{
qm = *(s+i) - 161;
wm = *(s + i + 1) - 161;
ulOffset = (uint16)(qm * 94 + wm) * 32;
for( j = 0; j < 32; j ++ )
{ wordbuf[j] = g_ucHZK16[ulOffset + j]; }
for( y = 0; y < 16; y++ )
{
for( x = 0; x < 16; x++ )
{
k = x % 8;
if( wordbuf[y * 2 + x / 8] & (0x80 >> k))
{
xx = x00 + x + i * 8;
PutPixel(xx,y + y00,HzColor);
}
}
}
i++;
}
}
}
void Lcd_disp_digital(uint16 x00, uint16 y00, uchar HzColor, uchar value) //display a byte of digital on the LCD
{
uint16 k,x,y,xx,ascii_offset;
uchar wordbuf[32];
uchar j,t1,t2,p,q,m;
t1=value/10;
t2=value%10;
p=t1;
q=0;
x00-=2;
y00-=1;
for(m=0;m<3;m++)
{
ascii_offset=(p+48)*16;
for( j = 0; j <16; j ++ )
{wordbuf[j] = ASCII_table[ascii_offset+j];}
for( y = 0; y < 16; y++ )
{
for( x = 0; x < 8; x++ )
{
k = x % 8;
if( wordbuf[y + x / 8] & (0x80 >> k))
{
xx = x00 + x + 8+q;
PutPixel(xx,y+y00,HzColor);
}
}
}
m++;
q+=8;
p=t2;
}
}
void Lcd_disp_digital_one(uint16 x00, uint16 y00, uchar HzColor, uchar value) //display an half byte of digital on the LCD
{
uint16 k,x,y,xx,ascii_offset;
uchar wordbuf[32];
uchar j;
x00-=2;
y00-=1;
if(value<=9)
{ ascii_offset=(value+48)*16;}
else
{ ascii_offset=(value+55)*16;}
for( j = 0; j <16; j ++ )
{wordbuf[j] = ASCII_table[ascii_offset+j];}
for( y = 0; y < 16; y++ )
{
for( x = 0; x < 8; x++ )
{
k = x % 8;
if( wordbuf[y + x / 8] & (0x80 >> k))
{
xx = x00 + x + 8;
PutPixel(xx,y+y00,HzColor);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -