📄 波形信号发生器程序.asm
字号:
;LCD液晶监控程序
;8155扩展的PB口,PC口分别作2×8键盘的列线口、行线口
;74LS138的Y7作为8155的片选信号
FD8155 EQU 00H ;8155命令口低8位地址
FG8155 EQU 0F0H ;8155命令口高8位地址
AD8155 EQU 01H ;8155PA口低8位地址
AG8155 EQU 0F0H ;8155PA口高8位地址
BD8155 EQU 02H ;8155PB口低8位地址
BG8155 EQU 0F0H ;8155PB口高8位地址
CD8155 EQU 03H ;8155PC口低8位地址
CG8155 EQU 0F0H ;8155PC口高8位地址
KEYZHI EQU 2FH ;键值存放单元
CSA EQU P3.4 ;液晶片选在(左,前)显示
CSB EQU P3.5 ;在(右、后)显示
E EQU P3.3 ;使能信号
DI EQU P3.2 ;选择存指令还是数据单元
COMSTART EQU 70H ;液晶的启动
COMONOFF EQU 71H ;液晶开显示
TABADDR EQU 72H ;要显示字符的表首地此
COMDATA EQU 73H ;字符数据
COMSAME EQU 74H ;液晶数据与指令的传送
JCS1CS2 EQU 7FH ;片选
COMXSTART EQU 76H ;起始页地址存放单元
COMXEND EQU 77H ;终止页地址存放单元
COMYSTART EQU 78H ;起始列地址存放单元
COMYEND EQU 79H ;终止列地址存放单元
SCL BIT P3.0 ;24c04控制命令字
SDA BIT P3.1 ;24c04传送数据
FFF EQU 20H.0 ;忙状态标志位
ADDR EQU 1FH ;写入24c04的地此
DATA0 EQU 40H ;要读入24c04数据的首地此
DATA1 EQU 50H ;读回单片机存放数据的首地此
ORG 0000H
START: LJMP MAIN
ORG 0030H
MAIN: MOV SP, #5FH
MOV PSW, #00H
MOV R0, #20H
MOV R7, #96
CLR A
LOOP: MOV @R0, A
INC R0
DJNZ R7, LOOP
LCALL CSH8155 ;8155初始化
LCALL INT ;液晶初始化
MOV COMXSTART,#0B8H ;液晶清屏
MOV COMXEND, #0BFH
MOV COMYSTART,#40H
MOV COMYEND, #7FH
LCALL CLEAR1
MOV DPTR, #TAB0 ;欢
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#60H
MOV COMYEND, #6FH
MOV JCS1CS2, #00H
LCALL DISP
MOV DPTR, #TAB1 ;迎
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#70H
MOV COMYEND, #7FH
MOV JCS1CS2, #00H
LCALL DISP
MOV DPTR, #TAB2 ;使
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#40H
MOV COMYEND, #4FH
MOV JCS1CS2, #01H
LCALL DISP
MOV DPTR, #TAB3 ;用
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#50H
MOV COMYEND, #5FH
MOV JCS1CS2, #01H
LCALL DISP
MOV DPTR,#TAB4 ;正
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#40H
MOV COMYEND,#4FH
MOV JCS1CS2,#00H
LCALL DISP
MOV DPTR,#TAB5 ;弦
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#50H
MOV COMYEND,#5FH
MOV JCS1CS2,#00H
LCALL DISP
MOV DPTR,#TAB6 ;波
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#60H
MOV COMYEND,#6FH
MOV JCS1CS2,#00H
LCALL DISP
MOV DPTR,#TAB7 ;信
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#70H
MOV COMYEND,#7FH
MOV JCS1CS2,#00H
LCALL DISP
MOV DPTR,#TAB8 ;号
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#40H
MOV COMYEND,#4FH
MOV JCS1CS2,#01H
LCALL DISP
MOV DPTR,#TAB9 ;发
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#50H
MOV COMYEND,#5FH
MOV JCS1CS2,#01H
LCALL DISP
MOV DPTR,#TABA ;生
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#60H
MOV COMYEND,#6FH
MOV JCS1CS2,#01H
LCALL DISP
MOV DPTR,#TABB ;器
MOV COMXSTART,#0BCH
MOV COMXEND,#0BDH
MOV COMYSTART,#70H
MOV COMYEND,#7FH
MOV JCS1CS2,#01H
LCALL DISP
TSF0: LCALL KEY
KEYGN: MOV DPTR, #KEYTAB
MOV KEYZHI, A
CLR C
SUBB A, #0BH
JNC CLR0
KK: MOV A, KEYZHI
MOV B, #03H
MUL AB
JMP @A+DPTR
CLR0: MOV R0, #COMXSTART
MOV R1, #COMYSTART
MOV COMXSTART,#0B8H
MOV COMXEND, #0BFH
MOV COMYSTART,#40H
MOV COMYEND, #7FH
LCALL CLEAR1
LJMP KK
;键功能转移指令表KEYTAB
KEYTAB: LJMP TSF0
LJMP KEY00
LJMP KEY01
LJMP KEY02
LJMP KEY03
LJMP KEY04
LJMP KEY05
LJMP KEY06
LJMP KEY07
LJMP KEY08
LJMP KEY09
LJMP KEY0A
LJMP KEY0B
LJMP KEY0C
LJMP KEY0D
LJMP KEY0E
LJMP KEY0F
;键功能程序区
KEY00:
LJMP TSF0
KEY01:
LJMP TSF0
KEY02:
LJMP TSF0
KEY03:
LJMP TSF0
KEY04:
LJMP TSF0
KEY05:
LJMP TSF0
KEY06:
LJMP TSF0
KEY07:
LJMP TSF0
KEY08:
LJMP TSF0
KEY09:
LJMP TSF0
KEY0A: LCALL ZHISU ;置频率
LJMP TSF0
KEY0B: LCALL BJ ;频率步进
LJMP TSF0
KEY0C: LCALL DJ ;频率递减
LJMP TSF0
KEY0D: LCALL FDTJ ;幅度调节
LJMP TSF0
KEY0E: LCALL JIDAI ;产生基带信号
LJMP TSF0
KEY0F: LCALL R24C02 ;掉电保护
LJMP TSF0
;液晶初始化子程序
INT: MOV COMONOFF, #03FH
MOV COMSAME, COMONOFF
LCALL PRL0
MOV COMSTART, #0C0H
MOV COMSAME, COMSTART
LCALL PRL0
RET
;写命令子程序
PRL0: SETB CSA
SETB CSB ;CLR CSB
CLR DI
PRL01: NOP
NOP
NOP
NOP
MOV P0, COMSAME
SETB E
CLR E
RET
;液晶清屏子程序
CLEAR1: INC COMXEND ;终止页地址加1
INC COMYEND ;终止列地址加1
CLS11: MOV A, @R0 ;取起始页地址
MOV COMSAME, A ;临时存放页地址
LCALL PRL0 ;调写清屏命令子程序
MOV A, @R1 ;取起始列地址
MOV COMSAME, A ;临时存放列地址
LCALL PRL0 ;调写清屏命令子程序
MOV A, COMYSTART ;恢复起始列地址
CLS22: MOV COMDATA, #00H ;点灭数据
LCALL PRL1 ;调写清屏数据子程序
INC A ;列地址加1
CJNE A, COMYEND, CLS22 ;列写完否?
INC @R0 ;页地址加1
MOV A, @R0 ;临时存放页地址
CJNE A, COMXEND, CLS11 ;页写完否?
RET
;写数据子程序
PRL1: PUSH A
SETB CSA ;Write data
SETB CSB
PRL101: NOP
NOP
NOP
NOP
MOV P0, COMDATA
SETB DI
SETB E
CLR E
POP A
RET
;8155初始化子程序CSH8155
CSH8155: PUSH DPH
PUSH DPL
PUSH ACC
MOV P2, #FG8155
MOV R1, #FD8155
MOV P0, R1
MOV A, #03H
MOVX @R1, A
POP ACC
POP DPL
POP DPH
RET
;液晶显示子程序
DISP: PUSH A
PUSH PSW
SETB RS0
CLR RS1
MOV R0,#COMXSTART
MOV R1,#COMYSTART
INC COMXEND
INC COMYEND
PUT1: MOV A, @R0
MOV COMSAME, A ;Set PAGE
LCALL PRL00
MOV A, @R1 ;Set LINE
MOV COMSAME, A
LCALL PRL00
PUT2: LCALL WORD
LCALL PRL11
MOV A, @R1
INC A
MOV @R1, A
CJNE A, COMYEND, PUT2
MOV A, COMSAME
MOV @R1, A
MOV A, @R0
INC A
MOV @R0, A
CJNE A , COMXEND, PUT1
POP PSW
POP A
RET
;写命令子程序
PRL00: SETB CSA ;Write ins
SETB CSB ;CLR CSB
CLR DI
PRL001: NOP
NOP
NOP
NOP
MOV P0, COMSAME
SETB E
CLR E
RET
;写数据子程序
PRL11: MOV A, JCS1CS2
CJNE A, #00H, PRL1111
SETB CSA ;选择左片
CLR CSB
LJMP PRL111
PRL1111: CLR CSA ;选择右片
SETB CSB
PRL111: NOP
NOP
NOP
NOP
MOV P0, COMDATA
SETB DI
SETB E
CLR E
RET
;查表程序
WORD: MOV A, #00H
MOVC A, @A+DPTR
MOV COMDATA, A
INC DPTR
RET
;延时程序
DELAY: MOV R4, #5
D1: MOV R5, #5
D2: MOV R6, #100
DJNZ R6, $
DJNZ R5, D2
DJNZ R4, D1
RET
DELAY1: MOV R4, #50
D11: MOV R5, #50
D22: MOV R6, #100
DJNZ R6, $
DJNZ R5, D2
DJNZ R4, D1
RET
TAB:
;-- 文字: 0 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,00FH,010H,020H,020H,010H,00FH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 1 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,010H,010H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,020H,020H,03FH,020H,020H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 2 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,070H,008H,008H,008H,088H,070H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,030H,028H,024H,022H,021H,030H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 3 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,030H,008H,088H,088H,048H,030H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,018H,020H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 4 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,000H,0C0H,020H,010H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,007H,004H,024H,024H,03FH,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 5 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,0F8H,008H,088H,088H,008H,008H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,019H,021H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 6 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,0E0H,010H,088H,088H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,00FH,011H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 7 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,038H,008H,008H,0C8H,038H,008H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,03FH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 8 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,070H,088H,008H,008H,088H,070H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,01CH,022H,021H,021H,022H,01CH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 9 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,031H,022H,022H,011H,00FH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: A --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 000H,000H,0C0H,038H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 020H,03CH,023H,002H,002H,027H,038H,020H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: B --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 008H,0F8H,088H,088H,088H,070H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 020H,03FH,020H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: C --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 0C0H,030H,008H,008H,008H,008H,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 007H,018H,020H,020H,020H,010H,008H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: D --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 008H,0F8H,008H,008H,008H,010H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 020H,03FH,020H,020H,020H,010H,00FH,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: E --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 008H,0F8H,088H,088H,0E8H,008H,010H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 020H,03FH,020H,020H,023H,020H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -