LCD液晶显示程序

LCD液晶显示程序


2024年2月16日发(作者:)

//功能:LCD液晶显示程序,采纳8位数据接口

#include

#include

// 概念操纵信号端口

#define E 2

#define RW 1

#define RS 0

//sbit RS=0xB0;

//sbit RW=0xB1;

//sbit E= 0xB2;

// 声明挪用函数

void lcd_w_cmd(unsigned char com); //写命令字函数

void lcd_w_dat(unsigned char dat); //写数据函数

unsigned char lcd_r_start();

void int1();

//读状态函数

//P3.0 sbit RS=P3^0;

//P3.1

//P3.2

//库函数头文件,代码中引用了_nop()函数

//LCD初始化函数

//可控延时函数 void delay(unsigned char t);

void delay1(); //软件实现延时函数,5个机械周期

void gong(void);

void main() //主函数

{

unsigned char lcd[]="yin hai chang";

unsigned char i;

PORTC=0xff;

DDRC=0xff;

PORTB=0xff;

DDRB=0xff;

int1();

delay(255);

lcd_w_cmd(0x80);

delay(255);

for(i=0;i<13;i++)

{

lcd_w_dat(lcd[i]);

delay(200);

}

gong();

lcd_w_cmd(0x8f);

lcd_w_dat(0x00);

while(1);

}

//函数名:delay

// 送全1到P0口

// 送全1到P0口

// 初始化LCD

// 设置显示位置 // 显示字符串

// 原地踏步

//函数功能:采纳软件实现可控延时

//形式参数:延不时刻操纵参数存入变量t中

//返回值:无

void delay(unsigned char t)

{

unsigned char j,i;

for(i=0;i

for(j=0;j<50;j++);

}

//函数名:delay1

//函数功能:采纳软件实现延时,5个机械周期

//形式参数:无

//返回值:无

void delay1()

{

_NOP();

_NOP();

_NOP();

}

//函数名:int1

//函数功能:lcd初始化

//形式参数:无

//返回值:无

void int1()

{

lcd_w_cmd(0x3c); // 设置工作方式

lcd_w_cmd(0x0f); // 设置光标

lcd_w_cmd(0x01); // 清屏

lcd_w_cmd(0x06); // 设置输入方式

lcd_w_cmd(0x80); // 设置初始显示位置

}

//函数名:lcd_r_start

//函数功能:读状态字

//形式参数:无

//返回值:返回状态字,最高位D7=0,LCD操纵器空闲;D7=1,LCD操纵器忙

unsigned char lcd_r_start()

{

unsigned char s;

PORTB=PINB|(1<

delay1();

PORTB=PINB&(~(1<

delay1();

PORTB=PINB|(1<

//RW=1,RS=0,读LCD状态

delay1();

s=PINC;

delay1();

PORTB=PINB&(~(1<

delay1();

// RW=0;

delay1();

return(s);

}

//函数名:lcd_w_cmd

//函数功能:写命令字

//形式参数:命令字已存入com单元中

//返回值:无

void lcd_w_cmd(unsigned char com)

{

unsigned char i;

do { // 查LCD忙操作

//返回读取的LCD状态字

//从LCD的数据口读状态

i=lcd_r_start(); // 挪用读状态字函数

i=i&0x80;

delay(2);

} while(i!=0); // LCD忙,继续查询,不然退出循环

// 与操作屏蔽掉低7位

PORTB=PINB&(~(1<

delay1();

PORTB=PINB&(~(1<

delay1();

PORTB=PINB|(1<

delay1();

PORTC=com;

delay1();

PORTB=PINB&(~(1<

delay1();

// RW=1;

delay(255);

}

//函数名:lcd_w_dat

//函数功能:写数据

//形式参数:数据已存入dat单元中

//返回值:无

void lcd_w_dat(unsigned char dat)

{

unsigned char i;

do { // 查忙操作

//将com中的命令字写入LCD数据口

//E端时序

// RW=0,RS=0,写LCD命令字

i=lcd_r_start(); // 挪用读状态字函数

i=i&0x80; // 与操作屏蔽掉低7位

delay(2);

} while(i!=0); // LCD忙,继续查询,不然退出循环

PORTB=PINB&(~(1<

delay1();

PORTB=PINB|(1<

delay1();

PORTB=PINB|(1<

delay1();

PORTC=dat;

delay1();

PORTB=PINB&(~(1<

delay1();

// RW=1;

delay(255);

}

void gong(void)

{lcd_w_cmd(0x40);

lcd_w_dat(0x1f);

lcd_w_cmd(0x41);

lcd_w_dat(0x1f);

lcd_w_cmd(0x42);

// 将dat中的显示数据写入LCD数据口

// E端时序

// RW=1,RS=0,写数据

lcd_w_dat(0x04);

lcd_w_cmd(0x43);

lcd_w_dat(0x04);

lcd_w_cmd(0x44);

lcd_w_dat(0x04);

lcd_w_cmd(0x45);

lcd_w_dat(0x1f);

lcd_w_cmd(0x46);

lcd_w_dat(0x1f);

lcd_w_cmd(0x47);

lcd_w_dat(0x00);

}


发布者:admin,转转请注明出处:http://www.yc00.com/web/1708062365a1538076.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信