arm之LCD
来源:互联网 发布:颀乎其 编辑:程序博客网 时间:2024/05/21 09:58
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <sys/mman.h>int *plcd = NULL;/******************************************************** 在点坐标(x,y)画一个颜色为color的点*******************************************************/void lcd_draw_point(int x, int y, int color){ *(plcd + x + 800*y) = color;}/******************************************************** 清屏或者初始化LCD屏幕*******************************************************/void lcd_WR_color(){ //将整个lcd清除成白色 //从坐标为0,0点的位置开始画一个800*480的矩形 int x,y; for (y = 0; y < 480; y++) { for (x = 0; x < 800; x++) lcd_draw_point(x, y, 0xffffffff); }}/********************************************************* 在坐标(X0,Y0)处画一个显示一个宽度为width,* 高度为hight,颜色为color的矩形 *******************************************************/void lcd_draw_rectangle(int x,int y,int w,int h,int color){ int i,j; for (i= y; i < y+h; i++) //行 { for (j = x; j <x+w; j++) lcd_draw_point(j, i, color); }}/* ******************************************************** 在(X0,Y0)处画一个显示一个半径为r的空心圆*******************************************************/void lcd_draw_circle(int x,int y,int r,int color){ int i,j; int s; for(i=0;i<480;i++) { s=0; for(j=0;j<800;j++) { s=(y-i)*(y-i)+(x-j)*(x-j); if(s>=((r-1)*(r-1))&&s<=((r+1)*(r+1))) lcd_draw_point(j, i, color); } }}/********************************************************* 在(X0,Y0)处画一个显示一个半径为r的实心圆*******************************************************/void lcd_draw_disc(int x,int y,int r,int color){ int i,j; for(i=0;i<480;i++) { for(j=0;j<800;j++) { if((j-x)*(j-x)+(i-y)*(i-y)<=r*r) lcd_draw_point(i, j, color); } }}/********************************************************* 主函数********************************************************/int main(int argc, char *argv[]){ //打开LCD int fd; fd = open("/dev/fb0", O_RDWR); //if (fd == -1) if (-1 == fd) { perror("open lcd error"); return 0; } //内存映射 //把整个LCD映射到内存中,plcd就指向了映射的内存的首///地址=> plcd 指向了lcd的第0个像素点 //我们在程序中操作plcd这个指针就相当于操作lcd了 plcd = mmap(NULL, 800*480*4,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0); //屏幕 int color[480][800]; //lcd 初始化白色屏幕 lcd_WR_color(); //1、在lcd的坐标为50,50的位置开始 画一个50*50的矩形 lcd_draw_rectangle(50,50,50,50,0x00fef0ef); //2、在lcd的坐标为200,200的位置开始,画一个实心圆半径80 lcd_draw_disc(200,200,80,0xadbc00ff); //3、在lcd的坐标为400,200的位置开始,画一个空心圆半径80 lcd_draw_circle(400,400,80,0); close(fd); return 0;}
阅读全文
0 0
- arm之LCD
- ARM之LCD操作
- ARM学习之LCD实验
- arm之LCD(键盘输入)
- Arm嵌入式开发之LCD驱动
- arm lcd 原理
- LCD与ARM,详细
- ARM lcd 显示 问题
- arm linux移植lcd
- ARM平台LCD显示汉字
- arm的LCD的学习
- ARM平台LCD显示汉字
- arm的lcd基础显示
- arm的lcd显示字体
- ARM学习笔记--LCD显示
- [ARM-LINUX]移植2.6.31.12内核到立宇泰ARMSYS2440开发板之LCD驱动+触摸屏驱动
- ARM裸机程序设计—LCD程序设计
- 嵌入式ARM LCD 开机LOGO的制作
- application/json 四种常见的 POST 提交数据方式
- rtmp和声学回声消除调研
- Vue2+VueRouter2+webpack 构建项目实战(一)准备工作
- Android下打开各种类型文件的方法
- struts2入门
- arm之LCD
- jquery中attr和prop的区别
- Codis——分布式Redis服务的解决方案
- 倒序打印链表节点值
- DataRobot开发
- com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: and
- 使用js中常用的鼠标事件实现一个拖拽的例子
- 【转】调用nvm ls-remote只返回N/A 解决方案
- DispatcherServlet,ContextConfigListener,servletContext,applicationContext