📄 1602.h
字号:
#ifndef __1602_h__
#define __1602_h__
// write your header here
#define uint unsigned int
#define uchar unsigned char
#define RS0 0xfeff //RS置0,与上RS0 rs,rw,e:选择IOB8~10
#define RS1 0x0100 //RS置1,或上RS1
#define RW0 0xfdff //RW置0,与上RW0
#define RW1 0x0200 //RW置1,或上RW1
#define E0 0xfbff //E置0, 与上E0
#define E1 0x0400 //E置1, 或上E1
void lcd_enable(int x1);
void write(unsigned char x2);
void lcd_init(void);
void displayone (int x,int y,unsigned char d);
void di(void);
void ds(void);
void dc(void);
void lcd_enable(int x1) //写指令
{
delay(4);
*P_IOA_Data=x1*256;
*P_IOB_Data&=RS0; //RS置0,该字节数据为命令,而不是数据
*P_IOB_Data&=RW0; //RW置0
*P_IOB_Data&=E0; //E置0
*P_IOB_Data&=E0; //E置0
*P_IOB_Data|=E1; //E置1;拉高使能信号,建立LCD操作所需要的上升沿
}
void write(unsigned char x2) //写数据
{
delay(2);
*P_IOA_Data=x2*256; //待显示数据送B口
*P_IOB_Data|=RS1; //RS置1,该字节数据为数据,而不是命令
*P_IOB_Data&=RW0; //RW置0,此次操作为写,而不是读
*P_IOB_Data&=E0; //E置0 ;拉低使能信号
*P_IOB_Data&=E0; //E置0 ;拉低使能信号
*P_IOB_Data|=E1; //E置1;拉高使能信号,建立LCD操作所需要的上升沿
}
void lcd_init(void) //1602初始化
{
lcd_enable(1); //清屏
lcd_enable(0x0038); //系统初始化设置:数据总线为8位、两行显示、显示5x7的点阵字符
lcd_enable(0x000c); //显示开关控制指令:开显示、无光标、光标不闪烁
lcd_enable(0x0006); //设置输入模式指令:AC自动加1、显示不移动
}
void disf(void) //显示框架
{
int i=0;
unsigned char Data1[]={"Vi: v Set: v"};
unsigned char Data2[]={"Current: mA"};
lcd_enable(1);
lcd_enable(6);
lcd_enable(0x80);
do{
write(Data1[i]);
i++;
}while(Data1[i]);
i=0;
lcd_enable(0xc0);
do{
write(Data2[i]);
i++;
}while(Data2[i]);
}
void displayone (int x,int y,unsigned char d) //显示一个字符
{
lcd_enable(y*0x40+x+0x80);
write(d);
}
void di(void)
{
int i;
unsigned char d[]={"32.5"};
lcd_enable(3+0x80);
for (i=0;i<4;i++)
{
write(d[i]);
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -