分享

1602液晶屏字符串的动态显示

 户外驴行 2012-03-23

//改程序将实现液晶屏字符串的动态显示
//程序员:徐茂龙
//完成时间:2012.03.23

#include <reg52.h>
#include <stdio.h>
#include <intrins.h>

#define uchar unsigned char
#define Data P0


//管脚定义
sbit WEI = P2^7;
sbit DUAN = P2^6;
sbit RS = P2^1;
sbit RW = P1^5;
sbit E = P1^6;
sbit BF = P0^7;

//用到的函数声明
void Delay(uchar);      //延时函数
void Init();            //初始化函数
void Write(uchar, bit);  //写入指令/数据函数
void Busy();            //忙时检测函数
void Display(uchar);         //打印函数

uchar code string[] = {"I love WangLele!"};

void main()
{
    uchar i, j;
    //关闭数码管
    Data = 0x0;
 WEI = 1;
 WEI = 0;
 Data = 0xff;
 DUAN = 1;
 DUAN = 0;
    Init();
 Display(0x0);     //从第一行第一个字符开始
 while(1)
 {
     i = 0;      //每检测完一次,就给i清零
     while(string[i] != '\0')
  {
      Write(string[i], 1);
      i ++;
   for(j = 5; j > 0; j --)
          Delay(150);   
  }
  for(j = 20; j > 0; j --)         //没显示完一遍,停顿2s
      Delay(200);
 }
}


void Delay(uchar i)
{
    uchar j;
 for(; i > 0; i --)
     for(j = 155; j > 0; j --);
}

void Busy()
{
    Delay(5);
 RS = 0;         //RS = 0; RW = 1;表示读取指令
 RW = 1;
 E = 1;         //只有当E = 1时才能进行读写操作
 _nop_();
 _nop_();       //两个空操作给硬件一定反应时间
 while(BF);     //忙时检测
 _nop_();
 _nop_();       //两个空操作给硬件一定的反应时间
 E = 0;         //当E有高电平跳至低电平时,开始执行指令
}

void Write(uchar msg, bit flag)
{
    Delay(5);
 Busy();           //只有在闲时才能进行读写操作
 RS = flag;        //flag的值决定是对数据操作还是对指令进行操作
 RW = 0;           //对操作对像进行写操作
 E = 0;           //当进行读写操作时,E要处于高脉冲,就是说E要从0跳至1状态
 _nop_();
 _nop_();       //两个空操作给硬件一定的反应时间
 E = 1;
 _nop_();
 _nop_();       //两个空操作给硬件一定的反应时间
 Data = msg;   //将数据送入P0口
 _nop_();
 _nop_();       //两个空操作给硬件一定的反应时间
 E = 0;         //当E有高电平跳至低电平时,开始执行指令
}

void Init()
{
    Delay(15);      //第一次操作时,稍微延时长一点
 Write(0x01, 0);   //清平指令
 Delay(5);
 Write(0x07, 0);       //【输入方式设置命令】光标从左向右移动,内容也移动
 Delay(5);
 Write(0x0c, 0);   //【显示开关控制指令】显示开,光标不显示,字符不闪烁
 Delay(5);
 Write(0x34, 0);   //【功能设置命令】8位数据,单行显示,5*7点阵
 Delay(5);
}

void Display(uchar addr)
{
    Write((addr | 0x80), 0);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多