婷婷亚洲天堂影院-国产精品豆花视频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>
  • 国产精品99久久久久久大便| 国产精品日韩三级| 欧美日韩福利在线| 日韩精品视频网址| 我要看一级黄色大片| 99久久国产宗和精品1上映| 国产主播自拍av| 精品少妇人欧美激情在线观看| 国产精品日韩三级| 欧美一级片免费播放| 无码熟妇人妻av在线电影| 日本男女交配视频| 国产曰肥老太婆无遮挡| 青青视频在线播放| 高清一区二区视频| 国产视频一区二区视频| 日日躁夜夜躁aaaabbbb| 潘金莲激情呻吟欲求不满视频| 欧美日韩久久婷婷| 欧美日韩dvd| 亚欧无线一线二线三线区别| 亚洲五月天综合| 国产aⅴ爽av久久久久| 日本女人高潮视频| r级无码视频在线观看| 欧美黄色一级片视频| 看看黄色一级片| 国产亚洲精品久久久久久久| 日韩精品视频一区二区在线观看| 日韩精品免费播放| 日韩成人午夜影院| 日韩av资源在线| 亚洲美女性囗交| 男女私大尺度视频| 蜜臀一区二区三区精品免费视频| 久久久国产精华液999999 | 特级西西人体www高清大胆| 青草视频在线观看视频| 高清一区二区视频| 成品人视频ww入口| 日本免费色视频| 精品人妻一区二区三区四区在线| 国产福利精品一区二区三区| 成人免费在线视频播放| 国产精品区在线| 又粗又黑又大的吊av| 男女污污视频网站| 欧美一级裸体视频| 91av资源网| 日韩黄色片在线| 91丝袜超薄交口足| 国产成人av影视| 国产av国片精品| 国产成人永久免费视频| 艳母动漫在线观看| 一区二区三区欧美精品| 国产男女激情视频| 亚洲精品无码久久久久久| 精品久久久无码人妻字幂| 手机福利在线视频| 欧美大片久久久| 亚洲男人天堂2021| 999久久久精品视频| 国产精品一区二区小说| 男人揉女人奶房视频60分| 东北少妇不带套对白| 国产二区视频在线| 草草视频在线免费观看| 青娱乐自拍偷拍| 免费黄色日本网站| 成人在线看视频| 欧美黄色一级片视频| 国产精品天天av精麻传媒| 国产麻花豆剧传媒精品mv在线| 黄色一级片播放| 日韩毛片在线免费看| 国内自拍视频一区| 在线观看日本一区二区| 日韩成人av免费| 国产成人三级视频| 国产精品又粗又长| 四虎永久在线精品无码视频| 日韩精品无码一区二区三区免费 | 日韩欧美亚洲天堂| 激情视频综合网| 九九热精品国产| 真实国产乱子伦对白视频| 加勒比成人在线| 亚洲国产成人va在线观看麻豆| 日韩欧美亚洲另类| 免费看污污视频| 免费看国产曰批40分钟| 天天插天天操天天射| 懂色av一区二区三区四区五区| 久久天天东北熟女毛茸茸| 中文字幕日韩综合| 无码粉嫩虎白一线天在线观看 | 激情深爱综合网| 国产一级做a爰片久久| 亚洲一区二区图片| 欧美a v在线播放| 五月天六月丁香| 亚洲精品无码久久久久久| 91丝袜超薄交口足| 国产成人无码一二三区视频| 九九久久久久久| 六月丁香婷婷激情| 性一交一乱一伧国产女士spa| 成年人网站大全| 波多野结衣综合网| 在线成人免费av| xxxx一级片| 97xxxxx| 妞干网在线观看视频| 亚洲精品在线网址| 欧美精品无码一区二区三区| 黄网站色视频免费观看| 国内国产精品天干天干| 麻豆传传媒久久久爱| 免费看又黄又无码的网站| 中文字幕综合在线观看| 少妇一级淫免费放| 国产在线青青草| 国产精品久久中文字幕| 欧洲美女和动交zoz0z| 五月花丁香婷婷| 中文字幕成人在线视频| the porn av| 高清一区二区视频| 天美星空大象mv在线观看视频| 日本香蕉视频在线观看| 久久人妻无码一区二区| 在线观看av的网址| 久久久久久久免费视频| 路边理发店露脸熟妇泻火| 天天色天天干天天色| 在线播放黄色av| 日韩精品在线播放视频| 伊人再见免费在线观看高清版| 黄色一级片av| 中文字幕日韩精品无码内射| 欧美一区二区三区综合| 日韩 欧美 视频| 久久精品视频16| 中文久久久久久| 男女视频在线观看网站| 性生活免费观看视频| 欧洲精品在线播放| 免费无码av片在线观看| 成人在线激情网| 182午夜视频| 天天做天天躁天天躁| 97国产在线播放| 手机在线成人免费视频| 日韩精品福利片午夜免费观看| 日本福利视频一区| 黄色三级视频在线| 最新av网址在线观看| 精品少妇人妻av免费久久洗澡| 免费男同深夜夜行网站| 超碰免费在线公开| 和岳每晚弄的高潮嗷嗷叫视频| 美女网站免费观看视频| 26uuu成人| 国产最新免费视频| 欧美性视频在线播放| 欧美国产激情视频| 日韩视频在线免费播放| 欧美 日韩 激情| 亚洲自拍第三页| 国产极品粉嫩福利姬萌白酱| 鲁一鲁一鲁一鲁一av| 国产免费一区二区视频| 一级网站在线观看| 亚洲少妇第一页| 欧美一级特黄aaaaaa在线看片| 久久精品视频91| 亚洲国产精品无码av| 亚洲黄色片免费| 欧美日韩在线免费播放| 国产va亚洲va在线va| 国产福利精品一区二区三区| 日韩av黄色网址| 丝袜人妻一区二区三区| 国产在线无码精品| 中文字幕亚洲影院| 欧美黄色一级片视频| 男人日女人视频网站| 国产一区二区三区播放| 99久久久无码国产精品性色戒| 国产情侣av自拍| 欧美女人性生活视频| 人人妻人人澡人人爽欧美一区| 成人日韩在线视频| 性欧美极品xxxx欧美一区二区| 日韩小视频在线播放| www.日本在线视频| 日本精品久久久久久久久久| 99热都是精品| www.亚洲视频.com|