实验135LCD显示实验Word格式文档下载.docx
- 文档编号:22085009
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:7
- 大小:19.07KB
实验135LCD显示实验Word格式文档下载.docx
《实验135LCD显示实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验135LCD显示实验Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
2.附上源代码,并作适当的注释。
3.把程序执行界面抓图,LCD显示拍照,拷贝到实验报告中。
4.实验报告以电子文档的方式在多模式教学网提交。
附:
LCD显示示例程序
#include<
stdio.h>
fcntl.h>
sys/mman.h>
linux/fb.h>
#include"
font.h"
#defineFBDEV"
/dev/fb0"
#defineFBSIZE(width*height*bpp/8)
#defineRED0xf800
#defineGREEN0x07f0
#defineBLUE0x001f
#defineWHITE0xffff
intwidth=0,height=0,bpp=0;
/*
函数名:
draw_background
功能:
改变整个LCD的颜色
参数:
unsignedchar*mem-指向LCD映射内存的指针
intcolor:
希望改成的颜色,16位数字,是RGB三种颜色混合在一起的数字,RGB分别占5、6、5个bits,共16bits
*/
staticvoiddraw_background(unsignedchar*mem,intcolor)
{
inti,j;
unsignedshort*p=(unsignedshort*)mem;
color&
=0xffff;
for(i=0;
i<
width*height;
i++,p++)
*p=color;
}
draw_rect
画一个矩形,但不填充
shortx1,y1,x2,y2:
左上角和右下角坐标
staticvoiddraw_rect(unsignedchar*mem,intcolor,shortx1,shorty1,shortx2,shorty2)
shortm,left,right,top,bottom;
left=x1;
right=x2;
top=y1;
bottom=y2;
for(m=left;
m<
right;
m++)
{
*(p+top*width+m)=color;
*(p+bottom*width+m)=color;
}
for(m=top;
bottom;
*(p+m*width+left)=color;
*(p+m*width+right)=color;
draw_char
显示一个字符
shortx,y:
字符的坐标
charch:
要显示的数字,0~9,数字10代表小数点
staticvoiddraw_char(unsignedchar*mem,intcolor,shortx,shorty,charch)
shortmask;
shortflag;
p+=(y*width+x);
16;
i++){
mask=char_font[ch][2*i];
mask<
<
=8;
mask|=char_font[ch][2*i+1];
printf("
mask:
0x%x\n"
mask);
for(j=0;
j<
j++)
{
flag=(mask>
>
(15-j))&
0x0001;
if(flag)
*(p+i*width+j)=color;
}
return;
fill_rect
画一个矩形,并填充该矩形
本函数希望大家自己实现
staticvoidfill_rect(unsignedchar*mem,intcolor,shortx1,shorty1,shortx2,shorty2)
主函数
intmain(void)
intfb;
unsignedchar*fb_mem;
structfb_var_screeninfovar;
inti;
charc;
//打开LCD设备
fb=open(FBDEV,O_RDWR);
if(fb<
0){
device%sopenfailed\n"
FBDEV);
return-1;
//获取LCD的参数,获得的参数存储在变量var中
if(ioctl(fb,FBIOGET_VSCREENINFO,&
var)){
Can'
tgetVSCREENINFO\n"
);
close(fb);
//利用获取的参数初始化LCD宽度、高度和每个像素点的比特数
width=var.xres;
height=var.yres;
bpp=var.bits_per_pixel;
printf("
widthis%dheight=%dbpp=%d\n"
width,height,bpp);
//内存映射,把一块内存区域与LCD显存对应起来,内存指针是fb_mem,以后所有的显示操作都是针对fb_mem完成的
fb_mem=mmap(NULL,FBSIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
if(fb_mem==NULL){
mmapfailed\n"
//把LCD整屏设置为白色
memset(fb_mem,0x0,FBSIZE);
draw_background(fb_mem,WHITE);
//画一个红色矩形
draw_rect(fb_mem,RED,100,100,200,200);
//依次显示0~9数字和小数点
11;
i++)
draw_char(fb_mem,RED,300+16*i,300,i);
//读一个按键
getchar();
//去除显存映射
munmap(fb_mem,FBSIZE);
//关闭LCD设备
close(fb);
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 135 LCD 显示