键盘控制1602液晶显示(单片机)

#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit lcdwr=P2^6;//读写选择端,H/L; sbit lcden=P2^7;//使能端 sbit lcdrs=P2^5;//RS 数据/命令选择端。H/L; sbit key1=P1^4; sbit key2=P1^5; sbit key3=P1^6; sbit key4=P1^7; uchar code table[]="Hello,everyone! "; uchar code table1[]=" I LOVE YOU " ; uchar code table2[]=" 1 2 3 4 5 " ; uchar code table3[]=" exit "; void write_com(uint com);//写入命令函数声明 void write_dat(uchar dat);//写入数据函数声明 void init();//初始化函数声明 void delay(uint z)//在首个调用函数不用函数声明 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);//设置为 110,是用的 12M 晶振计算并测试得出结果为 1ms } void init() { lcden=0;//不仅仅看时序图,注意读写允许操作时,使能端要为 0 lcdwr=0;//因为一直进行写操作,所以,可以一直设置为 0 write_com(0x01);//经试验,可以放在这里。 write_com(0x38);//有液晶数据,初始化步骤 1 write_com(0x0f);//初始化步骤 2,选择为:开显示,显示光标并闪烁 write_com(0x06);//初始化步骤 //write_com(0x01);//清屏指令,如果不清屏,将会有别的乱码影响,可以考虑写在别的位置。 write_com(0x80+0); } void write_com(uint com) { lcdrs=0;//因为一直写命令,所以可以设置为一直为 0 P0=com;//由时序图可知,在使能 en 触发时,早就有数据写入。 delay(5);//并且有一段延时,此处设置为 5 毫秒 lcden=1;//使能端开始拉高 delay(5);//由时序图,使能端拉低一段时间 thD2 后,数据传输完成

lcden=0;//然后将使能端拉低 } void write_dat(uchar dat) { lcdrs=1;//因为在数据写入函数中,一直写的是数据,所以可以一直设置为 1 P0=dat;//由时序图可知,在使能 en 触发时,早就有数据写入。 delay(5);//并且有一段延时,此处设置为 5 毫秒 lcden=1;//使能端开始拉高 delay(5);//由时序图,使能端拉低一段时间 thD2 后,数据传输? lcden=0;//然后将使能端拉低。 } void main() { uint a,b,c,d,e; init();//定义一个初始化函数,个人习惯不在 main 函数中有太多的语句,大量运用函数 调用 while(1) { if(key1==0) {P1=0xfe; for(a=0;a<15;a++) { write_dat(table[a]);//调用数据写入函数 delay(200);//每显示一个用 50ms; } delay(2000); write_com(0x01); } if(key2==0) { P1=0XFD; write_com(0x01);//清屏指令, 如果不清屏, 将会有别的乱码影响,可以考虑写在 别的位置 for(b=0;b<10;b++) { write_dat(table1[b]); delay(200); } delay(2000); write_com(0x01); } if(key3==0) {

P1=0XFb; write_com(0x01);//清屏指令,如果不清屏,将会有别的乱码影响,可以考虑写 在别的位置 for(c=0;c<10;c++) { write_dat(table2[c]); delay(200); } delay(2000); write_com(0x01); } if(key4==0) { write_com(0x01);//清屏指令,如果不清屏,将会有别的乱码影响,可以考虑写 在别的位置 for(e=10;e>0;e--) { for(d=0;d<15;d++) { write_dat(table3[d]); delay(200); } delay(1000); write_com(0x01); delay(2000) ; P1=0XF7; delay(1000); P1=0xff; delay(1000); } } // } while(1);//一直处于显示状态 } 改了


相关文档

键盘控制1602液晶显示
单片机课程设计——利用矩阵键盘来控制1602液晶显示器的显示设计
单片机液晶显示技术入门与提高 用单片机控制液晶显示模块LCD1602
89C51单片机控制的1602液晶显示时间汇编程序
MSP430单片机控制1602液晶显示
最新最详细的单片机课程设计-基于单片机控制的1602液晶显示
51单片机1602移动液晶显示
51单片机控制1602液晶显示程序
单片机设计_按键顺序控制加减计数(1602_液晶显示)_程序
PIC单片机控制LCD1602字符液晶显示程序
电脑版