標(biāo)題: 單片機(jī)LCD1602匯編如何才能兩行全部顯示? [打印本頁]

作者: 縮地成寸    時間: 2019-5-20 22:32
標(biāo)題: 單片機(jī)LCD1602匯編如何才能兩行全部顯示?
現(xiàn)在就是加第二行數(shù)據(jù)表調(diào)用就是到AJMP $這兒停不下來還重新刷寫,請教下老哥們


單片機(jī)源程序如下:
  1. ;1602液晶屏顯示程序
  2. ;====定義控制線端口=======
  3. ;P2.0-P2.7為數(shù)據(jù) D0-D7接口
  4. ;RS數(shù)據(jù)/命令選擇端     H/L
  5. ;RW讀/寫選擇端         H/L
  6. ;EN使能控制端          H/L 開/關(guān)
  7.      RS EQU P0.0       ;等值指令(起外號)
  8.      RW EQU P0.1       ;等值指令(起外號)
  9.      EN EQU P0.2       ;等值指令(起外號)
  10.      ORG 00H           ;定義起始地址位置
  11.      JMP MAIN          ;跳轉(zhuǎn)主程序
  12.      ORG 30H           ;開始主程序地址位置
  13. /*主程序*/;==========================
  14. MAIN:  MOV SP,60H      ;設(shè)置堆棧指針地址位置
  15.        CALL CHUSHIHUA  ;調(diào)用1602初始化
  16. WW:    MOV A,#80H      ;設(shè)置1602顯示的地址位置行(第一行80H--90H 第二行0C0H--0D0H)
  17.        LCALL XIE        ;調(diào)用指令子程序?qū)懭腼@示地址的數(shù)據(jù)
  18. /*     MOV A,#"A"      ;需要顯示的東西
  19.        CALL XIE1       ;調(diào)用顯示子程序*/
  20.        CALL SHU1       ;調(diào)用數(shù)據(jù)表
  21.        MOV A,#0C0H    ;把第二行地址寫入A中
  22.          LCALL XIE       ;調(diào)用第二行進(jìn)行顯示
  23.         CALL SHU2       ;調(diào)用數(shù)據(jù)表1
  24.          AJMP [        DISCUZ_CODE_3        ]nbsp;     
  25. /*調(diào)用數(shù)據(jù)表顯示程序*/;===============
  26. SHU1:      MOV R0,#00H      ;00送給R0
  27. AAA:       MOV A,R0         ;A中數(shù)為00
  28.            MOV DPTR,#TAB    ;數(shù)據(jù)表地址裝入DPTR中
  29.            MOVC A,@A+DPTR   ;數(shù)據(jù)表數(shù)據(jù)裝入A中
  30.            CALL XIE1        ;調(diào)用數(shù)據(jù)進(jìn)行寫入
  31.            INC R0           ;R0+1吧下一個數(shù)據(jù)調(diào)入
  32.            CJNE R0,#16D,AAA ;顯示16個數(shù)據(jù)
  33.            RET              ;返回主程序
  34. /*調(diào)數(shù)據(jù)表1顯示程序*/;===============
  35. SHU2:      MOV R1,#00H      ;00送給R0
  36. AAB:       MOV A,R1         ;A中數(shù)為00
  37.            MOV DPTR,#TAB1   ;數(shù)據(jù)表1地址裝入DPTR中
  38.            MOVC A,@A+DPTR   ;數(shù)據(jù)表數(shù)據(jù)裝入A中
  39.            CALL XIE1        ;調(diào)用數(shù)據(jù)進(jìn)行寫入
  40.            INC R1           ;R0+1吧下一個數(shù)據(jù)調(diào)入
  41.            CJNE R1,#16D,AAB ;顯示16個數(shù)據(jù)
  42.            RET              ;返回主程序
  43. /*1602初始化程序*/;===================
  44. CHUSHIHUA: CALL YANSHI ;調(diào)用延時
  45.            MOV A,#38H  ;寫顯示模式設(shè)置 16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)接口
  46.            CALL XIE    ;調(diào)用寫指令子程序
  47.            MOV A,#01H  ;顯示清屏(數(shù)據(jù)指針地址和所有顯示清0)
  48.            CALL XIE    ;調(diào)用寫指令子程序
  49.            MOV A,#06H  ;顯示光標(biāo)移動設(shè)置為當(dāng)寫一個字符后地址指針加1且光標(biāo)加1
  50.            CALL XIE    ;調(diào)用寫指令子程序
  51.            MOV A,#0CH  ;顯示開及光標(biāo)設(shè)置為開顯示 不顯示光標(biāo) 光標(biāo)不顯示
  52.            CALL XIE    ;調(diào)用寫子程序
  53.            RET         ;返回主程序
  54. /*寫數(shù)據(jù)程序*/;=======================
  55. XIE1: SETB RS    ;置1
  56.        CLR RW    ;置0
  57.        CLR EN    ;置0
  58.        MOV P2,A  ;寫數(shù)據(jù)到P2口
  59.       CALL YANSHI;調(diào)用延時
  60.       SETB EN    ;置1開啟使能     
  61.       CALL YANSHI;調(diào)用延時
  62.       CLR EN     ;關(guān)使能
  63.       CALL YANSHI;調(diào)用延時
  64.       RET        ;返回主程序
  65. /*寫指令命令程序*/;=======================
  66. XIE: CLR RS   ;置0
  67.      CLR RW   ;置0
  68.      CLR EN   ;置0
  69.      MOV P2,A ;寫指令數(shù)據(jù)到P2口
  70.     CALL YANSHI;調(diào)用延時
  71.     SETB EN    ;開啟使能     
  72.     CALL YANSHI;調(diào)用延時
  73.      CLR EN    ;關(guān)閉使能
  74.     CALL YANSHI;調(diào)用延時
  75.      RET       ;返回主程序
  76. /*延時程序*/;========================
  77. YANSHI: MOV R7,#0F0H
  78. AA:     MOV R6,#0D2H
  79.        DJNZ R6,$
  80.        DJNZ R7,AA
  81.         RET
  82. /*數(shù)據(jù)表第一行*/;====================
  83. TAB:  DB "welcome-to-1602-"
  84. /*數(shù)據(jù)表第二行*/;====================
  85. TAB1: DB "www點(diǎn)dfhw123點(diǎn)com "
  86. END
復(fù)制代碼






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