⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 800480.c

📁 蓝宇BBPC-SOM2496嵌入式主板 模拟屏实例代码与函数库和对应DOS驱动
💻 C
字号:
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <math.h>
#include "bbgui.h"

//#define GUI_WIDTH 800
//#define GUI_HIGTH	480

#define COUNT 10



//初始化显示
void DisInit(void)
{
	GuiSetMode(COLOR_LCDV_8BIT,SIZE_V800480,PLL_CLK_2); //256色模拟屏800480分辨率
	GuiInit();
}


//演示画线
void DisLine(void)
{
	int x,y,color=0;
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0x03);		//蓝色背景
	for(x=0,y=0;x<GUI_WIDTH;x+=10,color+=4)
		GuiLine(x,y,GUI_WIDTH-1-x,GUI_HIGTH-1-y,color);
	for(x=0,y=0;y<GUI_HIGTH;y+=10,color+=4)
		GuiLine(x,y,GUI_WIDTH-1-x,GUI_HIGTH-1-y,color);
	delay(1000);
}

//演示画圆
void DisCircle(void)
{
	int x,y,r,color=0,i,t,j;
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0x03);		//蓝色背景
	for(i=0;i<COUNT;i++)
	{
		x=random(GUI_WIDTH-100)+50;			//随机位置
		y=random(GUI_HIGTH-100)+50;
		t=(random(2)+1)<<3;				//随机大小
		r=12;
		color=(random(0x3e)+1)<<2;			//随机颜色
		for(j=0;j<9;j++,r+=t)
		{
			if(j<5)GuiCircle(x,y,r,color);		//画圆
			if(j>3)GuiCircle(x,y,r-(t<<2),0x03);	//删圆
			delay(100);
		}
	}
	delay(1000);
}

//下雨的效果
void DisRain(void)
{
	int x0,x1,y1,a,t,i,j,color;
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0x03);		//蓝色背景
	for(i=0;i<COUNT;i++)
	{
		x1=random(GUI_WIDTH-100)+50;			//随机位置
		y1=random(GUI_HIGTH>>1)+100;
		x0=x1-(y1>>2);
		t=(random(2)+1)<<2;				//随机大小
		a=10;
		color=(random(0x3e)+1)<<2;			//随机颜色
		for(j=0;j<4;j++)
		{
			GuiLine(x0+(j<<2),j<<4,x1-16+(j<<2),y1-64+(j<<4),color);	//画雨点的路径线
			delay(100);
			GuiLine(x0+(j<<2),j<<4,x1-16+(j<<2),y1-64+(j<<4),3);		//删雨点的路径线
		}
		for(j=0;j<8;j++,a+=t)
		{
			if(j<5)GuiEllipse(x1,y1,a<<1,a,color);				//画椭圆形波浪
			delay(100);
			if(j>3)GuiEllipse(x1,y1,(a-(t<<2))<<1,a-(t<<2),0x03);		//删椭圆形波浪
		}
	}
	delay(1000);
}


//演示波形
#define SIN_COUNT 100
#define SIN_MAX	3

void DisWave(void)
{
	int n,nn,page,wave[SIN_COUNT];
	GuiSetActive(0);	//设置当前活动页=0
	GuiSetPage(0);		//设置当前操作页=0
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,3);
	GuiSetPage(1);		//设置当前操作页=1
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,3);
	page=1;	//画非活动页
	for(n=0;n<SIN_COUNT;n++)
	{
		wave[n]=(sin(2*3.14*n/SIN_COUNT*SIN_MAX)+1)/2*(GUI_HIGTH-1);
	}
	for(nn=1;nn<COUNT;nn++)
	{
		sleep(1);
		for(n=0;n<SIN_COUNT-1;n++)
		{
			GuiLine(n*(GUI_WIDTH/SIN_COUNT),wave[n],\
			(n+1)*(GUI_WIDTH/SIN_COUNT),wave[n+1],0xfc);
		}
		//交换活动页
		GuiSetActive(page);	//设置当前活动页
		page = page ^ 0x01;
		//画非活动页
		GuiSetPage(page);
		//擦除图形
		GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,3);
		for(n=0;n<SIN_COUNT-1;n++)
			wave[n]= wave[n+1];//保存
		n=SIN_COUNT+nn;
		wave[SIN_COUNT-1]=(sin(2*3.14*n/SIN_COUNT*SIN_MAX)+1)/2*(GUI_HIGTH-1);
	}
	GuiSetActive(1);
	GuiSetPage(1);
	delay(1000);
}

//演示字符
void DisWord(void)
{
	int page,i,j,k,t;
	char str1[]="abcdefghijklmnopqrstuvwxyz1234567890\0";
	char str2[]="蓝宇科技\0";
	page=0;
	GuiSetActive(0);	//设置当前活动页=0
	GuiSetPage(0);		//设置当前操作页=0
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0);
	GuiSetPage(1);		//设置当前操作页=1
	GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0);

	for(j=-7;j<(GUI_WIDTH>>3)+7;j+=4)
	{

		GuiSetZfFont(eMIRO0406);
	GuiString(0,0,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO0808);
	GuiString(0,0+6,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO0816);
	GuiString(0,6+8,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO1220);
	GuiString(0,6+8+16,str1,0xff,0);		//显示字符串

	GuiSetZfFont(eMIRO1625);
	GuiString(0,6+8+16+20,str1,0xff,0);		//显示字符串

	GuiSetZfFont(eMIRO2034);
	GuiString(0,6+8+16+20+25,str1,0xff,0);		//显示字符串


	GuiSetHzFont(eHZK1616);
	GuiString(6+8+16+20+25+34+16,6+8+16+20+25+34+16,str2,0xff,0);//显示字符串
		t=GUI_WIDTH>>3;
		for(i=0;i<8;i++)			//颜色渐变效果
		{
			if((k=i+j)<t&k>=0)
			GuiBoxFillAnd(k<<3,0,7+(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
			if((k=j-i)<t&k>=0)
			GuiBoxFillAnd(k<<3,0,7+(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
		}
		if(j>7)
			GuiBoxFill(0,0,((j-7)<<3),GUI_HIGTH-1,0);
		if(j<t-7)
			GuiBoxFill(((j+7)<<3),0,GUI_WIDTH-1,GUI_HIGTH-1,0);
		GuiSetActive(page);
		page^=1;
		GuiSetPage(page);
	}
		for(j=0;j<(GUI_WIDTH>>4)+1;j+=4)
	{

		GuiSetZfFont(eMIRO0406);
	GuiString(0,0,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO0808);
	GuiString(0,0+6,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO0816);
	GuiString(0,6+8,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO1220);
	GuiString(0,6+8+16,str1,0xff,0);			//显示字符串

	GuiSetZfFont(eMIRO1625);
	GuiString(0,6+8+16+20,str1,0xff,0);		//显示字符串

	GuiSetZfFont(eMIRO2034);
	GuiString(0,6+8+16+20+25,str1,0xff,0);		//显示字符串

	GuiSetHzFont(eHZK1616);
	GuiString(6+8+16+20+25+34+16,6+8+16+20+25+34+16,str2,0xff,0);//显示字符串
	GuiBoxFillAnd((GUI_WIDTH>>1)-(j<<3),0,(GUI_WIDTH>>1)+(j<<3),GUI_HIGTH-1,0x1c);
		for(i=0;i<8;i++)			//颜色渐变效果
		{
			if((k=i+j)<=GUI_WIDTH>>4)
			{
			GuiBoxFillAnd((GUI_WIDTH>>1)+(k<<3),0,7+(GUI_WIDTH>>1)+(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
			GuiBoxFillAnd((GUI_WIDTH>>1)-(k<<3)-7,0,(GUI_WIDTH>>1)-(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
			}
		}
		if((k=i+j)<=GUI_WIDTH>>4)
		{
		GuiBoxFillAnd(0,0,(GUI_WIDTH>>1)-(k<<3),GUI_HIGTH-1,0);
		GuiBoxFillAnd((GUI_WIDTH>>1)+(k<<3),0,GUI_WIDTH-1,GUI_HIGTH-1,0);
		}
		GuiSetActive(page);
		page^=1;
		GuiSetPage(page);
	}
	GuiSetActive(1);
	GuiSetPage(1);
	delay(1000);
}

//演示位图
int PutBmp(int x,int y,int mode,char *fpath);
void disapear(int m,int color);

void main(void)
{
	DisInit();
	while(1){
	disapear(1,3);
	DisLine();
	disapear(3,0xc1);
	disapear(3,3);
	DisCircle();
	disapear(2,0xc1);
	disapear(2,3);
	DisRain();
	disapear(4,0xc1);
	disapear(4,3);
	DisWave();
	disapear(5,0xc1);
	disapear(5,3);
	DisWord();
	disapear(7,3);
	PutBmp(0,0,0,"800480.bmp");
   delay(2000);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -