婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

單片機c51驅動1602A液晶屏的驅動實驗

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011-5-14
所需硬件:   1.單片機實驗開發板A
            2.杜邦頭插線
            3.16x2液晶顯示字符模塊
            4.STC89C51RC單片機
所需軟件:   1. Keil C51 V8.08或Keil_uv3 綠色版本
            2.STC單片機ISP下載編程軟件


        1602A液晶屏連接圖
C語言源程序
/******************************************************************
** 1602A液晶屏驅動程序
** 晶 振  頻 率:11.0592M
** 線路->單片機實驗開發板A
******************************************************************/
    #include  
    #define uchar unsigned char
    #define uint unsigned int

    sbit LCM_E=P3^5;  //定義接口
    sbit LCM_RW=P3^6;
    sbit LCM_RS=P3^7;

    #define LCM_Data P1//數據接口

    void LCM_WriteData(uchar WDLCM);
    void LCM_WriteCommand(uchar WCLCM,BuysC);
    uchar LCM_ReadData(void);
    uchar LCM_ReadStatus(void);
    void LCM_Init(void);
    void DisplayOneChar(uchar X, uchar Y, uchar DData);
    void DisplayListChar(uchar X, uchar Y, uchar code *DData);
    void Delay5Ms(void);
    void Delay400Ms(void);

    uchar code uctech[] = {"1602A"};
    uchar code net[] = {"www.52c51.com"};

    void main(void)
    {
        Delay400Ms(); //啟動等待,等LCM講入工作狀態
        LCM_Init(); //LCM初始化
        Delay5Ms(); //延時片刻(可不要)

        DisplayListChar(6, 1, uctech);   
        DisplayListChar(0, 0, net);
        LCM_ReadData();//測試用句無意義
        LCM_Data=255;
        while(1);
    }

/****************************1602A寫數據函數**************************/
/*函數原型:void LCM_WriteData(uchar WDLCM)
/*函數功能:1602A寫數據
/*輸入參數:要寫入的數據
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    void LCM_WriteData(uchar WDLCM)
    {
        LCM_ReadStatus(); //檢測忙
        LCM_Data = WDLCM;
        LCM_RS = 1;
        LCM_RW = 0;
        LCM_E = 0; //若晶振速度太高可以在這后加小的延時
        LCM_E = 0; //延時
        LCM_E = 1;
    }

/****************************1602A寫指令函數**************************/
/*函數原型:void LCM_WriteCommand(uchar WCLCM,BuysC)
/*函數功能:1602A寫指令
/*輸入參數:要寫入的指令
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    void LCM_WriteCommand(uchar WCLCM,BuysC) //BuysC為0時忽略忙檢測
    {
        if (BuysC) LCM_ReadStatus(); //根據需要檢測忙
        LCM_Data = WCLCM;
        LCM_RS = 0;
        LCM_RW = 0;
        LCM_E = 0;
        LCM_E = 0;
        LCM_E = 1;
    }

/****************************1602A讀數據函數**************************/
/*函數原型:uchar LCM_ReadData(void)
/*函數功能:1602A讀數據
/*輸入參數:無
/*輸出參數:1602A返回的數據
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    uchar LCM_ReadData(void)
    {
        LCM_RS = 1;
        LCM_RW = 1;
        LCM_E = 0;
        LCM_E = 0;
        LCM_E = 1;
        return(LCM_Data);
    }

/****************************1602A讀狀態函數**************************/
/*函數原型:uchar LCM_ReadData(void)
/*函數功能:1602A讀狀態
/*輸入參數:無
/*輸出參數:1602A返回的狀態
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    uchar LCM_ReadStatus(void)
    {
        LCM_Data = 0xFF;
        LCM_RS = 0;
        LCM_RW = 1;
        LCM_E = 0;
        LCM_E = 0;
        LCM_E = 1;
        while (LCM_Data & 0x80); //檢測忙信號
        return(LCM_Data);
    }

/****************************1602A初始化函數**************************/
/*函數原型:void LCM_Init(void)
/*函數功能:1602A初始化
/*輸入參數:無
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    void LCM_Init(void)
    {
        LCM_Data = 0;
        LCM_WriteCommand(0x38,0); //三次顯示模式設置,不檢測忙信號
        Delay5Ms();
        LCM_WriteCommand(0x38,0);
        Delay5Ms();
        LCM_WriteCommand(0x38,0);
        Delay5Ms();

        LCM_WriteCommand(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
        LCM_WriteCommand(0x08,1); //關閉顯示
        LCM_WriteCommand(0x01,1); //顯示清屏
        LCM_WriteCommand(0x06,1); // 顯示光標移動設置
        LCM_WriteCommand(0x0C,1); // 顯示開及光標設置
    }

/******************1602A按指定位置顯示一個字符函數**********************/
/*函數原型:void DisplayOneChar(uchar X, uchar Y, uchar DData)
/*函數功能:1602A按指定位置顯示一個字符
/*輸入參數:X坐標 Y坐標 要顯示的字符
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    void DisplayOneChar(uchar X, uchar Y, uchar DData)
    {
        Y &= 0x1;
        X &= 0xF; //限制X不能大于15,Y不能大于1
        if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
        X |= 0x80; // 算出指令碼
        LCM_WriteCommand(X, 0); //這里不檢測忙信號,發送地址碼
        LCM_WriteData(DData);
    }

/*******************1602A按指定位置顯示一串字符函數*********************/
/*函數原型:void DisplayListChar(uchar X, uchar Y, uchar code *DData)
/*函數功能:1602A按指定位置顯示一個字符
/*輸入參數:X坐標 Y坐標 要顯示字符串的首地址
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    void DisplayListChar(uchar X, uchar Y, uchar code *DData)
    {
        uchar ListLength;
        ListLength = 0;
        Y &= 0x1;
        X &= 0xF; //限制X不能大于15,Y不能大于1
        while (DData[ListLength]>0x20) //若到達字串尾則退出
        {
            if (X <= 0xF) //X坐標應小于0xF
            {
                DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符
                ListLength++;
                X++;
            }
        }
    }

/********************5ms延時函數************************/
/*函數原型:void Delay5Ms(void)
/*函數功能:5ms延時
/*輸入參數:無
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
    void Delay5Ms(void)
    {
        unsigned int TempCyc = 5552;
        while(TempCyc--);
    }

/********************400ms延時延時函數************************/
/*函數原型:void Delay400Ms(void)
/*函數功能:400ms延時延時
/*輸入參數:無
/*輸出參數:無
/*調用模塊:
/*建立時間:2005/11/14
/*作者:站長
/**********************************************************************/
void Delay400Ms(void)
{
uchar TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
   TempCycB=7269;
   while(TempCycB--);
};
}
keil工程文件打包下載yejing_c.rar

匯編語言源程序
/******************************************************************
** 1602A液晶屏驅動程序
** 晶 振  頻 率:11.0592M
** 線路->單片機實驗開發板A
******************************************************************/

            LCM_RS EQU P3.7  ;//定義接口
            LCM_RW EQU P3.6
            LCM_E EQU P3.5

            LCM_Data EQU P1  ;數據接口

            ORG 0000H   ;從0000H處開始
            SJMP MAIN   ;跳轉到MAIN處

            ORG 0030H   ;主程序從0030H處開始
MAIN:       MOV SP,#70H   ;堆棧指針指向70H
            LCALL INITIAL   ;調用啟動LCM子程序進行初始化
            LCALL CLS   ;調用清除LCM子程序
            MOV A,#80H   ;向A送立即數80H設定顯示地址為第一行第一列
            LCALL WRITE_COM  ;調用寫指令到LCM子程序
            MOV DPTR,#LINE1  ;將第一行字符串的啟始地址送如DPTR中
            LCALL DISP   ;調用顯示字符串到LCM子程序
            MOV A,#0C0H   ;向A送立即數0C0H設定顯示地址為第二行第一列
            LCALL WRITE_COM  ;調用寫指令到LCM子程序
            MOV DPTR,#LINE2  ;將第二行字符串的啟始地址送如DPTR中
            LCALL DISP   ;調用顯示字符串到LCM子程序
            SJMP $   ;程序動態停機

LINE1:      DB " www.52c51.com ",00H ;第一行字符串
LINE2:      DB "   1602A   ",00H ;第二行字符串

INITIAL:    MOV A,#38H   ;啟動LCM子程序
            LCALL WRITE_COM
            MOV A,#0EH
            LCALL WRITE_COM
            MOV A,#06H
            LCALL WRITE_COM
            RET

CHECK_BUSY: PUSH ACC   ;查詢忙碌信號子程序
BUSY_LOOP:  CLR LCM_E
            SETB LCM_RW
            CLR LCM_RS
            SETB LCM_E
            MOV A,LCM_Data
            CLR LCM_E
            JB ACC.7,BUSY_LOOP
            POP ACC
            LCALL DEL
            RET

WRITE_COM:  LCALL CHECK_BUSY;寫指令到LCM子程序
            CLR LCM_E
            CLR LCM_RS
            CLR LCM_RW
            SETB LCM_E
            MOV LCM_Data,A
            CLR LCM_E
            RET

WRITE_DATA: LCALL CHECK_BUSY ;寫數據到LCM子程序
            CLR LCM_E
            SETB LCM_RS
            CLR LCM_RW
            SETB LCM_E
            MOV LCM_Data,A
            CLR LCM_E
            RET

CLS:        MOV A,#01H  ;清除LCM子程序
            LCALL WRITE_COM
            RET

DEL:        MOV R6,#5   ;2.7ms延時子程序
D1:         MOV R7,#248
            DJNZ R7,$
            DJNZ R6,D1
            RET

DISP:       PUSH ACC   ;將A的內容壓棧
DISP_LOOP:  CLR A   ;A清零
            MOVC A,@A+DPTR  ;查表將字符串內容送入A
            JZ END_DISP  ;若查到的內容為0則終止查表
            LCALL WRITE_DATA  ;調用寫數據到LCM子程序
            INC DPTR   ;DPTR加1指向下一個對象
            SJMP DISP_LOOP  ;跳轉到DISP_LOOP循環執行
END_DISP:   POP ACC   ;彈出壓棧內容至A
            RET

            END    ;程序結束
keil工程文件打包下載 yejing_asm.rar
Tags:單片機驅動,1602液晶屏  
責任編輯:admin
相關文章列表
沒有相關文章
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 国产一区视频免费观看| 国内av免费观看| 国产xxxxhd| 国语对白做受xxxxx在线中国| 色七七在线观看| 精品国偷自产一区二区三区| 肉色超薄丝袜脚交| 天天爱天天操天天干| 乱妇乱女熟妇熟女网站| 国内精品国产三级国产99| 日韩一级免费片| 在线免费观看视频黄| 免费观看精品视频| 成人在线免费观看av| 91国在线高清视频| 久久av高潮av| 色哺乳xxxxhd奶水米仓惠香| 特级黄色片视频| 狠狠操狠狠干视频| 可以看污的网站| 不用播放器的免费av| 国产精品一区二区小说| 亚洲欧美自拍另类日韩| 欧美伦理片在线观看| 色噜噜狠狠一区二区| 日本激情视频在线| 日韩精品视频一二三| 国产高清999| 400部精品国偷自产在线观看| www.五月天色| 男同互操gay射视频在线看| 一级 黄 色 片一| 久久免费一级片| 国产肉体ⅹxxx137大胆| 丰满少妇久久久| 黑森林福利视频导航| 亚洲人辣妹窥探嘘嘘| 国产一区二区在线观看免费视频| 手机av在线免费| 日本一本草久p| 日韩少妇内射免费播放| 中文字幕 91| 美女在线免费视频| 欧美一区二区中文字幕| 激情五月亚洲色图| 三年中文在线观看免费大全中国| 日本黄色播放器| 啊啊啊一区二区| 久久久久久久久久一区| 成年丰满熟妇午夜免费视频| 欧美丰满熟妇bbbbbb百度| 亚洲国产日韩欧美在线观看| 在线观看av的网址| 成年人黄色片视频| 日韩video| 午夜免费福利在线| 丰满的少妇愉情hd高清果冻传媒 | www一区二区www免费| 日本免费观看网站| wwwwww欧美| 在线免费看污网站| 男人揉女人奶房视频60分| 久久精品一卡二卡| 农村妇女精品一二区| 国产一区二区三区播放| 日韩一级理论片| 久久国产亚洲精品无码| 中国一级黄色录像| 中国黄色片一级| 久草精品在线播放| 日韩精品一区二区免费| 成年人网站av| 国产精品久久久毛片| 熟女少妇在线视频播放| 桥本有菜av在线| 中文国产在线观看| 天天干在线影院| 黄色片久久久久| 丝袜人妻一区二区三区| 最新视频 - x88av| 亚洲一区二区图片| 亚洲精品视频导航| 日日碰狠狠丁香久燥| 国产精品一区二区免费在线观看 | 国产成人强伦免费视频网站| jizz欧美激情18| 成年人免费在线播放| 亚洲乱码日产精品bd在线观看| 九九热免费在线观看| 三级在线视频观看| 日本xxxx黄色| 福利片一区二区三区| 免费黄色一级网站| 超碰在线播放91| 亚洲精品手机在线观看| 99sesese| 特黄特黄一级片| 国产资源中文字幕| 992tv成人免费观看| www.亚洲一区二区| 成人在线观看毛片| 亚洲熟妇无码一区二区三区| 国产69精品久久久久999小说| 成人亚洲视频在线观看| 国产裸体舞一区二区三区| 97超碰在线人人| 亚洲 欧美 日韩系列| 手机在线国产视频| 亚洲免费av网| 狠狠干 狠狠操| 国产福利一区视频| 五月天视频在线观看| 亚洲av毛片在线观看| 国产精品自拍合集| 久久无码高潮喷水| 日本黄色的视频| 精品无码国产一区二区三区av| 天天夜碰日日摸日日澡性色av| 久久久久久香蕉| 91制片厂免费观看| 人妻熟女一二三区夜夜爱| 在线黄色免费看| 国产又粗又猛又爽又黄的网站| 黄色片久久久久| 精品一区二区成人免费视频| 国产 日韩 欧美在线| 欧美成人黄色网址| 蜜臀精品一区二区| 成 人 黄 色 小说网站 s色| 热久久最新地址| 中文字幕国产传媒| 欧美中日韩在线| 在线a免费观看| 日韩精品一区二区三区不卡| 欧美大片免费播放| 亚洲欧美日韩一级| www在线观看免费| 亚洲 欧洲 日韩| www.亚洲高清| 久久国产成人精品国产成人亚洲| 色中文字幕在线观看| 国产精品乱码久久久久| 日韩小视频网站| 咪咪色在线视频| 色天使在线观看| 国产自偷自偷免费一区 | www.国产区| 日本一本中文字幕| 中文字幕乱码免费| 伊人五月天婷婷| 中国黄色片免费看| 日本男人操女人| 国产1区2区在线| 成人综合视频在线| www在线观看免费| 男女猛烈激情xx00免费视频| 国产免费一区二区三区四在线播放 | www插插插无码免费视频网站| 国产精品嫩草影院8vv8| 亚洲精品一二三四五区| 国产又黄又大又粗视频| 极品美女扒开粉嫩小泬| 亚洲国产精品无码观看久久| 日韩精品免费一区| 日本a在线天堂| 久久国产精品网| 妞干网视频在线观看| 2018国产在线| 国产在线青青草| 精品少妇无遮挡毛片| 在线免费观看av的网站| 欧美一级特黄a| 亚洲天堂伊人网| 777久久精品一区二区三区无码| 日本网站在线看| 久久久久久久久网| 日韩日韩日韩日韩日韩| www.浪潮av.com| 日本在线观看免费视频| 久久黄色片网站| 好色先生视频污| 人妻无码久久一区二区三区免费 | 日韩免费一级视频| 日本999视频| 国产福利片一区二区| 国产一级大片免费看| 日韩精品―中文字幕| 免费男同深夜夜行网站| 国产三级生活片| 日本一二三区视频在线| 成人午夜免费在线| 波多野结衣天堂| xxxxxx在线观看| 欧美黄色一级片视频| 成年人网站av| 老太脱裤让老头玩ⅹxxxx| 日本中文字幕高清| 女人被男人躁得好爽免费视频| 国产精品自拍片| 污免费在线观看|