找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1082|回复: 0
打印 上一主题 下一主题
收起左侧

单片机+1602液晶操作

[复制链接]
跳转到指定楼层
楼主
ID:677732 发表于 2019-12-30 18:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、实验目的
(1)     了解Keil uVision2软件;
(2)     学会使用 STC烧写软件-ISP-v6.85H。
  
  二.实验环境
硬件:(1)学生用微机  
软件:(1)Windows 10操作系统
(2)Keil uVision2
  
  
三、实验内容与步骤
  
  用C语言编程,按S4键实现第一行从屏幕右侧移入“I LOVE YOU!”,每次移动0.5s,然后从屏幕右侧移出。按S5键实现第二行从右侧移入“BUT YOU DONT!”每次移动0.5s,然后从屏幕右侧移出。
  
  四、实验过程与分析
  
  用C语言编程,按S4键实现第一行从屏幕右侧移入“I LOVE YOU!”,每次移动0.5s,然后从屏幕右侧移出。按S5键实现第二行从右侧移入“BUT YOU DONT!”每次移动0.5s,然后从屏幕右侧移出。
  实验代码:
  #include<reg52.h>
  #define uchar unsigned char
  #define uint unsigned int
  uchar code table1[]="I LOVE  YOU!";
  uchar code table2[]="BUT YOU  DONT!";
  sbit lcden=P3^4;  //液晶使能端
  sbit lcdrs=P3^5;  //液晶数据命令选择端
  sbit dula=P2^6;     //申明U1锁存器的锁存端
  sbit wela=P2^7;     //申明U2锁存器的锁存端
  sbit key1=P3^6;
  sbit key2=P3^7;
  uchar code table[]={
  0x3f,0x06,0x5b,0x4f,
  0x66,0x6d,0x7d,0x07,
  0x7f,0x6f,0x77,0x7c,
  0x39,0x5e,0x79,0x71};
  uchar num;
  void delay(uint z)
  {  uint  x,y;
     for(x=z;x>0;x--)
        for(y=110;y>0;y--);
  }
  void write_com(uchar com)
  {  lcdrs=0;
     P0=com;
     delay(5);
     lcden=1;
     delay(5);
     lcden=0;
  }
  void write_data(uchar date)
  {  lcdrs=1;
     P0=date;
     delay(5);
     lcden=1;
     delay(5);
     lcden=0;
  }
  void init()
  {  dula=0;
     wela=0;
     lcden=0;
     write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口
     write_com(0x0c);//设置开显示,不显示光标
     write_com(0x06);//写一个字符后地址指针加1
     write_com(0x01);//显示清零,数据指针清零
  }
  void main()
  {  init();
     while(1)
     {if(key1==0)
     {delay(10);
     if(key1==0)
     {write_com(0x80+0x10);
     for(num=0;num<11;num++)
     {write_data(table1[num]);
        delay(5);
     }
     for(num=0;num<16;num++)
     {write_com(0x18);
      delay(200);
     }
     delay(1000);
        for(num=0;num<16;num++)
     {
        write_com(0x1C);
        delay(200);
     }
     delay(1000);
     write_com(0x01);
     while(!key1);
  }}
     if(key2==0)
     {delay(10);
     if(key2==0)
     {write_com(0x80+0x50);
     for(num=0;num<13;num++)
     {write_data(table2[num]);
     delay(5);
     }
     for(num=0;num<16;num++)
     {  write_com(0x18);
        delay(200);
     }
     delay(1000);
        for(num=0;num<16;num++)
     {write_com(0x1C);
        delay(200);
     }
        while(!key2);
     }}
     }
     while(1);
  }

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表