LCD1602字符测试显示程序与仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "reg51.h"

#include "intrins.h"

#define uchar unsigned char

#define uint unsigned int

uchar code table1 []={" WELCOME "}; //欢迎显示,包括空格在内<=16 uchar code table2 []={"Name: "};//欢迎显示,包括空格在内<=16 //************管脚定义************************

sbit lcd_rs = P3^0; //液晶数据命令选择端

sbit lcd_en = P3^1; //液晶使能

//************参数定义************************

uint tvalue;//温度值

uchar tflag;//温度正负标志

uchar data disdata[5];

//************子函数定义************************

void delay(uchar z); //delay延时子程序

void init_lcd(); //LCD1602初始化函数

void write_com(uchar com); //LCD1602写指令函数

void write_data(uchar date); //LCD1602写数据函数

void lcd1602_display(uchar *q,uchar *p);//LCD1602显示函数

void welcome_1(); //LCD1602显示欢迎函数1

//************主函数************************

void main()

{

welcome_1();

delay(200);

while(1);

}

//************delay延时子程序************************

void delay(uchar z)

{

uchar x,y;

for(x=0;x

for(y=0;y<114;y++);

}

//************LCD1602初始化函数************************

void init_lcd()

{

lcd_en = 0; // 将使能端置0以完成脉冲

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

write_com(0x08); //写一个字符后地址指针加1

write_com(0x01); //显示清零,数据指针清零

write_com(0x06); //写一个字符后地址指针加1

write_com(0x0c); //关显示,光标不显示不闪烁

}

//************LCD1602写指令函数************************

void write_com(uchar com)

{

delay(5);

lcd_rs = 0; // 选择写指令

lcd_en = 0; // 将使能端置0

P2 = com; // 将要写的命令送到数据总线上

delay(5); // 延时5ms,待数据稳定

lcd_en = 1; // 由于初始化已将lcd_en置为0,使能端给一个高脉冲,delay(5); // 延时5ms,待数据稳定

lcd_en = 0; // 将使能端置0以完成脉冲

}

//************LCD1602写数据函数************************

void write_data(uchar date)

{

delay(5);

lcd_rs = 1; // 选择写数据

lcd_en = 0; // 将使能端置0

P2 = date; // 将要写的数据送到数据总线上

delay(5); // 延时5ms,待数据稳定

lcd_en = 1; // 由于初始化已将lcd_en置为0,使能端给一个高脉冲,delay(5); // 延时5ms,待数据稳定

lcd_en = 0; // 将使能端置0以完成脉冲

}

//************LCD1602显示函数******************

void lcd1602_display(uchar *q,uchar *p)

{

write_com(0x80); // 现将数据指针定位到第一行第一个字处

while(*q!='\0')

{

write_data(*q);

q++;

delay(1);

}

write_com(0xc0); // 现将数据指针定位到第二行第一个字处while(*p!='\0')

{

write_data(*p);

p++;

delay(1);

}

}

//************LCD1602显示欢迎函数1******************

void welcome_1()

{

init_lcd();

lcd1602_display(table1,table2);

delay(200);

}

相关文档
最新文档