LCD1602使用步骤
- 初始化
- 写命令
- 写数据
写命令时:RS=L;写数据时:RS=H
写命令操作
- RS=0;
- RW=0;
- P0=需要送的命令
- Delay(5);//延时5ms
- EA=1;//使能
- Delay(5);//延时5ms
- EA=0;//关闭使能
写数据操作
- RS=1;
- RW=0;
- P0=要送的数据
- Delay(5);//延时5ms
- EA=1;//使能
- Delay(5);//延时5ms
- EA=0;//关闭使能
初始化
- 段=0;//关闭数码管的段
- 位=0;//关闭数码管的位
- EA=0;//使能=0
- Delay(15);//延时15ms
- xieminglin(0x38);//写入0x38设置16X2显示,5X7点阵,8位数据接口
- xieminglin(0x01);//显示清0,数据指针清0
- xieminglin(0x06);//写一个字符后,地址指针自动加1
- xieminglin(0x0c);设置开显示,不显示光标
使用时先初始化,再写入命令,再写入数据,第一行的命令是0X80,第二行是0X80+0X40,如果想不从第一个开始显示就用0X80+5这样的格式
代码
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code table[]="LCD1602"; //把你要显示的东西写成数组
- uchar code table1[]="STC89C52";
- sbit shinen=P2^5; //使能
- sbit RS=P1^0; //数据命令选择端
- sbit RW=P1^1; //读或写的选择
- sbit duan=P2^6; //数码管的段
- sbit wei=P2^7; //数码管的位
- uchar num;
- void delay(uint xms) //xms等于几就延迟几毫秒
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=112;j>0;j--);
- }
- void xieminglin(uchar com) //写命令
- {
- RS=0;
- RW=0;
- P0=com;
- delay(5);
- shinen=1;
- delay(5);
- shinen=0;
- }
- void xieshuju(uchar date) //写数据
- {
- RS=1;
- RW=0;
- P0=date;
- delay(5);
- shinen=1;
- delay(5);
- shinen=0;
- }
- void chushihua() //初始化
- {
- duan=0; //关闭数码管的段和位,避免对LCD1602产生影响
- wei=0;
- shinen=0;
- delay(15);
- xieminglin(0x38); //写入0x38设置16X2显示,5X7点阵,8位数据接口
- xieminglin(0x01); //显示清0,数据指针清0
- xieminglin(0x06); //写一个字符后,地址指针自动加1
- xieminglin(0x0c); //设置开显示,不显示光标
- }
- void main()
- {
- chushihua(); //初始化
- xieminglin(0x80); //写入命令,第一行
- for(num=0;num<7;num++) //写入数据,每一位数据之间有延时
- {
- xieshuju(table[num]);
- delay(5);
- }
- xieminglin(0x80+0x40); //写入命令,第二行
- for(num=0;num<8;num++) //写入数据
- {
- xieshuju(table1[num]);
- delay(5);
- }
- while(1);
- }