重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言获取电脑温度函数 C语言温度

用C语言编写一个程序,从键盘上输入华氏温度,屏幕显示对应的摄氏温度。转换公式c=(f-32)/1.8

#include stdio.h

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了吴堡免费建站欢迎大家使用!

void main()

{

float F;

printf("输入华氏温度: ");

scanf("%f",F);

printf("对应的摄氏温度: %.1f",(F-32)/1.8);

}

C语言编程:输入一个华氏温度,要求输出摄氏温度,公式为:

#include stdio.hint main(){    double c, f;    printf ("请输入华氏温度:");    scanf ("%lf", f);    c=5.0/9*(f-32);    printf ("%g华氏温度是%.2f摄氏温度\n", f, c);    return 0;}

扩展资料:

#includeiostream

using namespace std;

int main()

{

float f,c;

cout"请输入华氏温度:";    

cinf;  

c=5*(f-32)/9;

cout"摄氏温度为:"cendl;

return 0;

}

C#如何获取电脑CPU温度,硬盘温度,主板温度,CPU转速

C语言CPU测试温度程序

// Target : M8

// Crystal: 8.0000Mhz

/*******************************************************************************

* 不可在RESET时做LCD显示,因为DS18B20的复位回应时间只有80us,显示一个字符的时间

远大于这个值

*

*******************************************************************************/

#include iom8v.h

#include macros.h

#include "1602Driver.h"

#define Set_DQ1 DDRC |= 0x08; PORTC |= 0x08; //总线拉高

#define Set_DQ0 DDRC |= 0x08; PORTC = 0xf7; //总线置低

#define Read_DQ PINC0x08 //读总线

#define MatchROM 0xcc //匹配ROM

#define WriteMode 0x4e //写模式

#define TH 0x64 //设置温度上限100

#define TL 0x8a //设置温度下限-10

#define MatchTemp 0x7f //写温度匹配寄存器,12bit

#define ConverTem 0x44 //DS18B20温度转换命令

#define Get_Value 0xbe //读取温度寄存器值

char DelayMs = 0;

void port_init(void)

{

DDRD = 0xff;

PORTD = 0xff;

DDRB = 0xff;

PORTB = 0xff;

DDRC = 0xff;

PORTC = 0xff;

}

//TIMER1 initialize - prescale:1

// WGM: 0) Normal, TOP=0xFFFF

// desired value: 15uSec

// actual value: 14.875uSec (0.8%)

void timer1_init(void)

{

TCCR1B = 0x00; //stop

TCNT1H = 0xFF; //setup

TCNT1L = 0x89;

OCR1AH = 0x00;

OCR1AL = 0x77;

OCR1BH = 0x00;

OCR1BL = 0x77;

ICR1H = 0x00;

ICR1L = 0x77;

TCCR1A = 0x00;

TCCR1B = 0x01; //start Timer

}

#pragma interrupt_handler timer1_ovf_isr:9

void timer1_ovf_isr(void)

{

//TIMER1 has overflowed

TCNT1H = 0xFF; //reload counter high value

TCNT1L = 0x89; //reload counter low value

if (DelayMs 0)

{

DelayMs --;

}

}

void Delay_15us(unsigned int n)

/*---Ms延时函数---*/

{

DelayMs=n;

while(DelayMs 0);

}

/***************************************************************

* 功能:主机向总线写0 *

***************************************************************/

void Writr0(void)

{

Set_DQ1;

Set_DQ0;

Delay_15us(5);

Set_DQ1;

Delay_15us(1);

}

/***************************************************************

* 功能:主机向总线写1 *

***************************************************************/

void Writr1(void)

{

Set_DQ1;

Set_DQ0;

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

Set_DQ1;

Delay_15us(2);

}

/***************************************************************

* 功能:向总线写一个字节 *

* 输入:需要写的字 *

***************************************************************/

void WriteBits(char Byte)

{

char i = 0;

for (i=0;i8;i++)

{

if (Byte 0x01)

{

Writr1();

}

else

{

Writr0();

}

Byte=1;

}

}

/***************************************************************

* 功能:DS18B20复位程序 *

* 返回:总线复位成功,返回1 *

***************************************************************/

char Reset1820(void)

{

static char CheckTimes = 0;

static char CheckValue = 1;

Delay_nms(1);

Set_DQ1;

Set_DQ0; //拉低总线480us

Delay_15us(34);

Set_DQ1;

DDRC = 0xf7; //设置端口为输入状态,读取数据

PORTC |= 0x08;

while(PINC0x08); //等待,直至确认复位成功

CheckValue = Read_DQ;

Delay_15us(32);

return CheckValue;

}

void Init1820(void)

{

if (Reset1820() == 0x08)

{

LCD_Write_String(0,0,"1820 Not Detect!");

LCD_Write_String(0,1," ");

}

else

{

LCD_Write_String(0,0,"Init DS18B20 OK!");

LCD_Write_String(0,1," ");

}

WriteBits(MatchROM);

WriteBits(WriteMode);

WriteBits(TH);

WriteBits(TL);

WriteBits(MatchTemp);

}

/***************************************************************

* 功能:从总线中读取数据位 *

* 返回:读取值 *

***************************************************************/

char ReadBit(void)

{

char i = 0;

char Read_Value = 0;

Set_DQ1;

Set_DQ0;

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

Set_DQ1;

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

asm("nop");

DDRC = 0xf7; //设置端口为输入状态,读取数据

PORTC |= 0x08;

asm("nop");

Read_Value = Read_DQ;

Delay_15us(3);

return Read_Value;

}

/***************************************************************

* 功能:从总线读取一个字节 *

* 返回:读取到的字符 *

***************************************************************/

char ReadBits(void)

{

char i = 0;

char b = 0;

char ReadBits_Value = 0;

for (i=8;i0;i--)

{

ReadBits_Value = ReadBits_Value1;

b = ReadBit();

if(b)

{

ReadBits_Value = ReadBits_Value|0x80;

}

}

//DEC_Num_Disp(0,1,ReadBits_Value,5);

return ReadBits_Value;

}

/***************************************************************

* 功能:获得温度值 *

* 返回:温度值--摄氏温度 *

***************************************************************/

char Get_Temperature(void)

{

static int TempLow = 0;

static int TempHi = 0;

static char Temp2 = 0;

static long final = 0;

static Sign = 0; //温度的符号位

Reset1820();

WriteBits(MatchROM);

WriteBits(ConverTem);

//Delay_15us(6);

Reset1820();

WriteBits(MatchROM);

WriteBits(Get_Value);

Delay_15us(5);

TempLow = ReadBits(); //温度低位

Delay_15us(5);

Temp2 = ReadBits();

Sign = Temp20xf8; //符号位取高5位

TempHi = Temp20x07; //温度高位

if (Sign == 0) //正温的数据处理

{

final = (((TempHi)8)|TempLow)*62.5;

LCD_Write_String(0,1," ");

}

else

{

final = (~(((TempHi)8)|TempLow)+1)*62.5;

LCD_Write_String(0,1,"-");

}

if (final = 37400)

{

LCD_Write_String(10,1,"Fever!");

}

if ((final 37400)(final36000))

{

LCD_Write_String(10,1,"Normal");

}

if (final=36000)

{

LCD_Write_String(10,1,"Low! ");

}

Point_Disp(1,1,final,6,3);

return final;

}

//call this routine to initialize all peripherals

void init_devices(void)

{

//stop errant interrupts until set up

CLI(); //disable all interrupts

port_init();

timer1_init();

LCD_Init();

LCD_Write_Char(0x01,0); //清屏

MCUCR = 0x00;

GICR = 0x00;

TIMSK = 0x04; //timer interrupt sources

SEI(); //re-enable interrupts

//all peripherals are now initialized

}

void main(void)

{

init_devices();

Delay_nms(5);

LCD_Write_String(0,0,"1820 Not Detect!");

LCD_Write_String(0,1,"Reset after sure");

Init1820();

Delay_nms(100);

LCD_Write_String(0,0,"Body Temp. Test:");

LCD_Write_String(0,1," C ");

while(1)

{

Get_Temperature();

}

}

怎么使用C语言得到计算机各个部件的温度?,或者说得到温度的方法/接口是什么?求大神详解

不是所有的设备都有温度传感器的,只有 cpu 和硬盘是比较固定的,显卡有可能有,但是不一定能够有对外的接口。

硬盘温度走 atapi 协议,你可以试试解析

CPU 的话,目前最新的 Intel 的有固定的 MSR 可以读取

此外,还可以通过主板上的 Super Io 或者笔记本的EC来读取。 Super IO 的话,比较容易搞,你可以看spec,但是不同厂家差别很大。EC 的话,没有规范,基本上不可能了

总而言之,最简单的方法是使用第三方或者开源的软件来获取。


本文名称:c语言获取电脑温度函数 C语言温度
本文网址:http://cqcxhl.com/article/hpjggi.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP