嵌入式开发板,c语言控制绘制太极图,附代码
编程思路可以看代码注释
本次用到的开发板为:粤嵌6818开发板-283
1.代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{int buf[480][800];//数组用来储存颜色的像素点 int file;file = open("/dev/fb0",O_RDWR);if(-1 == file){perror("open orror");}int baise = 0xffffff;int heise= 0x000000;int dise = 0xC0C0C0;int i,j; int r1=200,r2=195;//r1大圈外半径,r2大圈内半径 ,单独一线圈无法显示出来int a=240,b=400;//大圈圆心(240,400)int c=140,d=500,e=340,f=300;//右上角小圆心(140,500),左下角小圆心(340,300) int r3=30;//r3是两个最小圆圈半径int r5=100;//切入半圆的半径 int g=140,h=400,w=340,z=400;//上半切入圆心(140,400),下半切入圆心(340,400) for(i=0;i<480;i++)for(j=0;j<800;j++){//先分割成左右两边,左白右黑 if( i>0 && j<400 ){buf[i][j]=baise; }else{buf[i][j]=heise; }//上半切入圆 if( ((i-g)*(i-g)+(j-h)*(j-h) ) <= r5*r5 ){buf[i][j]=heise;}//下半切入圆 if( ((i-w)*(i-w)+(j-z)*(j-z) ) <= r5*r5 ){buf[i][j]=baise;}//右上小圈if( ((i-c)*(i-c)+(j-d)*(j-d) ) <= r3*r3 ){buf[i][j]=baise;}//左下小圈if( ( (i-e)*(i-e)+(j-f)*(j-f) ) <= r3*r3 ){buf[i][j]=heise;}//大圈外置白色 if( ( ((i-a)*(i-a)+(j-b)*(j-b) ) >= r1*r1)) {buf[i][j]=dise;}}//最后将颜色输入到屏幕 for(i=0;i<480;i++)for(j=0;j<800;j++){write(file,&buf[i][j],4);}return 0;
}
2.在linux中编译原.c文件
3.传入开发板
4.输出到开发板的效果图