📄 1602.c
字号:
/***************************************
*LCD OCMC2X16A驱动程序
****************************************/
#include<reg52.h>
#include"1602.h"
//查忙函数
static void Busy(void)
{
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
// LCD_E=1;
// LCD_E=1;
while(LCD_DB&0x80);
LCD_E=0;
}
//写指令函数
void WriteCommand(char com)
{
Busy();
LCD_RS=0;
LCD_RW=0;
LCD_DB=com;
LCD_E=1;
LCD_E=1;
LCD_E=0;
LCD_DB=0XFF;
}
//写数据函数
void WriteData(uchar dat)
{ Busy();
LCD_RS=1;
LCD_RW=0;
LCD_DB=dat;
LCD_E=1;
LCD_E=0;
LCD_DB=0XFF;
}
//光标定位
void Gotoxy(char x,char y)
{
uchar code line[]={0x80,0xc0}; //行首地址
WriteCommand(line[y]+x);
}
/**************************************
*字符串输出
**************************************/
void Puts(char *s)
{
while(*s!='\0')
{
WriteData(*s++);
}
}
/*自定义字符*/
static void DefMyChar(void)
{ uchar code ch[]=
{
0x00,0x0E,0x11,0x11,0x11,0x0A,0x1B,0x00, //1.欧姆符号
0x00,0x04,0x04,0x1F,0x04,0x04,0x1F,0x00 //2.正负号
};
uchar i;
WriteCommand(0x48); //设置CGRAM地址
for(i=0;i<sizeof(ch);i++)
{
WriteData(ch[i]);
}
WriteCommand(0x80);
}
//初始化函数
void InitLCD(void)
{
unsigned i;
for(i=0;i<2000;i++);
WriteCommand(0x38); //8位数据总线,2行显示模式,5*7点阵
DefMyChar(); //自定义字符
WriteCommand(0x06); //AC自动加1,显示不移位
WriteCommand(0x0c); //开显示,不显示光标
WriteCommand(0x01);
Gotoxy(0,2);
Puts("OCM2X16A LCD.");
for(i=0;i<50000;i++);
WriteCommand(0x01); //清屏
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -