• <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 宇馳 閱讀(94) 評論(0)  編輯 收藏 引用
            女人高潮久久久叫人喷水| 久久久久99精品成人片试看| 亚洲国产日韩综合久久精品| 久久久久久午夜成人影院| 亚洲第一极品精品无码久久 | 免费精品久久久久久中文字幕| 久久精品国产只有精品2020| 国内精品久久人妻互换| 国产亚洲欧美精品久久久| 国产精品美女久久久久| 久久这里只有精品首页| 亚洲欧美精品一区久久中文字幕| 久久久久亚洲av毛片大| 久久久久久精品无码人妻| www.久久热.com| 久久人人爽人人爽人人片AV高清 | 久久久精品国产免大香伊| 亚洲国产另类久久久精品 | 亚洲一区精品伊人久久伊人| 99久久国产综合精品女同图片| 色综合久久久久| 久久人人爽人人爽人人片AV不 | 久久久噜噜噜久久中文字幕色伊伊| 无码国内精品久久人妻麻豆按摩| 精品国产乱码久久久久久1区2区 | 日韩精品久久久久久久电影| 久久久久久久97| 亚洲人成网站999久久久综合 | 亚洲精品乱码久久久久久| 18岁日韩内射颜射午夜久久成人| 狠狠精品久久久无码中文字幕 | 一本色道久久综合狠狠躁篇| 精品午夜久久福利大片| 久久综合亚洲色HEZYO社区| 午夜精品久久久久久影视riav| 精品久久香蕉国产线看观看亚洲| 久久久国产视频| 亚洲人成无码久久电影网站| 热99re久久国超精品首页| 久久国产亚洲高清观看| 99久久精品国产一区二区|