51单片机LCD1602的使用方法

LCD1602使用步骤

  1. 初始化
  2. 写命令
  3. 写数据

写命令时:RS=L;写数据时:RS=H

写命令操作

  1. RS=0;
  2. RW=0;
  3. P0=需要送的命令
  4. Delay(5);//延时5ms
  5. EA=1;//使能
  6. Delay(5);//延时5ms
  7. EA=0;//关闭使能

写数据操作

  1. RS=1;
  2. RW=0;
  3. P0=要送的数据
  4. Delay(5);//延时5ms
  5. EA=1;//使能
  6. Delay(5);//延时5ms
  7. EA=0;//关闭使能

初始化

  1. 段=0;//关闭数码管的段
  2. 位=0;//关闭数码管的位
  3. EA=0;//使能=0
  4. Delay(15);//延时15ms
  5. xieminglin(0x38);//写入0x38设置16X2显示,5X7点阵,8位数据接口
  6. xieminglin(0x01);//显示清0,数据指针清0
  7. xieminglin(0x06);//写一个字符后,地址指针自动加1
  8. xieminglin(0x0c);设置开显示,不显示光标

使用时先初始化,再写入命令,再写入数据,第一行的命令是0X80,第二行是0X80+0X40,如果想不从第一个开始显示就用0X80+5这样的格式

代码

  1. #include<reg52.h>  
  2. #define uint unsigned int  
  3. #define uchar unsigned char  
  4. uchar code table[]="LCD1602";  //把你要显示的东西写成数组  
  5. uchar code table1[]="STC89C52";  
  6. sbit shinen=P2^5;             //使能  
  7. sbit RS=P1^0;                 //数据命令选择端  
  8. sbit RW=P1^1;                 //读或写的选择  
  9. sbit duan=P2^6;               //数码管的段  
  10. sbit wei=P2^7;                //数码管的位  
  11. uchar num;  
  12. void delay(uint xms)          //xms等于几就延迟几毫秒  
  13. {  
  14.     uint i,j;  
  15.     for(i=xms;i>0;i--)  
  16.         for(j=112;j>0;j--);  
  17. }  
  18. void xieminglin(uchar com)    //写命令  
  19. {  
  20.     RS=0;  
  21.     RW=0;  
  22.     P0=com;  
  23.     delay(5);  
  24.     shinen=1;  
  25.     delay(5);  
  26.     shinen=0;  
  27. }  
  28. void xieshuju(uchar date)     //写数据  
  29. {  
  30.     RS=1;  
  31.     RW=0;  
  32.     P0=date;  
  33.     delay(5);  
  34.     shinen=1;  
  35.     delay(5);  
  36.     shinen=0;  
  37. }  
  38. void chushihua()                  //初始化  
  39. {  
  40.       
  41.     duan=0;         //关闭数码管的段和位,避免对LCD1602产生影响  
  42.     wei=0;  
  43.     shinen=0;  
  44.     delay(15);  
  45.     xieminglin(0x38);   //写入0x38设置16X2显示,5X7点阵,8位数据接口  
  46.     xieminglin(0x01);   //显示清0,数据指针清0  
  47.     xieminglin(0x06);   //写一个字符后,地址指针自动加1  
  48.     xieminglin(0x0c);   //设置开显示,不显示光标  
  49. }  
  50. void main()  
  51. {  
  52.     chushihua();          //初始化  
  53.     xieminglin(0x80);         //写入命令,第一行  
  54.     for(num=0;num<7;num++)     //写入数据,每一位数据之间有延时  
  55.     {  
  56.         xieshuju(table[num]);  
  57.         delay(5);  
  58.     }  
  59.     xieminglin(0x80+0x40);    //写入命令,第二行  
  60.     for(num=0;num<8;num++)      //写入数据  
  61.     {  
  62.         xieshuju(table1[num]);  
  63.         delay(5);  
  64.     }  
  65.     while(1);  
  66. }  

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值