资源描述
广告灯
一、问题的提出
用八个发光二极管代替广告灯,实现广告灯的循环以及花样变化!
二、总体设计
1、分析问题的功能
将P1 口的8个引脚分别接8位发光二极管0,1,2,3,4,5,6,7。通过控制P1口的输出,实现每隔0.5s接在P1 口的8个发光二极管从右依次点亮0,1,2,3,4,5,6,7,然后从左依次熄灭7,6,5,4,3,2,1,0,然后8个发光二极管全部点亮,闪烁3 次;接着,每隔0.5s接在P1 口的8个发光二极管从左依次点亮7,6,5,4,3,2,1,0,然后从右依次熄灭0,1,2,3,4,5,6,7,然后8个发光二极管全部点亮,闪烁3 次;接着8个二极管从左轮流点亮0,1,2,3,4,5,6,7,然后8个二极管从右轮流点亮7,6,5,4,3,2,1,0,然后8个发光二极管全部点亮,闪烁5 次,之后全灭;如此反复循环。
循环过程中通过中断加入一些广告灯的花样变化。
2、系统总体结构设计
1)硬件设计:8031单片机,DP-51PROC综合仿真实验仪,P1口,定时器0,外部中断1等。
2)软件设计:各功能模块详见程序清单后注释。
三、详细设计:
1、硬件详细设计:
时间间隔
可采用软件延时或定时器定时,软件延时:8031时钟频率11.0592MHz,延时0.5S,P1口输出。
采用定时器0定时延时:
ORG 800BH
LJMP TOS
定时器0赋定时初值:
MOV TH0,#4CH
MOV TL0,#00H
电路图:
定时中断子程序:
TOS: MOV TH0,#4CH
MOV TL0,#00H
INC R0
CJNE R0,#10,LL
MOV R0,#00H
……
……
RETI
外部中断子程序:
INT1S: PUSH ACC
……
……
POP ACC
RETI
2、软件详细设计:
软件延时:
DELAY: MOV 31H,#0
MOV 32H,#0
LOOP2: DJNZ 32H,$
DJNZ 32H,$
DJNZ 32H,$
DJNZ 32H,$
DJNZ 31H,LOOP2
RET
逐个点亮:
NEXT1:MOV P1,A
CLR C
RLC A
INC R1
SJMP NEXT
逐个熄灭:
NEXT3:MOV P1,A
SETB C
RRC A
INC R2
SJMP NEXT
循环点亮:
NEXT13:MOV P1,A
RL A
INC R7
SJMP NEXT
闪烁:
NEXT11:MOV P1,A
CPL A
INC R6
SJMP NEXT
花样变换:
见外部中断1子程序。
3、设计中的主要困难及解决方案
1).通过一个定时器来定时延时,将多个循环过程串联起来,需要解决各个循环之间的衔接问题。本实验中通过借用计数器(R0~R7,20H,30H等)来实现查询等待,通过D1:CJNE R1,#8,D1语句巧妙的把多个循环串联在一起!
2)。通过外部中断实现广告灯的花样变化,需借助软件延时!外部中断通过硬件连线、边沿触发实现!
外部中断的花样变化为本实验的又一亮点!
四、程序清单
1.流程图
2.程序清单
ORG 8000H
LJMP MAIN
ORG 800BH ;定时器0入口地址
LJMP TOS
ORG 8013H ;外部中断1入口地址
LJMP INT1S
MAIN:MOV SP,#60H ;主程序
MOV TMOD,#09H
MOV TH0,#4CH
MOV TL0,#00H
MOV R0,#00H
MOV IE,#10000010B
SETB TR0
SETB EX1
SETB PX1
MOV R1,#0 ;计数器
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV R7,#0
MOV 20H,#0
MOV 30H,#0
MOV A,#0FEH
D1:CJNE R1,#8,D1 ;查询等待,以下雷同。
MOV A,#00H
D2:CJNE R2,#9,D2
MOV A,#00H
D3:CJNE R3,#5,D3
MOV A,#7FH
D4:CJNE R4,#8,D4
MOV A,#00H
D5:CJNE R5,#10,D5
MOV A,#00H
D6:CJNE R6,#5,D6
MOV A,#0FEH
D7:CJNE R7,#8,D7
MOV A,#7FH
D8:PUSH ACC
MOV A,20H
CJNE A,#08H,L1
POP ACC
SJMP L2
L1:POP ACC
SJMP D8
L2:MOV A,#00H
D9:PUSH ACC
MOV A,30H
CJNE A,#11,L3
POP ACC
SJMP L4
L3:POP ACC
SJMP D9
L4:MOV A,#0FFH
LJMP MAIN ;主程序循环
TOS:MOV TH0,#4CH ;定时延时子程序
MOV TL0,#00H
INC R0
CJNE R0,#10,LL
MOV R0,#00H
CJNE R1,#8,NEXT1
SJMP NEXT2
LL:CPL P3.0
LJMP NEXT
NEXT1:MOV P1,A ;向右逐个点亮
CLR C
RLC A
INC R1
SJMP NEXT
NEXT2:CJNE R2,#9,NEXT3
SJMP NEXT4
NEXT3:MOV P1,A ;向左逐个熄灭
SETB C
RRC A
INC R2
SJMP NEXT
NEXT4:CJNE R3,#5,NEXT5
SJMP NEXT6
NEXT5:MOV P1,A ;闪烁
CPL A
INC R3
SJMP NEXT
NEXT6:CJNE R4,#8,NEXT7
SJMP NEXT8
NEXT7:MOV P1,A ;向左逐个点亮
CLR C
RRC A
INC R4
SJMP NEXT
NEXT8:CJNE R5,#10,NEXT9
SJMP NEXT10
NEXT9:MOV P1,A ;向右逐个熄灭
SETB C
RLC A
INC R5
SJMP NEXT
NEXT10:CJNE R6,#5,NEXT11
SJMP NEXT12
NEXT11:MOV P1,A ;闪烁
CPL A
INC R6
SJMP NEXT
NEXT12:CJNE R7,#8,NEXT13
SJMP NEXT14
NEXT13:MOV P1,A ;向左循环点亮
RL A
INC R7
SJMP NEXT
NEXT14:PUSH ACC
MOV A,20H
CJNE A,#8,L5
POP ACC
SJMP L6
L5:POP ACC
SJMP NEXT15
L6:SJMP NEXT16
NEXT15:MOV P1,A ;向右循环点亮
RR A
INC 20H
SJMP NEXT
NEXT16:PUSH ACC
MOV A,30H
CJNE A,#11,L7
POP ACC
SJMP L8
L7:POP ACC
SJMP NEXT17
L8:SJMP NEXT
NEXT17:MOV P1,A ;闪烁
CPL A
INC 30H
NEXT:RETI ;中断子程序返回
INT1S:PUSH ACC ;外部中断1子程序
MOV A,#0FFH
CLR C
MOV P1,A ;花样变化
SUBB A,#81H
MOV P1,A
SUBB A,#42H
LCALL DELAY
MOV P1,A
SUBB A,#24H
LCALL DELAY
MOV P1,A
SUBB A,#18H
LCALL DELAY
MOV P1,A
ADD A,#18H
LCALL DELAY
MOV P1,A
ADD A,#24H
LCALL DELAY
MOV P1,A
ADD A,#42H
LCALL DELAY
MOV P1,A
ADD A,#81H
LCALL DELAY
MOV P1,A
LCALL DELAY
MOV A,#0AAH
MOV 21H,#4
LOOP:RL A
MOV P1,A
LCALL DELAY
DJNZ 21H,LOOP
MOV A,#0FFH
MOV P1,A
SUBB A,#18H
LCALL DELAY
MOV P1,A
SUBB A,#24H
LCALL DELAY
MOV P1,A
SUBB A,#42H
LCALL DELAY
MOV P1,A
SUBB A,#81H
LCALL DELAY
MOV P1,A
ADD A,#81H
LCALL DELAY
MOV P1,A
ADD A,#42H
LCALL DELAY
MOV P1,A
ADD A,#24H
LCALL DELAY
MOV P1,A
ADD A,#18H
LCALL DELAY
MOV P1,A
LCALL DELAY
MOV A,#0AAH
MOV 22H,#8
LOOP1:RR A
MOV P1,A
LCALL DELAY
DJNZ 22H,LOOP1
POP ACC
RETI ;中断子程序返回
DELAY:MOV 31H,#0
MOV 32H,#0
LOOP2:DJNZ 32H,$
DJNZ 32H,$
DJNZ 32H,$
DJNZ 32H,$
DJNZ 31H,LOOP2
RET ;子程序返回
END
五、调试程序的方法
1、 硬件调试方法(确定硬件工作是否正常)
硬件连线正确,仿真器工作正常,接通电源。
2、软件调试方法(如何调试程序的方法)
程序编译通过,无错误,无警告,调试并运行主程序。
六、对该设计题目有何更完善的方案
对自己完成程序进行自我评价及对课题提出更完善的方案。
经过一段时间的努力,本实验完成了任务书的基本要求,并做了一些创新。但是程序的运行过程仍然停留在发光二极管的设计上,没有进行对其他领域的扩展,例如:将发光二极管和LED显示器连接起来,让广告灯的变化驱动LED显示器数字的变化,使效果更显著,功能更齐全等。
七、收获及心得体会
以前对单片机课程很是抵触,觉得它太难学,但通过本次硬件设计,我对单片机产生浓厚的兴趣。通过这次设计对理论知识掌握的更加牢固,以前搞不懂的地方通过这次设计弄明白了,而且学到了许多新东西。开拓了视野,拓展了思路,能灵活应用硬件汇编语言设计一些简单的程序实现一些功能。总之,这次设计我获益匪浅,感谢学院给我们这次锻炼和学习的机会。
日期: 2007年 12月30 日
展开阅读全文