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

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

    • 分享

      兩天的時(shí)間終于有點(diǎn)眉目了

       戶外驢行 2012-03-22
      以下是液晶屏的工作原理及其編程
      下面是一個(gè)簡單的字符顯示程序
      //改程序?qū)?shí)現(xiàn)簡單的靜態(tài)數(shù)據(jù)
       
       
       
       
      //注意:
      //每次進(jìn)行讀寫操作之前,必須進(jìn)行讀寫檢測
      #include <reg52.h>
      #include <intrins.h>          //包含了空操作_nop_
      #define uchar unsigned char
      #define Data P0
      //管腳的聲明
      sbit RS = P2^1;
      sbit RW = P1^5;
      sbit E = P1^6;
      //用到的函數(shù)聲明
      void Delay(uchar);          //延時(shí)函數(shù)
      void Init();                //初始化函數(shù)
      void Busy();               //忙時(shí)檢測
      void WriteCommand(uchar);   //寫指令
      void WriteData(uchar);      //寫數(shù)據(jù)
      void Display(uchar);             //顯示信息
       

      void main()
      {
          Init();
       Display(0x04);        //將顯示地址指定為第一行第五列
                             //顯示Apple
       WriteData('A');
       WriteData('p');
       WriteData('p');
       WriteData('l');
       WriteData('e');
       while(1);
      }
      void Delay(uchar i)
      {
          uchar j;
       for(; i > 0; i --)
           for(j = 155; j > 0; j --);    //最少延時(shí)1ms
      }

      void Busy()
      {
          Data = 0xff;
       RS = 0;        //根據(jù)規(guī)定:RS = 0, RW = 1可讀取狀態(tài)
       RW = 1;
       E = 1;      //允許讀寫
       _nop_();
       _nop_();
       _nop_();    //空操作三個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
       //進(jìn)行忙時(shí)檢測
       while(Data & 0x80);   //檢測到忙時(shí),繼續(xù)檢測【Data&0x80 = 1表示忙】
          E = 0;
      }
      //寫命令函數(shù)
      void WriteCommand(uchar i)
      {
          Delay(5);     //操作前進(jìn)行短暫的延時(shí)
       Busy();       //在閑時(shí)才能寫指令
       RS = 0;      //根據(jù)規(guī)定,RS = 0; RW = 0;才能寫入指令
       RW = 0;
       E = 0;       //寫指令時(shí),E應(yīng)為高脈沖,就是讓E從0到1發(fā)生整跳變,所以在這給E制0
       _nop_();
       _nop_();     //兩個(gè)空操作給硬件一定的反映時(shí)間
       Data = i;    //寫指令
       _nop_();
       _nop_();
       _nop_();
       E = 1;       //E制高電平
       _nop_();
       _nop_();
       _nop_();
       E = 0;        //當(dāng)E從高電平變?yōu)榈碗娖綍r(shí),液晶模塊開始執(zhí)行指令
      }
      //寫數(shù)據(jù)函數(shù)
      void WriteData(uchar j)
      {
          Delay(5);        //操作前進(jìn)行短暫的延時(shí)
       Busy();        //閑時(shí)檢測
       RS = 1;        //根據(jù)規(guī)定:RS = 1;RW = 0才能寫入數(shù)據(jù)
       RW = 0;
       E = 0;          //在寫指令/數(shù)據(jù)時(shí),E應(yīng)為高脈沖,也就是要讓E從0到1發(fā)生跳變,所以在這里給E賦0
       _nop_();
       _nop_();     //兩個(gè)空操作給硬件一定的反映時(shí)間
       Data = j;    //寫指令
       _nop_();
       _nop_();
       _nop_();
       E = 1;       //E制高電平
       _nop_();
       _nop_();
       _nop_();
       E = 0;        //當(dāng)E從高電平變?yōu)榈碗娖綍r(shí),液晶模塊開始執(zhí)行指令
      }

      void Init()
      {
          Delay(15);         //延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長的反應(yīng)時(shí)間
       WriteCommand(0x01);   //【清屏設(shè)置】
       Delay(5);          //延時(shí)5ms
          WriteCommand(0x06);   //【輸入方式設(shè)置】光標(biāo)從左向右移動(dòng),內(nèi)容不移動(dòng)
       Delay(5);          //延時(shí)5ms
       WriteCommand(0x0f);   //【顯示開關(guān)設(shè)置】顯示開,有光標(biāo),字符閃爍
       Delay(5);          //延時(shí)5ms
       WriteCommand(0x38);   //【功能設(shè)置命令】8位數(shù)據(jù),雙行顯示,選擇5*7點(diǎn)陣
       Delay(5);          //延時(shí)5ms
      }
      void Display(uchar addr)
      {
          addr += 0x80;           //第一行顯示地址的確定方法
          WriteCommand(addr);
      }

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(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ā)表

        請遵守用戶 評論公約

        類似文章 更多