可以用于智能家居燈光系統的簡單仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:- #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 上傳
點擊文件名下載附件
可以檢測光強以及濕度
|