采用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)
……………………
上一篇:AVR单片机熔丝位的配置操作及相关解决措施
下一篇:ICCV7 For AVR 使用教程 Atmega16 单片机
推荐阅读最新更新时间:2023-09-24 10:22





推荐帖子
- Microvision笔记本PCMCIA彩色黑白图像采集卡
- Microvision笔记本PCMCIA彩色黑白图像采集卡特别适于:笔记本图像采集处理医学图像采集、显微成像、工业检测、野外图像采集存储、野外监控录像系统便携移动图像采集处理、移动智能交通、移动电子警察、移动车辆稽查系统【性能指标】l可真彩色/黑白方式采集图象数据:8位-32位;l
-
Microvision
嵌入式系统
- 在龙芯推广会上作的都江堰操作系统主题演讲
- 感谢龙芯俱乐部的邀请,让我们能够在一起分享都江堰操作系统技术,附件是演讲材料,更多的信息请到www.djyos.com了解。 在龙芯推广会上作的都江堰操作系统主题演讲
-
paradise721
嵌入式系统
- 高速14层板sch和brd文件下载
- xilinx的fpga开发板PCB和原理图下载 原理图(Viewdraw): PCB(Allegro15.x):高速14层板sch和brd文件下载
-
xiaoxin1
PCB设计
- MCGS问题请教
- 设备窗口中的设备编辑窗口,双击连接变量后,对象名中为何只能看到开关型对象?数值型对象如何调整出来?MCGS问题请教
-
manliu111
工控电子
- USB和SD/MMC移植笔记(转)
- 一、USB移植 在移植好内核和跟文件系统的基础上,进行USB的移植。 S3C2440集成了USB控制器支持USB1.1版本,支持USB主机和USB设备主机符合OHCI1.0版本,Linux2.6.29.1的内核支持USB控制器,只需在内核中配置即可。 在内核目录下,输入makemenuconfig,进入配置菜单,如下: DeviceDrivers-à SCSIdevicesupport-à *SCSIdevicesupport legacy/pro
-
leslie
嵌入式系统
- 参考平面很重要,为啥这里要挖掉?
- 高速先生成员--姜杰传输线结构包括信号路径和返回路径,以平面形式出现的返回路径通常被称为参考平面。不少刚接触高速信号设计的朋友会有这样的困惑:都说走线的参考平面很重要,为啥有些信号还要把途经SMD元器件管脚下方的参考平面挖掉?挖掉就挖掉,不同单板反焊盘掏空的参考平面数量还不一样,就不能痛快点给个标准吗?高速先生也想,但是,真没有。今天,我们就以常见的0402封装AC耦合电容为例,说说为啥会这么折腾。第一个问题,既然反焊盘处理这么麻烦,不挖行不行?必须满足大家,电容
-
yvonneGan
PCB设计