找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4433|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

lcd1602液晶全屏移動(dòng)匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-27 18:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
  1. ;=================================================================
  2. ;程序編寫(xiě)人:蘭建文
  3. ;編寫(xiě)地點(diǎn):51hei培訓(xùn)機(jī)構(gòu)
  4. ;時(shí)間:6月2日下午星期二
  5. ;功能:本程序?qū)崿F(xiàn)液晶的信息功能
  6. ;=======================開(kāi)始初始化================================
  7.              EN     BIT    P2.5      ;時(shí)鐘信號(hào)
  8.        RS     BIT    P3.4      ;決定要傳送的是命令還是數(shù)據(jù)
  9.        RW     BIT    P3.5   ;決定要讀還是寫(xiě),一般寫(xiě)的時(shí)候多
  10.     SJ     EQU    P0   ;數(shù)據(jù)線
  11.     SHUZI  EQU    30H
  12. ;========================系統(tǒng)程序==================================
  13.                    ORG    0000H
  14.        JMP    START
  15.         ORG    30H
  16.          START:MOV    R0,#32
  17.            CALL   CHUSHIHUA ;LCD初始化
  18.            MAIN:
  19.            CALL   XIANSHI  ;顯示  
  20.         JMP    MAIN
  21. ;======================初始化子程序===============================
  22. ;輸入:無(wú)
  23. ;輸出:無(wú)
  24. ;實(shí)現(xiàn)的功能:初始化LCD
  25. ;=================================================================
  26.           CHUSHIHUA:MOV    SJ,#38H
  27.               ACALL   ENABLE  ;寫(xiě)指令08H,設(shè)定LCD為16*2顯示,5*6點(diǎn)陣,8位數(shù)據(jù)接口
  28.      MOV    SJ,#08H  
  29.      ACALL   ENABLE  ;寫(xiě)指令08H
  30.      MOV    SJ,#01H
  31.      ACALL   ENABLE  ;寫(xiě)指令01H,顯示清屏
  32.      MOV    SJ,#06H
  33.      ACALL   ENABLE  ;寫(xiě)指令06H,顯示光標(biāo)自動(dòng)右移,整屏不移動(dòng)
  34.      MOV    SJ,#0CH
  35.      ACALL   ENABLE  ;寫(xiě)指令0CH,開(kāi)顯示,不顯示光標(biāo)
  36.                  RET
  37. ;========================顯示子程序===============================
  38. ;輸入:
  39. ;輸出:"P0口"
  40. ;實(shí)現(xiàn)的功能:把數(shù)輸出到P0口顯示
  41. ;=================================================================
  42.             XIANSHI:
  43.            MOV    SJ,#18H
  44.      CALL   ENABLE
  45.      MOV    SJ,#80H  ;第一行顯示第一個(gè)字符的位置
  46.            CALL   ENABLE  ;調(diào)用寫(xiě)指令
  47.      MOV    DPTR,#TAB0;第一行表頭位置
  48.      CALL   WRITE1  ;調(diào)用第一行寫(xiě)子程序
  49.      CALL   DELAY1
  50.         MOV    SJ,#0C0H  ;第二行位置   
  51.      CALL   ENABLE  ;調(diào)用寫(xiě)指令
  52.      MOV    DPTR,#TAB1;第二行表頭位置
  53.      CALL   WRITE1  ;調(diào)用第二行寫(xiě)子程序
  54.      CALL   DELAY1
  55.      DJNZ   R0,L
  56.      MOV    R0,#32
  57.      MOV    R1,#10
  58.         LL:CALL   DELAY
  59.      DJNZ   R1,LL
  60.       L:RET   
  61. ;======================寫(xiě)命令時(shí)序程序=============================
  62. ;輸入:
  63. ;輸出:"P0口"
  64. ;實(shí)現(xiàn)的功能:寫(xiě)時(shí)序
  65. ;=================================================================
  66.    ENABLE:CLR     RS
  67.           CLR     RW
  68.        SETB    EN
  69.        CALL    DELAY
  70.        CLR     EN
  71.        RET
  72. ;==========================寫(xiě)入子程序=============================
  73. ;輸入:
  74. ;輸出:"P0口"
  75. ;實(shí)現(xiàn)的功能:寫(xiě)時(shí)序
  76. ;=================================================================
  77.     WRITE1:MOV     SHUZI,#00H  ;將30H清0
  78.        L1:MOV     A,SHUZI    ;把30H的值送到ACC
  79.        MOVC    A,@A+DPTR   ;查表取將顯示的數(shù)據(jù)并把要顯示的數(shù)送入ACC
  80.        CALL    WRITE2    ;調(diào)用寫(xiě)程序?qū)懭雴蝹(gè)字節(jié)
  81.        INC     SHUZI    ;將工作寄存器指針加一
  82.        MOV     A,SHUZI    ;把30H的內(nèi)容送到ACC
  83.        CJNE    A,#10H,L1   ;ACC的值加到16后就返回到L1處
  84.        RET
  85. ;=======================寫(xiě)數(shù)據(jù)時(shí)序子程序==========================
  86. ;輸入:
  87. ;輸出:
  88. ;實(shí)現(xiàn)的功能:寫(xiě)數(shù)據(jù)
  89. ;=================================================================
  90.            WRITE2:MOV     SJ,A    ;寫(xiě)單個(gè)字符
  91.             SETB    RS    ;寫(xiě)數(shù)據(jù)到顯示端口
  92.       CLR     RW    ;寫(xiě)數(shù)據(jù)時(shí)序
  93.       SETB    EN
  94.       CALL    DELAY
  95.       CLR     EN
  96.       RET
  97. ;============================延時(shí)子程序============================
  98. ;輸入;無(wú)
  99. ;輸出: 無(wú)
  100. ;實(shí)現(xiàn)的功能:延時(shí)5MS
  101. ;==================================================================
  102.             DELAY:
  103.             MOV  R6,#4
  104.                L7:MOV  R5,#100
  105.             DJNZ R5,$
  106.                   DJNZ R6,L7
  107.       RET
  108.      DELAY1:MOV  R7,#10
  109.          L9:MOV  R3,#25
  110.                L8:MOV  R4,#100
  111.             DJNZ R4,$
  112.                   DJNZ R3,L8
  113.       DJNZ R7,L9
  114.       RET
  115. ;==============================表的制作============================
  116.             TAB0:DB "WWW#SsONEEDU#COMWWW#STsNEEDU#COM"
  117.    TAB1:DB "MCU-20-L-JIANWENMCU-20-L-JIANWEN"                          
  118. ;=========================程序結(jié)束=================================
  119.             END
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表