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

📄 ch452_lcd__.c

📁 键盘扫描及LED驱动芯片CH452的例子程序
💻 C
📖 第 1 页 / 共 3 页
字号:
********************************************************************/
void Draw_Pic_Clear(void)
{
    uchar i, j, temp_x, temp_y;

    W_1byte(0,0,0x34);  //8BIT控制界面,扩充指令集,,绘图显示OFF

    temp_x = 0x80;
    temp_y = 0x80;
    for(i=0;i<32;i++ )
    {
        W_1byte(0,0,temp_y++);//设置绘图区的Y地址坐标
        W_1byte(0,0,temp_x);//设置绘图区的X地址坐标

        for(j=0;j<16;j++)
        {
            W_1byte(0,1,0x00);
        }
    }
    temp_x = 0x88;
    temp_y = 0x80;
    j = 0;
    for(;i<64;i++ )
    {
        W_1byte(0,0,temp_y++);//设置绘图区的Y地址坐标
        W_1byte(0,0,temp_x);//设置绘图区的X地址坐标
        for(j=0;j<16;j++)
        {
            W_1byte(0,1,0x00);
        }
    }
    W_1byte(0,0,0x36);//8BIT控制界面,扩充指令集,,绘图显示OFF
}


/********************************************************************
函 数 名:Draw_Pic_Logo
入口参数:*Draw
出口参数:无
建立日期:2007年8月18日
修改日期:
函数作用:显示启动画面
说    明:
********************************************************************/
void Draw_Pic_Logo(flash uchar *Draw)
{
    uchar i, j, temp_x, temp_y;

    W_1byte(0,0,0x34);  //8BIT控制界面,扩充指令集,,绘图显示OFF

    temp_x = 0x80;
    temp_y = 0x80;
    for(i=0;i<32;i++ )
    {
        W_1byte(0,0,temp_y++);//设置绘图区的Y地址坐标
        W_1byte(0,0,temp_x);//设置绘图区的X地址坐标

        for(j=0;j<16;j++)
        {
            W_1byte(0,1,*Draw);
            Draw++;
        }
    }
    W_1byte(0,0,0x36);//8BIT控制界面,扩充指令集,,绘图显示OFF
}


/********************************************************************
函 数 名:Draw_Pic_LogoBar
入口参数:无
出口参数:无
建立日期:2007年8月18日
修改日期:
函数作用:显示进度条
说    明:
********************************************************************/
void Draw_Pic_LogoBar(void)
{
    uchar j, temp_x, temp_y;

    W_1byte(0,0,0x36);  //8BIT控制界面,扩充指令集,,绘图显示OFF

    temp_x = 0x88;
    temp_y = 0x90;

    W_1byte(0,0,temp_y);//设置绘图区的Y地址坐标
    W_1byte(0,0,temp_x);//设置绘图区的X地址坐标

    for(j=0;j<16;j++)
    {
        W_1byte(0,1,0xFF);
        Delay(20);
    }
    W_1byte(0,0,0x36);//8BIT控制界面,扩充指令集,,绘图显示OFF
}


/********************************************************************
函 数 print_root_page
入口参数:无
出口参数:无
建立日期:2007年8月16日
修改日期:
函数作用:在LCD上显示主菜单
说    明:
********************************************************************/
void print_root_page(void)
{
    LCD_Clear();//清屏

    LCD_set_xy(0,1);
    LCD_Display(menu);

    LCD_set_xy(1,0);
    LCD_Display(menu1);

    LCD_set_xy(1,4);
    LCD_Display(menu2);

    LCD_set_xy(2,0);
    LCD_Display(menu3);

    LCD_set_xy(2,4);
    LCD_Display(menu4);

    LCD_set_xy(3,0);
    LCD_Display(menu5);

    LCD_set_xy(3,4);
    LCD_Display(menu6);

    menu_statu=100;
}


/********************************************************************
函 数 print_sub1_page
入口参数:无
出口参数:无
建立日期:2007年8月16日
修改日期:
函数作用:在LCD上显示主菜单1的子菜单
说    明:
********************************************************************/
void print_sub1_page(void)
{
    LCD_Clear();//清屏

    LCD_set_xy(0,1);
    LCD_Display(menu10);

    LCD_set_xy(1,0);
    LCD_Display(menu11);

    LCD_set_xy(2,0);
    LCD_Display(menu12);
}

void print_sub2_page(void)
{
    LCD_Clear();//清屏

    LCD_set_xy(0,1);
    LCD_Display(menu20);

    LCD_set_xy(1,0);
    LCD_Display(menu21);

    LCD_set_xy(2,0);
    LCD_Display(menu22);

    LCD_set_xy(3,0);
    LCD_Display(menu23);
}

void print_sub3_page(void)
{
    LCD_Clear();//清屏

    LCD_set_xy(0,1);
    LCD_Display(menu30);

    LCD_set_xy(1,0);
    LCD_Display(menu31);
}

void print_sub4_page(void)
{
    LCD_Clear();//清屏

    LCD_set_xy(0,1);
    LCD_Display(menu40);

    LCD_set_xy(1,0);
    LCD_Display(menu41);
}

void print_sub1_1_page(void)
{
    LCD_Clear();//清屏

    //输入坐标值使能
    input_position=1;
    count=0;

    /*
    LCD_Clear();//清屏

    LCD_set_xy(1,0);
    LCD_Display(label_x_position);
    LCD_set_xy(2,0);
    LCD_Display(label_y_position);

    for(;i<999;i++)
    {
        showXY(i);
        Delay(10);
    }
    */
}

void print_sub1_2_page(void)
{
    LCD_Clear();//清屏

    //输入坐标值使能
    input_banjing=1;
    count=0;
}

void print_sub4_1_page(uint X,uint Y)
{
   LCD_set_xy(2,0);
   LCD_Display(label_y_position);
   LCD_set_xy(1,0);
   LCD_Display(label_x_position);

   showXY(X,Y);
   Delay(100);
}


/********************************************************************
函 数 名:showXY
入口参数:position_x,uint position_y
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:显示position_x,uint position_y,即当前画笔的位置
说    明:
********************************************************************/
void showXY(uint position_x,uint position_y)
{
        uchar bai=0,shi=0,ge=0;
        bai=position_x/100;
        position_x=position_x%100;
        shi=position_x/10;
        position_x=position_x%10;
        ge=position_x;

        LCD_set_xy(1,4);
        W_1byte(0,1,temp[bai]);
        LCD_set_xy(1,5);
        W_1byte(0,1,temp[shi]);
        LCD_set_xy(1,6);
        W_1byte(0,1,temp[ge]);

        bai=0,shi=0,ge=0;
        bai=position_y/100;
        position_x=position_y%100;
        shi=position_y/10;
        position_x=position_y%10;
        ge=position_y;

        LCD_set_xy(2,4);
        W_1byte(0,1,temp[bai]);
        LCD_set_xy(2,5);
        W_1byte(0,1,temp[shi]);
        LCD_set_xy(2,6);
        W_1byte(0,1,temp[ge]);
}


/********************************************************************
函 数 名:input
入口参数:无
出口参数:无
建立日期:2007年8月19日
修改日期:
函数作用:输入数据
说    明:
********************************************************************/
void input(void)
{
        //输入坐标数据
        if(input_position==1)
        {
           if(count==6)
           {
                W_1byte(0,1,temp[postion]);
                W_1byte(0,0,0x0C); //关光标

                temp_y_position=temp_y_position+postion;
           }
           if(count==5)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(2,6);
                count++;

                temp_y_position=temp_y_position+postion*10;
           }
           if(count==4)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(2,5);
                count++;

                temp_y_position=postion*100;
           }

           if(count==3)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(2,4);
                count++;

                temp_x_position=temp_x_position+postion;
           }
           if(count==2)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(1,6);
                count++;

                temp_x_position=temp_x_position+postion*10;
           }
           if(count==1)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(1,5);
                count++;

                temp_x_position=postion*100;

           }

           if(count==0)
           {
                LCD_set_xy(1,0);
                LCD_Display(label_x_position);
                LCD_set_xy(2,0);
                LCD_Display(label_y_position);

                LCD_set_xy(1,4);
                W_1byte(0,0,0x0E); //开光标
                count++;
           }
        }

        //输入半径数据
        if(input_banjing==1)
        {
           if(count==3)
           {
                W_1byte(0,1,temp[postion]);
                W_1byte(0,0,0x0C); //关光标

                temp_banjing=temp_banjing+postion;
           }
           if(count==2)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(1,6);
                count++;

                temp_banjing=temp_banjing+postion*10;
           }
           if(count==1)
           {
                W_1byte(0,1,temp[postion]);
                LCD_set_xy(1,5);
                count++;

                temp_banjing=postion*100;
           }

           if(count==0)
           {
                LCD_set_xy(1,0);
                LCD_Display(label_banjing);

                LCD_set_xy(1,4);
                W_1byte(0,0,0x0E); //开光标
                count++;
           }
        }
}


/********************************************************************
函 数 名:save
入口参数:无
出口参数:无
建立日期:2007年8月19日
修改日期:
函数作用:保存设定值
说    明:
********************************************************************/
void save(void)
{
    if(menu_statu==111)
    {
        x_position=temp_x_position;
        y_position=temp_y_position;

        temp_x_position=0;
        temp_y_position=0;

        LCD_Clear();//清屏
        W_1byte(0,0,0x0C); //关光标
        LCD_set_xy(1,2);
        LCD_Display(OK);
        Delay(100);
        LCD_Clear();//清屏
        print_root_page();

        input_position=0;
    }
    if(menu_statu==112)
    {
        banjing=temp_banjing;
        temp_banjing=0;

        LCD_Clear();//清屏
        W_1byte(0,0,0x0C); //关光标
        LCD_set_xy(1,2);
        LCD_Display(OK);
        Delay(100);
        LCD_Clear();//清屏
        print_root_page();

        input_banjing=0;
    }
}

/********************************************************************
函 数 名:Delay
入口参数:ms
出口参数:无
建立日期:2007年8月15日
修改日期:
函数作用:毫秒级的延时程序,当晶振为12Mhz时,xtal=12;
说    明:
********************************************************************/
void Delay(uint ms)
{
    uint i;
    while(ms--)
    {
     for(i=1;i<(uint)(xtal*143-2);i++)
         ;
    }
}

⌨️ 快捷键说明

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