⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm.txt

📁 本实验利用51单片机和KM12864-21LCD显示器完成显示学校、姓名、学号、专业等字符。
💻 TXT
字号:
   RS EQU P1.5
          RW EQU P1.4
          E  EQU P1.3
          PSB EQU P2.3
          RST EQU P2.5
          LCD_X  EQU 30H
          LCD_Y  EQU 31H
          COUNT  EQU 32H
          COUNT1 EQU 33H
          COUNT2 EQU 34H
          COUNT3 EQU 35H
       LCD_DATA  EQU 36H
       LCD_DATA1 EQU 37H
       LCD_DATA2 EQU 38H
          STORE  EQU 39H
  ORG 0000H
  LJMP MAIN
  ORG 0100H
MAIN:
     MOV SP,#5FH
            CLR  RST             ;复位
            LCALL DELAY4
            SETB RST
     NOP
            SETB PSB             ;通讯方式为8位数据并口
LGS0:     MOV A,#34H  ;34H--扩充指令操作
     LCALL SEND_I
     MOV A,#30H  ;30H--基本指令操作
     LCALL SEND_I
     MOV A,#01H  ;清除显示
     LCALL SEND_I
            MOV A,#06H  ;指定在资料写入或读取时,光标的移动方向
     LCALL SEND_I        ;DDRAM 的地址计数器(AC)加1
     MOV A,#0CH  ;开显示,关光标,不闪烁
     LCALL SEND_I
;;显示汉字和字符
;加入80ms的延时,使你能够看清楚显示的过程
;根据汉字显示坐标分段写入(顺序写入)
HAN_WR2:
            LCALL CLEAR_P
HAN_WR2A:
            MOV DPTR,#TAB1A ;显示汉字和字符
     MOV COUNT,#10H      ;地址计数器设为16。
     MOV A,#90H          ;第一行起始地址
     LCALL SEND_I
            LCALL   QUSHU
HAN_WR2B:
            MOV DPTR,#TAB1B ;显示汉字和字符
     MOV COUNT,#10H      ;地址计数器设为16。
     MOV A,#802H          ;第二行起始地址
     LCALL SEND_I
            LCALL QUSHU
HAN_WR2C:
            MOV DPTR,#TAB1C ;显示汉字和字符
     MOV COUNT,#10H      ;地址计数器设为16。
     MOV A,#88H          ;第三行起始地址
     LCALL SEND_I
            LCALL QUSHU
HAN_WR2D:
     MOV DPTR,#TAB1D  ;显示汉字和字符
     MOV COUNT,#10H       ;地址计数器设为16。
     MOV A,#98H           ;第四行起始地址
     LCALL SEND_I
            LCALL QUSHU
            LCALL DELAY3
            jmp   $
            LCALL CLEAR_P
;清屏
CLEAR_P:
            MOV A,#01H           ;清屏
     LCALL SEND_I
            MOV A,#34H
     LCALL SEND_I
     MOV A,#30H
     LCALL SEND_I
            RET
;查表取数据送显示
QUSHU:
            CLR A
     MOVC A,@A+DPTR       ;查表取数据
     LCALL SEND_D          ;送显示
     INC DPTR
            LCALL DELAY4           ;延时80ms,
            DJNZ COUNT,QUSHU
     RET
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
SEND_D:
     LCALL CHK_BUSY    ;写数据子程序
     SETB RS
     CLR RW
     MOV P0,A
     SETB E
     NOP
     NOP
     CLR E
     RET
;写指令子程序
;RS=0,RW=0,E=高脉冲,D0-D7=指令码
SEND_I:
     LCALL CHK_BUSY
     CLR RS
     CLR RW
     MOV P0,A
     SETB E
     NOP
     NOP
     CLR E
     RET
;;测忙碌子程序
;RS=0,RW=1,E=H,D0-D7=状态字
CHK_BUSY:
        MOV P0,#0FFH    ;测忙碌子程序
    CLR RS
    SETB RW
    SETB E
    JB P0.7,$
    CLR E
    RET
;延时子程序

DELAY3:
    MOV R5,#16H
DEL31:    MOV R6,#100
DEL32:    MOV R7,#0FFH
DEL33:    DJNZ R7,DEL33
    DJNZ R6,DEL32
    DJNZ R5,DEL31
    RET
DELAY4:
           MOV R6,#100
DEL41:    MOV R7,#200
DEL42:    DJNZ R7,DEL42
    DJNZ R6,DEL41
    RET
TAB1:
TAB1A:     DB  '张三            '    ;显示在第一行
TAB1C:     DB  ' 200509001      '    ;显示在第三行
TAB1B:     DB  '专业:          '    ;显示在第二行
TAB1D:     DB  '单片机课程设计  '    ;显示在第四行

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -