arm之LCD
2017-06-20 17:24
106 查看
#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; }
相关文章推荐
- SkyEye1.3.1 + ArmLinux2.6.20 下安装LCD驱动
- S3C2451_lcd屏显示操作详解代码_ARM
- 用ARM ADS 的ARMulator插件实现手机LCD和键盘中断的模拟
- arm的lcd基础显示
- ARM lcd 显示 问题
- arm之LCD(键盘输入)
- arm的LCD的学习
- 基于ARM与FPGA的LCD控制器设计
- S5PV210-arm裸机-LCD
- 关于ARM LCD驱动不错的文章
- ARM学习笔记--LCD显示
- 嵌入式arm学习总结(四)--LCD
- ARMlcd的简单使用
- arm-linux-ld: ERROR: Source object init.o has EABI version 0, but target lcd_elf has EABI version 5
- LCD与ARM,具体
- arm lcd 原理
- LCD与ARM,具体
- arm的lcd屏保动圆
- ARM平台LCD显示汉字
- arm的lcd显示字体