/单片机lcd1602液晶显示/
#include"reg52.h"
#define u8 unsigned char //定义变量数据类型
#define u16 unsigned int
sbit rs=P2^6;//写数据/命令Io口
sbit wr=P2^5;//读/写操作IO口
sbit lcd_en=P2^7;//lcd使能端
u16 i,j;
u8 num;
u8 code table1[]=“If you want”;//用数组存放字符串(别漏掉双引号)
u8 code table2[]=“Just do it!!”;//若是单个字符则用单引号
void delay(u16);//ms级延时函数声明
void write_com(u8 com);//lcd写命令函数声明
void write_data(u8);//lcd写数据函数声明
void lcd_init();//lcd初始化函数声明
void main()//主函数
{
lcd_init();//lcd初始化
for(num=0;num<11;num++)//有多少个字符,就循环几次
{
write_data(table1[num]);//依次显示数组1中的字符
delay(300);//延时
}
write_com(0X80+0X40);//0X80+0X40为第二行的数据地址,表示下面的字符串显示在第二行
for(num=0;num<12;num++)//有多少个字符,就循环几次
{
write_data(table2[num]);//依次显示数组1中的字符
delay(300);
}
while(1);//程序在这停止
}
void write_com(u8 com)//lcd写命令函数
{
rs=0;//数据命令选择端,写命令时为0
wr=0;//读/写选择端,写数据时为0
lcd_en=0;//低电平时写入数据
P0=com;//将com写进P0中
lcd_en=1;//关闭使能端
delay(5);//延时
lcd_en=0;
}
void write_data(u8 dat)//lcd写数据函数
{
rs=1;//数据命令选择端,写数据时为0
wr=0;//读/写选择端,写数据时为0
lcd_en=0;
P0=dat;//将要写的数据发送到数据总线上
lcd_en=1;
delay(5);
lcd_en=0;
}
void lcd_init()//lcd初始化函数
{
write_com(0X38);//显示模式设置,设置为16x2显示
write_com(0X08);//显示关闭
write_com(0X01);//显示清屏(即数据指针清零,所有显示清零)
write_com(0X06);//显示光标移动设置,即写一个字符后地址指针自动加1,且光标加1
write_com(0X0F);//显示开启和光标设置(即开显示,显示光标,把光标设置为闪烁)
}
void delay(u16 x)//ms延时函数
{
for(i=x;i>0;i–)
{
for(j=120;j>0;j–);
}
}
(详细注释)单片机lcd1602液晶显示
最新推荐文章于 2024-07-24 12:48:21 发布