1. 系统概述
点击链接下载protues仿真资料:https://download.csdn.net/download/m0_51061483/92081507
1.1 设计背景
随着城市基础设施智能化水平的不断提升,传统路灯系统逐渐向自动化、节能化和智能化方向发展。传统路灯通常采用固定时间控制或人工控制方式,无法根据环境光照变化动态调整,存在能源浪费与管理不便的问题。因此,设计一种基于单片机的自动路灯监控系统具有重要意义。
本系统通过引入光敏传感器、时间控制机制以及优先级控制策略,实现路灯的智能开关控制。在保证照明需求的同时,有效降低能源消耗,并提升系统的智能化水平。
1.2 系统功能概述
本系统主要实现以下功能:
- 数码管实时显示时间(分、秒);
- 通过光敏传感器检测环境光照强度,并显示光照百分比;
- 支持按键切换显示内容(时间或光照);
- 支持用户设置路灯自动开启时间段;
- 支持设置光照上下限,实现自动开关灯;
- 实现光照优先级高于时间控制的逻辑策略。
2. 系统总体设计
2.1 系统结构组成
系统主要由以下模块组成:
系统以单片机为核心,对环境光照与时间进行综合判断,实现路灯的自动控制。
2.2 控制策略设计
系统采用双控制机制:
- 光照控制:
- 当光照低于下限 → 开灯;
- 当光照高于上限 → 关灯;
- 时间控制:
- 在设定时间段内允许开灯;
- 在非时间段内关闭灯光;
- 优先级策略:
- 光照控制优先;
- 时间控制作为辅助条件。
该策略既保证了照明需求,又实现了节能控制。
3. 系统电路设计
3.1 单片机最小系统设计
单片机最小系统作为核心控制单元,主要包括:
该模块负责采集传感器数据、执行控制逻辑以及驱动外设。
3.2 光敏检测模块设计
光敏检测模块采用光敏电阻(LDR)实现。
电路设计:
- 光敏电阻与电阻组成分压电路;
- 输出电压随光照强度变化;
- 通过A/D转换模块输入单片机。
功能说明:
3.3 A/D转换模块设计
由于光敏电阻输出为模拟信号,需使用A/D转换模块(如ADC0832)。
电路设计:
- 输入端连接光敏电阻输出;
- 输出端连接单片机;
- 提供参考电压。
功能说明:
- 将光照模拟量转换为数字量;
- 提供给单片机进行处理。
3.4 数码管显示模块设计
数码管用于显示时间或光照值。
电路设计:
- 采用4位数码管;
- 通过动态扫描实现多位显示;
- 段选与位选分别控制;
- 可结合驱动芯片扩展IO口。
功能说明:
- 显示时间(分、秒);
- 显示光照百分比;
- 提供直观信息反馈。
3.5 按键输入模块设计
按键模块用于系统设置与操作。
电路设计:
- 按键一端接地;
- 另一端接单片机IO口;
- 内部或外部上拉电阻;
- 软件消抖处理。
功能说明:
- 切换显示模式;
- 设置光照阈值;
- 设置时间参数。
3.6 LED路灯控制模块设计
LED模块模拟路灯。
电路设计:
功能说明:
- 实现路灯开关控制;
- 提供照明输出。
3.7 定时模块设计
定时模块用于时间计数。
设计方式:
- 使用单片机定时器;
- 每1秒触发一次中断;
- 更新分、秒变量。
功能说明:
- 实现时间显示;
- 控制时间段逻辑。
3.8 参数存储模块设计
用于保存用户设置参数。
实现方式:
功能说明:
- 防止断电丢失参数;
- 提高系统实用性。
4. 程序设计
4.1 主程序设计
系统采用循环扫描与中断结合方式:
void main()
{
System_Init();
while(1)
{
Key_Scan();
ADC_Read();
Time_Update();
Control_Logic();
Display_Update();
}
}
主程序负责协调各模块运行。
4.2 光照采集程序设计
unsigned int light_value;
float light_percent;
void ADC_Read()
{
light_value = ADC_Read_Channel(0);
light_percent = (float)light_value / 1023 * 100;
}
说明:
- 读取光照数据;
- 转换为百分比。
4.3 时间更新程序设计
void Timer_ISR() interrupt 1
{
sec++;
if(sec >= 60)
{
sec = 0;
min++;
}
}
说明:
- 定时器中断实现时间更新;
- 提供时间基准。
4.4 控制逻辑程序设计
void Control_Logic()
{
if(light_percent < light_low)
{
lamp = ON;
}
else if(light_percent > light_high)
{
lamp = OFF;
}
else
{
if(in_time_range())
lamp = ON;
else
lamp = OFF;
}
}
说明:
- 光照优先控制;
- 时间作为辅助判断条件。
4.5 显示程序设计
void Display_Update()
{
if(display_mode == TIME_MODE)
{
Display_Num(min, sec);
}
else
{
Display_Num(light_percent, 0);
}
}
说明:
- 支持两种显示模式;
- 动态刷新数码管。
4.6 按键处理程序设计
void Key_Scan()
{
if(key_mode)
display_mode = !display_mode;
if(key_set)
light_low++;
if(key_reset)
light_high--;
}
说明:
- 实现参数设置;
- 提供人机交互。
5. 系统工作流程分析
系统运行流程如下:
- 系统上电初始化;
- 初始化定时器、ADC、IO口;
- 进入主循环;
- 采集光照数据;
- 更新时间;
- 判断控制条件;
- 控制路灯开关;
- 更新数码管显示;
- 响应按键输入;
- 持续循环执行。
6. 系统关键技术分析
6.1 光照检测精度
通过A/D转换与标定,提高光照检测准确性。
6.2 优先级控制机制
光照优先于时间控制,避免环境变化带来的误判。
6.3 节能控制策略
动态控制灯光,减少不必要的能耗。
7. 系统总结
本系统基于单片机实现了自动路灯监控功能,通过光照检测与时间控制相结合,实现智能开关灯。系统结构清晰,控制逻辑合理,具有良好的实用性与扩展性。
通过数码管显示与按键交互,提高了系统的可操作性;通过优先级控制策略,提高了系统的可靠性与节能效果。该系统适用于城市道路照明、校园照明及智能照明系统的开发与教学应用。
353