液晶显示ZXF

发布时间: 2024-08-01
来源: 电子工程世界

#include

#define  uint unsigned int

#define uchar unsigned char

/* ***************************

PIN 

*************************/

#define LCD1602_DB P0// 

 sbit LCD1602_RS=P2^5;

 sbit LCD1602_RW=P2^6;

 sbit LCD1602_EN=P2^7; 

/* 

*****************************

*/

void LCD1602_check_busy(void)

{

    unsigned char sta;

    LCD1602_DB=0xff;

    LCD1602_RS=0;

    LCD1602_RW=1;

  do

    {

        LCD1602_EN=1;

        sta=LCD1602_DB;

        LCD1602_EN=0;

    }while(sta & 0x80);

}

void wrcmd1602(char cmd)

{

    LCD1602_check_busy();

    LCD1602_RS=0;

    LCD1602_RW=0;

    LCD1602_DB=cmd;

    LCD1602_EN=1;

    LCD1602_EN=0;

}

void wrdata1602(char mdata)

{

    LCD1602_check_busy();

    LCD1602_RS=1;

    LCD1602_RW=0;

    LCD1602_DB=mdata;

    LCD1602_EN=1;

    LCD1602_EN=0;

}

void LcdSetCursor(unsigned char x,unsigned char y)

{

  unsigned char addr;

    if(x==0)

        addr=0x00 + y;

    else

        addr=0x40 + y;

    wrcmd1602(0x80+addr);

}

void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str)

{

    LcdSetCursor(x,y);

    while(*str!='')

    {

        wrdata1602(*str++);

    }

}

void InitLcd1602()

{

    LCD1602_RW=0;

    LCD1602_EN=0;

    wrcmd1602(0x38);

    wrcmd1602(0x0c);

    wrcmd1602(0x06);

    wrcmd1602(0x01);

    wrcmd1602(0x80);

}

void LCD1602_cls()

{

  LCD1602_check_busy();

    LCD1602_RS=0;

    LCD1602_RW=0;

    LCD1602_DB=0x01;

    LCD1602_EN=1;

    LCD1602_EN=0;

}

     

/* 

***************?÷oˉêy**************

*/

void main()

{


  InitLcd1602();

    LCD1602_cls();

    LcdShowStr(0,0,"    Hello!zxf");

    LcdShowStr(1,0," Hello!");

 

    while(1);

}


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。