Hola2010
很简单的问题,最好使用18B20来做;使用一个字节保存温度上限,一个字节保存下限。每次测量之后,将测温结果与这两数字做比较就行了。具体的控制量自己根据要求决定。 
本科生有啥钱啊,楼上的,这点钱也想赚。。。既然是本科毕业设计,那还是老老实实自己做吧,也算对自己有个交代
必须要有实物啊,理论的东西都是要靠实物来验证的啊。温度控制系统不难吧,学过电子、单片机的都很轻松的,同学看来你大学过得还挺滋润的啊。去文库看看,基本都会有资料参考的。知识要点:1,AD采样,也就是温度的数据采集。2,中断,采集数据后比较,做相应的处理。
二系统软件设计 图4 系统程序流程图1 系统程序流程图 系统程序流程图如图4所示。2 温度部分软件设计 DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。故主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。程序主要函数部分如下: (1)初始化函数 //读一个字节函数 ReadOneChar(void) {unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{ DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay(4);} return(dat);} //写一个字节函数 WriteOneChar(unsigned char dat) {unsigned char i=0;
for (i=8; i>0; i--)
{DQ = 0;
DQ = dat&0x01;
delay(5);
DQ = 1;
dat>>=1;}} (2)读取温度并计算函数 ReadTemperature(void) {unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
tt=t*0625;
t= tt*10+5; //放大10倍输出并四舍五入---此行没用
(3)主程序部分见前
return(t);} 三 结束语 AT89C2051单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量来开发所希望的单片机应用系统。 本文的温度控制系统只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子可以作一些扩展,单片机的应用越来越广泛,由于单片机的运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。 本文作者创新观点:采用的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方法非常简洁且精度高、测试范围较广。 参考文献 [1]林伸茂8051单片机彻底研究基础篇 北京:人民邮电出版社 2004 [2]范风强等单片机语言C51应用实战集锦 北京:电子工业出版社 2005 [3]谭浩强C语言程序设计(第二版) 北京:清华大学出版社 1999 [4]夏路易等电路原理图与电路板设计教程 北京:北京希望电子出版社 2002 [5]赵晶Protel99高级应用 北京:人民邮电出版社 2000 [6]聂毅单片机定时器中断时间误差的分析及补偿[J] 微计算机信息 2002,18(4):37~38 我的英语差,你自己再想办法翻译吧,呵呵