[分布式温度控制系统的设计与实现]目录 第一章绪论----------------------------------------------------------1 1.1问题的提出-------------------------------------------------------2 1.2课题相关的背...+阅读
基于单片机及DS18B20的分布式温度检测系统设计
#include#define uint unsigned int#define uchar unsigned char sbit DQ=P3^3; sbit key1=P1^4; sbit key2=P1^5; sbit key3=P1^6; sbit beer=P3^6; uint count; uint max=10;//全局变量 uchar LEDDATA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共阴数码管 0-f uchar array_Point[]={0,1,1,2,2,3,4,4,5,6,6,7,7,8,9,9}; void sound (); void delay(uint time); void displayOneCharonaddr(uchar date,uchar addr); bit DS18B20_Init(void); uchar DS18B20_readonechar(void); void DS18B20_writeonechar(uchar dat); uint DS18B20_readtemperature(void); void keyscan(); void alarm(); void display(void); void main(void) { while
(1) { keyscan(); DS18B20_readtemperature( ); keyscan(); display( ); alarm(); keyscan(); } } bit DS18B20_Init(void){bit flag; DQ=1; delay
(8); DQ=0; delay(80); DQ=1; delay(14); flag=DQ; delay(20); return(flag); } uchar DS18B20_readonechar(void) { uchar i=0; uchar dat; for(i=8;i>0;i--) {DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay
(4); } return(dat);}void DS18B20_writeonechar(uchar dat){ uchar i=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay
(5);DQ=1;dat>>=1;}}uint DS18B20_readtemperature(void){ uchar a=0; uchar b=0; uint t=0; DS18B20_Init( ); DS18B20_writeonechar(0xCC); DS18B20_writeonechar(0x44); DS18B20_Init( ); DS18B20_writeonechar(0xCC); DS18B20_writeonechar(0xBE); a=DS18B20_readonechar( ); //lsb b=DS18B20_readonechar( ); //msb t=b; t0x8000){ t_t=(~t_t)+1; displayOneCharonaddr(10,1); } else { displayOneCharonaddr((t_t>>4)/100,1); } displayOneCharonaddr((t_t>>4)%100/10,2); displayOneCharonaddr((t_t>>4)%10,3); displayOneCharonaddr(array_Point[t_t&0x000f],4);}}void displayOneCharonaddr(uchar date,uchar addr) { switch(addr) {case 1:P2=0xef;break; case 2:P2=0xdf;break; case 3:P2=0xbf;break; case 4:P2=0x7f;break; default: break; } if(addr!=3) P0=LEDDATA[date]; else P0=LEDDATA[date]|0x80;delay(200);}/********延迟US函数************/void delay(uint time){while(time--);}/***************************读键盘延时子函数**************************/ void keyscan_delay(uint z){ uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--);}/****************************温度调节函数******************************/ int temp_change(count){ if(key2==0) { keyscan_delay
(10); if(key2==0) { count=DS18B20_readtemperature( ); count++; if(count>125) count=125; } while(key2==0); keyscan_delay
(10); } if(key3==0) { keyscan_delay
(10); if(key3==0) { count--; if(count1) {i=0; store_t(); DS18B20_readtemperature( ); display( );} switch(i) { case 1: max=temp_change(count); break; default:break; } } while(key1==0); keyscan_delay
(10);}} /****************蜂鸣器发声********************/void delay500us () //500us基准延时程序{uchar j; for(j=1;j
数字温度计的设计DS18B20
提供参考/********************************************************* DS18B20温度传感器7a686964616fe4b893e5b19e31333239313464 ** C51 ** yajou 2008-06-28 无CRC *********************************************************/#include "reg51.h"#include "intrins.h"#include "DS18B20.h"/********************************************************* us延时程序 *********************************************************/void Delayus(uchar us) {while(us--); //12M,一次6us,加进入退出14us(8M晶振,一次9us) }/********************************************************* DS18B20初始化 *********************************************************/bit Ds18b20_Init(void) //存在返0,否则返1{bit temp = 1;uchar outtime = ReDetectTime; //超时时间while(outtime-- & temp){Delayus(10); //(250)1514us时间可以减小吗ReleaseDQ();Delay2us();PullDownDQ();Delayus(100); //614us(480-960)ReleaseDQ();Delayus(10); //73us(>60)temp = dq;Delayus(70); //us}return temp;}/********************************************************* 写bit2DS18B20 *********************************************************/void Ds18b20_WriteBit(bit bitdata){if(bitdata){PullDownDQ();Delay2us(); //2us(>1us)ReleaseDQ(); //(上述1-15)Delayus(12); //86us(45- x,总时间>60)}else{PullDownDQ();Delayus(12); //86us(60-120)}ReleaseDQ();Delay2us(); //2us(>1us)}/********************************************************* 写Byte DS18B20 *********************************************************/void Ds18b20_WriteByte(uchar chrdata){uchar ii;for(ii = 0; ii>= 1;}}/********************************************************* 写 DS18B20 *********************************************************///void Ds18b20_Write(uchar *p_readdata, uchar bytes)//{// while(bytes--)// {// Ds18b20_WriteByte(*p_readdata);// p_readdata++;// }//}/********************************************************* 读bit From DS18B20 *********************************************************/bit Ds18b20_ReadBit(void){bit bitdata;PullDownDQ();Delay2us(); //2us( >1us)ReleaseDQ();Delay8us(); //8us(60us)return bitdata;}/********************************************************* 读Byte DS18B20 *********************************************************/uchar Ds18b20_ReadByte(void){uchar ii,chardata;for(ii = 0; ii>= 1;if(Ds18b20_ReadBit()) chardata |= 0x80;}return chardata;}/********************************************************* 读 DS18B20 ROM *********************************************************/bit Ds18b20_ReadRom(uchar *p_readdata) //成功返0,失败返1{uchar ii = 8;if(Ds18b20_Init()) return 1;Ds18b20_WriteByte(ReadROM);while(ii--){*p_readdata = Ds18b20_ReadByte();p_readdata++;}return 0;}/********************************************************* 读 DS18B20 EE *********************************************************/bit Ds18b20_ReadEE(uchar *p_readdata) //成功返0,失败返1{uchar ii = 2;if(Ds18b20_Init()) return 1;Ds18b20_WriteByte(SkipROM);Ds18b20_WriteByte(ReadScr);while(ii--){*p_readdata = Ds18b20_ReadByte();p_readdata++;}return 0;}/********************************************************* 温度采集计算 *********************************************************/bit TempCal(float *p_wendu) //成功返0,失败返1 (温度范围-55 --- +128){uchar temp[9],ii;uint tmp;float tmpwendu;TR1 = 0;TR0 = 0;//读暂存器和CRC值-----------------------if(Ds18b20_ReadEE(temp)){TR1 = 1;TR0 = 1;return 1;}//------------------------------------- //CRC校验------------------------------////此处应加入CRC校验等//////-------------------------------------//使温度值写入相应的wendu[i]数组中-----for(ii = i; ii >0; ii--) {p_wendu++;}i++;if(i >4) i = 0;//-------------------------------------//温度正负数处理-----------------------////-------------------------------------//温度计算-----------------------------tmp = temp[1]; //tmp
基于DS1820的数字温度计的毕业设计论文??
基于DS18B20温度传感器的数字温度计设计
目 录
基于DS18B20温度传感器的数字温度计设计 1
基于DS18B20温度传感器的数字温度计设计 1
摘要: 1
关键字: 1
The conception of the numerical thermometer based on DS18B20 1
1 引言 2
2 总体设计 2
2.1 方案论证 2
2.2 总体设计 3
3 硬件设计 3
3.1 单片机系统 3
3.2 温度传感器模块 4
3.3 存储模块 7
3.4 液晶显示模块 9
3.5 串口通信模块 11
3.6 电源模块 12
4 软件设计 13
4.1 主程序流程 13
4.2 DS18B20模块程序设计 13
4.3 HS1602驱动程序设计 16
4.4 AT24C08存储模块程序设计 18
4.5 RS-232-C串口通信模块程序设计 19
5 测试及结果分析 22
6 附录 23
7 参考资料 24
DS18B20数字温度计的设计LCD显示
/*************************************** 128 64 lcd显示8*16 的数字 ***************************************/ void dispshuzi0(uchar ix,uchar page0,uchar lie0) { uchar ii,j; ii=ix*16; wrlie(lie0); wrpage(page0); for(j=0;j<8;j++) { wrdate(shuzi[ii]); ii++; } wrlie(lie0); wrpage(page0+1); for(j=0;j<8;j++) { wrdate(shuzi[ii]); ii++; } }
延伸阅读:
网络技术在分布式测试系统上的应用测试工程师也可采用以下这种方案: 从德克萨斯的办公室上互联网 打开Web页自制一个用于记录结果的表格点击指定的空白区域 此时,位于井边的仪器自动执行适当的测试并在表格上...
基于感性工学的老年人产品双色配色系统设计论文是理论指导与实践探求结合的产物,是创新的结晶。怎样写论文,写出高质量的论文?下面文书帮小编给大家带来一篇论文范文,欢迎阅读! 摘 要:目的:为了使老年人产品配色能满足老年...
基于单片机的数字温度计设计下面是小编整理的关于基于单片机的数字温度计设计的论文,欢迎大家借鉴!摘要:随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。介绍一...
一种基于USB的快速数据传输系统设计经历了黑色的六月,顺利考入大学,转眼间美好的四年大学生活就这么过去啦!又是一年的毕业季,毕业成绩单:毕业论文,总是让人头疼。下面文书帮小编为大家带来了一篇计算机毕业论文,供...
单片机控制的交通灯系统设计毕业设计论文要求:设计一个十字路口3.交通灯 要求: (1) 完成一个十字路口的交通灯控制,基本功能实现双向直行; (2) 每个方向用2位数码管显示倒计时,倒计时时间最大为99秒; (3) 能修改每个方向的红、绿灯时间。 扩展...
求多功能数字钟的毕业设计要求家用多功能时钟的设计要求基于单片第一章 绪论 1.1 数字电子钟的背景…………………………………………………………………… 1 1.2 数字电子钟的意义……………………………………………………………………...
毕业设计:基于单片机的污水处理系统模糊控制器的设计希望高手帮基于单片机的污水处理系统模糊控制器的设计 【摘要】:为了获得安全可靠、高效经济的污水处理监控系统,可以利用单片机作为整个监控系统的下位机,通过RS485串口通信协约实现与中...
跪求毕业周记基于单片机的步进电机控制系统的设计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...
设计一个基于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...