乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       戶外驢行 2012-03-23

      //改程序?qū)?shí)現(xiàn)液晶屏字符串的動(dòng)態(tài)顯示
      //程序員:徐茂龍
      //完成時(shí)間: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;

      //用到的函數(shù)聲明
      void Delay(uchar);      //延時(shí)函數(shù)
      void Init();            //初始化函數(shù)
      void Write(uchar, bit);  //寫入指令/數(shù)據(jù)函數(shù)
      void Busy();            //忙時(shí)檢測函數(shù)
      void Display(uchar);         //打印函數(shù)

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

      void main()
      {
          uchar i, j;
          //關(guān)閉數(shù)碼管
          Data = 0x0;
       WEI = 1;
       WEI = 0;
       Data = 0xff;
       DUAN = 1;
       DUAN = 0;
          Init();
       Display(0x0);     //從第一行第一個(gè)字符開始
       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;         //只有當(dāng)E = 1時(shí)才能進(jìn)行讀寫操作
       _nop_();
       _nop_();       //兩個(gè)空操作給硬件一定反應(yīng)時(shí)間
       while(BF);     //忙時(shí)檢測
       _nop_();
       _nop_();       //兩個(gè)空操作給硬件一定的反應(yīng)時(shí)間
       E = 0;         //當(dāng)E有高電平跳至低電平時(shí),開始執(zhí)行指令
      }

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

      void Init()
      {
          Delay(15);      //第一次操作時(shí),稍微延時(shí)長一點(diǎn)
       Write(0x01, 0);   //清平指令
       Delay(5);
       Write(0x07, 0);       //【輸入方式設(shè)置命令】光標(biāo)從左向右移動(dòng),內(nèi)容也移動(dòng)
       Delay(5);
       Write(0x0c, 0);   //【顯示開關(guān)控制指令】顯示開,光標(biāo)不顯示,字符不閃爍
       Delay(5);
       Write(0x34, 0);   //【功能設(shè)置命令】8位數(shù)據(jù),單行顯示,5*7點(diǎn)陣
       Delay(5);
      }

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多