📄 lcd_drive.c
字号:
/**********************************************************************************************************\
* LCD 驱动程序 *
* Designed by Pheonix *
*端口定义: B12~B14: RS,R/W,E *
* void send_d(char); *
* void send_i(char); *
\*********************************************************************************************************/
//A口定义
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
//B口定义
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Buffer (volatile unsigned int *)0x7006
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
//看门狗
#define ClearWatchdog (volatile unsigned int *)0x7012
// 延时程序
void F_Delay(int j)
{
int i;
for(i=0; i<j; i++);
}
//发送数据子程序
send_d(unsigned char n)
{
int i;
i=*P_IOB_Buffer; //RS=1 选择数据寄存器
i|=0x1000;
*P_IOB_Data=i;
i=*P_IOB_Buffer; //RW=0 写状态
i&=0xdfff;
*P_IOB_Data=i;
n=n<<8;
*P_IOA_Data=n; //送数据
i=*P_IOB_Buffer; //使能端有效
i|=0x4000;
*P_IOB_Data=i;
*ClearWatchdog=1;
F_Delay(0xff);
i=*P_IOB_Buffer; //使能端无效
i&=0xbfff;
*P_IOB_Data=i;
F_Delay(0xff);
}
//发送指令子程序
send_i(unsigned char n)
{
int i;
i=*P_IOB_Buffer; //RS=0 选择指令寄存器
i&=0xefff ;
*P_IOB_Data=i;
i=*P_IOB_Buffer; //RW=0 写状态
i&=0xdfff ;
*P_IOB_Data=i;
n=n<<8;
*P_IOA_Data=n; //送数据
*ClearWatchdog=1;
i=*P_IOB_Buffer; //使能端有效
i|=0x4000 ;
*P_IOB_Data=i;
F_Delay(0xff);
i=*P_IOB_Buffer; //使能端无效
i&=0xbfff ;
*P_IOB_Data=i;
F_Delay(0xff);
}
// LCD 初始化
void LCD_Init(void)
{ send_i(0x30);
send_i(0x01);
send_i(0x06);
send_i(0x0c);
send_i(0x80);
}
void Fill(int Position,char Data)
{F_Delay(0xff);
send_i(0x0080+Position);
F_Delay(0xff);
send_d(Data);
}
void L_Fill(int Position,char point[])
{int i;
F_Delay(0xff);
send_i(0x80+Position);
F_Delay(0xff);
for(i=0;i<16;i++)
{F_Delay(0xff);
send_d(point[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -