新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PIC16F877A例程---LCD1602

PIC16F877A例程---LCD1602

作者: 时间:2016-11-24 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/201611/321023.htm

void wait_LCD_Ready(void)

{

uchar temp1;

LCD_DATA_PORT=0XFF;

LCD_DATA_PIN; //D7设为输入,准备判断LCD忙标志

//1为忙 0为空闲

LCD_RS_0;

LCD_RW_1; //读

LCD_EN_1;

nus_delay(2);

while((temp1=PORTD & 0X80));

LCD_EN_0;

LCD_RS_1;

LCD_DATA_POUT;

}

void LCD_write_onechar(uchar COMM,uchar DAT)

{

wait_LCD_Ready(); //等待LCD空闲

LCD_RW_0; //写

//写数据

if(COMM==0)

{

LCD_RS_1; //RS高电平向LCD写数据

LCD_DATA_PORT=DAT;

}

//写命令

else

{

LCD_RS_0;

LCD_DATA_PORT=COMM;

}

LCD_en_write();

nus_delay(2);

LCD_RW_1;

LCD_RS_1;

}

void LCD_write_string(uchar X,uchar Y,uchar *string)

{

set_LCD_xy( X, Y ); //设置LCD显示坐标

while (*string)

{

LCD_write_onechar(0,*string );

string ++; //指向下一显示字符地址

}

}

void set_LCD_xy(uchar x, uchar y )

{

uchar DIS_address;

if (y == 0)

DIS_address = 0x80 + x; //第一行X列

else

DIS_address = 0xc0 + x;

LCD_write_onechar( DIS_address, 0 ); //第二行X列

}

void nus_delay(uint nus)

{

int j=10;

while(nus--)

{

while(j--);

j=10;

}

}

void nms_delay(uint nms)

{

while(nms--)

nus_delay(1000);

}


上一页 1 2 下一页

关键词: PIC16F877ALCD160

评论


技术专区

关闭