一、系统方案
1、本设计采用52单片机作为主控器。
2、mlx90614采集温度,液晶显示温度值。
3、按键设置温度上下限。
4、实际测量温度小于下限或者大于上限,蜂鸣器报警,大于上限,风扇启动,低于下限,风扇停止。
二、硬件设计
原理图如下:
三、单片机软件设计
1、首先是系统初始化
void LCD_init(void)
{
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x39);
LCD_write_com(0x08); /???/
LCD_write_com(0x01); /???/
LCD_write_com(0x06); /???/
delay_ms(5);
LCD_write_com(0x0c); /???/
LCD_write_com(0x14);
LCD_write_com(12);
}
2、液晶显示程序
//
/ 写一字节指令 /
//
void LCD_write_com(unsigned char com)
{
RW =0;
RS_CLR;
EN_SET;
P0 = com;
delay_us(5);
EN_CLR;
}
//
/ 写一字节数据 /
//
void LCD_write_Data(unsigned char Data)
{
RW =0;
RS_SET;
EN_SET;
P0 = Data;
delay_us(5);
EN_CLR;
}
//
/ 清屏 /
//
void LCD_clear(void)
{
LCD_write_com(0x01);
delay_ms(5);
}
//
/ 在指定位置写字符 /
//
void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_write_com(0x80 + x);
}
else
{
LCD_write_com(0xC0 + x);
}
LCD_write_Data( Data);
}
3、按键程序
void key_det(void)
{
uint T;
if(Key_1 == 0)
{
delay_ms(50);
if(Key_1 == 0)
{
while(Key_10);
beep();
status++;
if(status>2)
{
status = 0;
}
}
}
if(Key_2 == 0)
{
delay_ms(50);
if(Key_2 == 0)
{
beep();
while(Key_20);
if(status==2)
{
Max_Tem+=100;
}
if(status==1){if(Min_Tem<Max_Tem){Min_Tem+=100;}}}
}if(Key_3 == 0)
{delay_ms(50);if(Key_3 == 0){beep();while(Key_3==0);if(status==1){if(Min_Tem>0)Min_Tem-=100;}if(status==2){if(Max_Tem>Min_Tem)Max_Tem-=100;}}
}
T=Tem*2;
T=T-27315;if(T>Max_Tem){Bp=0;fenshan=0;}else if(T<Min_Tem){Bp=0;fenshan=1;} else{Bp=1;}
}
4、核心算法程序
//主函数******************************
void main()
{
uint i,count;
//函数部分
SCL=1;
SDA=1;
nop();
nop();
nop();
nop();
SCL=0;
delay(1000);
SCL=1;
dis1[11] =0xdf;LCD_init(); //lcd初始化
start_flag = 0;
for(i=0;i<16;i++)
{LCD_write_char(i,0,dis0[i]);LCD_write_char(i,1,' ');
}
delay_ms(2000);
while(1)
{count++;if(count<50){Tem=memread();key_det();display(Tem);for(i=0;i<16;i++){LCD_write_char(i,0,dis1[i]);LCD_write_char(i,1,dis2[i]);}delay(20);count=0;}
}
}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。