📄 pt6311 16311 程序(汇编版和c语言版).txt
字号:
PT6311 16311 程序(汇编版和C语言版)
--------------------------------------------------------------------------------
程序名:PT6311程序
设计:
VFD显示是除LED、LCD等显示外的又一类显示,具有亮度高等特点,广泛用于功率放大器、空调、VCD等的显示。
PT6311是台湾普诚公司的一片集成电路,功能强大。支持12段16位~20段8位VFD显示屏,自带12×4键盘矩阵。点击看详细资料
本站程序包括A(汇编)版和C(C语言)版!
A版程序:
;程序说明:本程序摸拟功放:按K1-显示"DVD",按K2-显示"VCD",按K3-显示"TAPE",按K4-显示"CD/LD"
;按K5-显示"89C51",按K6-显示"591MCU",按K7-显示"HAIER",按K8-显示"88888888"
STB EQU P0.0
CLK EQU P0.1
DO EQU P0.3
DI EQU P0.2
;************* 以上端口可根据你的端口定义*********************
ADDR EQU 3FH
TXBUF EQU 31H
FONT EQU 32H
RXBUF EQU 33H
TIME1 EQU 48H
TIMEF EQU 2FH.4
TIME EQU 34H ;定时时间寄存器
DISPLAY_H EQU 3CH ;UPD16311显示字模高字节寄存器。
DISPLAY_M EQU 3DH ;UPD16311显示字模二字节寄存器。
DISPLAY_L EQU 3EH ;UPD16311显示字模低字节寄存器。
ZG EQU 10H ;"G"字模寄存器16
ZH EQU 11H ;"H"字模寄存器17
ZI EQU 12H ;"I"字模寄存器18
ZJ EQU 13H ;"J"字模寄存器19
ZK EQU 14H ;"K"字模寄存器20
ZL EQU 15H ;"L"字模寄存器21
ZM EQU 16H ;"M"字模寄存器22
ZN EQU 17H ;"N"字模寄存器23
ZO EQU 18H ;"O"字模寄存器24
ZP EQU 19H ;"P"字模寄存器25
ZQ EQU 1AH ;"Q"字模寄存器26
ZR EQU 1BH ;"R"字模寄存器27
ZS EQU 1CH ;"S"字模寄存器28
ZT EQU 1DH ;"T"字模寄存器29
ZU EQU 1EH ;"U"字模寄存器30
ZV EQU 1FH ;"V"字模寄存器31
ZW EQU 20H ;"W"字模寄存器32
ZX EQU 21H ;"X"字模寄存器33
ZY EQU 22H ;"Y"字模寄存器34
ZZ EQU 23H ;"Z"字模寄存器35
ZADD EQU 24H ;"+"字模寄存器36
ZSUBB EQU 25H ;"_"字模寄存器37
ZOR EQU 26H ;"/"字模寄存器38
ZAC3 EQU 27H ;".1"字模寄存器39
ZDOT EQU 28H ;"."
ZNO EQU 29H ;" "空格
ORG 0000H
AJMP START
ORG 0030H
START: MOV TXBUF,#0AH ;设置显示模式
LCALL WRCOM
MOV R2,#19 ;处理共11个单元
MOV ADDR,#0C0H
LCALL CLRVFD ;调用清屏子程序
MOV TXBUF,#41H ;清除LED口数据
CLR STB
LCALL WR6311
MOV TXBUF,#0FFH
LCALL WR6311
SETB STB
MOV ADDR,#0C6H
MOV R2,#7
LCALL CLRVFD
MOV 70H,#0DH ;以下是要向VFD控制器PT6311
MOV 71H,#ZV
MOV 72H,#0DH
MOV 73H,#9
MOV 74H,#8
MOV 75H,#0
MOV 76H,#0
MOV ADDR,#0C3H ;显示的起始单元
MOV TIME,#100 ;间隔显示时间
MOV R2,#7
LCALL JT_FONT
MAIN: ACALL SCAN ;读键值
AJMP MAIN
;*****************************键盘扫描程序***********************
;连发就通过延时后至SCAN3
;单发就通过判断键是否松开
SCAN: ACALL RDKEY
MOV TIME1,#6
JNZ SCAN0
AJMP SCAN3
SCAN0: MOV A,TXBUF
CJNE A,#01H,K2 ;00000001;
CLR TIMEF ;清除标志,显示就不延时!
LCALL CLRMZ
LCALL DVDDISP
AJMP SCANEND
K2: CJNE A,#02H,K3 ;00000010
SETB TIMEF
LCALL CLRMZ
LCALL VCDDISP
AJMP SCANEND
K3: CJNE A,#04H,K4 ;00000100
CLR TIMEF
LCALL CLRMZ
MOV 70H,#ZT
MOV 71H,#0AH
MOV 72H,#ZP
MOV 73H,#0EH
MOV ADDR,#0C3H
MOV R2,#4
LCALL JT_FONT
AJMP SCANEND
K4: CJNE A,#08H,K5 ;00001000
SETB TIMEF
LCALL CLRMZ
MOV 70H,#0CH
MOV 71H,#0DH
MOV 72H,#ZOR
MOV 73H,#ZL
MOV 74H,#0DH
MOV ADDR,#0C3H
MOV R2,#5
LCALL JT_FONT
AJMP SCANEND
K5: CJNE A,#10H,K6 ;00010000
CLR TIMEF
LCALL CLRMZ
MOV 70H,#8
MOV 71H,#9
MOV 72H,#0CH
MOV 73H,#5
MOV 74H,#1
MOV ADDR,#0C3H
MOV R2,#5
LCALL JT_FONT
AJMP SCANEND
K6: CJNE A,#20H,K7 ;00101111
SETB TIMEF
LCALL CLRMZ
MOV 70H,#5
MOV 71H,#9
MOV 72H,#1
MOV 73H,#ZM
MOV 74H,#0CH
MOV 75H,#ZU
MOV ADDR,#0C3H
MOV R2,#6
LCALL JT_FONT
AJMP SCANEND
K7: CJNE A,#40H,K8
CLR TIMEF
LCALL CLRMZ
MOV 70H,#ZH
MOV 71H,#0AH
MOV 72H,#ZI
MOV 73H,#0EH
MOV 74H,#ZR
MOV ADDR,#0C3H
MOV R2,#5
LCALL JT_FONT
AJMP SCANEND
K8: CJNE A,#80H,SCANEND
SETB TIMEF
LCALL CLRMZ
MOV 70H,#8
MOV 71H,#8
MOV 72H,#8
MOV 73H,#8
MOV 74H,#8
MOV 75H,#8
MOV 76H,#8
MOV ADDR,#0C3H
MOV R2,#7
LCALL JT_FONT
SCANEND: ACALL RDKEY
MOV A,RXBUF
JNZ SCANEND
SCAN3: RET
DVDDISP: MOV 70H,#0DH
MOV 71H,#ZV
MOV 72H,#0DH
MOV ADDR,#0C3H
MOV R2,#3
LCALL JT_FONT
RET
VCDDISP: MOV 70H,#ZV
MOV 71H,#0CH
MOV 72H,#0DH
MOV ADDR,#0C3H
MOV R2,#3
LCALL JT_FONT
RET
TVDISP: MOV 70H,#ZT
MOV 71H,#ZV
MOV ADDR,#0C3H
MOV R2,#2
LCALL JT_FONT
RET
;************************************************************
;************************读键子程序**************************
;************************************************************
RDKEY: MOV TXBUF,#42H
CLR STB
ACALL WR6311
ACALL RDDISP1
MOV TXBUF,RXBUF
SETB STB
RET
RDDISP1: SETB CLK
MOV R4,#8
RDDISP1A: CLR CLK
SETB C
JB DO,RDDISP1B
CLR C
RDDISP1B: NOP
RRC A
NOP
SETB CLK
DJNZ R4,RDDISP1A
MOV RXBUF,A
RET
D100ms: MOV R5,TIME1
D2001: MOV R6,#75
D2002: MOV R7,#100
DJNZ R7,$
DJNZ R6,D2002
DJNZ R5,D2001
RET
;***************清"米"字显示区***************
CLRMZ: MOV ADDR,#0C3H
MOV R2,#7
LCALL CLRVFD
RET
;*********************显示一个字符子程序***********************
MZ_DISPLAY:MOV A,FONT
MOV B,#3
MUL AB ;3字节(每个字符由3个字节组成)
MOV 57H,A
MOV DPTR, #TAB_FONT
MOVC A, @A+DPTR
MOV DISPLAY_H, A
INC DPTR
MOV A,57H
MOVC A, @A+DPTR
MOV DISPLAY_M, A
INC DPTR
MOV A,57H
MOVC A, @A+DPTR
MOV DISPLAY_L, A
MOV TXBUF, #40H ; 设置“写数据到显示RAM”命令。
LCALL WRCOM
MOV TXBUF, ADDR ; 设置“RAM显示地址”命令。
LCALL WRADDR
MOV TXBUF,DISPLAY_H; 选定的字符送数码管显示。
LCALL WR6311
MOV TXBUF,DISPLAY_M
LCALL WR6311
MOV TXBUF,DISPLAY_L
LCALL WR6311
SETB STB
MOV TXBUF, #8BH ; 设置“显示控制”命令字。
LCALL WRCOM
RET
DISP: MOV TXBUF, #40H ; 设置“写数据到显示RAM”命令。
LCALL WRCOM
MOV TXBUF, ADDR ; 设置“RAM显示地址”命令。
LCALL WRADDR
MOV TXBUF,70H; 选定的字符送数码管显示。
LCALL WR6311
MOV TXBUF,71H
LCALL WR6311
SETB STB
MOV TXBUF, #8BH ; 设置“显示控制”命令字。
LCALL WRCOM
RET
;***********************静态字符显示子程序*************************
JT_FONT: MOV R1,#70H
MOV FONT,@R1
LOOP: LCALL MZ_DISPLAY
INC R1
MOV FONT,@R1
INC ADDR
INC ADDR
INC ADDR
JB TIMEF,III
LCALL DELAY$ ;调整显示速度
III: DJNZ R2,LOOP
RET
;************************************************************
;*******************写命令子程序*****************************
;************************************************************
WRCOM: CLR STB
ACALL WR6311
SETB STB
RET
;******************写地址子程序******************************
WRADDR: CLR STB
ACALL WR6311
RET
;********************写一个字节子程序************************
WR6311: MOV R0,#8
MOV A,TXBUF ;要发送的数放在TXBUF
WR6311A: CLR CLK
RRC A ;右环移
SETB DI
JC WR6311B
CLR DI
WR6311B: SETB CLK
DJNZ R0,WR6311A
RET
;***************显示屏清屏子程序****************************
CLRVFD: MOV TXBUF,#40H
LCALL WRCOM
MOV TXBUF,ADDR
LCALL WRADDR
MOV TXBUF,#0
LCALL WR6311
MOV TXBUF,#0
LCALL WR6311
MOV TXBUF,#0
LCALL WR6311
SETB STB
MOV TXBUF,#8CH ;亮度控制
LCALL WRCOM
INC ADDR
INC ADDR
INC ADDR
DJNZ R2,CLRVFD
RET
DELAY$: MOV R7,TIME
DELAY$_1: MOV R6,#5
DELAY$_2: MOV R5,#245 ;20us
DJNZ R5,$ ;980us
DJNZ R6,DELAY$_2
DJNZ R7,DELAY$_1
RET
;HL-D013段码表
TAB_FONT:
DB 49H,0CEH,00H ;---0
DB 08H,04H ,00H ;---1
DB 30H,0CCH ,00H ;---2
DB 38H,8CH ,00H ;---3
DB 28H,05H ,00H ;---4
DB 78H,88H ,00H ;---5
DB 78H,0C8H ,00H ;---6
DB 08H,0CH ,00H ;---7
DB 78H,0CCH ,00H ;---8
DB 78H,8CH ,00H ;---9
DB 29H,06H ,00H ;---A
DB 2AH,8DH ,00H ;---B
DB 40H,0C8H ,00H ;---C
DB 0AH,8DH ,00H ;---D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -