历史上的今天
今天是:2024年12月31日(星期二)
2021年12月31日 | 基于51单片机的智能路灯照明控制系统
2021-12-31 来源:eefocus
硬件设计
仿真文件1: 功能如下图所示
原理图
仿真文件2:

程序设计
/******定义头文件**************/
#include #include #include"lcd.h" #include "ds1302.h" /******类型重定义*************/ typedef unsigned char uchar; typedef unsigned int uint; /******引脚定义***************/ sbit key_1 = P1^0; //定义4个按键 sbit key_2 = P1^1; sbit key_3 = P1^2; sbit key_4 = P1^3; sbit key_5=P3^0;//手动/自动模式切换 sbit key_6=P3^1;//手动模式路灯开关 sbit led_1 = P1^4; sbit Beep = P2^3; //定义声光报警 sbit AD_clk = P3^4; //定义ADC0832 sbit AD_do = P3^5; sbit AD_di = P3^5; sbit AD_cs = P3^6; sbit red_sr = P3^7; //红外检测 /******定义变量***************/ char hour,min,sec; //定义小时、分钟、秒变量 char time; char work_time_Start = 16,work_time_End = 5; //设定起始、结束时间 bit light_flag; uchar light; //定义光照强度 uchar light_limit; //定义光照阈值 uchar Data; /******声明函数***************/ void delayms(unsigned int x); //延时函数 void display(); //显示 void Read_time(); void set_work_time(); //设定工作时间 void set_limit_light(); //设定光照阈值 void work(); //工作状态 void set_time(); //设定时间 void delay10ms(int d); void InitTimer0(void); //T0定时器初始化程序 uchar AD(bit Channel); //ADC0832程序 void kongzhi() { if(key_6==0) { led_1=1; } else { led_1=0; } } void qiehaun() { if(key_5==0) { kongzhi(); } else { work(); // if(red_sr==1) // { // led_1=1; // } // if(red_sr==0) // { // led_1=0; // } } } void main() { Beep = led_1 = 0; //声光报警,LED关闭 InitTimer0(); //T0定时器初始化程序 LcdInit(); //lcd1602初始化 while(1) { Ds1302ReadTime(); //读取时间 set_work_time(); //设定工作时间 set_limit_light(); //设定光照阈值 set_time(); light = AD(0); //读取ADC0832数值 display(); //显示 qiehaun(); // work(); //工作状态 } } void Timer0Interrupt(void) interrupt 1 { static uchar count; TH0 = 0x0D8; TL0 = 0x0F0; count ++; if(count>=100) { time ++; count = 0; } //add your code here } /******************************************************************************* * 函数名 : InitTimer0() * 函数功能 : T0定时器初始化程序 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void InitTimer0(void) { TMOD = 0x01; TH0 = 0x0D8; TL0 = 0x0F0; EA = 0; ET0 = 1; TR0 = 1; } /******************************************************************************* * 函数名 : work() * 函数功能 : 工作状态 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void work() { Read_time(); //转换时间 if(work_time_End!=0 && work_time_Start!=0) //工作时间已设置 { if(hour >= work_time_Start) //当前时间大于起始时间,如起始时间为19:00,当前时间为21:00。 { Data = AD(1); led_1 = 1; //点亮LED if(Data < 50) //未检测到LED点亮 Beep = 1; //声光报警 else //检测到Led点亮 Beep = 0; //停止报警 } else if(hour < work_time_End) //当前时间小于结束时间,如结束时间为06:00,当前时间为04:00。 { if(red_sr) //检测到人或车 { time = 0; light_flag = 1; //LED标志置1,开始T0定时器计时,点亮LED,10s后LED标志清零,LED熄灭 } if(light_flag) //LED标志置1,检测到人或车 { led_1 = 1; //点亮LED EA = 1; //开启中断 if(time > 10) //10s后 { light_flag = 0; //LED标志清零 EA = 0; //关中断 time = 0; //计时清零 } Data = AD(1); if(Data < 50) //未检测到LED点亮 Beep = 1; //声光报警 else //检测到Led点亮 Beep = 0; //停止报警 } else led_1 = 0; } else { if(light < light_limit) { led_1 = 1; Data = AD(1); if(Data < 50) //未检测到LED点亮 Beep = 1; //声光报警 else //检测到Led点亮 Beep = 0; //停止报警 } else led_1 = Beep = 0; } } } /******************************************************************************* * 函数名 : set_work_time() * 函数功能 : 设定工作时间 * 输入 : 无 * 输出 : 无 *******************************************************************************/ 文件仅供参考 链接:https://pan.baidu.com/s/1Sl6u_BGjrjMKFC8JS90O-A 提取码:67xo
上一篇:基于51单片机的智能温控风扇
史海拾趣
|
摄像机这阵子来在技术上似乎很沉寂,红外一体机炒了那么久,卖的人卖的很高兴,吹的人也吹上天,用的人也骂翻天,反正也就这样不了了之,想写些东西,偏偏找不到题材, 还好最近各厂家的炒做题材移到了两个项目:“宽动态” “低照度”,所以赶紧写 ...… 查看全部问答> |
|
LCD液晶显示 LCD1604驱动模块 /*备注一:LCD1604只含有ASCII码表内字符的字库,无汉字字库,不能自行打点,不便画曲线*/ /*本模板功能一:在任意位置显示阿拉伯数字 */ /*本模板功能二:在任意位置显示字符及字符串 */ #include #include \"l ...… 查看全部问答> |
|
2012-1-30开始移植SLCD的其它功能函数这一步更简单了,直接将Kwikstik_Demo中的Driver_SLCD.h,Driver_SLCD.c,Fonts_LCD.c,Fonts_LCD.h拷贝过来,重定义下数据类型的转定义编译后没有问题了整理下软件代码结构,在uc-OS-III的根目录下创建Drivers文 ...… 查看全部问答> |
|
大侠们,本人单片机小白,最近想自己DIY一个东西,可以事实显示时间,温度,湿度,还有可以接受短信并且滚动显示出来,请问该用什么型号的单片机,顺便求资料!小弟先在此拜谢!… 查看全部问答> |
|
我是用封装向导画的,都用的是默认尺寸,画出来之后图纸上放不下,才考虑到也许是自己画的太大,求8088,8253 ADC0809,各种元器件的封装尺寸啊。谢谢大神了。… 查看全部问答> |




