实验3 呼吸灯设计实验 (1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、实验原理
1、P1口为准双向口,每一位都可独立地定义为输出线或输入线。
2、延时子程序采用指令循环指令来实现,在系统时间允许的情况下采用此方法。
循环时间=机器周期×指令所需机器周期×循环次数
(其中机器周期:晶振频率为12MHz时为1us,晶振频率为6MHz时为2us)
四、思考题
(1)采用任务1的单灯控制电路,编程实现P1端口连接的8个发光二极管闪动频率控制。
9
流程图绘制、存储器分配
5
正确3-5分
不正确0-3分
10
源程序编写
10
编译正确10分
编译不正确4-6分
无法编译
0-3分
11
程序
调试
调试、仿真
运行效果
10
实现功能指标10分
能仿真,没实现功能指标0-3分
12
电路调试制作
硬件调试
连接实验板电路或
电路制作
5
电路正常运行5分
不正常0-3分
联合调试
5
达到功能指标5分
3
下载工具使用
5
会操作使用3-5分
不会操作0-3分
4
硬件
电路
晶振电路
绘制原理图
4
正确4分
不正确0分
复位电路
4
正确4分
不正确0分
5
电源电路
2
正确2分
不正确0分
6
I/O口分配
存储器选择
2
正确2分
不正确0分
7
输出显示电路
8
正确4-8分
不正确0-4分
8
程序
设计
程序设计思路
编写程序
5
可行3-5分
不可行0-3分
没达到0-3分
13
加分
5
小组讨Fra Baidu bibliotek、独立完成5分
不能独立完成0-3分
说明:具体评分标准可根据教学过程中的实际情况进行合理调整。
相关资料:
所谓呼吸灯,是指LED在单片机的控制下逐渐的由暗到亮、再由亮到暗的周期性变化,看起来就好像是在呼吸。例如单片机P3.0引脚接LED,程序控制其产生呼吸灯的效果。
那么怎样才能使LED产生不同亮度呢?这就需要用PWM波形来驱动,编程时,稍稍麻烦一点。PWM,即脉冲宽度调制,采用调整脉冲占空比达到调整电压、电流、功率的方法。如图3-2所示为占空比分别是10%、50%和90%的三种PWM波形。
实验3呼吸灯设计实验
一、实验目的
1、会使用单片机4个并行I/O端口连接外部设备并构建单片机最小应用系统。
2、能使用工具软件绘制单片机硬件原理图、能编写简单的C语言程序。
3、会编写常见的循环程序和延时子程序。
二、实验内容
采用STC89C52单片机构建最小系统,在P1.0口外接1只发光二极管,编程实现二极管出现呼吸灯的显示效果。
{f=0;}
}
}
}
}
当PWM波形去控制LED时,因为PWM波的频率较高,由于人的眼睛具有视觉暂留现象,我们看到的LED并不是闪烁的,而是亮度较暗,占空比不同的PWM波控制LED时,LED的亮度是不同的,占空比越小,亮度越低,占空比越大,亮度越高。
呼吸灯实际上就是不停的改变PWM波形的占空比,使占空比循环变大再变小,LED的亮度也就循环变亮再变暗,实现呼吸灯的效果。
(2)采用任务1的单灯控制电路,编程实现P1端口连接的8个发光二极管自动变频控制。
表4项目二考核标准
任务名称
任务一:单灯闪烁控制设计
序号
考核内容
考核方式
分值
评分
1
工具软件使用
Kile软件操作使用
实际操作
5
会操作使用3-5分
不会操作0-3分
2
Proteus软件操作使用
5
会操作使用3-5分
不会操作0-3分
参考程序如下:
#include <reg51.h>
sbit led=P3^0;
unsigned char loop,pwm;//loop从0到10循环变化
unsigned int i;
bit f;
int main()
{
loop=0;
pwm=4;
f=0;
while(1)
{
if (loop<pwm)//当loop小于pwm时,点亮LED
{
led=0;
}
else//当loop不小于pwm时,熄灭LED
{
led=1;
}
loop++;
if(loop>10)
{loop=0;
i++;
if(i==500) //i的大小决定呼吸灯的节奏快慢
{i=0;
if(!f)
{pwm++;
if(pwm==10)
{f=1;}
}
else
{pwm--;
if(pwm==4)
据上述分析,呼吸灯程序的编程思路如下:
首先使用一个变量loop计主程序的循环次数,主程序每循环一次,loop值加1,当loop等于10时,再重新从0开始计数,这样,loop从0到10的过程为PWM波的一个完整周期;然后再用一个变量pwm来控制占空比的大小;在主程序循环过程中,用loop和pwm的值进行比较,如果loop小于pwm,则点亮LED,否则熄灭LED。在整个周期中,一段时间点亮LED,另一段时间熄灭LED,LED被点亮的时间长短取决于pwm的大小,pwm越小,LED被点亮的时间越短,pwm越大,LED被点亮的时间越长。所以,只要使pwm的值逐渐增大,再逐渐减小,LED就会逐渐变亮,然后逐渐变暗,如此循环,产生呼吸灯的效果。
1、P1口为准双向口,每一位都可独立地定义为输出线或输入线。
2、延时子程序采用指令循环指令来实现,在系统时间允许的情况下采用此方法。
循环时间=机器周期×指令所需机器周期×循环次数
(其中机器周期:晶振频率为12MHz时为1us,晶振频率为6MHz时为2us)
四、思考题
(1)采用任务1的单灯控制电路,编程实现P1端口连接的8个发光二极管闪动频率控制。
9
流程图绘制、存储器分配
5
正确3-5分
不正确0-3分
10
源程序编写
10
编译正确10分
编译不正确4-6分
无法编译
0-3分
11
程序
调试
调试、仿真
运行效果
10
实现功能指标10分
能仿真,没实现功能指标0-3分
12
电路调试制作
硬件调试
连接实验板电路或
电路制作
5
电路正常运行5分
不正常0-3分
联合调试
5
达到功能指标5分
3
下载工具使用
5
会操作使用3-5分
不会操作0-3分
4
硬件
电路
晶振电路
绘制原理图
4
正确4分
不正确0分
复位电路
4
正确4分
不正确0分
5
电源电路
2
正确2分
不正确0分
6
I/O口分配
存储器选择
2
正确2分
不正确0分
7
输出显示电路
8
正确4-8分
不正确0-4分
8
程序
设计
程序设计思路
编写程序
5
可行3-5分
不可行0-3分
没达到0-3分
13
加分
5
小组讨Fra Baidu bibliotek、独立完成5分
不能独立完成0-3分
说明:具体评分标准可根据教学过程中的实际情况进行合理调整。
相关资料:
所谓呼吸灯,是指LED在单片机的控制下逐渐的由暗到亮、再由亮到暗的周期性变化,看起来就好像是在呼吸。例如单片机P3.0引脚接LED,程序控制其产生呼吸灯的效果。
那么怎样才能使LED产生不同亮度呢?这就需要用PWM波形来驱动,编程时,稍稍麻烦一点。PWM,即脉冲宽度调制,采用调整脉冲占空比达到调整电压、电流、功率的方法。如图3-2所示为占空比分别是10%、50%和90%的三种PWM波形。
实验3呼吸灯设计实验
一、实验目的
1、会使用单片机4个并行I/O端口连接外部设备并构建单片机最小应用系统。
2、能使用工具软件绘制单片机硬件原理图、能编写简单的C语言程序。
3、会编写常见的循环程序和延时子程序。
二、实验内容
采用STC89C52单片机构建最小系统,在P1.0口外接1只发光二极管,编程实现二极管出现呼吸灯的显示效果。
{f=0;}
}
}
}
}
当PWM波形去控制LED时,因为PWM波的频率较高,由于人的眼睛具有视觉暂留现象,我们看到的LED并不是闪烁的,而是亮度较暗,占空比不同的PWM波控制LED时,LED的亮度是不同的,占空比越小,亮度越低,占空比越大,亮度越高。
呼吸灯实际上就是不停的改变PWM波形的占空比,使占空比循环变大再变小,LED的亮度也就循环变亮再变暗,实现呼吸灯的效果。
(2)采用任务1的单灯控制电路,编程实现P1端口连接的8个发光二极管自动变频控制。
表4项目二考核标准
任务名称
任务一:单灯闪烁控制设计
序号
考核内容
考核方式
分值
评分
1
工具软件使用
Kile软件操作使用
实际操作
5
会操作使用3-5分
不会操作0-3分
2
Proteus软件操作使用
5
会操作使用3-5分
不会操作0-3分
参考程序如下:
#include <reg51.h>
sbit led=P3^0;
unsigned char loop,pwm;//loop从0到10循环变化
unsigned int i;
bit f;
int main()
{
loop=0;
pwm=4;
f=0;
while(1)
{
if (loop<pwm)//当loop小于pwm时,点亮LED
{
led=0;
}
else//当loop不小于pwm时,熄灭LED
{
led=1;
}
loop++;
if(loop>10)
{loop=0;
i++;
if(i==500) //i的大小决定呼吸灯的节奏快慢
{i=0;
if(!f)
{pwm++;
if(pwm==10)
{f=1;}
}
else
{pwm--;
if(pwm==4)
据上述分析,呼吸灯程序的编程思路如下:
首先使用一个变量loop计主程序的循环次数,主程序每循环一次,loop值加1,当loop等于10时,再重新从0开始计数,这样,loop从0到10的过程为PWM波的一个完整周期;然后再用一个变量pwm来控制占空比的大小;在主程序循环过程中,用loop和pwm的值进行比较,如果loop小于pwm,则点亮LED,否则熄灭LED。在整个周期中,一段时间点亮LED,另一段时间熄灭LED,LED被点亮的时间长短取决于pwm的大小,pwm越小,LED被点亮的时间越短,pwm越大,LED被点亮的时间越长。所以,只要使pwm的值逐渐增大,再逐渐减小,LED就会逐渐变亮,然后逐渐变暗,如此循环,产生呼吸灯的效果。