当前位置: 首页 > news >正文

铁岭网站建设公司网站建设套用模板

铁岭网站建设公司,网站建设套用模板,微商怎么引流推广,WordPress按评论时间排序要在ARM上实现LCD绘图#xff0c;可以按照以下步骤进行#xff1a; 硬件初始化#xff1a;初始化LCD控制器和相关引脚#xff0c;配置时钟、分辨率和颜色深度等。 内存映射#xff1a;将LCD显示区域映射到ARM的内存地址空间中#xff0c;可以通过ARM的内存映射机制来实现…要在ARM上实现LCD绘图可以按照以下步骤进行 硬件初始化初始化LCD控制器和相关引脚配置时钟、分辨率和颜色深度等。 内存映射将LCD显示区域映射到ARM的内存地址空间中可以通过ARM的内存映射机制来实现。 绘图函数实现绘制基本图形的函数如点、线、矩形、圆等。可以通过计算像素坐标和调用ARM的内存写入指令来实现。 图像显示通过调用绘图函数绘制图像然后将图像数据写入映射的内存地址中刷新LCD控制器以显示图像。 不同的LCD控制器和ARM芯片可能会有一些细节上的差异因此具体的实现步骤可能会有所不同。此外还可以结合相关的图形库或操作系统提供的绘图函数来简化开发过程。 这里采用的是手动绘制内存映射。 空心圆 int draw_circle(int color, int x, int y, int r) {int a, b, num;a 0;b r;//1.打开液晶屏int fd_lcd;fd_lcd open(/dev/fb0, O_RDWR);if(fd_lcd -1 ){perror(open lcd ); //perror()会根据错误码返回出错的原因return -1;}printf(fd_lcd %d\n, fd_lcd); //2. 显存映射在应用程序中得到显存的首地址int *lcd_baseNULL; //int---每个像素点占用内存是4Blcd_base (int *)mmap(NULL, 800*480*4, PROT_READ|PROT_WRITE, MAP_SHARED,fd_lcd, 0);if(lcd_base NULL)return -2;3.通过显存的首地址将颜色数据写入显存while(2 * b * b r * r) // 1/8圆即可{draw_point(x a, y - b,color,lcd_base); // 0~1draw_point(x - a, y - b,color,lcd_base); // 0~7draw_point(x - a, y b,color,lcd_base); // 4~5draw_point(x a, y b,color,lcd_base); // 4~3draw_point(x b, y a,color,lcd_base); // 2~3draw_point(x b, y - a,color,lcd_base); // 2~1draw_point(x - b, y - a,color,lcd_base); // 6~7draw_point(x - b, y a,color,lcd_base); // 6~5a;num (a * a b * b) - r*r;if(num 0){b--;a--;}}//4.解除显存映射munmap(lcd_base, 800*480*4);//5.关闭液晶屏close(fd_lcd);return 0; } 实心圆 int draw_circle(int color, int Xpos, int Ypos, int Radius) {//1.打开液晶屏int fd_lcd;fd_lcd open(/dev/fb0, O_RDWR);if(fd_lcd -1 ){perror(open lcd ); //perror()会根据错误码返回出错的原因return -1;}printf(fd_lcd %d\n, fd_lcd); //2. 显存映射在应用程序中得到显存的首地址int *lcd_baseNULL; //int---每个像素点占用内存是4Blcd_base (int *)mmap(NULL, 800*480*4, PROT_READ|PROT_WRITE, MAP_SHARED,fd_lcd, 0);if(lcd_base NULL)return -2;int x,y,rRadius;for(yYpos - r;yYpos r;y){for(xXpos - r;xXposr;x){if(((x-Xpos)*(x-Xpos)(y-Ypos)*(y-Ypos)) r*r){draw_point(x, y,color,lcd_base);}}}//4.解除显存映射munmap(lcd_base, 800*480*4);//5.关闭液晶屏close(fd_lcd);return 0; } 任意区域矩形 int lcd_color(int color, int sx, int sy, int ex, int ey) {//1.打开液晶屏int fd_lcd;fd_lcd open(/dev/fb0, O_RDWR);if(fd_lcd -1 ){perror(open lcd ); //perror()会根据错误码返回出错的原因return -1;}printf(fd_lcd %d\n, fd_lcd); //2. 显存映射在应用程序中得到显存的首地址int *lcd_baseNULL; //int---每个像素点占用内存是4Blcd_base (int *)mmap(NULL, 800*480*4, PROT_READ|PROT_WRITE, MAP_SHARED,fd_lcd, 0);if(lcd_base NULL)return -2;//3.通过显存的首地址将颜色数据写入显存for(int ysy;yey; y)for(int xsx;xex;x)*(lcd_base 800*yx) color;//4.解除显存映射munmap(lcd_base, 800*480*4);//5.关闭液晶屏close(fd_lcd);return 0; } 三角形 int triangle(int x1,int y1,int x2,int y2,int x3,int y3,int col) {//1.打开液晶屏int fd_lcd;fd_lcd open(/dev/fb0, O_RDWR);if(fd_lcd -1 ){perror(open lcd ); //perror()会根据错误码返回出错的原因return -1;}printf(fd_lcd %d\n, fd_lcd); //2. 显存映射在应用程序中得到显存的首地址int *lcd_baseNULL; //int---每个像素点占用内存是4Blcd_base (int *)mmap(NULL, 800*480*4, PROT_READ|PROT_WRITE, MAP_SHARED,fd_lcd, 0);if(lcd_base NULL)return -2;//flag:代表本三角形在本直线的左边0还是右边1左边右边是抽象概念int i,j,flag10,flag20,flag30;float A1,B1,C1,A2,B2,C2,A3,B3,C3;//1号点与2号点的直线方程的ABCA1 y2 - y1;B1 x1 - x2;C1 x2*y1 - x1*y2;//2号点与3号点的直线方程的ABCA2 y2 - y3;B2 x3 - x2;C2 x2*y3 - x3*y2;//1号点与3号点的直线方程的ABCA3 y3 - y1;B3 x1 - x3;C3 x3*y1 - x1*y3;//判断第三个点与直线的相对位置if(x3*A1y3*B1C1 0) flag11;if(x1*A2y1*B2C2 0) flag21;if(x2*A3y2*B3C3 0) flag31;for(i0;i480;i){for(j0;j800;j){if(flag1 1){if(flag2 1){if(j*A1i*B1C1 0 j*A2i*B2C2 0 j*A3i*B3C3 0){draw_point(j,i,col,lcd_base);}}else{if(flag3 1){if(j*A1i*B1C1 0 j*A2i*B2C2 0 j*A3i*B3C3 0){draw_point(j,i,col,lcd_base);}}else{if(j*A1i*B1C1 0 j*A2i*B2C2 0 j*A3i*B3C3 0){draw_point(j,i,col,lcd_base);}}}}else{if(flag2 0){if(j*A1i*B1C1 0 j*A2i*B2C2 0 j*A3i*B3C3 0){draw_point(j,i,col,lcd_base);}}else{if(flag3 1){if(j*A1i*B1C1 0 j*A2i*B2C2 0 j*A3i*B3C3 0){draw_point(j,i,col,lcd_base);}}else{if(j*A1i*B1C1 0 j*A2i*B2C2 0 j*A3i*B3C3 0){draw_point(j,i,col,lcd_base);}}}}}}//4.解除显存映射munmap(lcd_base, 800*480*4);//5.关闭液晶屏close(fd_lcd);return 0; }五角星 void five_Pointed(int x,int y,int R,unsigned int col,int yDegree) {struct Vertex{int x;int y;};struct Vertex RVertex[5], rVertex[5]; //外围5个顶点的坐标与内部五个顶点的坐标double rad 3.1415926 / 180; //每度的弧度值double r R * sin(18 * rad) / cos(36 * rad); //五角星短轴的长度for (int k 0; k 5; k) //求取坐标{RVertex[k].x (int)(x - (R * cos((90 k * 72 yDegree) *rad)));RVertex[k].y (int)(y - (R * sin((90 k * 72 yDegree) * rad)));rVertex[k].x (int)(x - (r * cos((90 36 k * 72 yDegree) *rad)));rVertex[k].y (int)(y - (r * sin((90 36 k * 72 yDegree) * rad)));}triangle(RVertex[1].x,RVertex[1].y,RVertex[3].x,RVertex[3].y,rVertex[4].x,rVertex[4].y,col);triangle(RVertex[2].x,RVertex[2].y,RVertex[4].x,RVertex[4].y,rVertex[0].x,rVertex[0].y,col);triangle(RVertex[3].x,RVertex[3].y,RVertex[0].x,RVertex[0].y,rVertex[1].x,rVertex[1].y,col); } 各国旗帜 int lcd_flag(COUNTRY countryname) {//1.打开液晶屏int fd_lcd;fd_lcd open(/dev/fb0, O_RDWR);if(fd_lcd -1 ){perror(open lcd ); //perror()会根据错误码返回出错的原因return -1;}printf(fd_lcd %d\n, fd_lcd); //2. 显存映射在应用程序中得到显存的首地址int *lcd_baseNULL; //int---每个像素点占用内存是4Blcd_base (int *)mmap(NULL, 800*480*4, PROT_READ|PROT_WRITE, MAP_SHARED,fd_lcd, 0);if(lcd_base NULL)return -2;switch(countryname){case GERMANY:lcd_color(BLACK, 0, 0, 800, 160);lcd_color(RED, 0, 160, 800, 320);lcd_color(YELLOW, 0, 320,800, 480);break;case FRANCE:lcd_color(BLUE, 0, 0, 240, 480);lcd_color(WHITE, 240, 0, 560, 480);lcd_color(RED, 560, 0, 800, 480);break;case ITALI:lcd_color(GREEN, 0, 0, 240, 480);lcd_color(WHITE, 240, 0, 560, 480);lcd_color(RED, 560, 0, 800, 480);break;case SWISS:lcd_color(RED,0,0,800,480);lcd_color(WHITE,240,160,480,240);lcd_color(WHITE,320,80,400,320);break;case JAPAN:lcd_color(WHITE,0,0,800,480);draw_circle(RED,400,240,80);break;case CHINA:lcd_color(RED,0,0,800,480);five_Pointed(110,150,70,YELLOW,0);five_Pointed(200,60,40,YELLOW,20);five_Pointed(270,130,40,YELLOW,40);five_Pointed(270,230,40,YELLOW,0);five_Pointed(200,290,40,YELLOW,40);break;default:break;}//4.解除显存映射munmap(lcd_base, 800*480*4);//5.关闭液晶屏close(fd_lcd);return 0; }main.c #include stdio.h #include sys/mman.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h // 包含 close 函数所需的头文件 #include lcd.hint main(void) {unsigned char state0;while (1){switch (state){case 0:lcd_color(RED,0,0,800,480);break;case 1:lcd_color(GREEN,0,0,800,480);break;case 2:lcd_color(BLUE,0,0,800,480);break;case 3:lcd_color(YELLOW,0,0,800,480);break;case 4:lcd_color(PURPLE,0,0,800,480);break;case 5:lcd_color(BLACK,0,0,800,480);break;case 6:lcd_color(WHITE,0,0,800,480);break; case 7:lcd_flag(FRANCE);break;case 8:lcd_flag(GERMANY);break;case 9:lcd_flag(ITALI);break;case 10:lcd_flag(SWISS);break;case 11:lcd_flag(JAPAN);break;case 12:lcd_flag(CHINA);break;default:break;}if(state12){state0;}sleep(3);}// lcd_flag(GERMANY);return 0; } lcd.h #define RED 0x00FF0000 #define GREEN 0x0000FF00 #define YELLOW 0x00FFFF00 #define BLUE 0x000000FF #define BLACK 0x00000000 #define WHITE 0x00FFFFFF #define PURPLE 0x00800080typedef enum {GERMANY,FRANCE,ITALI,SWISS,JAPAN,CHINA } COUNTRY;int lcd_color(int color, int sx, int sy, int ex, int ey); int lcd_flag(COUNTRY countryname);
http://www.yingshimen.cn/news/146744/

相关文章:

  • 保温管有哪些网站做用手机搭建自己的网站
  • 自己的网站 做采集怎么做廊坊cms建站模板
  • 网站开发技术要求线下推广渠道有哪些
  • 织梦网站标题被改太仓网站制作
  • 景县做网站做360优化网站都有哪家
  • 网站倍攻击建设银行企业网上银行网站打不开
  • 高性能网站建设进阶...网站建设费用归类
  • 个人能不能自己做网站渭南华阴建设银行的网站是多少
  • 网站项目建设方案全网热度指数
  • 江门好的建站网站电信网站备案查询
  • 佛山网页模板建站网站开发体会范文
  • 外贸网站服务器南苑网站建设
  • 网站充值这么做手机免费代理ip
  • 缩短链接网站wordpress调用tag标签带超链接
  • 用nodejs可以做网站么融晟网
  • 网址大全123官方网站网页设计师使用的是什么的屏幕显示颜色模式
  • 提供购物网站建设google浏览器官方
  • 济南网站设计公司排名带地板翻转的网站怎么做
  • 有网络网站打不开怎么回事假山怎么制作 教程
  • 自己建设网站需要具备哪些条件政务网站建设模块
  • 贵阳网站建设是什么建设工程人员押证在哪个网站查
  • 物流企业网站建设策划书6做国外贸易的网站
  • 织梦手机端网站字体重叠襄阳网站seo技巧
  • 酒类公司网站模板wordpress兼容php版本
  • 运营一个网站要多少钱页面跳转自动更新
  • vue 做网站 seowordpress导购页面
  • 北京 网站设计品牌策略
  • 兰州网站建设搜王道下拉安徽省
  • 如何快速建一个网站山东建设厅网站是什么
  • 企业网站托管方案内容具体有哪些wordpress站点搬家