历史上的今天
今天是:2024年10月08日(星期二)
2021年10月08日 | S3C2440裸机------LCD_显示文字
2021-10-08 来源:eefocus
1.显示文字的原理
我们在内核源码中搜索font,找到font_8x16.c,然后我们从里面找到字符A的点阵,一共由16个字节组成,其中字节的每一位表示该位是0还是1。

2.font.c
extern const unsigned char fontdata_8x16[];
/* 获得LCD参数 */
static unsigned int fb_base;
static int xres, yres, bpp;
void font_init(void)
{
get_lcd_params(&fb_base, &xres, &yres, &bpp);
}
/* 根据字母的点阵在LCD上描画文字 */
void fb_print_char(int x, int y, char c, unsigned int color)
{
int i, j;
/* 根据c的ascii码在fontdata_8x16中得到点阵数据 */
unsigned char *dots = &fontdata_8x16[c * 16];
unsigned char data;
int bit;
/* 根据点阵来设置对应象素的颜色 */
for (j = y; j < y+16; j++)
{
data = *dots++;
bit = 7;
for (i = x; i < x+8; i++)
{
/* 根据点阵的某位决定是否描颜色 */
if (data & (1< bit--; } } } /* "abcnr123" */ void fb_print_string(int x, int y, char* str, unsigned int color) { int i = 0, j; while (str[i]) { if (str[i] == 'n') y = y+16; else if (str[i] == 'r') x = 0; else { fb_print_char(x, y, str[i], color); x = x+8; if (x >= xres) /* 换行 */ { x = 0; y = y+16; } } i++; } }
下一篇:ARM寄存器的操作方法
史海拾趣
|
两天时间,PCB就把线给布好了,而且很不错,感谢网友DS,现在就是认真核对电路,防止出错! 请大家帮忙仔细检查该板子的原理图,昨天我就检查出来两个很明显的错误。 学习的朋友也加油弄懂电路的原理,有问题大家多多讨论。 原理图链接:https://bbs. ...… 查看全部问答> |
|
在Xilinx PCI IPcore生成的user design里会在translate的时候出错, 错误内容:ucf中找不到相关的IP核的实例。 修改:synthesis-Properties-advanced-keep hierarchy-soft/yes 即可通过Implement。… 查看全部问答> |
|
【求助】ARM控制SED1330LCD320*240出现这种现象是什么原因? 正常现象应该是:■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■填满一行 实际的现象是: ■ ■■■■■■■■■ ■■■■■■■■■■■■■■ ■■■■随机的消失几个出现到 ...… 查看全部问答> |
|
已经新建立了一个连接,使用RasDial()函数连接到了 输入 at 指令的模块,问题是怎么让程序自动输入at指令 并且自动 按继续按钮连接上网呢?谢谢大家了. at指令是:at+cgdcont=1,\"ip\",\"cmnet\" 和 atdt*99# ,我 ...… 查看全部问答> |
|
6410按键处理,有时候按下键没响应,有时候按下出好几个字符,求助大家! 我把6410的按键驱动映射为我需要的字符了,可是总是响应时有些问题,有时候按下键不能响应,有时候会出好几个字符,这是怎么回事啊,我应该修改哪些地方啊?… 查看全部问答> |




