单片机控制流水灯-公开课
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务二 流水灯的控制
一、任务准备 二、任务引入(情景创设、温故) 三、任务提出 四:任务分析 六:任务实施(做中学,做中教,教师巡视指导 协调) 七:任务交流(各组展示成果,组间互动) 八:任务评价及总结(自评、互评、师评,肯定 成绩,指出不足) 九:课后任务(对任务中遇到的知识点、对完成 任务过程中体现出的综合能 力的运用进行总结)
31 EA
1k
1 P1.0 2 P1.1 3 P1.2 4 P1.3 5 P1.4 6 P1.5 7 P1.6 8 P1.7
AT 89S51
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17
要求:
①写出完整的汇编语言程序。
②编译软件KEIL、仿真软件 PROTEUS的操作;将程序下载至电路板 实现流水灯效果。
三、任务分析
利用单片机P0口连接8个发光二极管,利用 各引脚输出电位的变化,控制发光二极管 的亮灭。P0口各引脚的电位变化可以通过 指令来控制,为了清楚地分辨发光二极管 的点亮和熄灭,在P0口输出信号由一种状 态向另一种状态变化时,编写延时子程序 实现一定的时间间隔。
教学目标
知识与技能:了解什么是流水灯,理解流 水灯的控制方法,掌握单片机的开发流程 ,并能熟练运用RR、RL等基本指令。
过程与方法:通过听取教师讲解了解流水 灯及其控制思路,然后通过小组讨论的方 式设计出流水灯控制程序。
情感态度与价值观:通过生活中常见的小 电子产品的设计,进一步培养学生的学习 兴趣,并加强团队合作意识。
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8
D1 D2 D3 D4 D5 D6 D7 D8
R2 R3 R4 R5 R6 R7 R8 R9
220 220 220 220 220 220 220 220
2、软件程序编 写
四、任务实施
1、硬件电路设计 2、软件程序编写 3、程序仿真与调试
1、硬件电路 设计
①单片机最小系统电路
②P0口控制流水灯电 路
③8只流水灯控制电路
①单片机最小系统电路
C1
22p
C2
22p
C3
22u
19 CRYST AL
U1
XT AL1
X1
18 XTAL2
9 RST
29 PSEN
30 ALE
R1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8
D1 D2 D3 D4 D5 D6 D7 D8
R2 R3 R4 R5 R6 R7 R8 R9
220 220 220 220 220 220 220 220
③8只流水灯控制电路
②程序流程图
开始 设置初始值
设移位次数
数据输出
调用延时子程序
左移一位
是
否
移位次数完成?
③参考程序
;=============主程序===========;
START: MOV A,#0FEH ;将数11111110赋给累加器A,H代表十六进制
MOV R0,#8
;将数8赋给寄存器R0
LOOP: MOV P0,A
C1
22pf
C2
C3 22pf
10uf
R1
10k
U1 X1 19 XTAL1
12M 18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
Байду номын сангаас
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
;把A移动过的数据送P0口显示
ACALL DELAY ;调用延时子程序
RL A
;将A中的数据左移一位(第一次移
11111110 变为11111101)
DJNZ R0,LOOP ;没有移动够8次继续移动
;=============延时S子JM程P 序S(T0A.R5Ts)=======;=移==动=;完7次后跳到开始重来,以达到循环流动效果
39 38 37 36 35 34 33 32
1 2 3 4 5 6 7 8
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
DELAY: MOV R3,#50
;向R3赋值,R3=50
LOOP1: MOV R4,#20
;向R4赋值,R4=20
LOOP2: MOV R5,#248
;向R5赋值,R5=248
NOP
;空操作
DJNZ R5,$
;R5减1不为0,继续执行本
行,否则往下执行
DJNZ R4,LOOP2
;R4减1不为0,跳转到LOOP2,否则往
下执行
END DJNZ R3,LOOP1;程序结束 ;R3减1不为0,跳转到LOOP1,否则往
下执行
RET
;延时子程序返回
运行
3、程序仿真与调试
①运行Keil软件。 ②利用Keil进行文件编译。 ③利用Proteus软件进行仿真。 ④程序的下载及运行。 ⑤修改源程序进行调试。
七、任务评价及总结
相关知识回顾
一、任务引入
什么是流水灯呢
每当夜幕降临, 我们可以看到大街各式
流水灯指的是单色灯一只一 只的亮,一只一只的灭,每次 亮的灯只有一个,而且是按照 一个方向顺序向前或向后走动。
二、任务提出
采用8个发光二极管来模拟流水灯 的效果,电路设计中发光二极管采用 共阳极连接方式,低电平点亮。
②P0口控制流水灯电路
U1
19 XTAL1 18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
①编程思路 ②程序流程图 ③参考程序
①编程思路
P0.0输出低电平,二极管点亮;P0.0输出高电平,二 极管就熄灭。
流水灯显示方式是一种动态显示方式,逐一点亮一个 灯,使人们感觉到点亮灯的位置在移动。
程序可以这样写: 点亮P0.0连接的LED: 延时 点亮P0.1连接的LED: 延时 点亮P0.2连接的LED: 延时 ┋ ┋ 点亮P0.7连接的LED 延时
39 38 37 36 35 34 33 32
1 2 3 4 5 6 7 8
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
评价: 1、完成硬件电路的设计,20分 2、完成主体程序设计,30分 3、完成延时程序设计,30分 4、完成了正确显示任务,20分 总结:
1、RR、RL指令的应用
2、进一步掌握KEIL软件和PROTEUS仿 真软件的使用
课后任务
1、要使得本任务中发光二极管的闪烁速度加快 ,程序如何修改?若变慢呢? 2、试编写两段延时时间不同的子程序,并分别 调用。 3、汇编程序的书写格式和注意事项是什么?