历史上的今天
返回首页

历史上的今天

今天是: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就是多少摄氏度。


单片机源程序如下:

  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. ……………………


推荐阅读

史海拾趣

Clever Little Box公司的发展小趣事

随着公司的发展,Clever Little Box逐渐意识到,单一的产品线无法满足市场的多样化需求。于是,公司开始积极拓展产品线,不仅涵盖了脉冲发生器、转换器等核心产品,还增加了音频/视频电缆组件等辅助产品。同时,公司注重创新,不断研发新技术、新产品,以满足市场的不断变化和客户的个性化需求。

C-MAX Time Solutions公司的发展小趣事

随着国内市场的饱和,C-MAX Time Solutions公司开始将目光投向国际市场。公司通过设立海外分支机构、参加国际展会等方式,积极推广自己的产品和服务。同时,公司还加大了对国际标准的研究和遵循力度,以确保其产品在全球范围内都能得到广泛认可和应用。这一国际化布局不仅提升了C-MAX的竞争力,也为其未来的发展奠定了坚实基础。

广东爱晟电子(exsense)公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,爱晟电子始终坚持以创新驱动发展。公司不断投入研发资金,加强研发团队的建设,推动技术的不断进步和创新。同时,公司还积极探索新的应用场景和市场领域,为未来的发展奠定了坚实的基础。这些努力使得爱晟电子在电子行业中保持了持续的发展势头和竞争力。

Desco Tools公司的发展小趣事

随着技术的不断进步,Desco Tools公司不断进行技术创新和产品升级。公司投入大量研发资源,开发出了更加高效、可靠的防静电工具,如新型防静电工作服、无尘室专用工具等。这些产品不仅满足了市场对防静电工具日益增长的需求,还进一步巩固了公司在该领域的领先地位。

晨晶电子(Chenjing Electronics)公司的发展小趣事

晨晶电子始终将品质放在首位,坚持以客户为中心的服务理念。公司建立了严格的质量管理体系,从原材料采购到生产过程控制,再到产品出厂检验,每一个环节都严格把关,确保产品的品质稳定可靠。正是凭借这种对品质的执着追求,晨晶电子赢得了客户的广泛认可和好评,也为企业赢得了良好的口碑。

台湾君耀(Brightking)公司的发展小趣事

2018年,君耀正式加入国巨集团,成为其旗下的一员。这一举措使得君耀能够获得国巨集团在资金、技术、市场等多方面的支持,进一步加速了其发展步伐。通过资源整合和优势互补,君耀在半导体器件领域的地位更加稳固,市场竞争力也得到提升。

问答坊 | AI 解惑

山寨版:教你如何做时光机器!(转)

1、准备一张厚厚的,防水的,质量好的纸,至少要100克的,但表面不能太光滑,防止墨迹脱落。      2、在纸上用郑重的语气写上,给我的第N代子孙,我是你的祖先XXX,出生在XXXX年,我留下这张纸的时间是XXX年……      3、按照以上的 ...…

查看全部问答>

扫频仪和频谱仪有什么不同?

新手问:扫频仪和频谱仪有什么不同?…

查看全部问答>

wince程序开发 问题

各位大虾,导师让我开发一个wince程序,我照着书开始配环境 安装了visualstudio.net 2005       visual studio.net 2005 service pack package 1       windows embedded ce 6.0.msi    &nb ...…

查看全部问答>

嵌入式Linux与WinCE的优缺点比较

1.支持多种硬件平台  由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86, ARM, MIPS, POWERPC等,并具有良好的可移植性。另外还需要支持种类繁多的外部设备。Linux支持以上几乎所有的主流芯片, ...…

查看全部问答>

小螃蟹成功诞生,发帖庆祝

魔方机器人,取名小螃蟹,这只小螃蟹可以用两个钳子解开魔方,特发上来和大家分享下 视频地址:http://v.youku.com/v_show/id_XMjU0MTE3Mzgw.html, 详情关注:http://hi.baidu.com/jialaolian629/blog(打个广告 ) 大家有兴趣可以跟帖交流,嘿 ...…

查看全部问答>

求高手解释下图中的引导方式~~~~~~~~~~

到底什么是引导? 图中的引导方式过程中DSP芯片内部做了什么事情???吾乃初学者求解。。。。。…

查看全部问答>

2A太阳能,温差的能量收集, 凌特的芯片:LT3652和LTC3108.

2A太阳能,温差的能量收集, 凌特的芯片:LT3652和LTC3108. 社区各位好:目前在做的主要涉及凌特的两个芯片LT3652和LTC3108.1、LT3652用于太阳能, 2A ,最大功率跟踪,Energy Harvesting用途:大功率的太阳能能量收集,用在太阳能充 ...…

查看全部问答>

430求助

51的c语言和430的编程方法差别好大~~~   FG4618的板子,只有电路图,怎么入门??? datasheet也是英文~~~~      感觉点灯都很难~~~主要还是编程方法不能适应,求大神指点一二…

查看全部问答>