• <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)  編輯 收藏 引用
            久久亚洲国产成人精品性色| 久久婷婷久久一区二区三区| 国产成人精品久久| 色欲久久久天天天综合网精品| 日韩精品久久久久久| 日韩精品久久久久久久电影蜜臀 | 亚洲成色WWW久久网站| 亚洲国产精品无码久久久蜜芽| 一本大道久久a久久精品综合| 色婷婷久久综合中文久久一本| 久久精品国产色蜜蜜麻豆| 久久久精品免费国产四虎| 久久久久久伊人高潮影院| 久久www免费人成看国产片| 久久综合给合久久狠狠狠97色| 国产伊人久久| 久久免费视频观看| 久久亚洲欧美国产精品 | 午夜精品久久久久久| 男女久久久国产一区二区三区| 亚洲精品高清一二区久久| 91精品国产乱码久久久久久| 久久亚洲精品无码aⅴ大香| 久久精品亚洲男人的天堂| 精品免费tv久久久久久久| 亚洲乱码中文字幕久久孕妇黑人 | 麻豆精品久久久久久久99蜜桃| 国产精品va久久久久久久| 精品午夜久久福利大片| 粉嫩小泬无遮挡久久久久久| 亚洲中文字幕久久精品无码喷水| 久久露脸国产精品| 久久国产精品免费一区| 久久99精品久久久久久水蜜桃| 国产精品久久久天天影视| 国产精品一久久香蕉国产线看观看 | …久久精品99久久香蕉国产| 欧美日韩精品久久免费| 国内精品伊人久久久久777| 亚洲精品乱码久久久久久久久久久久| 久久九色综合九色99伊人|