標(biāo)題: lcd1602液晶全屏移動匯編程序 [打印本頁]

作者: daniu    時間: 2014-12-27 18:07
標(biāo)題: lcd1602液晶全屏移動匯編程序
  1. ;=================================================================
  2. ;程序編寫人:蘭建文
  3. ;編寫地點:51hei培訓(xùn)機構(gòu)
  4. ;時間:6月2日下午星期二
  5. ;功能:本程序?qū)崿F(xiàn)液晶的信息功能
  6. ;=======================開始初始化================================
  7.              EN     BIT    P2.5      ;時鐘信號
  8.        RS     BIT    P3.4      ;決定要傳送的是命令還是數(shù)據(jù)
  9.        RW     BIT    P3.5   ;決定要讀還是寫,一般寫的時候多
  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. ;輸入:無
  23. ;輸出:無
  24. ;實現(xiàn)的功能:初始化LCD
  25. ;=================================================================
  26.           CHUSHIHUA:MOV    SJ,#38H
  27.               ACALL   ENABLE  ;寫指令08H,設(shè)定LCD為16*2顯示,5*6點陣,8位數(shù)據(jù)接口
  28.      MOV    SJ,#08H  
  29.      ACALL   ENABLE  ;寫指令08H
  30.      MOV    SJ,#01H
  31.      ACALL   ENABLE  ;寫指令01H,顯示清屏
  32.      MOV    SJ,#06H
  33.      ACALL   ENABLE  ;寫指令06H,顯示光標(biāo)自動右移,整屏不移動
  34.      MOV    SJ,#0CH
  35.      ACALL   ENABLE  ;寫指令0CH,開顯示,不顯示光標(biāo)
  36.                  RET
  37. ;========================顯示子程序===============================
  38. ;輸入:
  39. ;輸出:"P0口"
  40. ;實現(xiàn)的功能:把數(shù)輸出到P0口顯示
  41. ;=================================================================
  42.             XIANSHI:
  43.            MOV    SJ,#18H
  44.      CALL   ENABLE
  45.      MOV    SJ,#80H  ;第一行顯示第一個字符的位置
  46.            CALL   ENABLE  ;調(diào)用寫指令
  47.      MOV    DPTR,#TAB0;第一行表頭位置
  48.      CALL   WRITE1  ;調(diào)用第一行寫子程序
  49.      CALL   DELAY1
  50.         MOV    SJ,#0C0H  ;第二行位置   
  51.      CALL   ENABLE  ;調(diào)用寫指令
  52.      MOV    DPTR,#TAB1;第二行表頭位置
  53.      CALL   WRITE1  ;調(diào)用第二行寫子程序
  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. ;======================寫命令時序程序=============================
  62. ;輸入:
  63. ;輸出:"P0口"
  64. ;實現(xiàn)的功能:寫時序
  65. ;=================================================================
  66.    ENABLE:CLR     RS
  67.           CLR     RW
  68.        SETB    EN
  69.        CALL    DELAY
  70.        CLR     EN
  71.        RET
  72. ;==========================寫入子程序=============================
  73. ;輸入:
  74. ;輸出:"P0口"
  75. ;實現(xiàn)的功能:寫時序
  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)用寫程序?qū)懭雴蝹字節(jié)
  81.        INC     SHUZI    ;將工作寄存器指針加一
  82.        MOV     A,SHUZI    ;把30H的內(nèi)容送到ACC
  83.        CJNE    A,#10H,L1   ;ACC的值加到16后就返回到L1處
  84.        RET
  85. ;=======================寫數(shù)據(jù)時序子程序==========================
  86. ;輸入:
  87. ;輸出:
  88. ;實現(xiàn)的功能:寫數(shù)據(jù)
  89. ;=================================================================
  90.            WRITE2:MOV     SJ,A    ;寫單個字符
  91.             SETB    RS    ;寫數(shù)據(jù)到顯示端口
  92.       CLR     RW    ;寫數(shù)據(jù)時序
  93.       SETB    EN
  94.       CALL    DELAY
  95.       CLR     EN
  96.       RET
  97. ;============================延時子程序============================
  98. ;輸入;無
  99. ;輸出: 無
  100. ;實現(xiàn)的功能:延時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ù)制代碼







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1