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

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

C语言CPU测试温度程序

// Target : M8

// Crystal: 80000Mhz

/

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

远大于这个值

/

#include <iom8vh>

#include <macrosh>

#include "1602Driverh"

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

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

#define Read_DQ PINC&0x08 //读总线

#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: 14875uSec (08%)

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;i<8;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(PINC&0x08); //等待,直至确认复位成功

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;i>0;i--)

{

ReadBits_Value = ReadBits_Value>>1;

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 = Temp2&0xf8; //符号位取高5位

TempHi = Temp2&0x07; //温度高位

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

{

final = (((TempHi)<<8)|TempLow)625;

LCD_Write_String(0,1," ");

}

else

{

final = (~(((TempHi)<<8)|TempLow)+1)625;

LCD_Write_String(0,1,"-");

}

if (final >= 37400)

{

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

}

if ((final < 37400)&(final>36000))

{

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();

}

}

该条指令的意思时每隔1秒自动检测一次cpu温度

watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone0/temp

CPU温度是大家都关心的,那么如何实时查看CPU的温度呢我在这里给大家介绍以下几种软件,方便大家实时查看CPU温度。

一、Waterfall pro Waterfall Pro

是一款老牌的电脑制冷软件,体积小、功能强大,可以有效控制CPU温度的上升,优化CPU速度,监视CPU占用率和电源消费量。

二、CPUIdle CPUIdle

能够显著降低CPU运行时的温度,延长其使用寿命,同时还能降低CPU的功耗。与其它节能软件不同的是,即使是在超负荷工作的情况下,CpuIdle仍然能够发挥明显的效果。

三、SoftCooler II SoftCooler

是一款绿色芯片降温软件,具有占用系统资源和内存空间少的优点,无须进行任何设置,解压后就可直接使用。

四、VCool VCool

是一款专门为AMD CPU“量身定做”的降温软件。而且是款绿色软件,使用非常简单,占用系统资源少,针对AMD CPU的降温效果还不错。

五、CPU降温圣手

CPU降温圣手是一款体积小巧的CPU降温软件,系统内核处理采用汇编技术,直接对CPU单元进行优化,适合所有型号的CPU产品,对CPU起到良好的优化和保护作用

CPU承受最高温度是个模糊的范围。

一般情况下,CPU温度控制在不超过室温30度以上,也就是说室温是20度,CPU温度控制在不超过50度为宜。

CPU工作温度范围可以在25-75度,过高会重新启动或死机,60度的温度就有些高,温度在50度以下比较合适。

一般的晶体管元件的的标称最高温度是120度。CPU是由晶体管组成的,所以其理论最高热耐受温度应该和晶体管元件一样为120度。

但实际上到了100度左右就会对CPU内部的晶体管造成永久性伤害,过高的温度会使晶体管效能降低,同时加速CPU的老化。

最好将CPU的温度控制在75度以下以维护电脑的稳定性和CPU的寿命。

以上就是关于C#如何获取电脑CPU温度,硬盘温度,主板温度,CPU转速全部的内容,包括:C#如何获取电脑CPU温度,硬盘温度,主板温度,CPU转速、查询cpu温度命令、查看CPU温度的软件有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9623517.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存