- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORG0000H
LJMPSTART
ORG0030H
START:MOVSP,#5FH
MOVDPTR,#TABLE
MOV40H,#7
MOV41H,#4
MOV42H,#8
MOV43H,#5
MOV44H,#3
MOV45H,#2
MOVR3,#20
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
LP:MOVA,44H
CJNEA,#10,LOOP
INC45H
SJMPLOOP
DISP:MOVB,#0FEH
MOVR0,#45H
NEXT3:MOVP3,#0FFH
MOVP3,B
MOVA,@R0
MOVCA,@A+DPTR
MOVP2,A
LCALLDELAY
DECR0
MOVA,B
RLA
MOVB,A
CJNEA,#0BFH,NEXT3
ORG0000H
LJMPSTART
ORG000BH
LJMPTIMER0
ORG0030H
START:MOVSP,#5FH
MOVDPTR,#TABLE
MOV40H,#9
MOV41H,#5
MOV42H,#9
MOV43H,#5
MOV44H,#3
MOV45H,#2
CLR00H
MOVR3,#20
MOV TMOD,#01H
MOV41H,#0
INC42H
MOVA,42H
CJNEA,#10,LOOP
MOV42H,#0
INC43H
MOVA,43H
CJNEA,#6,LOOP
MOV43H,#0
INC44H
MOVA,45H
CJNEA,#2,LP
MOVA,44H
CJNEA,#4,LOOP
CLRA
MOV44H,A
MOV45H,A
SJMPLOOP
MOV41H,#0
INC42H
MOVA,42H
CJNEA,#10,LOOP
MOV42H,#0
INC43H
MOVA,43H
CJNEA,#6,LOOP
MOV43H,#0
INC44H
MOVA,45H
CJNEA,#2,LP
MOVA,44H
CJNEA,#4,LOOP
CLRA
MOV44H,A
MOV45H,A
SJMPLOOP
SETB TR0
LOOP:ACALLDISP
LP1:JBCTF0,LP2
SJMPLOOP
LP2:MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR3,LOOP
MOVR3,#1
INC40H
MOVБайду номын сангаас,40H
CJNEA,#10,LOOP
MOV40H,#0
INC41H
MOVA,41H
CJNEA,#6,LOOP
RET
DELAY:MOVR7,#10
DL1:MOVR6,#249
NOP
DJNZ R6,$
DJNZ R7,DL1
RET
TABLE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
结果与分析:在Proteus仿真系统中可见,数码管将会先显示秒钟的0~59,在显示到59时进位,由此循环,分钟也将会有0~59循环,到59的时候进位,时钟则显示0~24,仿真图如下所示:图一为仿真原试图,图二为仿真效果图
项目编号
EX6_4
项目名称
6位数码管显示24小时
班级
楼宇081
小组
完成时间
5月12日
完成人员
林宗跃
自我评价
教师评价
任务要求:在Proteus设计如下午所示的仿真图,实现6个LED数码管24小时,数码管分别实现23小时59秒59分的显示,为简单的电子时钟设计。P2口输出位选码,P0口输出段选码,数码管为共阳数码管。在Medwin集成开发环境中编辑/编译控制程序,并产生代码,在Protus平台系统里仿真系统,撰写报告。
图一:
图二:
序号
注意事项
1
在Proteus仿真系统中需要注意接线问题,看清楚对应的端口
2
需要清楚的了解三极管的接线方式
3
需要对LED数码管的选择进行考虑
4
若在Medwin中无法对程序进行产生代码,可选用按键“输出IntelHex文件”
备注:可将程序进行修改,更改为有中断来实现6位数码管显示24小时的设计,程序如下:
LP:MOVA,44H
CJNEA,#10,LOOP
MOV44H,#0
INC45H
SJMPLOOP
DISP:MOVB,#0FEH
MOVR0,#45H
NEXT3:MOVP3,#0FFH
MOVP3,B
MOVA,@R0
MOVCA,@A+DPTR
MOVP2,A
LCALLDELAY
DECR0
MOVA,B
RLA
MOVB,A
任务分析:将在4位数码管动态显示的基础上,对程序进行修改,此处采用6个相连的共阳极LED,位选位高电平有效。要让不同的数码管显示不同的数值,需将显数值的段码送给数码管的各段,位选位用来选择具体哪个数码管被点亮,以实现数码管秒钟、分钟及时钟的区别,分别循环显示0~59、0~59及0~24。
设计内容:(1)打开Medwin软件(2)新建源程序文件,编辑源代码(3)编译源程序,若没有错,则产生代码;若有错,则修改错误(4)仿真调试程序代码(5)在Proteus中打开4位数码管动态显示电路图(6)加载程序代码,调试。程序代码如下:
END
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETBET0
SETBEA
LOOP:ACALLDISP
LP1:JB 00H,LP2
SJMPLOOP
LP2:CLR00H
INC40H
MOVA,40H
CJNEA,#10,LOOP
MOV40H,#0
INC41H
MOVA,41H
CJNEA,#6,LOOP
CJNEA,#0BFH,NEXT3
RET
TIMER0:MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR3,T_END
MOVR3,#1
SETB00H
T_END:RETI
DELAY:MOV R7,#10
DL1:MOV R6,#249
NOP
DJNZ R6,$
DJNZ R7,DL1
RET
TABLE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H