#《水温控制系统》1997电子设计大赛第三届C组.docx
- 文档编号:8768426
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:8
- 大小:19.75KB
#《水温控制系统》1997电子设计大赛第三届C组.docx
《#《水温控制系统》1997电子设计大赛第三届C组.docx》由会员分享,可在线阅读,更多相关《#《水温控制系统》1997电子设计大赛第三届C组.docx(8页珍藏版)》请在冰豆网上搜索。
#《水温控制系统》1997电子设计大赛第三届C组
《水温控制系统》1997电子设计大赛(第三届)C组
一、任务
设计并制作一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。
水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
二、要求
1.基本要求
(1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。
(2)在全量程内任意设定一个温度值(起始温度+-20),控制系统可以实现该给定温度的恒值自动控制。
(3)显示水的实际温度,精确到0.1(误差0.5)。
2.发挥部分
(1)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。
(2)温度控制的静态误差≤0.2℃。
(3)在设定温度发生突变(由40℃提高到60℃)时,用液晶屏幕显示水温随时间变化的曲线。
答案
单片机与DS18B20并用LCD1602显示c程序
sbitDQ=P1^4;//ds18b20与单片机连接口
sbitRS=P1^3;
sbitRW=P1^2;
sbitEN=P1^1;
还有我的LCD的16引脚接到了单片机上的P1.0上,就是要用软件使LCD亮,
硬件已经做出来了,所以改不了.(最好附上详细的解释,谢谢了)
提问者:
weilynare-三级最佳答案#include
#defineucharunsignedchar
#defineuintunsignedint
sbitBLK=P1^0;
sbitDQ=P1^4;
sbitRS=P1^3;
sbitRW=P1^2;
sbitEN=P1^1;
unsignedcharcodestr1[]={"temperature:
"};
unsignedcharcodestr2[]={""};
uchardatadisdata[5];
uinttvalue;//温度值
uchartflag;//温度正负标志
/*************************lcd1602程序**************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{
unsignedinti,j;
for(i=0;i for(j=0;j<100;j++); } voidwr_com(unsignedcharcom)//写指令// { delay1ms (1); RS=0; RW=0; EN=0; P0=com; delay1ms (1); EN=1; delay1ms (1); EN=0; } voidwr_dat(unsignedchardat)//写数据// { delay1ms (1);; RS=1; RW=0; EN=0; P0=dat; delay1ms (1); EN=1; delay1ms (1); EN=0; } voidlcd_init()//初始化设置// { BLK=0; delay1ms(15); wr_com(0x38); delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); } voiddisplay(unsignedchar*p)//显示// { while(*p! ='\0') { wr_dat(*p); p++; delay1ms (1); } } init_play()//初始化显示 { lcd_init(); wr_com(0x80); display(str1); wr_com(0xc0); display(str2); } /******************************ds1820程序***************************************/ voiddelay_18B20(unsignedinti)//延时1微秒 { while(i--); } voidds1820rst()/*ds1820复位*/ { unsignedcharx=0; DQ=1;//DQ复位 delay_18B20(4);//延时 DQ=0;//DQ拉低 delay_18B20(100);//精确延时大于480us DQ=1;//拉高 delay_18B20(40); } uchards1820rd()/*读数据*/ { unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } return(dat); } voidds1820wr(ucharwdata)/*写数据*/ { unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=wdata&0x01; delay_18B20(10); DQ=1; wdata>>=1; } } read_temp()/*读取温度值并转换*/ { uchara,b; ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else { tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小? return(tvalue); } /*******************************************************************/ voidds1820disp()//温度值显示 {ucharflagdat; disdata[0]=tvalue/1000+0x30;//百位数 disdata[1]=tvalue%1000/100+0x30;//十位数 disdata[2]=tvalue%100/10+0x30;//个位数 disdata[3]=tvalue%10+0x30;//小数位 if(tflag==0) flagdat=0x20;//正温度不显示符号 else flagdat=0x2d;//负温度显示负号: - if(disdata[0]==0x30) { disdata[0]=0x20;//如果百位为0,不显示 if(disdata[1]==0x30) { disdata[1]=0x20;//如果百位为0,十位为0也不显示 } } wr_com(0xc0); wr_dat(flagdat);//显示符号? wr_com(0xc1); wr_dat(disdata[0]);//显示百位 wr_com(0xc2); wr_dat(disdata[1]);//显示十位 wr_com(0xc3); wr_dat(disdata[2]);//显示个位 wr_com(0xc4); wr_dat(0x2e);//显示小数点 wr_com(0xc5); wr_dat(disdata[3]);//显示小数位 } /********************主程序***********************************/ voidmain() { init_play();//初始化显示 while (1) { read_temp();//读取温度 ds1820disp();//显示 } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水温控制系统 水温 控制系统 1997 电子设计 大赛 第三