基于GEC6818开发板实现圆(动态)

 通过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;
}

//在开发板上画一个圆

样图如下:

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值