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

📄 lcd1601.c

📁 液晶1601子程序
💻 C
字号:
#include <REG51.H>
#include <INTRINS.H>             //定义函数

sbit LcdRs  = P1^0;
sbit LcdRw  = P1^1;
sbit LcdEn  = P1^2;
sfr  DBPort = 0x80;              //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
/*--------------------------
等待液晶不忙
--------------------------*/
void WaitForEnable()
{
    DBPort=0xff;
    LcdRs=0;
    LcdRw=1;
    _nop_();
    LcdEn=1;
    _nop_();
    _nop_();
    while(DBPort&0x80);
    LcdEn=0;
}
/*--------------------------
向液晶写控制字或者数据
--------------------------*/
#define LCD_COMMAND      0      // Command
#define LCD_DATA         1      // Data
#define LCD_CLEAR_SCREEN 0x01   // 清屏
#define LCD_HOMING       0x02      // 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
    WaitForEnable();
    LcdEn=0;
    LcdRs=style;
    LcdRw=0;  
    _nop_();
    DBPort=input; 
    _nop_();
    LcdEn=1;  
    _nop_();
    _nop_();
    LcdEn=0;      
}

/*--------------------------
向液晶写数据
--------------------------*/
//设置显示模式************************************************************
#define LCD_SHOW       0x04    //显示开
#define LCD_HIDE       0x00    //显示关   
#define LCD_CURSOR     0x02    //显示光标
#define LCD_NO_CURSOR  0x00    //无光标       
#define LCD_FLASH      0x01    //光标闪动
#define LCD_NO_FLASH   0x00    //光标不闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
    LCD_Write(LCD_COMMAND, 0x08|DisplayMode); 
}

//设置输入模式************************************************************
#define LCD_AC_UP      0x02
#define LCD_AC_DOWN    0x00      // default
#define LCD_MOVE       0x01      // 画面可平移
#define LCD_NO_MOVE    0x00      //default
void LCD_SetInput(unsigned char InputMode)
{
    LCD_Write(LCD_COMMAND, 0x04|InputMode);
}

//移动光标或屏幕************************************************************
#define LCD_CURSOR     0x02      
#define LCD_SCREEN     0x08
#define LCD_LEFT       0x00
#define LCD_RIGHT      0x04
void LCD_Move(unsigned char object, unsigned char direction)
{
    if(object==LCD_CURSOR)
        LCD_Write(LCD_COMMAND,0x10|direction);
    if(object==LCD_SCREEN)
        LCD_Write(LCD_COMMAND,0x18|direction);
}
/*--------------------------
液晶初始化
--------------------------*/
void LCD_Initial()
{
    LcdEn=0;
    LCD_Write(LCD_COMMAND,0x38);               //8位数据端口,2行显示,5*7点阵
    LCD_Write(LCD_COMMAND,0x38);
    LCD_SetDisplay(LCD_SHOW|LCD_CURSOR);       //开启显示, 光标
    LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
    LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
}
/*--------------------------
显示光标定位
--------------------------*/
void Disp_XY(unsigned char x, unsigned char y)
{
    if(y==0)
        LCD_Write(LCD_COMMAND,0x80|x);
    if(y==1)
        LCD_Write(LCD_COMMAND,0x80|(x+0x40));
}
/*--------------------------
按指定位置显示一个字符
--------------------------*/
void DispOneChar(unsigned char xx, unsigned char yy, unsigned char onechar)
{
    Disp_XY(xx,yy);
    LCD_Write(LCD_DATA,onechar);
}
/*--------------------------
显示一串字符
--------------------------*/
void Display(unsigned char xx,unsigned char yy,unsigned char data *str)
{
    do{
    Disp_XY(xx,yy);     
    LCD_Write(LCD_DATA,*str);
    str++;
    xx++;
    }while(xx<8);
}






⌨️ 快捷键说明

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