通过Linux平台用终端命令进行交叉编译(arm-linux-gcc),执行其可编译文件,可在开发板中间生成一个圆形,随后不断变化圆的坐标,圆颜色。其半径大小可自定义。
代码如下:
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/types.h>
#define r 80
#define ICTwide 480
#define ICTlength 800
//#define x 600
//#define y 150
//#define Circle_color 0xffff00
//#define Background_color 0x87ceeb
//变色差
#define Coloe_Rate 8
//原始色
#define Original_Color 0x000000
//饱和色
#define Saturated_Color 0xffffff
int x=400;
int y=240;
int Circle_color=0xffff00;
int Background_color=0x87ceeb;
int main()
{
//1.打开lcd屏幕
int lcd_fd = open("/dev/fb0",O_RDWR);
if (lcd_fd == -1)
{
perror("open lcd fail");
}
//2.打开映射
int *plcd = mmap(NULL,ICTlength*ICTwide*4,PROT_READ|PROT_WRITE,
MAP_SHARED,lcd_fd,0);
while(1)
{
//背景颜色设置
for(int i = 0;i < ICTwide;i++)
{
for(int j = 0;j < ICTlength;j++)
{
*(plcd + ICTlength*i + j) = Background_color;
}
}
//圆颜色设置
for(int i = 0;i < ICTwide;i++)
{
for(int j = 0;j < ICTlength; j++)
{
if((j-x)*(j-x) +(i-y)*(i-y) <= r*r)
{
*(plcd + ICTlength*i + j) = Circle_color;
}
}
}
sleep(1);
//随机坐标设置
x=rand()%(ICTlength-r)+r;
y=rand()%(ICTwide-r)+r;
Circle_color+=Coloe_Rate;
Background_color+=Coloe_Rate;
if(Circle_color>Saturated_Color)
{
Circle_color=Original_Color;
}
if(Background_color>Saturated_Color)
{
Background_color=Original_Color;
}
sleep(1);
}
//3.关闭lcd 解除映射
munmap(plcd,ICTlength*ICTwide*4);
close(lcd_fd);
return 0;
}
//在开发板上画一个圆
样图如下: