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

📄 menudrive.c

📁 pdh控制程序
💻 C
字号:
#ifndef _MENU_DRIVE_C_
#define _MENU_DRIVE_C_

#include "menudrive.h"

#if _LCD_MENU_

const char  CODE_TYPE char_code[5][8] = 
                {
                    {0x04,0x0e,0x15,0x04,0x04,0x04,0x04,0x00},/*向上箭头符号*/
                    {0x02,0x06,0x0e,0x1e,0x0e,0x06,0x02,0x00},/*右三角*/
                    {0x04,0x04,0x04,0x04,0x15,0x0e,0x04,0x00},/*向下箭头符号*/
                    {0x18,0x04,0x02,0x01,0x01,0x02,0x04,0x18},/*右括号)*/
                    {0x03,0x04,0x08,0x10,0x10,0x08,0x04,0x03}/*左括号(*/
                };

void LcdWriteInstruction(char value);
void LcdWriteData(char value);
void init_particular_char(void);
void InitLcd(void);

void _delay_time_(unsigned int time)
{
    unsigned int data cnt;

    for(cnt=0; cnt<time; cnt++) _nop_();
}


void InitLcd(void)
{
    _delay_time_(_30_MS_);/*上电到初始化lcd必须有>30ms间隔*/

    WriteChip(WRITE_EN_ADDR,0x00);

    /*function set ,为2 line,5*8dots,8 bit*/
    LcdWriteInstruction(0x38);

    /*display on/off control*/
    _delay_time_(_39_US_);
    LcdWriteInstruction(0x0c);/*不显示光标指针*/

    /*clear display*/
    _delay_time_(_39_US_);
    LcdWriteInstruction(0x01);

    /*entry mode set*/
    _delay_time_(_1530_US_);
    LcdWriteInstruction(0x06);

    _delay_time_(_1530_US_);
    init_particular_char();
}

void LcdWriteInstruction(char value)
{
    WRITE_INSTRUCTION;
    WriteChip(WRITE_EN_ADDR,0x01);/*enable*/

    WriteChip(WRITE_CODE_ADDR,value);/*write commad code*/
    LCD_CLK_WAIT;
    WriteChip(WRITE_EN_ADDR,0x00);/*disable*/
}

void LcdWriteData(char value)
{
    WRITE_DATA_CHAR;
    WriteChip(WRITE_EN_ADDR,0x01);/*enable*/

    WriteChip(WRITE_CODE_ADDR,value);

    LCD_CLK_WAIT;
    WriteChip(WRITE_EN_ADDR,0x00);/*disable*/
}

void diaplay_up_char(void)
{
    char cnt;

    LcdWriteInstruction(0x40);
    for(cnt=0;cnt<8;cnt++)
        LcdWriteData(char_code[0][cnt]);
}


void display_triangle_char(void)
{
    char cnt;

    LcdWriteInstruction(0x48);
    for(cnt=0;cnt<8;cnt++)
        LcdWriteData(char_code[1][cnt]);
}
   

void display_down_char(void)
{
    char cnt;

    LcdWriteInstruction(0x50);
    for(cnt=0;cnt<8;cnt++)
        LcdWriteData(char_code[2][cnt]);
}

void display_arcR_char(void)
{
    char cnt;

    LcdWriteInstruction(0x58);
    for(cnt=0;cnt<8;cnt++)
        LcdWriteData(char_code[3][cnt]);
}
 
void display_arcL_char(void)
{
    char cnt;

    LcdWriteInstruction(0x60);
    for(cnt=0;cnt<8;cnt++)
        LcdWriteData(char_code[4][cnt]);
}

void init_particular_char(void)
{
    diaplay_up_char();
    display_triangle_char();
    display_down_char();
    display_arcR_char();
    display_arcL_char();
}


void diaplay_char(char row, char col, char value)
{
    char initAddr;

    (row == 0)? (initAddr = 0x80) : (initAddr = 0xc0);

    LcdWriteInstruction(initAddr+col);    
    LcdWriteData(value);
}

void LcdDisplay_length(char row, char col, char *string, char length)
{
    char initAddr;
    char len_display = length;

    (row == 0)? (initAddr = 0x80) : (initAddr = 0xc0);

    LcdWriteInstruction(initAddr+col);/*设置出初始位置*/

    while((*string) && (len_display>0))
    {
        if((*string>0x19) && (*string<0x7f))
        {
            LcdWriteData(*string);
            string++;
        }
        len_display--;
    }
//      _delay_time_(100);
}    

void back_light_status( char status )
{
    /*lcd 背光1 : 亮0:灭*/
    WriteChip( MENU_BACK_LIGHT, status );
}

void scrol_control( char status )
{
    switch( status )
    {
    case SCROL_FIRST_ROW_NULL:
        diaplay_char( ROW_1, LCD_LAST_CASE, LCD_PRINT_SPACE );
        break;

    case SCROL_FIRST_ROW_UP:
        diaplay_char( ROW_1, LCD_LAST_CASE, LCD_PRINT_UP );
        break;

    case SCROL_SECOND_ROW_NULL:
        diaplay_char( ROW_2, LCD_LAST_CASE, LCD_PRINT_SPACE );
        break;

    case SCROL_SECOND_ROW_DOWN:
        diaplay_char( ROW_2, LCD_LAST_CASE, LCD_PRINT_DOWN );
        break;
    }
}

void backlight_control( char *status )
{
	back_light_status( *status );
}

#endif
#endif

⌨️ 快捷键说明

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