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

📄 lcd1602.c.new

📁 红外遥控+1602LCD显示的源代码
💻 NEW
字号:
//=========================1602液晶头文键=================//#ifndef  LCD1602_4_H#define  LCD1602_4_H#include <reg52.h>#include <intrins.h>#define  MSB   0x80    //读忙位#define  HIGH   1#define  LOW   0//*****************************************#define   DATA_MODE       0x28 //LCD模式设置,0x28位四位数据线模式#define   OPEN_SCREEN       0x0f //打开LCD显示,有光标;0x0c没有光标#define   DISPLAY_ADDRESS     0x80 //写地址指令#define   CLEARSCREEN       LCD_en_com(0x01)  //清屏//***********//LCD1602的接线//*****************************#define  LCDIO     P0  //LCD1602的高四位接在P0口的高四位sbit LCD1602_RS=P0^0;   //RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。sbit LCD1602_RW=P0^1;   //RW为读写信号线,高电平时进行读操作,低电平时进行写操作。sbit LCD1602_EN=P0^2;   //E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。//**********************************************************************void LCD_en_com(unsigned char command);         //写命令指令void LCD_en_dat(unsigned char temp);         //写数据指令void LCD_set_xy(unsigned char x, unsigned char y);      //设置显示地址:X为横轴(0-15),Y为纵轴(0-1).void LCD_write_char(unsigned x,unsigned char y,unsigned char dat);  //写一个字符void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s);//写一个字符串void LCD_write_int(unsigned char x,unsigned char y,unsigned int intdat); //写无字符型整形数void LCD_init(void);             //lcd初始化void LCD_Read_BF(void);             //LCD读忙信号//**********************************************************************/*LCD1602.cCreated by Zhengxihuiemail: zhengxihui0506@126.comMay 2007*/void LCD_Read_BF(void){    LCD1602_RW=HIGH;  //RW 1    LCD1602_RS=LOW;   //RS 0    LCD1602_EN=HIGH;  //EN 1 读忙信号    LCDIO=LCDIO&0x0F|0xf0;    while(LCDIO&MSB);    LCD1602_EN=LOW;  }void LCD_en_write(void)        //EN端产生一个高电平脉冲,写LCD{    LCD1602_EN=HIGH;    _nop_();    LCD1602_EN=LOW; }//*************************************void LCD_en_com(unsigned char command){    LCD_Read_BF();    LCD1602_RS=LOW;    //RS 0  写命令    LCD1602_RW=LOW;  //RW 0         LCDIO&=0x0F;    LCDIO=command&0xf0 | LCDIO&0x0f; //先发送高四位数据    LCD_en_write();    command=command<<4;     LCDIO&=0x0F;    LCDIO=command&0xf0 | LCDIO&0x0f;  //发送低四位数据    LCD_en_write();}//*********************************void LCD_en_dat(unsigned char dat){    LCD_Read_BF();    LCD1602_RS=HIGH;   //RS 1  写数据    LCD1602_RW=LOW;    //RW 0     LCDIO &=0x0F;    LCDIO=dat&0xf0 | LCDIO&0x0f;   //先发送高四位数据    LCD_en_write();    dat=dat<<4;    LCDIO &=0x0F;    LCDIO=dat&0xf0 | LCDIO&0x0f;    //发送低四位数据    LCD_en_write();}//**************设置显示地址:X为横轴(0-15),Y为纵轴(0-1)********************void LCD_set_xy(unsigned char x,unsigned char y){    unsigned char address;    x&=0x0f;    if(!y)     address=0x80+x;    else        address=0xc0+x;    LCD_en_com(address); }//***************写一个字符:X为横轴(0-15),Y为纵轴(0-1)**********void LCD_write_char(unsigned x,unsigned char y,unsigned char dat){    LCD_set_xy(x,y);     LCD_en_dat(dat);}//****************写一个字符串***************************************void LCD_write_string(unsigned char x,unsigned char y,const unsigned char *s){    LCD_set_xy(x,y);     while(*s)      {        LCD_en_dat(*s);           s++;    }}/***************写一个无字符整数***************************************void LCD_write_int(unsigned char x,unsigned char y,unsigned int intdat){    unsigned char i="0",temp[5];    while(intdat/10 || intdat%10)      {        temp=intdat%10;        intdat/=10;        i++;       }    LCD_set_xy(x,y);    while(i)      {        i--;        LCD_en_dat(temp+0x30);    }}//*****///LCD的初始化函数(刚上电的时候一定要调用一次)//***************/void LCD_init(void){     LCD_en_com(DATA_MODE);  //设计四位数据线模式    LCD_en_com(DATA_MODE);  //设计四位数据线模式     LCD_en_com(OPEN_SCREEN); //打开LCD显示    LCD_en_com(DISPLAY_ADDRESS);//设计首地址     CLEARSCREEN;       //清屏}void main(void){    LCD_init();        //1602初始化    while(1)    {                LCD_write_string(0,0,"Ready Go!"); //说明初始化成功    }}

⌨️ 快捷键说明

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