鸿-初级组恒温水浴_第1页
鸿-初级组恒温水浴_第2页
鸿-初级组恒温水浴_第3页
鸿-初级组恒温水浴_第4页
鸿-初级组恒温水浴_第5页
免费预览已结束,剩余58页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

恒温水浴箱设计引 温度控制系统完成的功 总体设计方 方案 方案 显示模块的设 4.12864液 温度模块的设 DS18B20的工作原 DS18B20的测温原 语音模块设 无线模块设 系统整体设 系统硬件电路设 系统软件设 的外形设 电路仿真与调试过 测试数据及分 参考文 致 一、引本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基的温度维持在当前温度,也可通过控制水泵抽水和吸水。本系统也有NRF无线通信模块加热的单片机有发送模块可将ds18b20到的温度发送二、总体设计

方案AD590利用其感温效应,在将随被测温度变化的电压或电流过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。温度模块实现温度信号、信号调理、模/数转换的功能。主要以集成温度传感器AD590M为主体,经过电压跟随器、差分式减法器、电压10A/DTLC1549进2所示。方案DS18B20器,直接被测温度值,之后进行转换,依次完成设计要求。在本系统的电路设计方框图如图所示,它由九部分组成:①控制部分主采用单片机AT89S52;②显示部分采用12864液晶实现温度显示;③温度部分采用DS18B20温度传感器。4声音部分由ISD4004语音模块控制5时间由ds1302控制,显示在128646继电器构成的桥式驱动电路控制半导体制冷片的加热与制冷7无线模块主要是NRF905,发送温度给电8设置目标温度只要是通过发送信息给单片机;9上位机显示。控12864单 继电器构成单片机STC89C52具有低电压供电和体积小等特点,四个端口只需要两个口12864DS1302时钟单片机可根据温度值控制ISD4004控制加热的单片机可通过NRF905DS18b20温DS18B20温度传感器 DALLAS半导体公 推出的一种改进型智分主要完成对温度信号和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。数字温度传感器DS18B20把到的温度通过数据引脚传到单片机的P1.0口,单片机接受温度并。此部分只用到DS18B20和单DS18B20DS18B203用户可定义设置DS18B20DS18B203PR-352-2所示;DS18B202-32-2DS18B20DS18B20非挥发的温度触发器TH和TL,可通过软件写入用户上下限值高速暂存,可以设置DS18B20温度转换的精度CRC示模块的设四.温度模块的设DS18B20DS18B20工作时DS18B20DS18B20DS18B20ROMRAMDS18B20复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示5-1,5-2,5-3主机最小主机复位主机最小主机复位脉最小响应冲5-1时延时15~60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延480us。主机写"0"时

主机写"1"时采样

样5-20160us,260us,2us。主机写"0"时

主机写"1"时主机采

主机采5-3时ROM操作命DS18B20DS18B20的测温原每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中。主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,DSl8B20DS18B20的测温原理如图5-4所示,图中低温度系数晶振的振荡频率受温度2图中还隐含着计数门,当计数门打开时,DS18B20器来决定,每次测量前,首先将-5511551101,112.35-1ROM命 DS18B20ROMDS18B20DS18B20DS18B2064ROM64ROMDS18B20换9RAM器RAM9器暂将E2PRAM中第3,4字节内容到E2PRAM 将E2PRAMRAM3,4DS18B20DS18B20此读写时序很重要。系统对DS18B20的必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发器操作命令→处理数模块设六.无线模块整体设显示模

系统硬件电路设时钟温度无线通信红外ISD4004语音模桥式驱动系统软件温度//charuchar{uchardeceive_ready;DQ=0;DQ=1;deceive_ready=DQ;}DS18B20DS18B20ucharread_bit(void){uchari;DQ=0;DQ=for(i=0;i<3;i++);}DS18B20bitval(要对DS18B20voidwrite_bit(uchar{}DS18B20DS18B20uchar{uchari,m,receive_data;m=1;receive_data=0;for(i=0;i<8;i++){{receive_data=receive_data+(m<<}}}DS18B20输入:val(要对DS18B20写入令值voidDS_18b20_write_byte(uchar{uchari,temp;for(i=0;i<8;i++){temp=val>>i;temp=temp&0x01;}}uint{uintunsignedcharTMPH,TMPL;uchartemperature[4];TMPL=TMPH=DS_18b20_read_byte();mytemp=(TMPH<<8)|TMPL;mytemp=mytemp*0.625+0.5; returnmytemp;//温度}时钟#includeuchartable[7];tableadd[7]={0x8c,0x88,0x86,0x80,0x84,0x82,0x8a};/uintvoidwrite_byte(uchar{uinti; }}uchar{uintucharreaddat;{}return}voidwrite_time(ucharadd,uchar{T_RST=1;_nop_();}ucharreadtime(uchar{uintucharreadtime;returnreadtime;}void{uinti;{{case0:table[i]=readtime(0x8d);break;case1:table[i]=readtime(0x89);break;case2:table[i]=readtime(0x87);break;case6:table[i]=readtime(0x8b);break;case4:table[i]=readtime(0x85);break;case5:table[i]=readtime(0x83);break;case}}}uint{uintyeamon; returnyeamon;}uint{uintdayhour;dayhour=100*table[2]+table[4];//10000*table[4]+returndayhour;}uint{uintminsec;minsec=100*table[5]+table[3];returnminsec;voidISD_SPI_Send8(ucharisdx8{ucharISD_SS=0; ISD_SCLK=0; //先发低位再发,依次发送{if((isdx8&0x01)==1) ISD_MOSI=1;ISD_MOSI=isdx8 //右移ISD_SCLK=1; ISD_SCLK=0;}}名称:ISD_SPI_Send16(uintisdx16)功能:spi发送子程序,16返回voidISD_SPI_Send16(uintisdx16{ucharISD_SS=0; ISD_SCLK=0;for(i=0;i<16;i++)//先发低位再发,依次发送{if((isdx16&0x0001)==1)发送最低位ISD_MOSI=1;ISD_MOSI=isdx16isdx16 //右移 }}功能stop指令:ISD_SPI_Send8(uchar调用:返回:void{//ISD_SS=0;ISD_SS //关闭}名称功能:发送上电指令,并延迟50ms指令:ISD_SPI_Send8(ucharisdx8);返回:void{ISD_SS=0; ISD_SS=}名称功能:发送play令,并延迟50ms指令:ISD_SPI_Send8(ucharisdx8);返回:void{ISD_SS=0;ISD_SS=1;}名称:ISD_SetPlay(uint功能:发送setplay令,并延迟指令:ISD_SPI_Send8(ucharisdx8);ISD_SPI_Send16(uintisdx16);返回voidISD_SetPlay(uint{ //发送setplay指令字节ISD_SS=1;}voidISD_delay(uint{uinti,for(i=0;i<z;i++{for(j=0;j<}}名称voidDelay1Ms(uchar功能:延时0.1ms参数:t,最大255调用:无返回:voidDelay1Ms(uchar{ucharfor(;t>0;t--{for{}}}voidplay(uchar{ISD_PowerUp();//ISD}}

#defineBYTE_BIT00x01#defineBYTE_BIT7bdata char#defineDATA7((DATA_BUF&BYTE_BIT7)!=0)#defineDATA0 ((DATA_BUF&BYTE_BIT0)!=0) flag1

配置口定义 #define #defineRC #define #define #define #define #define

nrf905控制NRF905寄存器配置unsignedcharidata{ //CH_NO 4 32 信号不使能,16Mcode voidDelay_NRF905(uchar{uinti;}voidSpiWrite(unsignedchar{unsignedchari;for(i=0;i<8;i++){if(DATA7){}{}}}}初始化void{//Spiclocklineinit//InitDRfor//Spiclocklineinit//InitDRfor//InitAMfor//InitCDfornRF905power//SetnRF905instandby//setradioinRx}void{uchar //Spienableforwriteaspi Writeconfigcommandfor Writeconfigrationwords写放配置字{} //Disable}

发送数据打包voidTxPacket(uchar{uchar //Writepayloadcommandfor(i=0;i<4;i++){ //Write32bytesTx}//Spienableforwriteaspicommand //Spi //Spienableforwriteaspicommand //Writeaddresscommandfor //Write4bytes{} //Spi //SetTRX_CEhigh,startTxdata //while //SetTRX_CE}void{

设置发送 //delayformode}voidsendNRF905(uint{uchartemperature[4];SetTxMode();//SetnRF905inTxmodeTxPacket(temperature);//Senddataby}#include"LCD12864.h" unsignedcharlcd_x,lcd_y;voiddelay_10us(unsignedchar {unsignedi,j;}voiddelay_ms(unsignedchar {unsignedi,j;}voidLCD12864_WriteCmd(unsignedint {}voidLCD12864_WriteDate(unsignedchar {}void{ //1,0LCD12864_WriteCmd(0x30); led}GCROMGCROM0x00void{unsignedchari,j,k;{{{}}}}12864函数参数:lcd_x,lcd_y12864LCD_x=0x80,voidLCD12864_WriteImage(unsignedchar{unsignedchari,j,k; {{ {}}}}void {RS=0;//RC5//RW=1;//RC4{}unsignedcharLCD12864_ReadByte(void{unsignedcharReturnValue//LCD12864_CheckBusy();LCD12864_DatePort=0xff;{{ReturnValue=LCD12864_DatePort;returnReturnValue}voidLCD12864_DrawPoint(unsignedcharX,unsignedcharY,unsignedcharColor){unsignedcharRow,Tier,Tier_bit unsignedcharReadOldH,ReadOldL;unsignedchararray_x;LCD12864_WriteCmd(0x34);LCD12864_WriteCmd(0x36);Tier=X>>4;Tier_bit=X&0x0f;if(Y<32){Row=Y}{Row=Y-32Tier+=8}LCD12864_WriteCmd(Row+0x80) LCD12864_WriteCmd(Tier+0x80);if(Tier_bit<8){switch(case1:ReadOldH|=(0x01<<(7-Tier_bit));break;case2:ReadOldH^=(0x01<<(7-Tier_bit));break;default:break;}LCD12864_WriteDate(ReadOldH);LCD12864_WriteDate(ReadOldL);LCD[2*array_x][Y-32]=ReadOldH;}{{case0:ReadOldL&=(~(0x01<<(15-Tier_bit)));break;case1:ReadOldL|=(0x01<<(15-Tier_bit));break;case2:ReadOldL^=(0x01<<(15-Tier_bit));break;default:break;}LCD12864_WriteDate(ReadOldH);LCD12864_WriteDate(ReadOldL)LCD[2*array_x+1][Y-}LCD12864_WriteCmd(0x30 }voidLCD12864_DrawLine_X(unsignedcharX0,unsignedcharX1,unsignedcharY,unsignedcharColor) unsignedcharTemp;if(X0>X1){Temp=X1;X1=X0;X0=Temp}for(;X0<=X1;X0++LCD12864_DrawPoint(X0,Y,Color)}voidLCD12864_DrawLine_Y(unsignedcharX,unsignedcharY0,unsignedcharY1,unsignedcharColor)unsignedcharTemp;if(Y0>Y1){Temp=Y1;Y1=Y0;Y0=Temp}for(;Y0<=Y1;LCD12864_DrawPoint(X,Y0, }voidLCD12864_DrawLine(unsignedcharStartX,unsignedcharStartY,unsignedcharEndX,unsignedcharEndY,unsignedcharColor){intt,distance;/*int)*/intx=0,y=0,delta_x,delta_y;charincx,incydelta_x=EndX-StartX;delta_y=EndY-StartY;if(delta_x>0){incx=}elseif(delta_x==0{LCD12864_DrawLine_Y(StartX,StartY,EndY,Color);return;}{incx=-1}if(delta_y>0{incy=1}elseif(delta_y==0{LCD12864_DrawLine_X(StartX,EndX,StartY,Color);return;}{incy=-1}delta_xabs(delta_xdelta_y=abs(delta_y);if(delta_x>delta_y{distance=delta_x}{distance=delta_y}LCD12864_DrawPoint(StartX,StartY,Color)/*Drawfor(t=0;t<=distance+1;t++{LCD12864_DrawPoint(StartX,StartY,Color);x+=delta_x;y+=delta_yif(x>distance{x-=distance;StartX+=incx}if(y>distance{y-=distance;StartY+=incy}}}voidLCD12864_DisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharData){{case0:Y=0X80;break;case1:Y=0X90;break;case2:Y=0X88;break;case}LCD12864_WriteCmd(Y+X);//这里测忙信号,发送地址} {{case0:Y=0X80;break;case1:Y=0X90;break;case2:Y=0X88;break;case}LCD12864_WriteCmd(Y+X);//这里测忙信号,发送地址X=Y=while(Data[Y]!=0)//若到达字串退{if(X<= //X{}else}} *Data,unsignedcharnum,intflag){unsignedcharnum1,num2;{case0:Y=0X80;break;case1:Y=0X90;break;case2:Y=0X88;break;case}LCD12864_WriteCmd(Y+X);//这里测忙信号,发送地址X=Y=while(Data[Y]!=0)//若到达字串退{if(X<= //X{}else}num1=num/10+num2=num%10+ } *Data,unsignedcharnum,intflag){unsignedcharnum1,num2;{case0:Y=0X80;break;case1:Y=0X90

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论