一、系统方案
1按照题目要求使用数字温度传感器DS18B20,采集温度数据。
2使用按键设定温度采集间隔,间隔时间由定时器完成。处理器ATmega128根据设定定时采集,在数码管或液晶屏或虚拟终端上显示通过DS18B20测得的温度。
3 使用时钟芯片DS1302,能记录和回放测试温度的时间。
二、硬件设计
原理图如下:
三、单片机软件设计
1、首先是系统初始化
uchar i;
DDRB = 0XFF;
PORTB=0XFF;
DDRA = 0XFF;
PORTA=0XFF;
DDRD = 0X00;//1输出
PORTD=0XFF;
DDRC = 0X00;
PORTC=0XFF;
DDRE = 0XFF;
PORTE=0XF0;
DDRG=0XFF;
PORTG=0X00;
RST_OUT;//设置1302 引脚
SCK_OUT;
RST_SET;
SCK_SET;
//Initial_DS1302(); //时钟芯片初始化
//*******关闭数码管
2、数码管显示程序
void temptoseg()
{
PORTA=show[0];
AT1_H;
delay_ms();
AT1_L;
PORTA=show[1];
AT2_H;
delay_ms();
AT2_L;
PORTA=show[2];
AT3_H;
delay_ms();
AT3_L;
PORTA=show[3];
AT4_H;
delay_ms();
AT4_L;
PORTA=show[4];
AT5_H;
delay_ms();
AT5_L;
PORTA=show[5];
AT6_H;
delay_ms();
AT6_L;
PORTA=show[6];
AT7_H;
delay_ms();
AT7_L;
PORTA=show[7];
AT8_H;
delay_ms();
AT8_L;
}
3、按键程序
void key()
{
if((k1)==0)//检测对应按键实现对应功能
{
delay_nms(50);//第一个按键 控制间隔加
if((k1)==0)
{
mode=1;
tt+=1;
while((k1)==0);
}
}
if((k2)==0)//第二按键 控制间隔减
{
delay_nms(50);//第2个按键 控制间隔加
if((k2)==0)
{
mode=1;
if(tt>1)
tt-=1;
while((k2)==0);
}
}
if((k3)==0)//3按键 控制查询地址加1 并显示当前地址数据
{
delay_nms(50);//第2个按键 控制间隔加
if((k3)==0)
{
mode=2;
// Write_Data_String(0,1,xianshi2);
xuhao++;
while((k3)==0);
}
}
if((k4)==0)//控制3按键 控制查询地址减1 并显示当前地址数据
{
delay_nms(50);
if((k4)==0)
{
mode=2;
// Write_Data_String(0,1,xianshi2);
if(xuhao>0)
xuhao–;
while((k4)==0);
}
}
if((k5)==0)//退出返回 平时 模式
{
delay_nms(50);//
if((k5)==0)
{
mode=0;
while((k5)==0);
}
}
四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。