单片机温度的检测与显示的设计..的程序

作者&投稿:管冰 (若有异议请与网页底部的电邮联系)
单片机课程设计 单片机温度的检测与显示的设计~

用18b20做很简单啊。
温度的子程序给你,,你重定义一下接口,主程序已经调用出温度了,你送到显示就行了。。

/* 延时t毫秒 */
void delay(uint t)
{
uint i;
while(t--)
{
/* 对于11.0592M时钟,约延时1ms */
for (i=0;i<125;i++)
{}
}
}

/* 产生复位脉冲初始化DS18B20 */
void TxReset(void)
{
uint i;
DQ = 0;

/* 拉低约900us */
i = 100;
while (i>0)i--;

DQ = 1;// 产生上升沿
i = 4;
while (i>0)i--;
}

/* 等待应答脉冲 */
void RxWait(void)
{
uint i;
while(DQ);
while(~DQ);// 检测到应答脉冲
i = 4;
while (i>0)i--;
}

/* 读取数据的一位,满足读时隙要求 */
bit RdBit(void)
{
uint i;
bit b;
DQ = 0;
i++;
DQ = 1;
i++;i++;// 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效
b = DQ;
i = 8;
while(i>0) i--;
return (b);
}

/* 读取数据的一个字节 */
uchar RdByte(void)
{
uchar i,j,b;
b = 0;
for (i=1;i<=8;i++)
{
j = RdBit();
b = (j>1);
}
return(b);
}

/* 写数据的一个字节,满足写1和写0的时隙要求 */
void WrByte(uchar b)
{
uint i;
uchar j;
bit btmp;
for(j=1;j<=8;j++)
{
btmp = b&0x01;
b = b>>1;// 取下一位(由低位向高位)
if (btmp)
{
/* 写1 */
DQ = 0;
i++;i++;// 延时,使得15us以内拉高
DQ = 1;
i = 8;
while(i>0) i--;// 整个写1时隙不低于60us
}
else
{
/* 写0 */
DQ = 0;
i = 8;
while(i>0) i--;// 保持低在60us到120us之间
DQ = 1;
i++;
i++;
}
}
}

/* 启动温度转换 */
void convert(void)
{
TxReset();// 产生复位脉冲,初始化DS18B20
RxWait();// 等待DS18B20给出应答脉冲
delay(1);// 延时
WrByte(0xcc);// skip rom 命令
WrByte(0x44);// convert T 命令
}

/* 读取温度值 */
void RdTemp(void)
{
TxReset();// 产生复位脉冲,初始化DS18B20
RxWait();// 等待DS18B20给出应答脉冲
delay(1);// 延时
WrByte(0xcc);// skip rom 命令
WrByte(0xbe);// read scratchpad 命令
tplsb = RdByte();// 温度值低位字节(其中低4位为二进制的“小数”部分)
tpmsb = RdByte();// 高位值高位字节(其中高5位为符号位)
}

void main(void)
{
do
{
delay(1);// 延时1ms
convert();// 启动温度转换,需要750ms
delay(1000);// 延时1s
RdTemp();// 读取温度
}
while(1);
}

/*************** writer:shopping.w ******************/
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit DQ = P3^6;
uchar code DSY_CODE[] =
{ 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00};
uchar code df_Table[] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
uchar CurrentT = 0;
uchar Temp_Value[]={0x11,0x22};
uchar Display_Digit[]={0,0,0,0};
bit DS18B20_IS_OK = 1;
void Delay(uint x)
{
while(--x);
}
uchar Init_DS18B20()
{
uchar status;
DQ = 1;
Delay(8);
DQ = 0;
Delay(90);
DQ = 1;
Delay(8);
DQ = 1;
return status;
}
uchar ReadOneByte()
{
uchar i,dat=0;
DQ = 1;
_nop_();
for(i=0;i<8;i++)
{
DQ = 0;
dat >>= 1;
DQ = 1;
_nop_();
_nop_();
if(DQ)
dat |= 0X80;
Delay(30);
DQ = 1;
}
return dat;
}
void WriteOneByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ = 0;
DQ = dat& 0x01;
Delay(5);
DQ = 1;
dat >>= 1;
}
}
void Read_Temperature()
{
if(Init_DS18B20() ==1 )
DS18B20_IS_OK = 0;
else
{
WriteOneByte(0xcc);
WriteOneByte(0x44);
Init_DS18B20();
WriteOneByte(0xcc);
WriteOneByte(0xbe);
Temp_Value[0] = ReadOneByte();
Temp_Value[1] = ReadOneByte();
DS18B20_IS_OK=1;
}
}
void Display_Temperature()
{
uchar i;
uchar t=150;
uchar ng=0, np=0;

if ( (Temp_Value[1] & 0xf8) == 0xf8)
{
Temp_Value[1] = ~Temp_Value[1];
Temp_Value[0] = ~Temp_Value[0]+1;
if (Temp_Value[0] == 0x00) Temp_Value[1]++;
ng=1;np=0xfd;
}
Display_Digit[0] = df_Table[ Temp_Value[0] & 0x0f ];
CurrentT = ((Temp_Value[0] & 0xf0)>>4) | ((Temp_Value[1] & 0x07)<<4);
Display_Digit[3] = CurrentT / 100;
Display_Digit[2] = CurrentT % 100 / 10;
Display_Digit[1] = CurrentT % 10;
if (Display_Digit[3] == 0)
{
Display_Digit[3] = 10;
np = 0xfb;
if (Display_Digit[2] == 0)
{
Display_Digit[2] = 10;
np = 0xf7;
}
}
for (i=0;i<30;i++)
{
P0=0x39;P2=0x7f;Delay(t);P2=0xFF;
P0=0x63;P2=0xbf;Delay(t);P2=0xff;
P0=DSY_CODE[Display_Digit[0]];
P2=0xDF;Delay(t);P2=0xff;
P0=(DSY_CODE[Display_Digit[1]]) | 0x80;
P2=0xef;Delay(t);P2=0xff;
P0=DSY_CODE[Display_Digit[2]];
P2=0xf7;Delay(t);P2=0xff;
P0=DSY_CODE[Display_Digit[3]];
P2=0xfb; Delay(t); P2=0xff;
if (ng)
{
P0 = 0x40; P2 = np; Delay(t); P2=0xff;
}
}
}
void main()
{
Read_Temperature();
Delay(50000);
Delay(50000);
while(1)
{
Read_Temperature();
if(DS18B20_IS_OK)
Display_Temperature();

}
}

;本程序用于循环显示0----99
;RXD作为数据输出端,TXD作为脉冲输出端
;本程序只适用于共阳极数码管
ORG 00H
START:
MOV A,#00H
MOV P0,A
MOV R1,#01H
MOV R3,#0AH
START1:
MOV A,#00H
MOV R0,A
MOV R2,#0AH
LOOP:
SETB P0.0
MOV A,R0
MOV R4,A
ACALL DSPLY
ACALL DELAY
MOV A,R0
INC A
MOV R0,A
DJNZ R2,LOOP
CLR P0.0
SETB P0.1
MOV A,R1
MOV R4,A
ACALL DSPLY
ACALL DELAY
MOV A,R1
INC A
MOV R1,A
CLR P0.1
DJNZ R3,START1
AJMP START
DSPLY:
MOV A,R4
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV SBUF, A
JNB TI, $
CLR TI
RET
DELAY:
MOV 30H,#8
D1:MOV 31H,#200
D2:MOV 32H,#200
D3:DJNZ 32H,D3
DJNZ 31H,D2
DJNZ 30H,D1
RET
TABLE:DB 02H,9EH,24H,0CH
DB 98H,48H,40H,1EH
DB 00H,08H
END 这是我参加全国电子设计大赛的一个子程序50分太少了吧!我自己做的电路板,绝对正确

基于AT89C52单片机的温度检测及显示设计 栾亚群,李炳建,巨永锋 (1.长安大学 电子与控制工程学院 陕西 西安 710064;2.延长油田股份有限公司 甘谷驿采油厂 陕西 延安 716005) 由于高新技术的不断发展,仪器仪表的微型化,数字化已得到实现。90年代高精确度、高性能、多功能仪器仪表都已经采用微处理器件。而作为工业控制和自动化领域的各种新技术、新方法、新产品的发展趋势和显著标志智能化是自动化技术当前和今后发展的动向之一。本文采用AT89C52单片机开发了键盘、液晶显示器、多路温度检测来实现温度的采集、温度的文字显示和图形显http://www.eccn.com/xsj07/xsj091441w.asp

1. 8051单片机数字温度计单片机的设计
;***************WAVE-E6000/T**********************
;*MCU: AT892051 *
;*MCU-crystal: 12M *
;*Version: 01 *
;*Last Updata: 2007-5-27 *
;*Author: zhaojun *
;*Description: *
;DS18B20的读写程序,数据脚P3.4 *
;温度传感器18B20汇编程序,采用器件默认的12位转化 *
;最大转化时间750微秒,显示温度-55到+125度,显示精度*
;为0.1度,显示采用4位LED共阳显示测温值 *
;******************
;单片机内存分配申明!
;******************
TEMPER_L EQU 40H ;用于保存读出温度的低8位
TEMPER_H EQU 41H ;用于保存读出温度的高8位
FLAG1 EQU 38H ;是否检测到DS18B20标志位
SEC EQU 20H ;数码管个位数存放内存位置
MIN EQU 21H ;数码管十位数存放内存位置
TEMPL EQU 30H ;用于保存读出温度的低8位
TEMPH EQU 31H ;用于保存读出温度的高8位
TEMPHC EQU 32H ;温度转换寄存器低8位
TEMPLC EQU 33H ;温度转换寄存器高8位
BUF1 EQU 34H ;显示缓冲寄存器小数位
BUF2 EQU 35H ;显示缓冲寄存器个数位
BUF3 EQU 36H ;显示缓冲寄存器十数位
BUF4 EQU 37H ;显示缓冲寄存器百数位
TEMPDIN BIT P3.4 ;数据脚定义
DIN BIT P1.7 ;小数点控制
;**********************************************
ORG 0000H ;主程序入口地址
AJMP MAIN ;转主程序
ORG 0003H ;外中断0中断入口
DB 00H,00H,00H,00H,00H,00H,00H;
RETI ;跳至INTEX0执行中断服务程序
ORG 000BH ;定时器T0中断入口地址
DB 00H,00H,00H,00H,00H,00H,00H ;
RETI ;跳至定时器T0执行中断服务程序
ORG 0013H ;外中断1中断入口
DB 00H,00H,00H,00H,00H,00H,00H ;
RETI ;跳至INTEX1执行中断服务程序
ORG 001BH ;定时器T1中
2. 8051单片机的程序设计
MOV R0,#20H
MOV R7,1FH
MOV one,#0
MOV two,#0
MOV three,#0
LOOP1:
MOV A,@R0
JZ ZERO
JB ACC.7,N_NUM
INC one
LJMP NEXT
ZERO:
INC two
LJMP NEXT
N_NUM:
INC three
NEXT:
DJNZ R7,LOOP1


可以看电脑温度和功耗的软件
比如I5 7500+GTX1060 3G这样最常见的配置,主机功耗210到230W,最低也需要满足额定300W以上品牌电源,推荐选择额定400W以上电源。有测量电脑功耗的软件么电脑硬件温度检测显示工具可以监测温度传感器,风扇转速,电压,负载和时钟的计算机硬件速度,一个免费的、开放原始码的硬件监控软件,可以支援大部分常见的...

应变片产生温度误差的原因是什么,补偿温度误差的方法有哪些?
2〕应变片的自补偿法是利用自身具有温度补偿作用的应变片。拓展知识:“传感器与检测技术”课程是工科电气信息类专业的重要专业必修课,是研究传感器与检测技术的实用科学,在现代检测与控制系统中有着举足轻重的作用。本课程的主要任务是:使学生通过学习,获得误差分析基础及检测技术与测量系统的基本知识,...

红外热成像仪怎么看温度
监控视场较大,便于在人流量较大的场景中进行多人体目标的检测 非接触式测温人体温度。可以同时测量多人体温 但是应用红外热成像仪测量温度在理论上存在一些限制,使得其测试物体的绝对温度存在一定的误差。这个限制,从本质上讲,是红外热成像仪探测到的红外波的强度不只与物体的温度有关,还与物体的辐射...

显卡温度过高怎么办,显卡温度高解决方法
显卡温度过高的解决办法: (1)观察显卡散热风扇是否正常运转,给显卡散热风扇加点润滑油,如果风扇不转损坏了的话,就需要重新购买新的散热风扇,如果你不是专业人士,请拆下显卡,直接拿到IT卖场请人更换风扇一般都可以解决; (2)如果检查发现显卡芯片和散热片之间存在接触不良,就需要涂抹导热硅胶,涂...

电动机保护装置温度检测型保护装置
电动机保护装置中的温度检测技术多种多样,以确保电机在正常运行范围内。其中,双金属片温度继电器是一种直接嵌入电动机绕组的装置。当电机过载导致绕组温度接近极限,双金属片由于受热而弯曲,其带有一触点的部分会断开电路,例如JW2型温度继电器就是此类产品的代表。另一种热保护器,如SPB和DRB型,安装在...

鲁大师检测出来显卡 CPU 主板都 温度过高怎么办
提醒你一下,如果你不能判断风扇的风向,建议你先安装风扇前,先直接把风扇和电源接头连接好,开下机。拿起风扇朝自己的脸吹,哈哈,这样就很容易判定风扇的风向了。然后再装上去!硬盘的话一般没什么问题 很少出现温度过高 一般都在40-60度 如果硬盘温度过高于65度 直接拿去经销商或厂方即可解决 一般...

温控器如何采集温度?
数字电子式温度控制器是一种精确的温度检测控制器,可以对温度进行数字量化控制。温控器一般采用NTC热敏传感器或者热电偶作为温度检测元件,它的原理是:将NTC热敏传感器或者热电偶设计到相应电路中,NTC热敏传感器或者热电偶随温度变化而改变,就会产生相应的电压电流改变,再通过微控制器对改变的电压电流进行...

显卡温度过高怎么办,显卡温度高解决方法
显卡温度过高的解决办法: (1)观察显卡散热风扇是否正常运转,给显卡散热风扇加点润滑油,如果风扇不转损坏了的话,就需要重新购买新的散热风扇,如果你不是专业人士,请拆下显卡,直接拿到IT卖场请人更换风扇一般都可以解决; (2)如果检查发现显卡芯片和散热片之间存在接触不良,就需要涂抹导热硅胶,涂...

干片机细菌涂片温度设定
60~65℃。常见的涂片材料有液体涂片和蜡块涂片两种,液体涂片通常需要较高的温度,可设定为60~65℃;而蜡块涂片则需要较低的温度,一般设定为50~55℃。细菌涂片属于液体涂片,因此干片机细菌涂片温度设定为60~65℃。

塑料片材机的注意事项
(2)成型模具温度略高于机筒温度。高出温度控制在5---10℃。模具两端温度略高于模具中何温度,高出温度控制在5-10℃。(3)入片形式,三辊的中间辊上辊面应与模具唇口下平面在一个水平面上;唇口端面与中间辊中心线平行,相距50~100mm。(4)模具唇口间隙应略小于或等于板制品厚度,模唇中间间隙应...

铜陵市18429049837: 单片机课程设计 单片机温度的检测与显示的设计 -
赞善跌打: 用18b20做很简单啊.温度的子程序给你,,你重定义一下接口,主程序已经调用出温度了,你送到显示就行了../* 延时t毫秒 */ void delay(uint t) { uint i; while(t--) { /* 对于11.0592M时钟,约延时1ms */ for (i=0;i<125;i++) {} } } /* 产生复位脉冲初...

铜陵市18429049837: 求一个温度采集与显示的单片机课程设计程序 -
赞善跌打: 首先明确采集温度的范围,如果范围在-20-120度以内就不需要AD采集直接使用数字温度传感器,如DS18B20等.超过该范围需要使用PT100温度探头,当然还有相应的电桥电路及放大电路.最终使用AD采集电压信号并且运用查表法换算出温度值.具体程序由于量较大不可能直接给你但有了一个思路编出此程序应该不难.

铜陵市18429049837: 基于MC51单片机的热敏电阻测温显示系统课程设计 -
赞善跌打: 通过热敏电阻的分压接ADC,单片机程序编写设置ADC出来的数字信号与温度的对应关系,其实这个跟温度传感器的原理相似,只不过被温度传感器集成而已,具体可参照温度传感器DS18B20内部结构与程序,LDE显示电路较简单,网上很多

铜陵市18429049837: 基于单片机的数字温度计设计用C语言写程序 -
赞善跌打: //------------------------------------------------------------------//DS18B20温度传感器输出显示,运行本例时,外界温度将显示在1602LCD上//------------------------------------------------------------------#include <reg52.h>#include <intrins.h>#define uchar unsigned char#...

铜陵市18429049837: 基于单片机的数字温度计设计 -
赞善跌打: 按你的要求设计了程序并且通过ProteUS仿真 无偿提供原理图,ProteUS仿真工程(可运行),供参考运行效果,及原理图的设计. 推荐:01 基于单片机的数字报警温度计( http://ishare.iask.sina.com.cn/f/11655563.html ); 源程序为汇编 ; ...

铜陵市18429049837: 用单片机设计一个温度检测器,并用液晶显示器显示当前温度值. -
赞善跌打: 单片机可以通过数据总线与控制信号直接采用存储器访问形式、i/o 设备访问形式控制该液晶显示模块.本文以华邦公司的w78e58 为例,它是51 系列单片机兼容的微控制器,其内部有32kb 的flash eeprom,用户编制的程序及需要显示的英文字...

铜陵市18429049837: 求助:单片机的温度检测与控制 -
赞善跌打: 1、 传感器选择 常用的温度检测元件主要有热电偶、热电阻、热敏电阻等.热电偶主要是利用两种不同金属的热电效应,产生接触电势随温度变化而变化,从而达到测温的目的.测量准确,价格适中测温范围宽,线性度较好.但其输出电压受冷...

铜陵市18429049837: 基于单片机的温度监控监测系统的设计怎么做?要具体电路图.谢谢 -
赞善跌打: 温度传感器:1820,太常用了~~直接数字的,都不用转换了 电源,5v直流、这不会做就别做其他的了,没意义.显示就用2位数码管,驱动的话,搞个5v和三极管加电阻的电路.执行部分:你就检测,执行部分没有.如果要有控温,那可以搞个正弦调制弱电控制强电的电路.或者直接用占空比型号控制驱动电路.驱动电路用光耦开关设计简单.电路图,哥哥,电路图都出来的话,你就只要焊电路了~~,真不会,百度下就搞定了~~ 晕,这是最简单的系统了.上课没认真啊你~~

铜陵市18429049837: 基于AT89C51单片机的温度采集显示系统设计 -
赞善跌打: 用个18B20一个单片机,一个液晶就可以了(小东西未例入)

铜陵市18429049837: 基于单片机的温度控制系统用C语言怎么编程
赞善跌打: 基于51单片机的温度测量系统摘 要: 单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量. 本文从硬件和软件两方面介绍了at89...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网