me18923 发表于 2010-9-25 23:56:07

MAX6675温度程序

MAX6675温度程序本来写了很久都不正常,硬件连接是正确的,源码如下,数码管是共阳显示的,请高手纠错
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


sbit SO=P1^0;;;;;6675的7脚
sbit CS=P1^1;;;;;6675的6脚
sbit SCK=P1^2;;;;;6675的5脚
uchar StrTab,disnum,id,item;
char EPdata;
int dat0;






void delay_ms(int ntimes)
{
int delayi;
while(--ntimes)
{
for(delayi=0;delayi<1000;delayi++)
{;}
}

}
/**************************************************************
//FUNCTION:delay_ms(uchar ntimes)
//parameter: nTimes--延迟的微秒数
//sample:delay_ms(10);
//cai 2006.05.20
//*************************************************************/
void delay_us(int ntimes)
{
int delayi;
while(--ntimes)
{

}
}
/********************
初始化定时器1
***********************/
void Init_Timer1(void)
{
    TMOD |=0x10; //定时器1用于动态扫描
    TH1=0xF8;    //初值
    TL1=0xf0;
    ET1=1;
    TR1=1;
EA=1;

}



void Displaypro(void)                              //温度显示
{

            StrTab=tab;   
            StrTab=tab;
            StrTab=tab;
            StrTab=tab;

}



/********************************
//读取MAX6675
*********************************/
void Read_6675()
{ uint i;
int dat_temp0;
i=0;
dat_temp0=0;


CS=0;
delay_us(220);
SCK=0;
delay_us(220);

for(i=0;i<16;i++)
{   
   SCK=1;
   dat_temp0=dat_temp0<<1;

   if(SO==1) dat_temp0=dat_temp0|0x01;

   SCK=0;
   delay_us(220);
}
CS=1;
dat_temp0=dat_temp0<<1;
dat_temp0=dat_temp0>>4;
dat_temp0=dat_temp0/4;

dat0 = dat_temp0;

}








/***********************************************
键盘操作
设定
**********************************/











/* *******************************
//显示
*********************************/
void Time1_isr(void) interrupt 3 using 0//定时器1用来动态扫描
{
    TH1=0xF8;//重入初值
    TL1=0xf0;
    switch (disnum){
   case 0:P2=0xFE;P0=StrTab;break; //分别调用缓冲区的值进行扫描
    case 1:P2=0xFD;P0=StrTab;break;
    case 2:P2=0xFB;P0=StrTab;break;
   case 3:P2=0xF7;P0=StrTab;break; //分别调用缓冲区的值进行扫描

    default:break;
}
disnum++;   //扫描3次,使用3个数码管
if(disnum==4)
   disnum=0;
}









/*********************************
主程序
**********************************/
main()
{

uchar i;
Init_Timer1();

while(1)
{

//读取MAX6675的温度值
    Read_6675();

   
    Displaypro();



    for(i=0;i<50;i++) delay_ms(200);

}
}

duanleiyadang 发表于 2011-9-23 22:29:30

围观

liushaozhen007 发表于 2011-9-28 14:11:17

好用

huanglg 发表于 2012-10-26 21:35:54

学习学习

zhcj66 发表于 2013-6-15 14:58:17

这个芯片用K热电偶能稳定到多少度?
页: [1]
查看完整版本: MAX6675温度程序