main.c

来自「我学习AVR的代码例子」· C语言 代码 · 共 195 行

C
195
字号
#define MAIN_C
#include "all.h"

__flash uint8 HZ1[]=
{
/*--  文字:  欢  --*/
/*--  宋体18;  此字体下对应的点阵为:宽x高=24x24   1--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x46,0x00,0x3F,
0xC4,0x00,0x00,0xC4,0x04,0x00,0x8F,0xFE,0x20,0x88,0x08,0x11,0x89,0x90,0x09,0x11,
0x80,0x05,0x21,0x80,0x02,0x21,0x80,0x03,0x03,0x80,0x05,0x82,0x80,0x05,0x82,0x40,
0x08,0xC2,0x40,0x08,0xC4,0x60,0x10,0x4C,0x20,0x20,0x08,0x30,0x40,0x10,0x18,0x00,
0x60,0x0E,0x00,0x80,0x00,0x00,0x00,0x00
};
MENUICO  mainmenu[2];

__flash uint8   menupic1[] = 
{
/*--  图像:Face01.ico  --*/
/*--  宽度x高度=32x32  --*/
0x00,0x0F,0xF0,0x00,0x00,0x70,0x0E,0x00,0x01,0x80,0x01,0x80,0x03,0x00,0x00,0xC0,
0x04,0x00,0x00,0x20,0x08,0x00,0x00,0x10,0x10,0x00,0x00,0x08,0x30,0x00,0x00,0x0C,
0x20,0x18,0x18,0x04,0x40,0x3C,0x3C,0x02,0x40,0x3C,0x3C,0x02,0x40,0x3C,0x3C,0x02,
0x80,0x3C,0x3C,0x01,0x80,0x3C,0x3C,0x01,0x80,0x18,0x18,0x01,0x80,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,0x20,0x1F,0xF8,0x04,
0x30,0x00,0x00,0x0C,0x10,0x00,0x00,0x08,0x08,0x00,0x00,0x10,0x04,0x00,0x00,0x20,
0x03,0x00,0x00,0xC0,0x01,0x80,0x01,0x80,0x00,0x70,0x0E,0x00,0x00,0x0F,0xF0,0x00
};

__flash uint8   menuchar1[]=
{
/*--  图像:F1.bmp  --*/
/*--  宽度x高度=44x13  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x40,0x00,0x00,0x00,0x08,0x08,0x48,
0x00,0x00,0x0F,0xC8,0x12,0x70,0x10,0x00,0x01,0x3F,0x3F,0x44,0x30,0x00,0x01,0x09,
0x00,0x44,0x10,0x00,0x01,0x09,0x1E,0x3C,0x10,0x00,0x01,0x09,0x12,0x40,0x10,0x00,
0x01,0x11,0x1E,0x48,0x10,0x00,0x01,0x91,0x12,0x70,0x10,0x00,0x0E,0x21,0x1E,0x44,
0x10,0x00,0x00,0x4A,0x12,0x44,0x38,0x00,0x00,0x84,0x16,0x3C,0x00,0x00
};



__flash uint8   menupic2[] = 
{
/*--  图像:Face02.ico  --*/
/*--  宽度x高度=32x32  --*/
0x00,0x0F,0xF0,0x00,0x00,0x70,0x0E,0x00,0x01,0x80,0x01,0x80,0x03,0x00,0x00,0xC0,
0x04,0x00,0x00,0x20,0x08,0x00,0x00,0x10,0x10,0x00,0x00,0x08,0x30,0x00,0x00,0x0C,
0x20,0x18,0x18,0x04,0x40,0x3C,0x3C,0x02,0x40,0x3C,0x3C,0x02,0x40,0x3C,0x3C,0x02,
0x80,0x3C,0x3C,0x01,0x80,0x3C,0x3C,0x01,0x80,0x18,0x18,0x01,0x80,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x80,0x00,0x81,0x80,0x80,0x00,0x81,
0x40,0x80,0x00,0x82,0x40,0x40,0x01,0x02,0x40,0x60,0x03,0x02,0x20,0x30,0x06,0x04,
0x30,0x18,0x0C,0x0C,0x10,0x07,0xF0,0x08,0x08,0x00,0x00,0x10,0x04,0x00,0x00,0x20,
0x03,0x00,0x00,0xC0,0x01,0x80,0x01,0x80,0x00,0x70,0x0E,0x00,0x00,0x0F,0xF0,0x00
};

__flash uint8   menuchar2[]=
{
/*--  图像:F2.bmp  --*/
/*--  宽度x高度=44x13  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x40,0x00,0x00,0x00,0x08,0x08,0x48,
0x00,0x00,0x0F,0xC8,0x12,0x70,0x38,0x00,0x01,0x3F,0x3F,0x44,0x44,0x00,0x01,0x09,
0x00,0x44,0x44,0x00,0x01,0x09,0x1E,0x3C,0x04,0x00,0x01,0x09,0x12,0x40,0x08,0x00,
0x01,0x11,0x1E,0x48,0x10,0x00,0x01,0x91,0x12,0x70,0x20,0x00,0x0E,0x21,0x1E,0x44,
0x40,0x00,0x00,0x4A,0x12,0x44,0x7C,0x00,0x00,0x84,0x16,0x3C,0x00,0x00
};

uint8  __flash  *__flash  pic_all[][2] = //uint8 
{   /* 图形数据,标识数据 */
    {menupic1, menuchar1},
    {menupic2, menuchar2},
};

#define  ICO1_X         300 
#define  ICO1_Y         220
uint8 Select;

#define ext_PORT1 (*(volatile unsigned char *)0x2100)
__no_init char ext_PORT2 @ 0x9001;
__no_init char ext_PORT3 @ 0x9002;

void  DemoMessage(void)
{
    WINDOWS  message;
    
    message.x = 5;       // 设置窗口位置和大小
    message.y = 14;
    message.with = 120;
    message.hight = 48;
    message.title = (uint8 *) "Message for Demo"; // 窗口标题
    message.state = (uint8 *) 1;
    GUI_WindowsDraw(&message);       // 显示对话框窗口
    GUI_PutString(8, 35, "Hello,");  // 显示对话框的消息"Hello,ZLG/GUI"
    GUI_PutString(8, 45, "QW!");
    if(Select==0)
    {
        GUI_Button_OK1(72,29);     // 选中"OK"按钮
        GUI_Button_Cancle(72,45);  // 取消"CANSEL"按钮的选中状态
    }
    else
    {
        GUI_Button_OK(72,29);
        GUI_Button_Cancle1(72,45);
    }
}

void  DrawSelectMenuIco(uint8 select)
{
    static  uint8  s_select_old = 255;
    /* 清除旧的选择 */
    if(s_select_old<2)
    {   
        mainmenu[s_select_old].state = 1;
        GUI_MenuIcoDraw(&mainmenu[s_select_old]);
    }
    
    /* 设置新的选择 */
    mainmenu[select].state = 1;				
    GUI_MenuIcoDraw(&mainmenu[select]);
    s_select_old = select;
}
void main(void)
{
    MCUCR = 0x80;      // 允许外部并行扩展接口 
    XMCRA = 0x00;    // external memory
    WINDOWS mw;
    mw.x = 0;
    mw.y = 0;
    mw.with = 240;
    mw.hight = 64;
    mw.title = (uint8 *)"qianwei test";
    mw.state = "ok";
    GUI_Initialize();//初始化LCM
    GUI_SetColor(1,0);//设置前景色和背景色
    GUI_ClearSCR();
    GUI_FillSCR(0);
    GUI_ClearSCR();
    GUI_PutString(150,10,"WELCOME");
    
    ext_PORT1=1;
    int a= ext_PORT1;
    GUI_PutChar(150,20,a+0x30);
    ext_PORT2=0xcc;
        
    GUI_Point(1,1,1);
    GUI_Point(200,2,1);
    delay_ms(500);
    GUI_ClearSCR();
    GUI_PutString(150,10,"ok");
    GUI_Point(1,50,1);
    GUI_Point(200,40,1);
    printf_16(150,20,"qianwei");
    printf_16(150,35,"欢迎使用");
    printf_24(10,10,"欢迎使用模拟系统");
    GUI_PutHZ(136,30,HZ1,24,24);
    GUI_PutChar24_32(12,10,'1');
    GUI_PutChar24_32(36,10,'2');
    
    //GUI_Ellipse(100,10,20,10,1);
    GUI_Line(5,5,10,20,1);
    GUI_LineWith(5,20,10,40,3,1);
    delay_ms(500);
    GUI_WindowsDraw(&mw);
    
    for(uint8 i=0; i<2; i++)
    {   /* 初始化为末选中状态 */
        mainmenu[i].state = 0;	
        
        /* 连接相应的图标数据 */
        mainmenu[i].icodat = pic_all[i][0];
        mainmenu[i].title = pic_all[i][1];
        
        /* 连接菜单功能函数 */
        mainmenu[i].Function = ( void(*) (void) ) DemoMessage;
    }ext_PORT2=0x00;int y;
    while(1)
    {
        ext_PORT2=(y>8?(y=0),y++,0:y++);
        int b=ext_PORT3;
    GUI_PutChar(150,20,b+0x30);
        if(Select==0)
        {
            Select=1;
        }
        else
            Select=0;
        delay_ms(2000);
        DemoMessage();
        
        //mainmenu[Select].state = 1;				
        //GUI_MenuIcoDraw(&mainmenu[Select]);
        delay_ms(2000);
    };
}

⌨️ 快捷键说明

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