LCD1602屏幕显示的51单片机客车空调分区控制系统仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
LM35温度传感器经过LM358+PCF8591 AD转换后送给单片机处理
L298驱动3个电机动作
单片机源程序如下:
代码:
- #include<reg52.h>
- #include"delay.h"
- #include"lcd602.h"
- #include"iic.h"
- #include"pwm.h"
- #include"pwm1.h"
- #include"pwm2.h"
- /*******************数组定义********************/
- uchar tab1[] = {"T1: T2: "}; //3 12
- uchar tab2[] = {"T3: "}; //3
- /*******************端口定义********************/
- /*******************变量定义********************/
- double dianya1 = 0; //电压1
- double dianya2 = 0; //电压2
- double dianya3 = 0; //电压2
- /*******************主函数********************/
- void main()
- {
- chushihua(); //液晶初始化
- iic_init(); //IIC初始化
- write_string(1,0,tab1);
- write_string(2,0,tab2);
- init_t0();
- init_t1();
- init_t2();
- while(1)
- {
- /*电压采集*/
- dianya1=read_add(0x90,0x40)*5.0/255*10/3/0.01; //计算电压,进而计算温度
- dianya1=read_add(0x90,0x40)*5.0/255*10/3/0.01; //计算电压,进而计算温度
- dianya2=read_add(0x90,0x41)*5.0/255*10/3/0.01; //计算电压,进而计算温度
- dianya2=read_add(0x90,0x41)*5.0/255*10/3/0.01; //计算电压,进而计算温度
- dianya3=read_add(0x90,0x42)*5.0/255*10/3/0.01; //计算电压,进而计算温度
- dianya3=read_add(0x90,0x42)*5.0/255*10/3/0.01; //计算电压,进而计算温度
- write_num31(1,3,dianya1); //显示温度1
- write_num31(1,12,dianya2); //显示温度2
- write_num31(2,3,dianya3); //显示温度3
- /*温度1控制*/
- if(dianya1/10<18)
- {pwm(0);}
- else if(dianya1/10>=18 && dianya1/10<=22)
- {pwm(50);}
- else
- {pwm(100);}
- /*温度2控制*/
- if(dianya2/10<22)
- {pwm1(0);}
- else if(dianya2/10>=22 && dianya2/10<=25)
- {pwm1(50);}
- else
- {pwm1(100);}
- /*温度3控制*/
- if(dianya3/10<22)
- {pwm2(0);}
- else if(dianya3/10>=20 && dianya3/10<=23)
- {pwm2(50);}
- else
- {pwm2(100);}
- }
- }
所有资料51hei提供下载: