历史上的今天
今天是:2024年12月21日(星期六)
2021年12月21日 | 基于ATMEGA8A单片机+MAX6675的K型热电偶程序Proteus测试
2021-12-21 来源:51hei
采用avr系列ATMEGA8A单片机,数码管采用74hc595静态驱动,读取MAX6675芯片并进行温度转换。

冷结补偿钾热电偶数字转换器(0℃至+1024℃)
MAX6675执行冷结补偿,并将K型热电偶的信号数字化。数据以12位分辨率、SPI兼容、只读格式输出。该转换器可将温度解析为0.25°C,读数最高可达+1024°C,热电偶精度在0°C至+700°C范围内为8 LSb。max 6675采用小型8引脚SO4封装。应用●工业●家电●暖通空调
特点●K型热电偶输出的直接数字转换●冷结补偿●简单的SPI兼容串行接口● 12位,0.25°C分辨率●开放式热电偶检测
简单来说,读16个二进制,只有中间3到14是有效的,取出来,然后乘以分辨率0.25就是多少摄氏度。
单片机源程序如下:
#include
#include
#include
#define Date16 PORTD.5
#define CLK PORTD.7
#define RCLK PORTD.6
#define DateIN PINB.0
#define MCLK PORTB.1
#define CS PORTB.2
const unsigned char Dis_Code[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0XB6, 0xBE, 0xE0, 0XFE, 0xF6};
unsigned char Blk_Flg,Blk_Bit;
unsigned char Disp_Timer, Dis_Buffer[8];
unsigned int wendu,T_Timer;
unsigned int Read6675(void)
{
unsigned int date6675=0;
unsigned char i;
CS=0;
delay_us(15);
MCLK=0;
delay_us(15);
for(i=0;i<16;i++)
{
date6675<<=1;
delay_us(15);
MCLK=1;
delay_us(15);
if(DateIN==1) date6675|=0X01;
delay_us(15);
MCLK=0;
delay_us(15);
}
CS=1;
delay_us(15);
// MCLK=1;
if((date6675&0X0004)!=0) date6675=4095;
else date6675>>=3;
return date6675;
}
void T_zhuanhuan(void)
{
float temp;
temp=Read6675();
temp*=2.5;
wendu=(unsigned int)temp;
}
int EEPROMwrite( int location, unsigned char byte)
{
unsigned char oldSREG;
while (EECR & 0x02);
EEAR = location;
EEDR = byte;
oldSREG = SREG;
SREG &= ~0x80;
EECR |= 0x04;
EECR |= 0x02;
SREG = oldSREG;
return 0;
}
unsigned char EEPROMread( int location)
{
while (EECR & 0x02);
EEAR = location;
EECR |= 0x01;
return (EEDR);
}
void Disp_Led(void)
{
unsigned char Dis_Temp_B1,Dis_Temp_B2,Dis_Temp_B3 ;
RCLK=1 ;
for(Dis_Temp_B1=0;Dis_Temp_B1<5;Dis_Temp_B1++)
{
Dis_Temp_B3=1 ;
for(Dis_Temp_B2=0;Dis_Temp_B2<8;Dis_Temp_B2++)
{
if((Dis_Buffer[Dis_Temp_B1]&Dis_Temp_B3)!=0)
Date16=1 ;
else
Date16=0 ;
CLK=0 ;
CLK=1 ;
Dis_Temp_B3*=2 ;
}
}
RCLK=0 ;
RCLK=1 ;
}
void Dex_To_Bcd(int Dis_Value,unsigned char Blk_En,unsigned char Bcd_T_B1)
{
Dis_Buffer[4]=Dis_Code[Dis_Value/10000];
Dis_Value%=10000 ;
Dis_Buffer[3]=Dis_Code[Dis_Value/1000];
Dis_Value%=1000 ;
Dis_Buffer[2]=Dis_Code[Dis_Value/100];
Dis_Value%=100 ;
Dis_Buffer[1]=Dis_Code[Dis_Value/10];
Dis_Value%=10 ;
Dis_Buffer[0]=Dis_Code[Dis_Value];
if((Blk_Flg==1)&&(Blk_En!=0))
{
switch(Blk_Bit)
{
/*0*/
case 0 :
break ;
/*1*/
case 1 :
if(Bcd_T_B1==4)Bcd_T_B1=3 ;
break ;
/*2*/
case 2 :
if(Bcd_T_B1==3||Bcd_T_B1==4)Bcd_T_B1=2 ;
break ;
/*3*/
case 3 :
if(Bcd_T_B1==2||Bcd_T_B1==3||Bcd_T_B1==4)Bcd_T_B1=1 ;
break ;
/*4*/
case 4 :
Bcd_T_B1=0 ;
break ;
default :
break ;
}
}
if(Bcd_T_B1==1&&Dis_Buffer[4]==0xFC)Dis_Buffer[4]=0x00 ;
if(Bcd_T_B1==2&&Dis_Buffer[4]==0xFC)
{
Dis_Buffer[4]=0x00 ;
if(Dis_Buffer[3]==0xFC)
……………………
史海拾趣
|
1、准备一张厚厚的,防水的,质量好的纸,至少要100克的,但表面不能太光滑,防止墨迹脱落。 2、在纸上用郑重的语气写上,给我的第N代子孙,我是你的祖先XXX,出生在XXXX年,我留下这张纸的时间是XXX年…… 3、按照以上的 ...… 查看全部问答> |
|
各位大虾,导师让我开发一个wince程序,我照着书开始配环境 安装了visualstudio.net 2005 visual studio.net 2005 service pack package 1 windows embedded ce 6.0.msi &nb ...… 查看全部问答> |
|
1.支持多种硬件平台 由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86, ARM, MIPS, POWERPC等,并具有良好的可移植性。另外还需要支持种类繁多的外部设备。Linux支持以上几乎所有的主流芯片, ...… 查看全部问答> |
|
魔方机器人,取名小螃蟹,这只小螃蟹可以用两个钳子解开魔方,特发上来和大家分享下 视频地址:http://v.youku.com/v_show/id_XMjU0MTE3Mzgw.html, 详情关注:http://hi.baidu.com/jialaolian629/blog(打个广告 ) 大家有兴趣可以跟帖交流,嘿 ...… 查看全部问答> |
|
2A太阳能,温差的能量收集, 凌特的芯片:LT3652和LTC3108. 2A太阳能,温差的能量收集, 凌特的芯片:LT3652和LTC3108. 社区各位好:目前在做的主要涉及凌特的两个芯片LT3652和LTC3108.1、LT3652用于太阳能, 2A ,最大功率跟踪,Energy Harvesting用途:大功率的太阳能能量收集,用在太阳能充 ...… 查看全部问答> |




