• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-1  評論-0  文章-1  trackbacks-0
            //LCD0804.h
            #include <reg52.h> 
            #include 
            <string.h> 
            #include 
            <intrins.h> 
            #define uint  unsigned int 
            #define uchar unsigned char 
            #define LCM_DATA P0 
            sbit  LCM_RS  
            =P2^0;
            sbit  LCM_RW  
            =P2^1;
            sbit  LCM_E   
            =P2^2;
             

            //LCD0804.c
            #include "LCM16X2.h"

             

            /*

            ====================================================================

            說    明:由于LCM液晶慢速設備,所以在使用它之前要檢查它是否是處于忙的狀態

                     如果它處于寫忙的狀態時D7是恒為高電平的!所以只需要檢查D7這一位就OK

            函數名稱:IsBusy()

            入口參數:無                      出口參數:無

            設 計 者:                         時    間:2008年8月12日 

            ====================================================================

            */


            void IsBusy()

            {

                     bit busy;

                     
            do

                     
            {

                               LCM_RS
            =0;

                               LCM_RW
            =1;

                               LCM_E
            =1;

                                        LCM_DATA
            =0xff;

                                        busy
            =LCM_DATA&0x80;

                               LCM_E
            =0;

                     }
            while(busy);

            }


            /*

            ====================================================================

            說    明:當對該設備進行操作之前一定要檢查它是否處于忙的狀態

                                RS=1時為數據寄存器,RS=0時為指令寄存器

                                RW=1時為讀操作,    RW=0時為寫操作

            函數名稱:LCM_Write_Com

            入口參數:uchar comm                出口參數:無

            設 計 者:                                   時    間:2008年8月12日

            =====================================================================

            */


            void LCM_Write_Com(uchar comm)

            {

                     IsBusy();

                     LCM_RS
            =0;

                     LCM_RW
            =0;

                     LCM_E
            =1;

                               LCM_DATA
            =comm;

                     LCM_E
            =0;

            }


            /*

            =====================================================================

            說    明:當對該設備進行操作之前要先檢查它是否處于忙的狀態.

            函數名稱:LCM_Write_Data

            入口參數: uchar dat                  出口參數: 無

            設 計 者:                                  時    間:2008年8月12日

            =====================================================================

            */


            void LCM_Write_Data(uchar dat)

            {

                     IsBusy();

                     LCM_RS
            =1;

                     LCM_RW
            =0;

                     LCM_E
            =1;

                               LCM_DATA
            =dat;

                     LCM_E
            =0;

            }


            /*

            =====================================================================

            說    明:需要注意的是:當E使能端從高電平向低電平跳變的時間,執行指令.

                                先給DATA初始化為高電平

            函數名稱:LCM_Read_Data

            入口參數:無                         出口參數: uchar

            設 計 者:                            時    間:2008年8月12日

            =====================================================================

            */


            uchar LCM_Read_Data()

            {

                     uchar result;

                     IsBusy();

                     LCM_DATA
            =0xff;

                     LCM_RS
            =1;

                     LCM_RW
            =1;

                     LCM_E
            =1;

                               result
            =LCM_DATA;

                     LCM_E
            =0;

                     
            return result;

            }


            /*

            =====================================================================

            說    明:因為當設備處于寫的狀態時,D7必須恒為1,

                     第一行的實際寫入地址為80H+XX

                     第二行的實際寫入地址為80H+40H=C0H,   CH+XX

            函數名稱:LCM_Display_Char

            入口參數:uint ,uint ,uchar          出口參數:無

            設 計 者:                                   時    間:2008年8月12日

            =====================================================================

            */


            void LCM_Display_Char(uint row,uint col,uchar m_char)

            {

                     
            if(row==0)

                     
            {

                               LCM_Write_Com(
            0x80+col);

                     }


                     
            else

                     
            {

                               LCM_Write_Com(
            0xc0+col);

                     }


                     LCM_Write_Data(m_char);

            }


            /*

            =====================================================================

            說    明:本函數用于輸出一個字符串

            函數名稱:LCM_Display_String

            入口參數:uint,uint,uchar*          出口參數: 無

            設 計 者:                                   時    間:2008年8月12日 

            =====================================================================

            */


            void LCM_Display_String(uint row,uint col,uchar *m_pStr)

            {

                     uchar m_Length;

                     m_Length
            =strlen(m_pStr);

                     
            while(m_Length)

                     
            {

                               
            if(col>=16)

                               
            {

                                        row
            ++;

                                        col
            =0;

                               }


                               
            if(row>=2)row=0;

                               LCM_Display_Char(row,col,
            *m_pStr);

                               m_pStr
            ++;

                               col
            ++;

                               m_Length
            --;        

                     }


            }


            /*

            =================================================================

            說    明:本函數用于初始化16X2液晶模塊,關于指令請參照說明

            函數名稱:LCM_Init

            入口參數:無                       出口參數:無

            設 計 者:                          時    間:2008年8月12日

            =================================================================

            */


            void LCM_Init()

            {

                     LCM_Write_Com(
            0x38);   

                LCM_Write_Com(
            0x0c);                           

                LCM_Write_Com(
            0x06);                             

                LCM_Write_Com(
            0x01);    

            }


            /*

            =================================================================

            說    明:本函數用于非準確延時

            函數名稱:

            入口參數:uint                  出口參數:無

            設 計 者:                        時    間:2008年8月12日

            =================================================================

            */


            void Delay(uint msecond)

            {

                     
            int i,j;

                     
            for(i=0;i<msecond;i++)

                     
            for(j=0;j<100;j++);

            }


            /*

            =================================================================

            說    明: 主函數 注意在程序剛開始運行時先延時,讓設備就緒

            函數名稱:main

            入口參數:無                  出口參數:int

            設 計 者:                     時    間:2008年8月12日

            =================================================================

            */


            int main()

            {

                     Delay(
            500);

                     LCM_Init();

                     LCM_Display_String(
            0,1,"DG.Boy is a bad boy");

                     
            return 0;

            }

            posted on 2009-03-07 18:19 宇馳 閱讀(105) 評論(0)  編輯 收藏 引用
            久久综合88熟人妻| 天天爽天天狠久久久综合麻豆| 久久久女人与动物群交毛片| 99久久国产精品免费一区二区| 久久婷婷国产剧情内射白浆| 久久久久av无码免费网| 久久精品国产一区| 久久无码精品一区二区三区| 人妻无码精品久久亚瑟影视| 精品久久久无码21p发布| 91性高湖久久久久| 日产精品久久久久久久| 亚洲а∨天堂久久精品| 精品久久久久久无码专区 | 久久偷看各类wc女厕嘘嘘| 久久精品无码一区二区三区日韩| 久久精品一区二区三区AV| 国产免费久久精品丫丫| 国内精品伊人久久久久| 国产精品福利一区二区久久| 综合网日日天干夜夜久久| 国产精品亚洲综合久久| 青青草原综合久久大伊人导航| 久久精品国产精品亚洲艾草网美妙| 欧美日韩中文字幕久久伊人| 东京热TOKYO综合久久精品| 久久精品一区二区| 久久乐国产综合亚洲精品| 久久精品国产2020| AV色综合久久天堂AV色综合在| 久久亚洲精品国产精品| 色综合久久中文色婷婷| 色综合久久无码五十路人妻| 久久精品国产亚洲av影院| 99久久国产综合精品麻豆| 欧美精品九九99久久在观看| 久久99国产精品久久99小说| 久久国产亚洲精品麻豆| 国产精品亚洲综合久久| 久久亚洲色一区二区三区| 99久久精品费精品国产一区二区 |