标题:
51单片机智能家居灯光系统程序 光强度检测和温度控制Proteus仿真
[打印本页]
作者:
枫478
时间:
2025-11-9 21:23
标题:
51单片机智能家居灯光系统程序 光强度检测和温度控制Proteus仿真
可以用于智能家居灯光系统的简单仿真
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif
(126.03 KB, 下载次数: 0)
下载附件
2025-11-12 15:49 上传
51hei.png
(43.27 KB, 下载次数: 0)
下载附件
2025-11-12 15:49 上传
单片机源程序如下:
#include "reg51.h"
#include "ADC0832.h"
#include"Ds18b20.h"
#include "lcd1602.h"
#include <PCF8591.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1=P3^2;//led
sbit led2=P3^3;
sbit led3=P3^4;
uchar light=0;//光照
uchar disp1[]="temp:00C";
uchar disp2[]="light:000Lx";
uchar time=0;//定时
uchar pwm=0;//亮度
//主函数
void main()
{
init_1602();
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
}
}
//定时器中断
void Timer0() interrupt 1
{
uint i=0;
if(time<10)//0.5s
time++;
else
{
time=0;
light=ADC(1);//测量亮度
Ds18b20ReadTemp();//测量温度
i=ds18b20_temp;
disp1[5]=i/10+0x30;//显示
disp1[6]=i%10+0x30;
disp2[6]=light/100+0x30;
disp2[7]=light%100/10+0x30;
disp2[8]=light%10+0x30;
write_string(1,0,disp1);
write_string(2,0,disp2);
//计算亮度
if(light<100)
PCF8591_write(light*2);
else
PCF8591_write(0xff);
//颜色控制
if(ds18b20_temp<10)
{
led1=1;led2=0;led3=0;
}
if((ds18b20_temp>9)&&(ds18b20_temp<20))
{
led1=1;led2=1;led3=0;
}
if((ds18b20_temp>19)&&(ds18b20_temp<30))
{
led1=0;led2=1;led3=0;
}
if((ds18b20_temp>29)&&(ds18b20_temp<40))
{
led1=0;led2=1;led3=1;
}
if((ds18b20_temp>39)&&(ds18b20_temp<50))
{
led1=0;led2=0;led3=1;
}
if((ds18b20_temp>49))
{
led1=1;led2=0;led3=1;
}
}
TH0=0X3C;
TL0=0XB0;
}
复制代码
Proteus8.17仿真与程序视频讲解下载:
智能家居灯光系统程序.7z
(6.81 MB, 下载次数: 0)
2025-11-12 16:22 上传
点击文件名下载附件
可以检测光强以及湿度
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1