• <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)  編輯 收藏 引用
            国产精品亚洲美女久久久| 国产亚洲精午夜久久久久久| 狠狠色丁香久久婷婷综合_中| 久久久久久极精品久久久| 亚洲国产小视频精品久久久三级| 中文国产成人精品久久不卡| 久久精品无码午夜福利理论片| 国内精品久久久久久野外| 久久国产综合精品五月天| 人妻丰满AV无码久久不卡| 国产精品丝袜久久久久久不卡 | 久久成人国产精品二三区| 久久久久这里只有精品| 精品久久久久久无码专区不卡| 久久播电影网| 久久精品一区二区| 久久久久亚洲AV无码永不| 久久精品女人天堂AV麻| 久久久久久久综合日本亚洲| 久久国产劲爆AV内射—百度| 久久久久噜噜噜亚洲熟女综合 | 午夜人妻久久久久久久久| 久久久久久亚洲精品不卡| 国产成人无码精品久久久久免费| 久久久久久久亚洲Av无码| 综合久久国产九一剧情麻豆 | 色欲久久久天天天综合网| 久久久久99精品成人片| 伊人久久精品无码av一区| 香蕉aa三级久久毛片| 国产精品免费久久久久久久久| 欧美牲交A欧牲交aⅴ久久| 一本色道久久88—综合亚洲精品 | 亚洲国产成人久久精品动漫| 99久久精品费精品国产一区二区| 久久精品国产男包| 精品国产乱码久久久久久人妻| 欧美成人免费观看久久| AV无码久久久久不卡蜜桃| 香蕉久久夜色精品升级完成| 久久精品亚洲日本波多野结衣 |