• <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)  編輯 收藏 引用
            久久精品国产久精国产果冻传媒| 午夜精品久久久久久久| 亚洲国产精品久久久久婷婷软件 | 久久久久人妻一区精品| 久久久久久国产精品免费免费| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 亚洲国产成人精品91久久久| 亚洲精品乱码久久久久久 | 久久久久人妻精品一区二区三区| 日本精品久久久久中文字幕8| 伊人 久久 精品| 色综合久久最新中文字幕| 18岁日韩内射颜射午夜久久成人| 久久精品国产91久久综合麻豆自制 | 日本高清无卡码一区二区久久| 看久久久久久a级毛片| 久久亚洲高清综合| 成人精品一区二区久久久| 亚洲成色WWW久久网站| 一97日本道伊人久久综合影院| 久久精品国产亚洲综合色| 亚洲乱码精品久久久久..| 久久天天躁狠狠躁夜夜2020一| 国产精品99久久不卡| 欧美综合天天夜夜久久| 激情伊人五月天久久综合| 亚洲国产精品久久久天堂| 97久久婷婷五月综合色d啪蜜芽| 久久影视国产亚洲| 久久www免费人成看国产片| 韩国无遮挡三级久久| 2021精品国产综合久久| 狠狠色婷婷久久一区二区三区| 久久人人爽人人爽人人片AV不| 久久久久亚洲精品日久生情 | 久久久久亚洲AV片无码下载蜜桃| 久久福利资源国产精品999| 中文字幕久久精品| 东方aⅴ免费观看久久av | 国产精品九九久久免费视频 | 精品国产一区二区三区久久|