LCD1602字符测试显示程序与仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); }