久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 自己寫的max6675驅動庫 Arduino源程序 [打印本頁]

作者: fbn20050523    時間: 2021-3-14 00:51
標題: 自己寫的max6675驅動庫 Arduino源程序
我這個庫,兼容了3種spi模式
軟件spi
    硬件spi(arduino 2560默認端口)
      和一個自定義片選的硬件spi

相比網上其他的庫有更高的速率。

下面是對比圖







  1. #include "max6675.h"

  2. /**************************************************************************/
  3. /*!
  4.     @brief  Initialize a MAX6675 ,  software spi
  5.     @param   SCLK custom  SCLK pin
  6.     @param   MISO custom  MISO pin
  7.     @param   CS   custom  CS   pin
  8. */
  9. /**************************************************************************/
  10. MAX6675::MAX6675(uint8_t SCLK, uint8_t MISO,uint8_t CS) {  
  11. hardware_spi=0;  
  12. MAX6675_SCLK =SCLK;
  13. MAX6675_CS   =CS;
  14. MAX6675_MISO =MISO;

  15. pinMode(SCLK,OUTPUT);
  16. pinMode(CS,OUTPUT);
  17. pinMode(MISO,INPUT);

  18. digitalWrite(CS,HIGH);


  19. }



  20. /**************************************************************************/
  21. /*!
  22.     @brief  Initialize a MAX6675  hardware spi ,use default cs pin (D53 PB0)
  23. */
  24. /**************************************************************************/
  25. MAX6675::MAX6675(){
  26. MAX6675_CS =255;
  27. hardware_spi=1;
  28. SPI.begin();
  29. SPI.setClockDivider(SPI_CLOCK_DIV128);

  30. DDRB= (1<<PB0)|(1<<PB1); //io53 cs
  31. PORTB =(1<<PB0);//set high to cs pin

  32. }



  33. /**************************************************************************/
  34. /*!
  35.     @brief  Initialize a MAX6675 hardware spi,use custom  cs  pin
  36.     @param   CS      custom  CS   pin
  37. */
  38. /**************************************************************************/
  39. MAX6675::MAX6675(uint8_t CS){
  40. MAX6675_CS =CS;
  41. hardware_spi=1;
  42. SPI.begin();
  43. SPI.setClockDivider(SPI_CLOCK_DIV128);

  44. pinMode(CS,OUTPUT);//set high to cs pin
  45. digitalWrite(CS,HIGH);

  46. }


  47. float MAX6675::readCelsius(void){


  48. uint16_t max6675_16bit_read=0;

  49. if(hardware_spi==1){


  50. if(MAX6675_CS==255) PORTB=(0<<PB0) ;
  51. else digitalWrite(MAX6675_CS,LOW) ;
  52.   
  53.   max6675_16bit_read=SPI.transfer16(1);
  54.   if(MAX6675_CS==255)PORTB=(1<<PB0);
  55.   else digitalWrite(MAX6675_CS,HIGH);

  56. if (max6675_16bit_read & 0x4) return NAN;
  57. else   max6675_16bit_read>>= 3;
  58. return max6675_16bit_read * 0.25;


  59. }else{


  60.   digitalWrite (MAX6675_CS,LOW);
  61.   for (int i = 15; i>=0; i--) {
  62.     digitalWrite(MAX6675_SCLK, LOW);

  63.    if (digitalRead(MAX6675_MISO)==1)  max6675_16bit_read |= (1 << i);
  64.      
  65.     digitalWrite(MAX6675_SCLK, HIGH);
  66.   }

  67.   digitalWrite (MAX6675_CS,HIGH);
  68.   max6675_16bit_read>>= 3;

  69. return max6675_16bit_read * 0.25;

  70.   }
  71. }


  72. float MAX6675::readFahrenheit(void) {
  73.   return readCelsius() * 9.0 / 5.0 + 32;
  74.   }



  75. void MAX6675::delay_1ms(void)        //1ms延時函數 主頻為8MHz
  76. {   
  77. for(volatile int i=850;i>0;i--); // 2000*4/FREQ

  78. }
  79.                              
  80.                                        

  81. void MAX6675::delay_nms(unsigned int n)       //N ms延時函數
  82.    {
  83.       unsigned int i=0;
  84.       for (i=0;i<n;i++)
  85.       delay_1ms();
  86.      }
復制代碼

大家直接解壓放到IDE,libraries文件夾即可。或者直接拿cpp,h文件使用

代碼下載: MAX6675.zip (2.25 KB, 下載次數: 25)



作者: smartphone    時間: 2021-3-14 09:51
大佬辛苦了 感謝分享
作者: fbn20050523    時間: 2021-4-11 14:14
新來的別下載這個版本了,點我主頁熱電偶溫控那里下載一個包,比這個版本完善,少bug。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 黄网站免费观看 | 中文字幕网址在线 | 久久最新视频 | 亚洲成人中文字幕 | 免费不卡av | 毛片视频免费观看 | 亚洲欧美在线视频 | 欧美一级免费看 | 97超碰免费 | 午夜激情网站 | 国产精品hd | 黄色一级视频网站 | 亚洲精品第一页 | 国产一级特黄 | 国产黄av | 伊人9999| 欧美资源在线 | 99福利 | 欧美精品黄色 | 成人影片在线 | 黄色国产精品 | 久久艳片www.17c.com | 求av网址 | 日产久久视频 | 一级片日韩 | 天天干网站 | 亚洲精品乱码久久久久 | 狠狠干2018| 亚洲成人av| 伊人精品综合 | 中文字幕丰满人伦在线 | 日韩免费视频 | 亚洲免费在线播放 | 91久久| 丁香av| 高清免费视频日本 | 国产永久精品 | 成人毛片网 | 超碰av在线播放 | 婷婷丁香激情 | 午夜私人影院 |