新闻  |   论坛  |   博客  |   在线研讨会
PIC驱动MCP3208
chen3bing | 2024-05-17 08:11:26    阅读:63   发布文章

代码

//头文件:
#include "pic16f877.h"
#include "stdio.h"
//变量定义:


#define CLK RC3  
#define DIN RC4
#define DOUT RC5
#define	ADCS	RC0




int getdata;

void Output_Control(char TempChar)   
{   
    unsigned char Mask = 0x10;   
    unsigned char Count;   
    for(Count = 0;Count<5;Count++)//5次循环,第一次循环DIN为Start,第二次DIN为选择差分或单端,后3次DIN分别是0,0,0选择通道   
    {   
        
	     DIN = 0;   
        if(TempChar&Mask)   
        {   
            DIN = 1;    
        }
		  
        CLK = 1;   
        Mask >>= 0x01;   
        CLK = 0;
    }   
} 

int Input_Data(void)   
{   

    unsigned char Count;   
    unsigned int Mask   = 0x8000;   
    unsigned int Result = 0x0000;    
    CLK = 1;   
    CLK = 0;   
    for(Count = 0;Count <13;Count++)   
    {   
        if(DOUT)   
        {   
            Result|=Mask;    
        }    
        CLK = 1;   
        Mask  >>= 0x01;   
        CLK = 0;   
    }   
    Result >>= 0x03;   
    Result &= 0x0FFF;   
    return(Result);    
}





//void display(int da);//定义显示函数,参数为显示内容,只显示两位十六进制	
void delay(unsigned int timer)
{		
	while(timer--);
}

 float v;
	float r;
   float t;
//主函数,C语言的入口函数:	
void main(void)  
{
	TRISB=0;
	TRISD=0;
	//TRISC=0XD7;
	TRISC=0XE6;
	SSPCON=0;
    ADCS = 1;   
    
    while(1)   
    {   
        ADCS = 0;   
        Output_Control((char)0x18);  
  		  getdata=Input_Data();
        ADCS = 1;   
		  //v=0.5*getdata/4096.0;//5v除以运放放大倍数10,得出0.5
          //r=v*500.0;//根据仿真取电压表的几个值绘出曲线,得出斜率为500,r为电位器的阻值,不包含R8
			 //t=r/0.3908;//PT100:  R=100*(1+A*t),A=0.00390802,所以t=(R-100)/0.3908
		  PORTB=(unsigned char)(getdata>>8);
			PORTD=(unsigned char)(getdata&0XFF);
		  delay(5000);
    } 

}

仿真效果图

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
1
最近文章
方波振荡电路
2024-09-14 14:59:39
6V3A电路
2024-09-14 14:18:10
MOS管点灯仿真
2024-09-12 15:43:13
推荐文章
最近访客