小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

1602液晶屏字符串的動態(tài)顯示

 戶外驢行 2012-03-23

//改程序將實現(xiàn)液晶屏字符串的動態(tài)顯示
//程序員:徐茂龍
//完成時間: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有高電平跳至低電平時,開始執(zhí)行指令
}

void Write(uchar msg, bit flag)
{
    Delay(5);
 Busy();           //只有在閑時才能進行讀寫操作
 RS = flag;        //flag的值決定是對數據操作還是對指令進行操作
 RW = 0;           //對操作對像進行寫操作
 E = 0;           //當進行讀寫操作時,E要處于高脈沖,就是說E要從0跳至1狀態(tài)
 _nop_();
 _nop_();       //兩個空操作給硬件一定的反應時間
 E = 1;
 _nop_();
 _nop_();       //兩個空操作給硬件一定的反應時間
 Data = msg;   //將數據送入P0口
 _nop_();
 _nop_();       //兩個空操作給硬件一定的反應時間
 E = 0;         //當E有高電平跳至低電平時,開始執(zhí)行指令
}

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);
}

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多