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

📄 st7032.asm

📁 该程序为ST7032的显示驱动程序
💻 ASM
字号:

SDA   EQU P0.3
SCL   EQU P0.2
CSB   EQU P0.1
RES   EQU P0.0
PAUSE EQU P3.5
DAT1 EQU 21H
DAT2 EQU 22H
TEMP EQU 23H
DATA1 EQU 24H
ORG  0000H
JMP  RESET
ORG  0050H
RESET:
MOV  SP,#50H
CALL  D100MS

MAIN :
call init
MOV  DPTR,#CGRAM1
CALL WRITE_CGRAM
MOV  DPTR,#FULL
CALL DISPLAY1
MOV  DPTR,#ICON_FULL
CALL ICON
CALL D1S

MOV  DPTR,#BLANK
CALL DISPLAY1
MOV  DPTR,#ICON_BLANK
CALL ICON
CALL D1S

MOV  DPTR,#NUMBER1
CALL DISPLAY1
MOV  DPTR,#ICON_FULL
CALL ICON
CALL D1S

MOV  DPTR,#NUMBER2
CALL DISPLAY1
MOV  DPTR,#ICON_BLANK
CALL ICON
CALL D1S

MOV  DPTR,#NUMBER3
CALL DISPLAY1
MOV  DPTR,#ICON_FULL
CALL ICON
CALL D1S

MOV  DPTR,#NUMBER4
CALL DISPLAY1
MOV  DPTR,#ICON_BLANK
CALL ICON
CALL D1S
JMP  MAIN
;------------------------------------
INIT:
CLR   CSB
CLR   RES
CALL  D100MS
SETB  RES
CALL  START
MOV   A,#7CH; SET ADDRESS
CALL  CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#038H;funtion set,is=0
CALL CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#006H;entry mode set
CALL CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#00CH;display on
CALL CMD; 
MOV  A,#080H;control byte;
CALL CMD;
MOV  A,#01cH;cursor or dispaly shift;
CALL CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#001H;clear display
CALL CMD
CALL D100MS
;******************************  extension instruction  *******************
MOV  A,#080H;control byte                      /*********
CALL CMD
MOV  A,#039H;funtion set,is=1                  /*********
CALL CMD
MOV  A,#080H;control byte                      /*********
CALL CMD
MOV  A,#014H;internal osc frequency ,1/5 bias  /*********
CALL CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#05FH;set icon on,booster on,contrast set: D0-D1    /************
CALL CMD
MOV  A,#080H;control byte                /*******
CALL CMD
MOV  A,#06AH;set follower circuit on,set Ra/Rb:D0-D3   /********   
CALL CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#07CH;contrast set:D0-D3
CALL CMD
CALL STOP
RET

;------------------------------------------
START:
SETB  SDA
NOP
SETB  SCL
NOP
NOP
NOP
CLR   SDA
CALL  D40US
RET

;--------------------------------
STOP:
CLR  SCL
NOP
NOP
CLR   SDA
NOP
NOP
SETB  SCL
NOP
NOP
NOP
NOP
SETB  SDA
CALL  D40US
RET

;---------------------
CMD:
MOV   R0,#8
RE: RLC   A
    CLR   SCL
    MOV  SDA ,C
    NOP
    NOP
    NOP
    NOP
    SETB  SCL
    NOP
    NOP
    NOP
    DJNZ  R0,RE
CLR   SCL
NOP
NOP
SETB   SDA
SETB   SCL
;CALL   D10US
ACK:
JB   SDA,ACK
CLR    SCL
CALL D40US
RET

;---------------------------------------------
W_DAT:
MOV   R0,#8
RE1: RLC   A
     CLR   SCL
     MOV  SDA ,C
     NOP
     NOP 
     SETB  SCL
     CALL  D40US
     DJNZ  R0,RE1
CLR   SCL
NOP
NOP
SETB   SDA
SETB   SCL
;CALL   D10US
ACK1:
JB   SDA,ACK1
RET

;---------------------------------------
DISPLAY1:
CALL  START
MOV   A,#7CH; SET ADDRESS
CALL  CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#038H;funtion set,is=0
CALL CMD
MOV   A,#80H;RS=0
CALL  CMD
MOV  A,#0C0H; set ddram address
CALL  CMD
MOV   A,#040H;RS=1
CALL  CMD
MOV   R1,#12

DIS1: CLR   A
      MOVC A,@A+DPTR
      CALL  CMD
      INC  DPTR
      DJNZ  R1,DIS1
CALL STOP
RET

WRITE_CGRAM:
CALL  START
MOV   A,#7CH;SET ADDRESS
CALL  CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#038H;funtion set,is=0
CALL CMD
MOV   A,#80H;RS=0
CALL  CMD
MOV  A,#040H;set cgram address
CALL  CMD
MOV   A,#040H;RS=1
CALL  CMD
MOV   R1,#32
w_ram: CLR  A
       MOVC A,@A+DPTR
       CALL  CMD
       INC   DPTR
       DJNZ  R1,w_ram
CALL STOP
RET

ICON:
CALL  START
MOV   A,#7CH;SET ADDRESS
CALL  CMD
MOV  A,#080H;control byte
CALL CMD
MOV  A,#039H;funtion set,is=1
CALL CMD
MOV   A,#80H;RS=0
CALL  CMD
MOV  A,#040H;set ICON address
CALL  CMD
MOV   A,#040H;RS=1
CALL  CMD
MOV   R1,#12
DIS_ICON: CLR   A
          MOVC A,@A+DPTR
          CALL  CMD
          INC  DPTR
          DJNZ  R1,DIS_ICON
CALL STOP
RET

; -----------------------------
D40US:
MOV  R5,#20
DJNZ R5,$
RET

D100MS:
MOV R7,#100
D2:
MOV R6,#2
D3:
MOV R5,#248
DJNZ R5,$
DJNZ R6, D3
DJNZ R7, D2
RET

D1S:
MOV R7,#200
D4:
MOV R6,#10
D5:
MOV R5,#248
DJNZ R5,$
DJNZ R6, D5
DJNZ R7, D4
;SETB PAUSE
;JNB  PAUSE,$
RET

;-----------------------------

FULL:  
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

BLANK: 
DB  020H,020H,020H,020H,020H,020H,020H,020H,020H
DB  020H,020H,020H,020H,020H,020H,020H,020H,020H

number1:
DB  001H,001H,001H,001H,001H,001H,001H,001H,001H
DB  001H,001H,001H,001H,001H,001H,001H,001H,001H

number2:
DB  002H,002H,002H,002H,002H,002H,002H,002H,002H,002H
DB  002H,002H,002H,002H,002H,002H,002H,002H,002H,002H

number3:  
DB  051H,051H,051H,051H,051H,051H,051H,051H,051H
DB  051H,051H,051H,051H,051H,051H,051H,051H,051H

number4:  
DB  0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H
DB  0B8H,0B9H,0BAH,0BBH,0BCH

CGRAM1:    
DB   0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB   055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH
DB   0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H
DB   0FFH,000H,0FFH,000H,0FFH,000H,0FFH,000H

ICON_FULL: 
DB   0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

ICON_BLANK:
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

END

⌨️ 快捷键说明

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