📄 main.c
字号:
key = WaitKey();
while(key||(key<11))
{ if(key==10)key=0;
data[i] = key;
GUI_PutChar(mm,25,data[i]+0x30);
i++;
mm = mm + 8;
break;}
if(i>3)
{ i = 0;
goto ppp;}
}
ppp: mm = 10;
GUI_PutString(100,25,data);
for(i=0;i<14;i++)
bb[i] = 0;
value = data[0]*1000+data[1]*100+data[2]*10+data[3];
while(value!=0)
{
bb[t++] = (value % 2);
value = value / 2;
}
t = 0;
GUI_PutString(10, 40, "the bin number is :");
for(i=0;i<14;i++)
{
bobo[i] = bb[13-i];
GUI_PutChar(mm, 55, bobo[i]+0x30);
mm = mm + 8;
IO0SET |= 1<<CLK;
if(bobo[i]==1)
{ IO2SET |= 1<<DATA;}
else
{ IO2CLR |= 1<<DATA;}
IO0CLR |= 1 << CLK;
DelayNS(50);
}
//GUI_PutString(10, 70, "are you sure?");
if(DispButton49x14()==1) return; // 提示确定信息
//WaitAKey();
for(i=0;i<4;i++)
data[i] = data[i]+0x30;
GUI_LoadPic(0, 0, (uint8 *)ceshi, 240, 128);
GUI_PutString(160, 10, data);
WaitAKey();
GUI_PutString(70, 30, "0000.0");
GUI_PutString(70, 50, "0000.0");
GUI_PutString(70, 70, "0000.0");
GUI_PutString(70, 90, "0000.0");
GUI_PutString(70, 110,"0000.0");
GUI_PutString(180,30, "0000.0");
GUI_PutString(180,50, "0000.0");
GUI_PutString(180,70, "0000.0");
GUI_PutString(180,90, "0000.0");
GUI_PutString(180,110,"0000.0");
WaitAKey(); // 等待一按键
GUI_ClearSCR();
}
/****************************************************************************
* 名称:DemoArc()
* 功能:绘画圆弧及扇形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void DemoArc(void)
{
GUI_ClearSCR();
GUI_PutHZ(215, 32, (uint8 *)tan0, 16, 16); //边上显示"贪吃蛇"
GUI_PutHZ(215, 48, (uint8 *)chi0, 16, 16);
GUI_PutHZ(215, 64, (uint8 *)she0, 16, 16);
GUI_Rectangle(0,0,200,127,1); //画边界框
DrawBeanSnake(0,6);
DrawBeanSnake(1,6);
GamePlay();
WaitAKey(); // 等待一按键
GUI_ClearSCR();
}
uint8 ADC[4], ADCC[4];
uint16 pp[960];
/****************************************************************************
* 名称:DemoEllipse()
* 功能:绘画随圆演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void DemoEllipse(void)
{ WINDOWS demow;
uint8 y0=0,y1=0;
uint8 x,y;
uint16 h=0;
uint8 key1,i=0,k,g;
/* 显示演示窗口 */
demow.x = 0;
demow.y = 0;
demow.with = 240;
demow.hight = 128;
demow.title = (uint8 *) "Oscilloscope";
demow.state = NULL;
VICIntEnable = 0x020000;
keypress = 0;
//GUI_WindowsDraw(&demow);
Adc_init();
while(1)
{
while(1)
{
for(h=0;h<960;h++)
{
ADCR = (ADCR&0xFFFFFF00)|0x01|(1 << 24); // 切换通道并进行第一次转换
while( (ADDR&0x80000000)==0 ); // 等待转换结束
ADCR = ADCR | (1 << 24); // 再次启运转换
while( (ADDR&0x80000000)==0 );
ADC_Data = ADDR; // 读取ADC结果
ADC_Data = (ADC_Data>>6) & 0x3FF;
ADC_Data = ADC_Data * 3300;
ADC_Data = ADC_Data / 1024;
pp[h] = 120-(ADC_Data/33);
}
h = 0;
break;
}
while(h<960)
{
h=h;
for(i=0;i<240;i++)
{
y1 = pp[h];
GUI_Point(i, pp[h++], 1);
if(y1>y0)
{
if((y1-y0)>1)
{
for(g=y0;g<=y1;g++)
{
GUI_Point(i, g, 1);
}
}
}
else if(y1<y0)
{
if((y0-y1)>1)
{
for(g=y1;g<=y0;g++)
{
GUI_Point(i, g, 1);
}
}
}
y0=y1;
for(k=0;k<128;k++)
{
GUI_Point(i+1, k, 0);
}
}
}
/*
ADC[0] = ADC_Data / 1000;
ADC_Data = ADC_Data % 1000;
ADC[1] = ADC_Data / 100;
ADC_Data = ADC_Data % 100;
ADC[2] = ADC_Data / 10;
ADC[3] = ADC_Data % 10;
GUI_PutChar (100,50,ADC[0]+'0');
GUI_PutChar (106,50,ADC[1]+'0');
GUI_PutChar (112,50,ADC[2]+'0');
GUI_PutChar (118,50,ADC[3]+'0');*/
/*
ADCR = (ADCR&0xFFFFFF00)|0x02|(1 << 24); // 切换通道并进行第一次转换
while( (ADDR&0x80000000)==0 ); // 等待转换结束
ADCR = ADCR | (1 << 24); // 再次启运转换
while( (ADDR&0x80000000)==0 );
ADC_Data = ADDR; // 读取ADC结果
ADC_Data = (ADC_Data>>6) & 0x3FF;
ADC_Data = ADC_Data * 3300;
ADC_Data = ADC_Data / 1024;
ADC[0] = ADC_Data / 1000;
ADC_Data = ADC_Data % 1000;
ADC[1] = ADC_Data / 100;
ADC_Data = ADC_Data % 100;
ADC[2] = ADC_Data / 10;
ADC[3] = ADC_Data % 10;
GUI_PutChar (100,70,ADC[0]+'0');
GUI_PutChar (106,70,ADC[1]+'0');
GUI_PutChar (112,70,ADC[2]+'0');
GUI_PutChar (118,70,ADC[3]+'0');*/
if(0!=keypress) break;
//DelayNS(10);
}
VICIntEnClr = 0x020000;
WaitAKey(); // 等待一按键
GUI_ClearSCR();
}
/****************************************************************************
* 名称:DemoRectang()
* 功能:绘画矩形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void DemoRectang(void)
{ WINDOWS demow;
/* 显示演示窗口 */
demow.x = 45;
demow.y = 25;
demow.with = 150;
demow.hight = 80;
demow.title = (uint8 *) "Rectang for Demo";
demow.state = (uint8 *) "Enter a key return.";
GUI_WindowsDraw(&demow);
/* 画一个矩形及填充矩形 */
GUI_Rectangle(50, 45, 90, 85, 1);
GUI_Rectangle(75, 50, 100, 88, 1);
GUI_RectangleFill(80, 60, 130, 80, 1);
GUI_Rectangle(110, 50, 180, 90, 1);
GUI_Rectangle(135, 40, 190, 70, 1);
WaitAKey(); // 等待一按键
GUI_WindowsHide(&demow);
}
uint32 const mline[] = {120,40, 110,55, 90,60, 110,70, 120,90, 130,70, 150,60, 130,55, 120,40};
uint32 const poly5[] = {65,45, 50,60, 50,90, 80,90, 80,60, 65,45};
uint32 const poly4[] = {155,50, 190,50, 155,85, 190,85, 155,50};
/****************************************************************************
* 名称:DemoPoly()
* 功能:绘画多边形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void DemoPoly(void)
{ WINDOWS demow;
/* 显示演示窗口 */
demow.x = 45;
demow.y = 25;
demow.with = 150;
demow.hight = 80;
demow.title = (uint8 *) "Poly for Demo";
demow.state = (uint8 *) "Enter a key return.";
GUI_WindowsDraw(&demow);
GUI_LineS(poly5, 6, 1);
GUI_LineS(mline, 9, 1);
GUI_FloodFill(115, 55, 1);
GUI_LineS(poly4, 5, 1);
GUI_FloodFill(160, 52, 1);
WaitAKey(); // 等待一按键
GUI_WindowsHide(&demow);
}
/****************************************************************************
* 名称:DemoBmp()
* 功能:绘画bmp图及汉字显示演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void DemoBmp(void)
{ GUI_ClearSCR();
GUI_LoadPic(0, 0, (uint8 *)windows, 168, 124);
GUI_PutHZ (210, 20, (uint8 *)hzchar1, 16, 16);
GUI_PutHZ (210, 50, (uint8 *)hzchar2, 16, 16);
GUI_PutHZ (210, 80, (uint8 *)hzchar3, 16, 16);
WaitAKey(); // 等待一按键
}
/***********************************************************************
* 名称:DispButton49x14()
* 功能:显示一个提示框,当用户确定/取消时退出。
* 入口参数:无
* 出口参数:若是确定键,则返回0,否则返回1
***********************************************************************/
uint8 DispButton49x14(void)
{ uint8 select;
uint8 key;
WINDOWS message;
message.x = 45;
message.y = 25;
message.with = 150;
message.hight = 80;
message.title = (uint8 *) "Message for Demo";
message.state = (uint8 *) 0;
GUI_WindowsDraw(&message);
GUI_PutString(60, 55, "Start the Demo.");
select = 0;
while(1)
{ if(select==0)
{ GUI_Button_OK1(60,80);
GUI_Button_Cancle(130,80);
}
else
{ GUI_Button_OK(60,80);
GUI_Button_Cancle1(130,80);
}
key = WaitKey();
if( (key==KEY_NEXT)||(key==KEY_BACK) ) select = 1- select;
if(key==KEY_OK)
{ GUI_WindowsHide(&message);
return(select);
}
}
}
/***********************************************************************
* 名称:MoveCircle()
* 功能:将三个小球在屏幕上不断的滚动,实现动画操作。
* 入口参数:无
* 出口参数:无
***********************************************************************/
void MoveCircle(void)
{ WINDOWS mywindows;
uint8 x0, y0;
uint8 x0_bak, y0_bak;
int8 x0_ver, y0_ver;
uint8 x1, y1;
uint8 x1_bak, y1_bak;
int8 x1_ver, y1_ver;
uint8 x2, y2;
uint8 x2_bak, y2_bak;
int8 x2_ver, y2_ver;
if(DispButton49x14()==1) return; // 提示确定信息
/* 窗口演示 */
mywindows.x = 0;
mywindows.y = 0;
mywindows.with = 240;
mywindows.hight = 128;
mywindows.title = (uint8 *) "Hello World! -- HSB ";
mywindows.state = (uint8 *) "Use the GUI for windows.";
GUI_WindowsDraw(&mywindows);
/* 使能外部中断3,用于退出函数 */
VICIntEnable = 0x020000;
keypress = 0;
x0 = x0_bak= 125;
y0 = y0_bak = 45;
x0_ver = 1;
y0_ver = 1;
x1 = x1_bak = 35;
y1 = y1_bak = 60;
x1_ver = -1;
y1_ver = 1;
x2 = x2_bak = 200;
y2 = y2_bak = 80;
x2_ver = 1;
y2_ver = -1;
while(1)
{ GUI_Circle(x0, y0, 20, 1); // 绘画新的圆
GUI_Circle(x0_bak, y0_bak, 20, 0); // 擦除原位置上的圆
x0_bak = x0; // 保存当前圆的圆心坐标,以便擦除
y0_bak = y0;
GUI_Circle(x1, y1, 20, 1); // 绘画新的圆
GUI_Circle(x1_bak, y1_bak, 20, 0); // 擦除原位置上的圆
x1_bak = x1; // 保存当前圆的圆心坐标,以便擦除
y1_bak = y1;
GUI_Circle(x2, y2, 20, 1); // 绘画新的圆
GUI_Circle(x2_bak, y2_bak, 20, 0); // 擦除原位置上的圆
x2_bak = x2; // 保存当前圆的圆心坐标,以便擦除
y2_bak = y2;
DelayNS(50); // 延时
x0 += x0_ver; // 圆运动计算
y0 += y0_ver;
x0 += x0_ver;
y0 += y0_ver;
if(x0<=22) // 移到了最左边吗?若是,则向右运动(x_ver=1)
{ x0_ver = 1;
}
if(x0>=217) // 移到了最右边吗?若是,则向左运动(x_ver=-1)
{ x0_ver = -1;
}
if(y0<=34) // 移到了最下边吗?若是,则向上运动(y_ver=1)
{ y0_ver = 1;
}
if(y0>=95) // 移到了最上边吗?若是,则向下动动(y_ver=-1)
{ y0_ver = -1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -