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

📄 main.c

📁 EM1602C点阵液晶显示屏驱动示例
💻 C
字号:
/***************************************
LCD OCMC2X16A驱动模块
****************************************/

#include<reg52.h>

#define uchar unsigned char

#define LCD
#define LCD_DB P1  //LCD数据线pin7~14
sbit LCD_WR=P2^5; //读写控制线pin5
sbit LCD_RS=P2^6; //数据指令控制线pin4
sbit LCD_E=P2^4; //使能端pin6
//查忙函数
void busy(void)
{  
    LCD_RS=0;
    LCD_WR=1;
    LCD_E=1;
    LCD_E=1;
    LCD_E=1;
#ifdef LCD
    while(LCD_DB&0x80);
#endif
    LCD_E=0;
}
//读AC函数
/*uchar rd_ac(void)
{  
    uchar ac;
    LCD_RS=0;
    LCD_WR=1;
    LCD_E=1;
    LCD_E=1;
    LCD_E=1;
    ac=LCD_DB&0x7f;
    LCD_E=0;
    return ac;
}*/
//写指令函数
void w_com(char com)
{  
    busy();
    LCD_RS=0;
    LCD_WR=0;
    LCD_DB=com;
    LCD_E=1;
    LCD_E=0;
    LCD_DB=0XFF;
}
//写数据函数
void w_dat(uchar dat)
{   busy();
    LCD_RS=1;
    LCD_WR=0;
    LCD_DB=dat;
    LCD_E=1;
    LCD_E=0;
    LCD_DB=0XFF;
}
//定位函数
void LCD_gotoxy(char x,char y)
{   uchar code line[]={0x80,0xc0}; //行首地址
    w_com(line[x]+y);
}
//显示一个字符串
void LCD_puts(char *s)
{
    while(*s!='\0')
    {
        w_dat(*s++);
    }
}
//自定义字符
void def_char(void)
{   uchar code ch[]=
    {
    0x00,0x0E,0x11,0x11,0x11,0x0A,0x1B,0x00,        //1.欧姆符号
    0x00,0x04,0x04,0x1F,0x04,0x04,0x1F,0x00         //2.正负号
    };
    uchar i;
    w_com(0x48);        //设置CGRAM地址
    for(i=0;i<sizeof(ch);i++)
    {
        w_dat(ch[i]);
    }
    w_com(0x80);
}
//初始化函数
void LCD_init(void)
{
    unsigned i;
    for(i=0;i<2000;i++);
    w_com(0x38);    //8位数据总线,2行显示模式,5*7点阵
    def_char();     //自定义字符
    w_com(0x06);    //AC自动加1,显示不移位
    w_com(0x0c);    //开显示,不显示光标
    w_com(0x01);
    LCD_gotoxy(0,2);
    LCD_puts("OCM2X16A LCD.");
    for(i=0;i<50000;i++);
    w_com(0x01);    //清屏
}

main ()
{
	uchar ss,ff,mm;
	LCD_init();
	LCD_gotoxy(0,2);
	LCD_puts("1234567");
while(1);
}

⌨️ 快捷键说明

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