找回密码
 注册会员
搜索附件  

6675.zip

 

MAX6675————PIC:
弄了两个星期 一个小小的芯片终于有数据了
  1. #include<pic.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. __CONFIG(0x3B31);
  5. #define nop() asm("nop")
  6. #define CS_SET PORTC|=(1<<2) //cs置1
  7. #define CS_CLR PORTC&=~(1<<2) //CS清0
  8. #define SCK_SET PORTC|=(1<<3) //SCK置1
  9. #define SCK_CLR PORTC&=~(1<<3) //CSCK清0
  10. void MAX6675();
  11. void delay_us(uchar m);
  12. void Delay_ms(uint x);
  13. uchar flag;
  14. unsigned int temp,wth,wd;
  15. void main()
  16. {
  17. TRISB=0x00;
  18. TRISC=0x03;
  19. while(1)
  20. {
  21. MAX6675();
  22. Delay_ms(1000);
  23. start();
  24. }
  25. }
  26. unsigned int MAX6675_rd_word()
  27. {
  28. unsigned char i;
  29. //CS=1; //CS
  30. //SCK=0; //SCK
  31. CS_SET;
  32. //delay_us(40);
  33. //CS=0;//拉低开始读
  34. SCK_CLR;
  35. CS_CLR;
  36. for(i=0;i<16;i++)
  37. {
  38. //SCK=1;//SCK
  39. //wd<<=1;
  40. SCK_SET;
  41. //delay_us(8);
  42. SCK_CLR;
  43. nop();
  44. if(SO==1)
  45. {wd|=0x01;}//下降沿开始读
  46. else
  47. {wd|=0x00;}
  48. wd<<=1;
  49. //SCK=0;
  50. //SCK_CLR;
  51. }
  52. //delay_us(15);
  53. //CS=1;
  54. CS_SET;
  55. //delay_us(10);
  56. }
  57. void MAX6675()
  58. {
  59. int lqm1,lqm2;
  60. wd=0;
  61. MAX6675_rd_word(); //读温度
  62. lqm1=wd;
  63. temp=((lqm1&0x7fe0)>>5);//整数部分0 1111 1111 1100 000
  64. flag|=(wd&0x0004)>>2;//热电偶通断
  65. }
  66. void delay_us(uchar m)
  67. {
  68. while(m--);
  69. }
  70. void Delay_ms(unsigned int x)
  71. {
  72. unsigned int a,b;
  73. for(a=x;a>0;a--)
  74. for(b=110;b>0;b--);
  75. }
  76. 复制代码
复制代码

MAX6675冷端温度补偿、热电偶数字转换器可进行冷端温度补偿,并将K型热电偶信号转换成数字信号。数据输出为12位分辨率、SPI兼容、只读格式。
  转换器温度分辨率为0.25°C,可读取温度达+1024°C,热电偶在0°C至+700°C温度范围内精度为8 LSB。







777 Bytes, 下载次数: 2

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 04:40 , Processed in 0.044237 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部