五、程序清单 文件名: DPJ05.ASM ORG 0000H LJMP SE13 ORG 0100H
SE13: MOV SP,#53H
MOV P2,#0FFH ;8155 地址(FF20H~FF23H 控制口、A、B、C口) MOV A,#43H ;8155 控制字
MOV DPTR,#0FF20H ;FF20H为8155控制口地址 MOVX @DPTR,A ;8155 初始化
MOV 7EH,#00H ;7BH~7EH为显示缓冲区高4位,显示0832 MOV 7DH,#08H MOV 7CH,#03H MOV 7BH,#02H
LO20: MOV R6,#00H ;待转换数据初始值→R6 LO21: MOV DPTR,#8000H ;8000H为0832的地址
26
MOV MOVX MOV LCALL LCALL MOV LCALL INC A,R6 ;待转换数据→A @DPTR,A ;启动D/A转换
R0,#79H ;79H~7AH为显示缓冲区低2位 PTDS ;调拆字子程序 SSEE ;调显示子程序 R2,#08H ;延时初值送R2 DELYA ;调延时子程序 R6 ;待转换数据加1 CJNE LO22: MOV DEC MOV MOVX MOV LCALL LCALL MOV LCALL CJNE LJMP PTDS: MOV LCALL MOV SWAP PTDS1: ANL MOV INC RET SSEE: SETB MOV SSE2: MOV MOV MOV SSE1: MOV MOV CPL MOVX MOV MOV
R6,#0FFH,LO21 DPTR,#8000H
R6 A,R6
@DPTR,A R0,#79H PTDS SSEE
R2,#08H DELYA
R6,#00H,LO22 L020
R1,A PTDS1 A,R1
A A,#0FH @R0,A R0 RS1 R5,#05H 30H,#20H 31H,#7EH R7,#06H R1,#21H A,30H A @R1,A R0,31H A,@R0 ;升压结束否? ;待转换数据减1 ;启动D/A转换 ;延时初值送R2 ;降压结束否? ;待显示数据送R1临时保存 ;待显示数据高、低4位交换 ;屏蔽高4位
;待显示数据低4位送39H ;待显示数据高4位送3AH ;切换工作寄存器区 ;
;20H=00100000B位选码 ;显示区首地址7EH送31H ;循环计数器置初值,6位显示 ;FF21H为8155A口地址(字位口);取出位选码 ;取反11011111B
;输出位选码(扫描字) ;显示区首地址7EH送R0 ;取待显示数据
27
MOV DPTR,#DDFF ;表首地址送DPTR
MOVC A,@A+DPTR ;查表得待显示数据的ASC2码
MOV R1,#22H ;FF22H为8155B口地址(字形口) MOVX @R1,A ;输出待显示数据的ASC2码(字形码) MOV A,30H ;
RR A ;修改扫描字 MOV 30H,A ;保存扫描字
DEC 31H ;修改待显示数据地址 MOV A,#0FFH ;“灭” MOVX @R1,A ;关显示器
DJNZ R7,SSE1 ;6位显示完否?未完继续 DJNZ R5,SSE2 ;刷新5次
CLR RS1 ;返回原工作寄存器区 RET
DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9共阳极
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH ;AbcdEF‘灭’PH DELYA: PUSH 02H ;将R2的内容压入堆栈 DELYB: PUSH 02H DELYC: PUSH 02H
DELYD: DJNZ R2,DELYD ;延时8×2×1us=16us LCALL SSEE ;刷新显示
POP 02H ;还原R2中的值 DJNZ R2,DELYC ;16us×8=128us POP 02H
DJNZ R2,DELYB ;128us×8=1024us POP 02H
DJNZ R2,DELYA ;1024us×8=8192us RET END
六、实验步骤
CS5→8000H JX2→JX0 WR→/IOWR AOUT→DJ
运行程序,数码管上显示不断加大或减小的数字量,观察小直流电动机的转速与数码管上所显示数据的对应关系。
七、思考
修改程序,使能产生锯齿波。
28
键盘显示电路
29
MCS-51单片机实验指导书
机电工程学院单片机实验室
2010年4月
30
目 录
第一章 DICE-5208K开发型单片机综合实验仪概述 第二章 开发环境简介
实验一 彩灯控制实验
实验二 定时/计数器实验(脉冲计数) 实验三 可编程I/O接口芯片8255实验 实验四 ADC0809实验 实验五 DAC0832实验
31