范文无忧网面试笔试简历简介

毕业设计基于单片机的ds18b20测温系统

03月06日 编辑 fanwen51.com

[基于单片机的数字温度计设计]下面是小编整理的关于基于单片机的数字温度计设计的论文,欢迎大家借鉴!摘要:随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。介绍一...+阅读

毕业设计基于单片机的ds18b20测温系统

如果只是测温,报警,信息储存,那么思路就很简单了。 测温:你已经选择了DS18B20,这是很常用的校园入门级温度传感器,单线,通信方便,编成简单。拿出MCU一个引脚给他,完成。 报警:接个蜜鸣器什么的,温度低于/高于你所设定的值,响。 储存信息:我想当然是储存温度信息,如果你用的MCU自身不带EEPROM,那就外接一个EEPROM,把温度储给它就可以了。现成的很多。 扩展:

1、增加时钟芯片,仅仅储存温度,没有说服性,增加时钟芯片,不仅增加了时间功能,而且储存信息时,带有时间做参照,更有意义。 除此,还可以做成闹钟什么的。

2、增加LCD,可以实时的显示当前的时间和温度。

3、增加远程报警功能,买个SIEMENS的TC35,如果达到报警条件,可以通过TC35给你的手机发个报警的短信,这样即使人不在现场,也知道出问题。TC35的使用很简单,DATASHEET有协议,具体的使用也就是通过串口发送指令给TC35,然后它自己就能给你指定的手机号发短信了。(再说,MCU都带串口模块,编程和电路也简单)

4、增加保护,具体,根据你的需要自己定。简单的说,就是温度异常时,你该怎么办,除了报警也可以保护。 建议温度传感器换用AD7416,这个比DS18更稳定,精度更高。

毕业设计:ds18b20温度采集控制单片机C源程序具体点急急急!

#include #define uchar unsigned char #define uint unsigned int sbit DQ=P3^7;//ds18b20与单片机连接口 sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2; unsigned char code str1[]={"temperature: "}; unsigned char code str2[]={" "}; uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 /*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) {unsigned int i,j; for(i=0;i for(j=0;j } void wr_com(unsigned char com)//写指令// { delay1ms

(1); RS=0; RW=0; EN=0; P2=com; delay1ms

(1); EN=1; delay1ms

(1); EN=0; } void wr_dat(unsigned char dat)//写数据// { delay1ms

(1);; RS=1; RW=0; EN=0; P2=dat; delay1ms

(1); EN=1; delay1ms

(1); EN=0; } void lcd_init()//初始化设置// {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); } void display(unsigned char *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程序***************************************/ void delay_18B20(unsigned int i)//延时1微秒 { while(i--); } void ds1820rst()/*ds1820复位*/ { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20

(4); //延时 DQ = 0; //DQ拉低 delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); } uchar ds1820rd()/*读数据*/ { 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_18B20

(10); } return(dat); } void ds1820wr(uchar wdata)/*写数据*/ {unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = wdata&0x01; delay_18B20

(10); DQ = 1; wdata>>=1; } } read_temp()/*读取温度值并转换*/ {uchar a,b; ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue tvalue=tvalue|a; if(tvalue tflag=0; else {tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 return(tvalue); } /*******************************************************************/ void ds1820disp()//温度值显示 { uchar flagdat; 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]);//显示小数位 } /********************主程序***********************************/ void main() { init_play();//初始化显示 while

(1) {read_temp();//读取温度 ds1820disp();//显示 } }

DS18B20实现仓库温湿度的监测系统毕业论文

第一章 绪论1. 1 选题背景防潮、防霉、防腐、防爆是仓库日常工作的重要内容,是衡量仓库管理质量的重要指标。它直接影响到储备物资的使用寿命和工作可靠性。为保证日常工作的顺利进行,首要问题是加强仓库内温度与湿度的监测工作。但传统的方法是用与湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。因此我们需要一种造价低廉、使用方便且测量准确的温湿度测量仪。1.2 设计过程及工艺要求

一、基本功能~ 检测温度、湿度~ 显示温度、湿度~ 过限报警

二、 主要技术参数 ~ 温度检测范围 : -30℃-+50℃~ 测量精度 : 0.5℃~ 湿度检测范围 : 10%-100%RH~ 检测精度 : 1%RH~ 显示方式 : 温度:四位显示 湿度:四位显示~ 报警方式 : 三极管驱动的蜂鸣音报警...

基于AT89S52和DS18B20的数字温度计的设计报告

#include #include unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x00,0x40}; unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,25, 28,31,34,38,41,44,48, 50,53,56,59,63,66,69, 72,75,78,81,84,88,91,94,97}; unsigned char displaycount; unsigned char displaybuf[8]={16,16,16,16,16,16,16,16}; signed int timecount; unsigned char readdata[8]; sbit DQ=P3^7; bit sflag; bit resetpulse(void) { unsigned char i; DQ=0; for(i=255;i>0;i--); DQ=1; for(i=60;i>0;i--); return(DQ); for(i=200;i>0;i--); } void writecommandtods18b20(unsigned char command) { unsigned char i; unsigned char j; for(i=0;i<8;i++) { if((command&0x01)==0) { DQ=0; for(j=35;j>0;j--); DQ=1; } else { DQ=0; for(j=2;j>0;j--); DQ=1; for(j=33;j>0;j--); } command=_cror_(command,1); } } unsigned char readdatafromds18b20(void) { unsigned char i; unsigned char j; unsigned char temp; temp=0; for(i=0;i<8;i++) { temp=_cror_(temp,1); DQ=0; _nop_(); _nop_(); DQ=1; for(j=10;j>0;j--); if(DQ==1) { temp=temp|0x80; } else { temp=temp|0x00; } for(j=200;j>0;j--); } return(temp); } void main(void) { TMOD=0x01; TH0=(65535-4000)/256; TL0=(65535-4000)%256; ET0=1; EA=1; while(resetpulse()); writecommandtods18b20(0xcc); writecommandtods18b20(0x44); TR0=1; while(1) { ; } } void t0 (void) interrupt 1 using 0 { unsigned char x; unsigned int result; TH0=(65535-4000)/256; TL0=(65535-4000)%256; if(displaycount==2) { P0=displaycode[displaybuf[displaycount]]|0x80; } else { P0=displaycode[displaybuf[displaycount]]; } P2=displaybit[displaycount]; displaycount++; if(displaycount==8) { displaycount=0; } timecount++; if(timecount==500) { timecount=0; while(resetpulse()); writecommandtods18b20(0xcc); writecommandtods18b20(0xbe); readdata[0]=readdatafromds18b20(); readdata[1]=readdatafromds18b20(); for(x=0;x<8;x++) { displaybuf[x]=16; } sflag=0; if((readdata[1]&0xf8)!=0x00) { sflag=1; readdata[1]=~readdata[1]; readdata[0]=~readdata[0]; result=readdata[0]+1; readdata[0]=result; if(result>255) { readdata[1]++; } } readdata[1]=readdata[1]<<4; readdata[1]=readdata[1]&0x70; x=readdata[0]; x=x>>4; x=x&0x0f; readdata[1]=readdata[1]|x; x=2; result=readdata[1]; while(result/10) { displaybuf[x]=result%10; result=result/10; x++; } displaybuf[x]=result; if(sflag==1) { displaybuf[x+1]=17; } x=readdata[0]&0x0f; x=x<<1; displaybuf[0]=(dotcode[x])%10; displaybuf[1]=(dotcode[x])/10; while(resetpulse()); writecommandtods18b20(0xcc); writecommandtods18b20(0x44); } } 好不好使不知道,也是摘抄的,错了别介意啊,呵呵

延伸阅读:

单片机控制的交通灯系统设计毕业设计论文要求:设计一个十字路口3.交通灯 要求: (1) 完成一个十字路口的交通灯控制,基本功能实现双向直行; (2) 每个方向用2位数码管显示倒计时,倒计时时间最大为99秒; (3) 能修改每个方向的红、绿灯时间。 扩展...

毕业设计单片机把你的邮箱给我,我把图给你发过去1系统总体结构原理 粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。...

求多功能数字钟的毕业设计要求家用多功能时钟的设计要求基于单片第一章 绪论 1.1 数字电子钟的背景…………………………………………………………………… 1 1.2 数字电子钟的意义……………………………………………………………………...

毕业设计:基于单片机的污水处理系统模糊控制器的设计希望高手帮基于单片机的污水处理系统模糊控制器的设计 【摘要】:为了获得安全可靠、高效经济的污水处理监控系统,可以利用单片机作为整个监控系统的下位机,通过RS485串口通信协约实现与中...

基于web的文件管理系统的设计与实现毕业设计题目有哪些毕业生毕业论文(设计) 题 目 基于WEB的毕业设计选题管理系统 学生姓名 XXXX 学 号 XXXXXXXXXXXX 系 别 计算机科学系 年 级 XXXXX 专 业 计算机科学与技术 指导教师 XXXXXX 职...

急求一篇基于ASP的产品销售系统毕业设计论文第一章 、引言 1 .课题提出 杭州萧山慧飞窗帘网站平台是为杭州萧山慧飞窗帘店设计的。 公司简介: 本店开张于1986年,是一家专业从事各类中高档化纤、棉纺织品类面料的纺织企业...

跪求毕业周记基于单片机的步进电机控制系统的设计ORG 00H START: MOV P2,#0FFH JNB P2.0,LOOP1 JNB P2.1,LOOP2 JMP START LOOP1: SETB P3.6 CLR P3.7 MOV R0,#70 DJNZ R0,$ JMP LOOP1 LOOP2: CLR P3.6 SETB P3.7 MOV R0,#7...

单片机毕业设计摘要翻译This paper describes a kind of AT89C51 and DTMF decoder IC ng to the core , through the telephone lines Remote Intelligent Remote Multi-channel controller. The...

设计一个基于AT89C51单片机的电子钟 #include #define uchar unsigned char sbit k1=P1^0; sbit k2=P1^1; sbit sounder=P3^7; uchar h=12,m=0,s=58,c=0; //延时子程序 void delay(unsigned int a){ while(--a...

推荐阅读
图文推荐
栏目列表