基于ATMEGA8A单片机+MAX6675的K型热电偶程序Proteus测试

最新更新时间:2022-01-13来源: 51hei关键字:ATMEGA8A  单片机  MAX6675  K型热电偶 手机看文章 扫描二维码
随时随地手机看文章

采用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就是多少摄氏度。


单片机源程序如下:

  1. #include

  2. #include


  3. #include


  4. #define Date16 PORTD.5

  5. #define CLK PORTD.7

  6. #define RCLK PORTD.6



  7. #define DateIN PINB.0

  8. #define MCLK PORTB.1

  9. #define CS PORTB.2


  10. const unsigned char Dis_Code[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0XB6, 0xBE, 0xE0, 0XFE, 0xF6};


  11. unsigned char Blk_Flg,Blk_Bit;

  12. unsigned char Disp_Timer, Dis_Buffer[8];


  13. unsigned int wendu,T_Timer;





  14. unsigned int Read6675(void)

  15. {

  16. unsigned int date6675=0;

  17. unsigned char i;

  18.      CS=0;

  19.      delay_us(15);

  20.      MCLK=0;

  21.      delay_us(15);

  22.      for(i=0;i<16;i++)

  23.      {


  24.        date6675<<=1;

  25.        delay_us(15);

  26.        MCLK=1;

  27.        delay_us(15);

  28.        if(DateIN==1) date6675|=0X01;

  29.        delay_us(15);

  30.        MCLK=0;

  31.        delay_us(15);

  32.      }

  33.      CS=1;

  34.      delay_us(15);

  35. //     MCLK=1;

  36.      if((date6675&0X0004)!=0)   date6675=4095;

  37.      else  date6675>>=3;

  38.      return  date6675;


  39. }



  40. void T_zhuanhuan(void)

  41. {

  42.    float temp;

  43.    temp=Read6675();

  44.    temp*=2.5;

  45.    wendu=(unsigned int)temp;

  46. }



  47. int EEPROMwrite( int location, unsigned char byte)

  48. {

  49.     unsigned char oldSREG;


  50.     while (EECR & 0x02);


  51.     EEAR = location;


  52.     EEDR = byte;


  53.     oldSREG = SREG;

  54.     SREG &= ~0x80;


  55.     EECR |= 0x04;

  56.     EECR |= 0x02;


  57.     SREG = oldSREG;

  58.     return 0;

  59. }

  60. unsigned char EEPROMread( int location)

  61. {

  62.     while (EECR & 0x02);


  63.     EEAR = location;


  64.     EECR |= 0x01;


  65.     return (EEDR);

  66. }



  67. void Disp_Led(void)

  68. {

  69.     unsigned char Dis_Temp_B1,Dis_Temp_B2,Dis_Temp_B3 ;

  70.     RCLK=1 ;

  71.     for(Dis_Temp_B1=0;Dis_Temp_B1<5;Dis_Temp_B1++)

  72.     {

  73.         Dis_Temp_B3=1 ;

  74.         for(Dis_Temp_B2=0;Dis_Temp_B2<8;Dis_Temp_B2++)

  75.         {

  76.             if((Dis_Buffer[Dis_Temp_B1]&Dis_Temp_B3)!=0)

  77.             Date16=1 ;

  78.             else

  79.             Date16=0 ;

  80.             CLK=0 ;

  81.             CLK=1 ;

  82.             Dis_Temp_B3*=2 ;

  83.         }

  84.     }

  85.     RCLK=0 ;

  86.     RCLK=1 ;

  87. }

  88. void Dex_To_Bcd(int Dis_Value,unsigned char Blk_En,unsigned char Bcd_T_B1)

  89. {

  90.     Dis_Buffer[4]=Dis_Code[Dis_Value/10000];

  91.     Dis_Value%=10000 ;

  92.     Dis_Buffer[3]=Dis_Code[Dis_Value/1000];

  93.     Dis_Value%=1000 ;

  94.     Dis_Buffer[2]=Dis_Code[Dis_Value/100];

  95.     Dis_Value%=100 ;

  96.     Dis_Buffer[1]=Dis_Code[Dis_Value/10];

  97.     Dis_Value%=10 ;

  98.     Dis_Buffer[0]=Dis_Code[Dis_Value];

  99.     if((Blk_Flg==1)&&(Blk_En!=0))

  100.     {

  101.         switch(Blk_Bit)

  102.         {

  103.             /*0*/

  104.             case 0 :

  105.             break ;

  106.             /*1*/

  107.             case 1 :

  108.             if(Bcd_T_B1==4)Bcd_T_B1=3 ;

  109.             break ;

  110.             /*2*/

  111.             case 2 :

  112.             if(Bcd_T_B1==3||Bcd_T_B1==4)Bcd_T_B1=2 ;

  113.             break ;

  114.             /*3*/

  115.             case 3 :

  116.             if(Bcd_T_B1==2||Bcd_T_B1==3||Bcd_T_B1==4)Bcd_T_B1=1 ;

  117.             break ;

  118.             /*4*/

  119.             case 4 :

  120.             Bcd_T_B1=0 ;

  121.             break ;

  122.             default :

  123.             break ;

  124.         }

  125.     }


  126.     if(Bcd_T_B1==1&&Dis_Buffer[4]==0xFC)Dis_Buffer[4]=0x00 ;

  127.     if(Bcd_T_B1==2&&Dis_Buffer[4]==0xFC)

  128.     {

  129.         Dis_Buffer[4]=0x00 ;

  130.         if(Dis_Buffer[3]==0xFC)

  131.         

  132. ……………………


关键字:ATMEGA8A  单片机  MAX6675  K型热电偶 编辑:什么鱼 引用地址:基于ATMEGA8A单片机+MAX6675的K型热电偶程序Proteus测试

上一篇:AVR单片机熔丝位的配置操作及相关解决措施
下一篇:ICCV7 For AVR 使用教程 Atmega16 单片机

推荐阅读最新更新时间:2023-09-24 10:22

基于单片机USB接口的数据采集存储电路的设计
在一些特殊的工业场合,有时需要将传感器的信号不断的实时采集和存储起来,并且到一定时间再把数据回放到PC机中进行分析和处理。在工作环境恶劣的情况下采用高性能的单片机和工业级大容量的FLASH存储器的方案恐怕就是最适当的选择了。CYGNAL公司的C8051F320 SOC是一种具有8051内核的高性能单片机,运行速度为普通8051的12倍。该芯片内部528字节随机RAM和2048字节XRAM为数据缓冲和程序运行提供了充足的空间。更受欢迎的是它的串行扩展功能为当前的各种串行芯片和外部设备接口的扩展提供了极大的方便。高速的SPI硬件接口与串行FLASH RAM的无缝连接大大简化了电路板布线,而片内自带的USB接口功能使数据的存储和回放变得十
[单片机]
基于<font color='red'>单片机</font>USB接口的数据采集存储电路的设计
51单片机位修正指令
位清0 指令 CLR C ;使CY=0 CLR bit ;使指令的位地址等于0。例:CLR P1.0 ;即使P1.0变为0 位置1指令 SETB C ;使CY=1 SETB bit ;使指定的位地址等于1。例:SETB P1.0 ;使P.0变为1 位取反指令 CPL C ;使CY等于原来的相反的值,由1变为0,由0变为1。 CPL bit ;使指定的位的值等于原来相反的值,由0变为1,由1变为0。 例:CPL P1.0 以我们做过的实验为例,如果原来灯是亮的,则执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。
[单片机]
10-基于51单片机的多路温度检测调节串口传输系统仿真
具体实现功能 实现功能: 1、采用四个DS18B20温度传感器测温并用LCD1602显示四路温度值; 2、按键为设置按键、加键和减键,可设置上下限温度控制范围; 3、当每路温度值超过设定的上或下限时,相应的指示灯亮; 4、当平均温度值超过设定的上限时,继电器吸合,风扇转动表示降温; 5、当平均温度值低于设定的下限时,继电器吸合,加热膜工作表示升温; 6、利用串口传输模块实时将平均温度值发送到串口调试助手。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式
[单片机]
10-基于51<font color='red'>单片机</font>的多路温度检测调节串口传输系统仿真
管理STM32 MCU中的内存保护单元
1前言 本应用笔记介绍如何管理 STM32 产品中的内存保护单元(MPU)。MPU 是用于存储器保护的可选组件。STM32 微控制器(MCU)中嵌入 MPU 之后变得更稳健可靠。在使用 MPU 之前,必须对其进行编程并加以启用。如果 MPU 没有启用,则存储系统的行为不会变化。 2概述 MPU 可以使嵌入式系统更加稳健和安全:• 禁止用户应用程序破坏关键任务(例如操作系统核心)使用的数据• 将 SRAM 存储区域定义为非可执行(禁止执行 XN),以防止代码注入攻击• 修改存储访问属性MPU可最多保护16个内存区域。在 Armv6、Armv7 架构(Cortex-M0+、M3、M4、M7)下,这些区域可以依次拥有 8 个子区域(
[单片机]
管理STM32 <font color='red'>MCU</font>中的内存保护单元
从LCD电极读数的单片机接口技术
   摘要 以测量仪表中常见的时分割驱动法驱动的段式LCD显示器为例,分析LCD显示器的电极连接结构和驱动信号波形;介绍单片机读取仪表LCD读数的接口电路。此接口电路应用于笔者开发的自动血压监控仪的研制及临床应用项目中,由8031单片机读取血压计的收缩压、舒张压、心率以及充气和放气时瞬时压强。实验证明,此接口电路工作稳定、可靠。    关键词 LCD电极 读数 时分割驱动法 接口设计   通过测量仪表拾取被测信号是单片机前向通道设计中常用的数据采集方式。通常,接口电路从仪表电路中取得相关的模拟信号,经过A/D转换或V/F 转换送入单片机;或者取得一个频率信号,经整形后送入单片机 。然而,有些测量仪表电路中可能找不到这样
[单片机]
51单片机DS18B20测量温度实验
实验任务 用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。 DPY-1实验板连接 用排线把JP-CODE连到JP8是,注意:a接P0.0;b接P0.1;c接P0.3…… 把JP-CS连到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P2.7; 连接好DS18B20注意极性不要弄反,否则可能烧坏。DS18B20的外型与常用的三极管一模一样,上图是它的管脚分布。用导线将JK—DS的DA端连到P3.1上。 硬件电路图 实验原理 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,
[单片机]
51<font color='red'>单片机</font>DS18B20测量温度实验
单片机系统的常用输入/输出电路设计
引言 随着微电子技术和计算机技术的发展,原来以强电和电器为主、功能简单的电气设备发展成为强、弱电结合,具有数字化特点、功能完善的新型微电子设备。在很多场合,已经出现了越来越多的单片机产品代替传统的电气控制产品。属于存储程序控制的单片机,其控制功能通过软件指令来实现,其硬件配置也可变、易变。因此,一旦生产过程有所变动,就不必重新设计线路连线安装,有利于产品的更新换代和订单式生产。 传统电气设备采用的各种控制信号,必须转换到与单片机输入/输出口相匹配的数字信号。用户设备须输入到单片机的各种控制信号,如限位开关、操作按钮、选择开关、行程开关以及其他一些传感器输出的开关量等,通过输入电路转换成单片机能够接收和处理的信号。输出电
[单片机]
<font color='red'>单片机</font>系统的常用输入/输出电路设计
PIC单片机的多字节减法子程序
  ;本程序实现多字节无符号数减法。   ;入口参数:减数首地址在DADR中,被减数首地址在SADR中,字节数在CNT中。   ;出口参数:结果首地址在SADR中,字节数在CNT中,借位标志在STATUS:C中,'0'表示有借位。   ;占用资源:W,FSR,STATUS,020H,021H,022H,023H,028H,029H,一重堆栈。   ;说明: 1.程序执行后,被减数被冲掉。   IFNDEF MUSUB1   #DEFINE MUSUB1   MUSUB MOVF SADR,W   MOVWF SADRH ;保护结果首地址   CL
[单片机]

推荐帖子

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设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved