实验二控制LED灯点亮实验(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二控制 LED 灯点亮实验
一、实验目的
1.. 进一步熟悉单片机编程和程序调试方法
2. 学习 P1口的使用方法
3. 学习延时子程序的编写和应用
二、实验内容
1.让实验板上的第 1、 3、 5、 7位置上的灯与第 2、 4、 6、 8位置上的灯交替闪烁。
2、设计出如下要求的流水灯程序。
变化要求:先从第 4个灯向左逐个点亮,接着从第 5个灯向右逐个点亮,然后, 从第 1个向右、第 8个向左同时开始的向内逐个点亮再从中间向两边逐个点亮的。
三、实验相关说明
1、实验电路原理图
100
注意:在实验报告中,请画出实际运行你程序的电路的原理图
2、 LED 灯控制。
从电路原理图可看到 ,当 P1 .0端口输出高电平,即 P1.0=1时 ,发光二极管 L1熄灭;当 P1 .0输出低电平即 P1 .0=0时, L 1亮;在汇编语言里可用 SETB P1.0指令使 P 1. 0端口输出高电平 ,用 CLR P1.0指令使 P1 .0 端口输出低电平, 从而控制 LED 的亮、灭。
注意:实验板是用哪个口连接了 LED 。
3.延时子程序的设计、应用
单片机指令的执行时间很短,时间在微秒级,因此,如果我们想看灯闪烁, 那么就必须在用指令控制灯处于亮或灭的状态后, 保证那状态维持一段时间后再转换成另一状态。
如何做到维持一段时间呢?方法有很多, 其中最易实现的一种方法是:通过插入一段程序, 每条指令执行都需要 1个或若干个机器周期的时间。
因而执行完这段程序就过了一段时间, 通常把这称为延时。
延时程序一般采用单重或多重循环程序。
可以根据需要延时的时间来设计这段程序包含哪些指令、循
环次数。
设计举例如下:
若单片机晶振为 12MHz ,因此,则单片机的 1个机器周期为 1微秒,则下面这段循环程序中每条指令执行所需的机器周期数及其要花的时间列在下面。
机器周期微秒
MOV R6,#20 2个机器周期 2
D1: MOV R7,#248 2个机器周期 2×20
DJNZ R7,$ 2个机器周期 2×248×20
DJNZ R6,D1 2个机器周期 2×20=4010002 因此,上面的延时程序时间为
10.002ms 。
由以上可知,当 R6=10、 R7=248时,延时 5ms , R6=20、 R7=248时,延时 10ms, 以此为基本的计时单位。
如要求 0.2秒=200ms , 10ms×R5=200ms ,则 R5 =20,汇编延时子程序如下:
DELAY: MOV R5,#20
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
C 语言延时子程序如下:
void delay02s(void //延时 0.2秒子程序
{
unsigned char i,j,k;
for(i=20;i>0;i--
for(j=20;j>0;j--
for(k=248;k>0;k--;
}
四、实验步骤
1. 用串行数据通信线连接计算机与实验板,用 USB 给实验板提供电源
2. 打开 Keil uVision2软件,首先建立本实验的项目文件(参考实验一的步骤 ,
3.输入源程序,将源程序加入到项目文件中,然后进行编译,直到编译无误。
生成hex 文件。
4.通过 STC -ISP 下载软件,将 hex 文件下载到实验板内,观察发光二极管显示情况是否满足题目要求, 如未达要求, 分析原因, 修改源程序, 再编译、下载、运行,直至达到题目要求。
5.对实验进行总结,按要求写出实验报告。