📄 tec12232.asm
字号:
;MCU: AT89C51 Frequence 12MHz
row_num equ 20h
page_num equ 21h
frame_num equ 22h
page_address equ 23h
;data_comd_sel equ p3.7 ;a0
;mas_e equ p3.5 ;e1
;slv_e equ p3.6 ;e2
;w_r equ p2.5 ;w/r
;data_comd_sel equ p3.1 ;a0
;mas_e equ p3.3 ;e1
;slv_e equ p3.2 ;e2
;w_r equ p3.0 ;w/r
data_comd_sel equ p3.0 ;a0
mas_e equ p3.2 ;e1
slv_e equ p3.3 ;e2
w_r equ p3.1 ;w/r
lcd_data equ p1 ;d0--d7
org 0000h
jmp init
org 0030h
init:
mov sp,#60h
clr mas_e
clr slv_e
mov lcd_data,#0e2h ;reset(master chip)
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0a0h ;adc select clockwise
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0a4h ;static driver off
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0a9h ;duty select 1/32 duty
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0afh ;whole display on(master)
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0e2h ;reset(slave chip)
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0a0h ;adc select clockwise
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0a4h ;static driver off
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0a9h ;duty select 1/32 duty
call mas_tran_comd
call slv_tran_comd
call de
mov lcd_data,#0afh ;whole display on(slave)
call mas_tran_comd
call slv_tran_comd
call de
mov dptr,#picture
mov page_address,#0b8h
mov page_num,#4
nextpage: mov row_num,#61
mov lcd_data,page_address
call mas_tran_comd
call slv_tran_comd
mov lcd_data,#00
call mas_tran_comd
call slv_tran_comd
nextrow: mov a,#00h
movc a,@a+dptr
mov lcd_data,a
call mas_tran_data
call slv_tran_data
inc dptr
inc dptr
djnz row_num,nextrow
mov a,dpl
clr c
subb a,#63
mov dpl,a
mov a,dph
subb a,#0
mov dph,a
;inc dptr
;inc dptr
;inc dptr
inc page_address
djnz page_num,nextpage
sjmp $
mov page_address,#0b8h
mov page_num,#4
_nextpage: mov row_num,#61
mov lcd_data,page_address
call slv_tran_comd
mov lcd_data,#00h
call slv_tran_comd
_nextrow: mov a,#00h
movc a,@a+dptr
mov lcd_data,a
call slv_tran_data
inc dptr
djnz row_num,_nextrow
inc page_address
djnz page_num,_nextpage
call delay
mov frame_num,#8 ;set frame number
mov dptr,#graph ;set graph begin address
next_frame: mov page_num,#4 ;set page number
mov page_address,#0b8h ;set page begin address
next_page: mov row_num,#31 ;send row number
mov lcd_data,page_address ;send page address
call mas_tran_comd
mov lcd_data,#00h ;send begin row address
call mas_tran_comd
next_row: push dpl
push dph
mov a,#0
movc a,@a+dptr
mov lcd_data,a
call mas_tran_data
inc dptr
mov a,#0
movc a,@a+dptr
mov lcd_data,a
call mas_tran_data
pop dph
pop dpl
djnz row_num,next_row
inc page_address
djnz page_num,next_page
mov page_num,#4 ;set page number
mov page_address,#0b8h ;set page begin address
_next_page:
mov row_num,#31 ;send row number
mov lcd_data,page_address ;send page address
call slv_tran_comd
mov lcd_data,#00h ;send begin row
call slv_tran_comd
_next_row: push dpl
push dph
mov a,#0
movc a,@a+dptr
mov lcd_data,a
call slv_tran_data
inc dptr
mov a,#0
movc a,@a+dptr
mov lcd_data,a
call slv_tran_data
pop dph
pop dpl
djnz row_num,_next_row
inc page_address
djnz page_num,_next_page
inc dptr
inc dptr
call delay
djnz frame_num,next_frame
jmp init
graph: db 0ffh,00h,00h,0ffh,0aah,0aah,55h,55h,
db 0aah,55h,55h,0aah,0ffh,0ffh,00h,00h,
picture:
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,040H,040H,060H,
DB 0C0H,0C0H,0C0H,080H,000H,000H,000H,020H,
DB 060H,0C0H,0C0H,0C0H,080H,000H,000H,000H,
DB 000H,000H,080H,0C0H,0E0H,060H,060H,040H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,002H,006H,
DB 086H,082H,0C2H,042H,042H,062H,022H,032H,
DB 092H,09BH,09BH,08FH,08EH,086H,082H,08AH,
DB 08AH,09AH,0B3H,0B3H,0A3H,082H,082H,086H,
DB 08AH,0D3H,0D3H,0A3H,022H,062H,042H,0C2H,
DB 0C2H,082H,082H,083H,083H,082H,082H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,001H,001H,001H,
DB 001H,000H,000H,000H,000H,000H,000H,0E0H,
DB 0EAH,0EAH,02AH,02AH,02AH,02AH,02AH,02AH,
DB 02AH,02AH,02AH,02AH,02AH,02AH,02AH,02AH,
DB 02AH,02FH,0EFH,0EEH,0EAH,000H,000H,000H,
DB 000H,000H,001H,001H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,007H,
DB 007H,007H,002H,002H,002H,002H,002H,002H,
DB 002H,002H,002H,002H,002H,002H,002H,002H,
DB 002H,002H,007H,007H,007H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,080H,0E0H,0E0H,0E0H,040H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 030H,060H,0E0H,0C0H,080H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,080H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,080H,040H,060H,030H,018H,
DB 0FCH,0FEH,017H,003H,001H,000H,002H,002H,
DB 002H,002H,012H,012H,012H,012H,012H,012H,
DB 012H,012H,013H,013H,013H,012H,012H,012H,
DB 012H,012H,092H,0DAH,09AH,012H,013H,003H,
DB 003H,002H,002H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,001H,001H,000H,000H,000H,000H,000H,
DB 0FFH,0FFH,000H,000H,000H,000H,000H,000H,
DB 000H,001H,0FDH,0F9H,009H,009H,009H,009H,
DB 009H,009H,009H,009H,009H,009H,009H,009H,
DB 009H,009H,0F9H,0FDH,009H,001H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 007H,007H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,007H,007H,002H,002H,002H,002H,
DB 002H,002H,002H,002H,002H,002H,002H,002H,
DB 002H,002H,007H,007H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,000H,000H,
mas_tran_comd:
clr mas_e
nop
nop
clr slv_e
nop
clr w_r
nop
clr data_comd_sel
call de; nop
nop
nop
nop
setb mas_e
nop
nop
nop
nop
nop
nop
clr mas_e
nop
nop
nop
nop
nop
nop
; setb mas_e
; setb slv_e
; nop
; nop
; clr slv_e
clr mas_e
clr slv_e
call de
ret
mas_tran_data:
clr mas_e
nop
nop
nop
nop
clr slv_e
nop
nop
nop
nop
clr w_r
nop
nop
nop
nop
setb data_comd_sel
nop
call de
nop
nop
nop
setb mas_e
nop
nop
call de
nop
nop
nop
nop
clr mas_e
nop
nop
nop
call de
nop
nop
nop
; setb mas_e
clr mas_e
clr slv_e
call de
ret
slv_tran_comd:
clr mas_e
nop
nop
nop
nop
clr slv_e
nop
nop
nop
nop
clr w_r
nop
nop
nop
nop
clr data_comd_sel
nop
nop
call de
nop
nop
setb slv_e
nop
nop
call de
nop
nop
nop
nop
clr slv_e
nop
nop
call de
nop
nop
nop
nop
; setb slv_e
clr mas_e
nop
nop
nop
nop
clr slv_e
nop
nop
call de
nop
nop
ret
slv_tran_data:
clr mas_e
nop
nop
nop
nop
clr slv_e
nop
nop
nop
nop
clr w_r
nop
nop
nop
nop
setb data_comd_sel
nop
nop
call de
nop
nop
setb slv_e
nop
nop
call de
nop
nop
nop
nop
clr slv_e
nop
nop
call de
nop
nop
nop
nop
; setb slv_e
clr mas_e
nop
nop
call de
nop
nop
clr slv_e
nop
call de
nop
nop
nop
ret
delay: ;delay about 1s
mov r3,#0fah
dl3: call de
djnz r3,dl3
ret
de: mov r2,#0ah
dl2: mov r1,#63h
dl1: nop
nop
djnz r1,dl1
djnz r2,dl2
ret
end
;----------------------------------------------------------
;program end
;----------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -