1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 使用的是51+1602液晶,就是插上點陣后發現液晶就顯示不出相應的數字了,求大佬指點... [打印本頁]

作者: 鄒meng    時間: 2018-7-20 08:52
標題: 使用的是51+1602液晶,就是插上點陣后發現液晶就顯示不出相應的數字了,求大佬指點...

        #include <reg52.h>
        typedef unsigned char uchar8;
        typedef unsigned int  uint16;
        uchar8 code TAB1[] = "l do what l do";
        uchar8 code TAB2[] = "1711";
       
        sbit RS = P3^5;           //數據or命令選擇端(H/L)
        sbit RW = P3^4;           //讀/寫選擇端(H/L)
        sbit EN = P3^3;           //使能信號(電平)
        sbit BIT_ = P1^6;
        sbit SEG_ = P1^7;

        void DelayMS(uint16 val)
        {
                uint16 i, j;
                for(i = 0; i < val; i++)
                        for(j = 0; j < 113; j++);
        }
       
        /*************************************
        *函數名稱:DectectBusyBit()
        *函數功能:檢測狀態標志位(忙or閑)
        ***************************************/
        void DectectBusyBit(void)
        {
                P0 = 0xff;                         //讀取狀態值時,先賦高電平
                RS = 0;
                RW = 1;
                EN = 1;
                DelayMS(1);
                while(P0 & 0x80);         //若LCD忙,則停止在這里,否則走起
                EN = 0;                            //之后將EN初始化為低電平
        }
         
         /****************************************
         *函數名稱:WrComLCD()
         *函數功能:為LCD寫指令
         *入口參數:指令(ComVal)
         *****************************************/
         void WrComLCD(uchar8 ComVal)
         {
                 DectectBusyBit();
                RS = 0;
                RW = 0;
                EN = 1;
                P0 = ComVal;
                DelayMS(1);
                EN = 0;
         }
         /*******************************************
         *函數名稱:WrDatLCD()
         *函數功能:為LCD寫數據
         *入口參數: 數據(DatVal)
         ********************************************/
         void WrDatLCD(uchar8 DatVal)
         {
                 DectectBusyBit();
                RS = 1;
                RW = 0;
                EN = 1;
                P0 = DatVal;
                DelayMS(1);
                EN = 0;
         }
         /******************************************
         *函數名稱:LCD_Init()
         *函數功能:初始化LCD
         *******************************************/
         void LCD_Init(void)
         {
                 WrComLCD(0x38);
                DelayMS(1);
                WrComLCD(0x38);
                WrComLCD(0x01);
                WrComLCD(0x06);
                DelayMS(1);
                WrComLCD(0x0c);

         }
         void main(void)
         {
                 uchar8 ucval;
                SEG_ = 1;
                P0 = 0x00;
                SEG_ = 0;
                BIT_ = 1;
                P0 = 0xff;
                BIT_ = 0;
                LCD_Init();
                DelayMS(5);
                WrComLCD(0x80);
                while(TAB1[ucval] != '\0')
                {
                        WrDatLCD(TAB1[ucval]);
                        ucval++;
                }
                ucval = 0;
                WrComLCD(0xc0);
                while(TAB2[ucval] != '\0')
                {
                        WrDatLCD(TAB2[ucval]);
                        ucval++;
                }
                while(1);
         }






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1