最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

LCD1602程序

来源:动视网 责编:小OO 时间:2025-09-28 19:37:42
文档

LCD1602程序

/*lcd1602.c*/#include#include#include#include"LCD1602.h"#include"delay.h"//LCD端口初始化voidLCDPort_Init(void){LCD_BUS=0X00;LCD_BUS_Direction_REG=0XFF;//LCD数据端口设置为输出LCD_ControlPort_CLR;//RWRWEN低电平LCD_ControlPort_SET;//RSRWEN脚均设置为输出}//LCD初始化voidLCD_Init(v
推荐度:
导读/*lcd1602.c*/#include#include#include#include"LCD1602.h"#include"delay.h"//LCD端口初始化voidLCDPort_Init(void){LCD_BUS=0X00;LCD_BUS_Direction_REG=0XFF;//LCD数据端口设置为输出LCD_ControlPort_CLR;//RWRWEN低电平LCD_ControlPort_SET;//RSRWEN脚均设置为输出}//LCD初始化voidLCD_Init(v
/*lcd1602.c*/

#include

#include

#include

#include "LCD1602.h"

#include "delay.h"

//LCD端口初始化

void LCDPort_Init(void)

{    

     LCD_BUS = 0X00;

     LCD_BUS_Direction_REG =0XFF;   //LCD数据端口设置为输出

     LCD_ControlPort_CLR;          //RW RW EN低电平

     LCD_ControlPort_SET;          //RS RW EN脚均设置为输出    

}

//LCD初始化

void LCD_Init(void)

{

     delay_ms(400);

    Write_Com(0x01);//清屏

     delay_ms(5);

     Write_Com(0x38);//显示模式设置 16*2,5*7点阵,8位数据接口

     delay_ms(5);

     Write_Com(0x38);//显示模式设置 16*2,5*7点阵,8位数据接口

     delay_ms(5);

    Write_Com(0x38);//显示模式设置 16*2,5*7点阵,8位数据接口

     delay_ms(5);

     Write_Com(0x06);//光标设置,读或写一个字符后,地址指针加1,光标加1,整屏不移动

     delay_ms(5);

    //Write_Com(0x0f);//显示开关控制,开显示,光标显示,光标闪烁

     Write_Com(0x0c);//显示开关控制,开显示,光标不显示,光标不闪烁 

     delay_ms(5);

}

//LCD写指令

void Write_Com(unsigned char LCD_Com)

{

    // Check_Busy();

     

     RS_CLR; //RS=0,写指令

     RW_CLR; //RW=0,写命令

     EN_SET; //E=1,写操作    

     LCD_BUS=LCD_Com;    //数据送往数据端口?

     delay_ms(1);    //这个延时非常重要,结合时序图来理解,可以跟送数据顺序调换

     EN_CLR;// E=0,下角

     delay_ms(1);  

}

//LCD写字节数据

void Write_Data_Byte(unsigned char LCD_Data)

{

    // Check_Busy();

     RS_SET; //RS=1,数据寄存器

     RW_CLR;//RW=0,写入

     EN_SET; //写操作   

     LCD_BUS=LCD_Data;  //数据送数据端口

     delay_ms(1);   //这个延时非常重要     

     EN_CLR; //E=0,下降沿送数据

     delay_ms(1);

}

   

//指定当前写字符的位置

void Write_Place_xy(unsigned char x,unsigned char y)

{

     unsigned char address;

     if(y==0)             //行位置

     {

          address=0x80+x; //列位置

     }

     else 

     {

          address=0xc0+x;

     }

     Write_Com(address);  //写地址

     

}

//在指定的(x,y)位置写入字符数据

void Write_Data_Char(unsigned char x,unsigned char y,unsigned char Data)

{

     Write_Place_xy(x,y);

     delay_ms(1);

     Write_Data_Byte(Data);

}

//在指定的位置写字符串

void Write_Data_String(unsigned char x,unsigned char y,unsigned char *data)

{

     unsigned char i;

     unsigned char Length;

     Write_Place_xy(x,y); //写地址

     delay_ms(1);

     Length=strlen(data);//调用字符串函数算出字符的长度,并赋值给Length

for(i=0;i      {

         Write_Data_Byte(*data); //显示单个字符

         

         data++;

      }

      //也可以用下面这个算法来显示字符串

          /* while(*data)

     {

      Write_Data_Byte(*data);//写字符

      data++;                //地址指针加1

     }*/

     

}

     

//读写检测函数,每次对液晶操作前都要进行读写检测

void Check_Busy(void)

{

     LCD_BUS_Direction_REG = 0X00;         //PB口为输入口,准备读取数据

     RS_CLR; //RS=0,指令寄存器

     RW_SET;  //读操作

     EN_SET;   //使能(读操作都为高电平,写操作下降沿有效)

     delay_ms(5);

     while(0x80&LCD_BUS_READ_DATA)  //读入PB7口,为高电平则忙,执行E=0;

     EN_CLR;

     LCD_BUS_Direction_REG = 0XFF;        //直到PB7口(BF标志位)为0,PB口置为输出口,准备向端口发送数据

     

}

/*显示屏清空显示*/

void LCD_clear(void) 

{

    Write_Com(0x01);

    delay_ms(5);

}

文档

LCD1602程序

/*lcd1602.c*/#include#include#include#include"LCD1602.h"#include"delay.h"//LCD端口初始化voidLCDPort_Init(void){LCD_BUS=0X00;LCD_BUS_Direction_REG=0XFF;//LCD数据端口设置为输出LCD_ControlPort_CLR;//RWRWEN低电平LCD_ControlPort_SET;//RSRWEN脚均设置为输出}//LCD初始化voidLCD_Init(v
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top