内容正文:
任务二 制作可调节照明时间的智能照明控制器
单片机技术及应用
同步精品课堂
高等教育出版社第 4 版
1
掌握制作可调节照明时间的智能照明控制器所需的工具和材料使用
学会根据电路原理图搭接模块电路
能够绘制程序流程图并完成编程
完成可调节照明时间的智能照明控制器的仿真调试和程序下载验证功能
编程实现照明时间的调节功能
仿真调试和程序下载的操作流程
理解按键消抖和时间调节的编程逻辑
准确编写中断服务函数实现人体红外检测和灯光控制
在日常生活中,不同场合对照明时间的需求不同。
今天我们要制作一个可调节照明时间的智能照明控制器,它可以根据我们的需求灵活设置照明时间,在节省能源的同时更好地提供照明服务。
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
可调节照明时间的智能照明控制器可以根据不同场合设置不同的照明时间。
按下“增加时间”按钮,可以增加照明时间;
按下“减少时间”按钮,可以减少照明时间。
实现在节省能源 的前提下更好地提供照明服务。
任务需求
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
工具及材料准备:
工作准备:
① 软件:Protel DXP 2004、Proteus 7.4、Keil uVision2、EasyPRO Programmer、流程图绘制软件。
② 硬件:计算机 1 台、编程器 1 台、最小系统电路板 1 块、人体红外检测模块电路板 1 块、按键模块 1 个、杜邦线若干条、电池盒 1 个。
穿好工作服,戴好防静电手环,穿绝缘胶鞋。
清洁工作台面,清理工作区域,工具、仪器仪表摆放整齐有序。
绘制按键控制模块电路图
任务二 制作可调节照明时间的智能照明控制器 - 任务实施
电源插座
信号输出和控制端口,分别与单片机P2.6和P2.7相连
按键控制模块元件清单
任务二 制作可调节照明时间的智能照明控制器 - 任务实施
元件名称 元件标号 规格 数量
按键 K1、K2 6*6*6.5 2
电阻 R14、R15 1K 1
I|O口和电源插座 Power、Signal DIP2 1
根据电路原理图 (如图所示) 用杜邦线搭接电路。按键模块 2 个 I/O 接口与 P2 口 (P2.7 和 P2.6) 相连,人体红外检测模块电路的信号输出端与 P3 口 (P3.2) 相连,灯光控制端口与 P3 口 (P3.4) 相连,连接电源和地端,安装电池盒。
根据电路原理图搭接电路
任务二 制作可调节照明时间的智能照明控制器 - 任务实施
① 启动 Keil uVision2,新建一个工程文件 “可调节照明时间的智能照明控制器.uV2”。
② 新建一个 C51 源程序文件 “可调节照明时间的智能照明控制器.C”。
编程 - 新建工程与源文件
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
sbit add = P2^7; // 增加照明时间按键
sbit cut = P2^6; // 减少照明时间按键
sbit ex0 = P3^2; // 人体红外检测模块端口
uint time = 2000; // 照明时间
void delay(uint ms); // 延时ms毫秒函数
编程 - 初始化部分部分
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
编程 - 主函数部分
main() {
EA = 1; // 开总中断
EX0 = 1; // 开外部中断0
IT0 = 0; // 中断触发方式为低电平触发
while (1) {
if (add == 0) {
delay(10); // 延时消抖
if (add == 0) {
while (add == 0); // 松手检测
if (time <= 50000) {
time = time + 1000; // 照明时间每次增加1s
}
}
}
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
编程 - 主函数部分
if (cut == 0) {
delay(10); // 延时消抖
if (cut == 0) {
while (cut == 0); // 松手检测
if (time >= 2000) {
time = time - 1000;
// 照明时间每次减少1s
}
}
}
}}
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
编程 - 中断服务函数
void int_ex0(void) interrupt 0 using 0 {
light = 0; // 开灯
while (ex0 == 0);
delay(time); // 延时熄灯
light = 1; // 关灯}
编程 - 延时函数
void delay(uint ms) {
uint i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 125; j++) {
{;}
}
}}
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
① 启动仿真软件 Proteus 7.4,新建仿真文件 “可调节照明时间的智能照明控制器.DSN”。
② 单击元件选择按钮 “P”,从元件库中选择需要的元件:发光二极管 (LED - RED) 1 个、按键 (BUTTON) 3 个 、PNP 三极管 1 个、电阻 (RES2) 5 个和单片机芯片 (AT89S51) 1 个 。
仿真调试程序 - 启动与元件选择
③ 根据电路原理图绘制仿真电路图 (省略复位和时钟电路),添加电源和地端,修改元件标号和标称值,如图所示。
仿真调试程序 - 绘制仿真电路图
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
④ 双击芯片 AT89S51,在弹出的对话框中加载 HEX 文件 (可调节照明时间的智能照明控制器.HEX),修改时钟频率为 12 MHz。
⑤ 单击仿真按钮,观察仿真效果。
⑥ 按 Ctrl + S 组合键保存文件。
仿真调试程序 - 启动与元件选择
① 启动编程软件 EasyPRO Programmer。
② 加载 HEX 文件 (文件名 “可调节照明时间的智能照明控制器.HEX”)。
③ 单击 “操作一键通” 按钮,完成程序的下载。
④ 将单片机插到最小系统板的 ZIF 插座上。
⑤ 加电,观察其功能。
下载程序,验证功能
任务二 制作可调节照明时间的智能照明控制器 - 任务准备
上网查询预习智能照明系统如何通过网络实现远程控制和集中管理。
拓展内容 - 智能照明系统的网络控制
任务二 制作可调节照明时间的智能照明控制器 - 拓展任务
制作一个可调节照明时间的智能照明控制器,设置增加 “时间上限” 或减少 “时间下限” 的功能按键。
拓展任务
探讨可调节照明时间的智能照明控制器的节能策略优化方法,如根据环境光线自动调节照明时间。
拓展内容 - 节能策略优化
随堂检测1
可调节照明时间的智能照明控制器的按键模块与单片机的哪个端口相连?
答案:按键模块 2 个 I/O 接口与 P2 口 (P2.7 和 P2.6) 相连。
在编程中,延时消抖的时间是多少?
答案:延时消抖的时间是 10ms。
随堂检测2
在仿真调试程序时,需要选择哪些元件?
答案:需要选择发光二极管 (LED - RED) 1 个、按键 (BUTTON) 3 个 、PNP 三极管 1 个、电阻 (RES2) 5 个和单片机芯片 (AT89S51) 1 个 。
在中断服务函数中,照明时间由哪个变量控制?
答案:照明时间由变量 time 控制。
随堂检测3
在编程时,如何实现增加和减少照明时间的功能?
答案:① 增加照明时间:当检测到 “增加时间” 按钮(add)被按下(add == 0),先进行 10ms 的延时消抖,再次判断按钮是否仍被按下,若按下则进行松手检测(while (add == 0)),在照明时间小于等于 50000 的情况下,将照明时间(time)增加 1000ms(即 1s)。
② 减少照明时间:当检测到 “减少时间” 按钮(cut)被按下(cut == 0),先进行 10ms 的延时消抖,再次判断按钮是否仍被按下,若按下则进行松手检测(while (cut == 0)),在照明时间大于等于 2000 的情况下,将照明时间(time)减少 1000ms(即 1s)。
随堂检测4
仿真调试程序的具体步骤是什么?
答案:① 启动仿真软件 Proteus 7.4,新建仿真文件 “可调节照明时间的智能照明控制器.DSN”。
② 单击元件选择按钮 “P”,从元件库中选择需要的元件,包括发光二极管(LED - RED)1 个. 按键(BUTTON)3 个. PNP 三极管 1 个. 电阻(RES2)5 个和单片机芯片(AT89S51)1 个。
③ 根据电路原理图绘制仿真电路图(省略复位和时钟电路),添加电源和地端,修改元件标号和标称值。
④ 双击芯片 AT89S51,在弹出的对话框中加载 HEX 文件(可调节照明时间的智能照明控制器.HEX),修改时钟频率为 12 MHz。
⑤ 单击仿真按钮,观察仿真效果。
⑥ 按 Ctrl + S 组合键保存文件。
1
讨论如何优化可调节照明时间的智能照明控制器的时间调节精度。分析增加 “时间上限” 或减少 “时间下限” 功能按键的实现方法。
1. 根据电路原理图搭接电路
任务二 制作可调节照明时间的智能照明控制器
2. 绘制程序流程图
启动与元件选择
绘制仿真电路图
加载 HEX 文件与设置时钟频率
仿真与保存
新建工程与源文件
主函数部分
中断服务函数
延时函数
编译生成 HEX 文件
3. 编程
4.仿真调试程序
5.下载程序,验证功能
感谢观看
25
$$