实验三数码管动态显示程序设计1.docx
- 文档编号:25959810
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:14
- 大小:32.12KB
实验三数码管动态显示程序设计1.docx
《实验三数码管动态显示程序设计1.docx》由会员分享,可在线阅读,更多相关《实验三数码管动态显示程序设计1.docx(14页珍藏版)》请在冰豆网上搜索。
实验三数码管动态显示程序设计1
实验三-数码管动态显示程序设
计1
实验三数码管动态显示程序设计
实验目的
1、理解数码管动态显示原理
2、理解数码管动态显示电路的设计方法
3、掌握数码管动态显示程序的设计方法
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验内容
1、动态扫描显示程序
2、特征位小数点控制显示程序
实验电路图
程序流程图
、数码管动初始化显示
取缓冲区一输出位选数
显示指针指
实验步骤及调试信息
1、新建实验项目
2、输入实验程序并补充完整
;数码管动态显示程序
;包含小数点显示
;位选码输出有两种方式:
;DispSelection1:
—次一位
;DispSelection2:
—次一字节
■
;2009-08-20
LEDCLKbitP3.4
LEDDINbitP2.3
LEDDATAdataP0
dsegat30h
dispbuf:
ds8;显示缓冲区8字节disppoint:
ds1;小数点控制数据maincodeSEGMENTCODE
CSEGat0
LJMPStart
RSEGmaincode
Start:
CLREA
movsp,#0c0h
movdispbuf,#08h
movdispbuf+1,#04h
movdispbuf+2,#00h
movdispbuf+3,#08h
movdispbuf+4,#02h
movdispbuf+5,#00h
movdispbuf+6,#02h
movdispbuf+7,#07h
movdisppoint,#02h;第2位小数点亮
LCALLdisp
SJMP$-3
;数码管动态显示程序
;包含小数点显示
;位选码输出有两种方式:
;DispSelection1:
—次一位
;DispSelection2:
—次一字节
■
;2009-08-20
Disp:
MOVR7,#8
MOVR0,#dispbuf
CLRLEDCLK
SETBLEDDIN
Displ:
MOVA,@R0
MOVDPTR,#DispTab
MOVCA,@A+DPTR
cpla
;LCALLDispdot;显示小数点程序MOVLEDDATA,A;在输出之前加入显示小数点程序
LCALLDispSelection1;输出位选择信号,
DispSelection2是第二种
;lcalldispsel3
LCALLDelay1ms
movp2,#0ffh
INCR0
DJNZR7,Disp1
movp2,#0ffh
RET
;位选码以一次一位方式输出dispsel3:
movdptr,#DispSTab
mova,r7
movea,@a+dptrepia
;swapamovp2,aret
DispSeleetion1:
CJNER7,#8,DispSelectionilCLRLEDDIN
DispSeleetionil:
SETBLEDCLK
NOP
CLRLEDCLK
SETBLEDDIN
RET
;位选码以一次一字节方式输出
DispSeleetion2:
MOVB,#8
MOVDPTR,#DispSTab
MOVA,R7
MOVCA,@A+DPTR
CPLA
DispSelection21:
RLC
A
MOV
LEDDIN,C
SETB
LEDCLK
NOP
CLR
LEDCLK
DJNZ
B,DispSelection21
RET
DispSTab:
DB
00H,80H,20H,40H,10H,08H,04H,02H,01H;位
选码数据表
dispaequ80h;数码管各段数据定义
dispbequ40h
dispcequ20h
dispdequ10h
dispeequ08h
dispfequ04h
dispgequ02h
disphequ01h
disp8equOffh-disph
DispTab:
db
disp8-dispg,dispb+dispc,dispa+dispb+dispg+dispd+dispe;0,1,2
db
disp8-dispe-dispf,disp8-dispa-dispd-dispe,disp8-dispb-dispe;3,4,5
db
disp8-dispb,dispa+dispb+dispc,disp8,disp8-dispe;6,7,8,9
db
disp8-dispd,disp8-dispa-dispb,disp8-dispb-dispc-dispg;a,b,c
db
disp8-dispa-dispf,disp8-dispb-dispc,disp8-dispb-dispc-dispd;d,e,f
dbdisp8-dispb-dispc,0ffh,00h,dispg
;H,全亮,全暗,-
;特征位小数点控制显示程序
;把小数点显示程序加到显示码输出之前
;输入:
A:
显示译码值
Dispdot:
MOV
B,A
MOV
A,R7
MOV
DPTR,#DispSTab
MOVC
A,@A+DPTR
ANL
A,disppoint
SETB
C;本行及以下4行可改成MOVC,P
JZ
Dispdot1
CLR
C;点亮小数点
;R7:
当前正在显示的LED编号
;输出:
无
Dispdotl:
CPLC;本行根据情况增减
MOVA,B
CPLA
MOVACC.7,C;小数点由D7控制;MOVLEDDATA,A;本行可以删除
RET
DelayNms:
LCALLDelaylms
DJNZR7,$-3
RET
Delaylms:
PUSH07
MOVR7,#250;1ms
NOP
NOP
DJNZR7,$-2
POP07
RET
END
3、编译下载实验程序,并修改错误(按附录说
明)
4、全速运行程序,查看实验现象。
数码管稳定的显示84082027
6单步执行,分析各程序的功能特点。
7、整理实验设备
实验现象
在LED数码管上稳定显示84082027,没有闪烁等情况。
说明显示扫描速度较快,一般大于50Hz以上。
LED数码管有一盏不亮,原因是它对应的三极管不能正常工作。
程序运行之后,0030H后8位为0804000802000207调试信息
1、编译无误。
2、程序各主要部分运行时间
显示一位数码管用时524us,显示8位用时4195us。
3、通过改变movedisppoint,#08H可以改变显示小数点。
如要显示后3
位小数点,可改为movedisappoint,#07H.
思考题
1、运行上面的程序,计算显示程序每秒运行的次数?
答:
显示8位数码管用时4197us,所以显
示程序每秒运行次数为1十(4197X106)=238次。
2、请说明数码管的消隐如何实现。
;包含小数点显示
;位选码输出有两种方式:
;DispSelection1:
—次一位
;DispSelection2:
—次一字节
;2009-08-20
LEDCLKbitP3.4
LEDDINbit
P2.3
LEDDATA
data
P0
dsegat
30h
dispbuf:
ds8
;显示缓冲区8字节
;disppoint:
ds
1;小数点控制数据
disapper:
ds1
maincodeSEGMENTCODE
CSEGat
0
LJMPStart
RSEGmaincode
Start:
CLREA
MO\sp,#0c0h;重定义堆栈空间
MOVdispbuf+0,#08h;往显示缓冲区填充数
MOVdispbuf+1,#04h
MOVdispbuf+2,#00h
MOV
dispbuf+3,#08h
MOV
dispbuf+4,#02h
MOV
dispbuf+5,#00h
MOV
dispbuf+6,#02h
MOV
dispbuf+7,#07h
;MOV
disppoint,#08h
;第4位小数点亮
MOV
disapper,#01h
;第1位数码管消隐
LCALL
disp
SJMP
$-3
;数码管动态显示程序
;包含小数点显示
;位选码输出有两种方式:
;DispSelection1:
—次一位
;DispSelection2:
—次一字节
Disp:
MO\R7,#8
MO\RO,#dispbuf;送缓冲区首地址
CLRLEDCLK;送低电平
SETBLEDDIN;
Disp1:
MO\A,@RO;送要显示的数据
MO\DPTR,#DispTab;表首地址
MOVCA,@A+DPTR;查表
;CPLA
;LCALLDispdot;显示小数点程序
LJMPdisapper1;消隐程序
F:
MO\LEDDATA,A;在输出之前加入显示小数点程序
LCALLDispSelection1;输出位选择信号,DispSelection2是第二种
;LCALLdispsel3
LCALLDelay1ms
MOVP2,#0FFH
INCR0
DJNZR7,Disp1
MOVP2,#0FFH
RET;位选码以一次一位方式输出;dispsel3:
J
;MOV)PTR,#DispSTab
;MO\A,R7
;MOVCA,@A+DPTR
;CPLA
;swapA
;MO\P2,A
;RETdisapperl:
movB,A
MOVA,R7
MOVDPTR,#DispSTabmovcA,@A+DPTRANLA,disapper
JNZdisapper2
MOVA,B
CPLA
LJMPF;不消隐
disapper2:
MOVA,#OFFH
LJMPF;消隐
DispSelection1:
;PUSHACC
;MOVLEDDATA,OFFH
CJNER7,#8,DispSelection11CLRLEDDIN
;POPACC
;MOVLEDDATA,A
DispSelection11:
SETBLEDCLK
NOP
CLRLEDCLK
SETBLEDDIN
RET;位选码以一次一字节方式输出;6和7不能显示相反
DispSelection2:
MO\B,#8
MOV)PTR,#DispSTab
MO\A,R7
MOVCA,@A+DPTRCPLA
DispSelection21:
RLCA
MO\LEDDIN,C
SETBLEDCLK
NOP
CLRLEDCLK
DJNZB,DispSelection21
RET
DispSTab:
DB00H,80H,20H,40H,10H,08H,04H,02H,01H;位选码数据表
dispa
equ80h;数码管各段数据疋义
dispb
equ40h
dispc
equ20h
dispd
equ10h
dispe
equ08h
dispf
equ04h
dispg
equ02h
disph
equ01h
disp8
equ0ffh-disph
DispTab:
;0,1,2
;6,7,8,9
;a,b,c
dbdisp8-dispg,dispb+dispc,dispa+dispb+dispg+dispd+dispe
db
disp8-dispe-dispf,disp8-dispa-dispd-dispe,disp8-dispb-dispe;3,4,5
dbdisp8-dispb,dispa+dispb+dispc,disp8,disp8-dispe
dbdisp8-dispd,disp8-dispa-dispb,disp8-dispb-dispc-dispg
dbdisp8-dispa-dispf,disp8-dispb-dispc,disp8-dispb-dispc-dispd;d,e,fdbdisp8-dispb-dispc,0ffh,00h,dispg;H,全亮,全暗,-
;特征位小数点控制显示程序
;把小数点显示程序加到显示码输出之前
;输入:
A:
显示译码值
;R7:
当前正在显示的LED编号
;输出:
无
Dispdot:
MO\B,A
M0\A,R7
MOV)PTR,#DispSTab
MOVCA,@A+DPTR
;ANLA,disppoint
C,P
SETBC;本行及以下4行可改成MOV
JZDispdot1
CLRC;点亮小数点
Dispdot1:
;CPLC;本行根据情况增减
MO\A,B
CPLA
MO\ACC.O,C;小数点由D7控制
;MONLEDDATAA本行可以删除
RET
DelayNms:
LCALLDelaylmsDJNZR7,$-3RET
Delaylms:
PUSH07
MO\R7,#25O;1ms
NOP
NOP
DJNZR7,$-2
POPO7
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数码管 动态 显示 程序设计