数码相框项目
来源:互联网 发布:windos nodejs 80端口 编辑:程序博客网 时间:2024/06/11 02:01
ASCII码:共256个,在ASCII码点阵(fontdata)中,用8*16位表示一个ASCII码字模(dots)。也就是16个字节。
void lcd_put_ascii(int x, int y, char c)
unsigned char* dots = fontdata_8x16[c*16] /* c*16表示一个字符占16个字节, dots指向的是从第字符的ASCII码值*16的项*/
要在LCD上显示字模点阵,就要根据fontdata的数据,一个对一个位的扫描
for (int i=0; i<16; i++)
{
for (int b=7; b>=0; b--)
{
if (byte & (1<<b)) /* 从 第0行,一行8位,也就是一个字节,从高位开始扫, 扫0~7列 */
lcd_put_pixel(x+7-b, y+i);
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
要获取fbmem中的一些可变参数,var, 和不可变参数fix
struct struct fb_var_screeninfo var;
struct fb_fix_screeninfo fix;
fd_fb = open("/dev/fb0", O_RDWR);
if (ioctl(fd_fb, FBIOGET_VSCREENINFO, &var))
{
printf("can't get var\n");
return -1;
}
if (ioctl(fd_fb, FBIOGET_FSCREENINFO, &fix))
{
printf("can't get fix\n");
return -1;
}
为framebuffer在SDRAM中映射一块内存,相当于显存。以后就可以直接对内存操作,大小为screen_size = xres*yres*bis_per_pixel/8字节,这块内存的地址决定了整块LCD上的每个像素的颜色,即每一个像素的颜色用16位来表示。
fd_fb = open("/dev/fb0", O_RDWR);
fbmem =(unsigned char*) mmap(NULL, screen_size, PROT_WRITE | PROT_READ, MAP_SHARED, fd_fb, 0);
把汉字库文件是网上找的,也映射到SDRAM中去,直接对内存数组操作,就可以找到对应汉字的字模点阵
fd_hzk16 = open("HZK16", O_RDONLY);
汉字库的大小用fstat函数来计算出,man fstat就能知道用法
struct stat hzk_stat;
if (fstat(fd_hzk16, &hzk_stat))
{
printf("cant get hzk_stat\n");
return -1;
}
fzkmem = (unsigned char*)mmap(NULL, st.size, PROT_READ , MAP_SHARED, fd_hzk16, 0);
memset(fbmem, 0, screen_size); /* 清屏设为黑色 */
lcd_put_ascii(var.xres/2,var.yres/2, 'A');
- 数码相框项目
- 数码相框项目模块【二】 UART
- 数码相框项目模块【三】 KEY
- 数码相框项目模块【四】 TIMER
- 数码相框项目之LCD模块
- 数码相框项目之触摸屏模块
- linux应用项目(一)数码相框(1)数码相框之系统框架
- linux应用项目(一)数码相框(3)数码相框之电子书
- 数码相框项目模块【一】 跑马灯
- 文件浏览器_数码相框项目总结 (上)
- 数码相框
- 数码相框笔记
- linux应用项目(一)数码相框(2)数码相框之freetype实现矢量字体的显示
- 韦东山第三期视频数码相框中的电子书项目的ShowOnePage函数解析
- linux应用项目(一)数码相框(2)数码相框之字符编码与字符的点阵显示
- 基于pxa255的数码相框实现
- e-frame数码相框的发展趋势
- 超简单的数码相框制作
- c语言中的链式访问
- 04 java基础语法(上)
- CanToolApp for Windows 文档的所有图片的管理
- python网络编程学习笔记(2)--TCP和UDP区别(补充)
- 切换listview和RecyclerView
- 数码相框项目
- 长期:如何找到适合自己的节奏?
- Jenkins修改端口号
- 1005. 继续(3n+1)猜想 (25)
- 构造函数的继承(非构造函数的继承)
- 关于死锁的四个条件以及如何解决死锁的记录
- 诗《爱的足迹》
- Android 轮播图Banner使用
- ACM复习(1)1077 韩信点兵