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

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

    • 分享

      LCD1602的滾動(dòng)顯示

       lijumiao 2014-04-11
      **************************************LCD1602頭文件*********************************/
      #ifndef _LCD1602_H_
      #define _LCD1602_H_

      //輸入方式設(shè)置
      #define LCD_AC_AUTO_INCREMENT     0x06   //數(shù)據(jù)讀、寫操作后,AC自動(dòng)增一
      #define LCD_AC_AUTO_DECREASE      0x04   //數(shù)據(jù)讀、寫操作后,AC自動(dòng)減一
      #define LCD_MOVE_ENABLE           0x05   //數(shù)據(jù)讀、寫操作,畫面平移
      #define LCD_MOVE_DISENABLE        0x04   //數(shù)據(jù)讀、寫操作,畫面不動(dòng)
      #define LCD_GO_HOME               0x02   //AC=0,光標(biāo)、畫面回HOME位
      //設(shè)置顯示、光標(biāo)及閃爍開、關(guān)
      #define LCD_DISPLAY_ON            0x0C         //顯示開
      #define LCD_DISPLAY_OFF           0x08         //顯示關(guān)
      #define LCD_CURSOR_ON             0x0A         //光標(biāo)顯示
      #define LCD_CURSOR_OFF            0x08         //光標(biāo)不顯示
      #define LCD_CURSOR_BLINK_ON       0x09         //光標(biāo)閃爍
      #define LCD_CURSOR_BLINK_OFF      0x08         //光標(biāo)不閃爍
      //光標(biāo)、畫面移動(dòng),不影響DDRAM
      #define LCD_LEFT_MOVE             0x18         //LCD顯示左移一位
      #define LCD_RIGHT_MOVE            0x1C         //LCD顯示右移一位
      #define LCD_CURSOR_LEFT_MOVE      0x10         //光標(biāo)左移一位
      #define LCD_CURSOR_RIGHT_MOVE     0x14         //光標(biāo)右移一位
      //工作方式設(shè)置
      #define LCD_DISPLAY_DOUBLE_LINE   0x38         //兩行顯示
      #define LCD_DISPLAY_SINGLE_LINE   0x30         //單行顯示
      #define LCD_CLEAR_SCREEN  0X01   //清屏
      /***********************LCD1602地址相關(guān)******************************/
      #define LINE1_HEAD    0x80   // 第一行DDRAM起始地址
      #define LINE2_HEAD    0xc0   //  第二行DDRAM起始地址
      #define LINE1         0      //第一行
      #define LINE2         1      //第二行
      #define LINE_LENGTH   16     //每行的最大字符長度
      /***********************LCD1602接線引腳定義**************************/
      #define LCDIO     P2         //定義P2口與LCD1602的數(shù)據(jù)口相接
        sbit   LCD_RS=P1^4;        
        sbit   LCD_RW=P1^3;        
        sbit   LCD_EN=P1^2;
        sbit  LCD_BUSY=LCDIO^7;
       /**********************另外相關(guān)的定*********************************/
       #define HIGH               1
       #define LOW                0  
       #define TURE               1
       #define  FALSE             0
       #define  uchar unsigned char
       #define  uint  unsigned int
       
       /*************************以下是函數(shù)的申明部*************************/
       void LCD_init(void);                    //LCD1602初始化
       void LCD_send_command(uchar command);   //
       void LCD_send_data(uchar dat);
       void LCD_write_char(uchar x,uchar y,uchar dat);
       void LCD_disp_string(uchar x,uchar y,char *Data);
       void delay_ms(uint n);
       void LCD_check_busy(void);
       #endif
       /******************************************************************
      /#include <reg51.h>
      #include "LCD1602.h"
      /*******************主函數(shù)**********************************/
      uchar string[]="     I LOVE YOU! ";            //這里是要顯示的字符
      void main(void)
      {
       uchar *cp;
       cp=string;
       LCD_init();
       while(1)
       {
        LCD_send_command(LCD_CLEAR_SCREEN);
        delay_ms(2);
        LCD_disp_string(0,1,cp);
        delay_ms(100);
               cp++;
        if(*cp==''\0'')
        {
         cp=string;                 //到達(dá)字符的尾部時(shí),改變指針,重新指向字符串的頭部
        }
       }
      }
      /*********************************************************/
      /**************LCD1602的初始化***************************/
      void LCD_init(void)
      {
       LCD_send_command(LCD_DISPLAY_DOUBLE_LINE);
       LCD_send_command(LCD_AC_AUTO_INCREMENT LCD_MOVE_DISENABLE);
       LCD_send_command(LCD_DISPLAY_ON LCD_CURSOR_OFF);
       LCD_send_command(LCD_CLEAR_SCREEN);
      }
      /********************************************************/
       
      void LCD_check_busy(void)   //檢測LCD狀態(tài),看它是不是還在忙呢
      {
       do
        {
         LCD_EN=0;
         LCD_RS=0;
         LCD_RW=1;
         LCDIO=0xff;
         LCD_EN=1;
         }
         while(LCD_BUSY==1);
       
          LCD_EN=0;
      }
      /************LCD1602寫命令*******************************/
      void LCD_send_command(uchar command)
      {
       LCD_check_busy();
       LCD_RS=LOW;
       LCD_RW=LOW;
       LCD_EN=HIGH;
       LCDIO=command;
       LCD_EN=LOW;
      }
      /********************************************************/
      /*****************LCD1602寫數(shù)據(jù)**************************/
      void LCD_send_data(uchar dat)
      {
       LCD_check_busy();
       LCD_RS=HIGH;
       LCD_RW=LOW;
       LCD_EN=HIGH;
       LCDIO=dat;
       LCD_EN=LOW;
      }
      /********************************************************
       void LCD_write_char(uchar x,uchar y,uchar dat)
      {
           unsigned char address;
           if (y == LINE1)
               address = LINE1_HEAD + x;
           else
              address = LINE2_HEAD + x;
           LCD_send_command(address);
          LCD_send_data(dat);
      }
      ******************LCD1602顯示字符串*********************/
      void LCD_disp_string(uchar x,uchar y,uchar *Data)
      {
       if(y==LINE1)
       {
        if(x<LINE_LENGTH)
        {
         LCD_send_command(LINE1_HEAD+x);
         for(;x<LINE_LENGTH&&*Data!=''\0'';x++)
         {
          LCD_send_data(*(Data++));
         }
         if(*Data!=''\0'')
         {
          x=0;
          y=LINE2;
         }
        }
       }
       if(y==LINE2)
       {
        LCD_send_command(LINE2_HEAD+x);
        for(;x<LINE_LENGTH&&*Data!=''\0'';x++)
        {
         LCD_send_data(*(Data++));
        }
       }
      }
      /****************************************************************/
      /********************延時(shí)函數(shù)***********************************/
       
      /***************************************************************/
      void delay_ms(uint n)
      {
       uint i,j;
       for(i=n;i>0;i--)
          for(j=0;j<1140;j++)
          ;
      }
      /*********************************************************************/ 

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多