资源简介

MCP3204+MCP4822 AD/DA程序 MCP3204 AD,MCP4822 DA输出

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#define uchar unsigned char
#define uint unsigned int

sbit  MCP3204_CS  =P1^3;
sbit  MCP3204_CLK =P1^0;
sbit  MCP3204_DI=P1^1 ;
sbit  MCP3204_DO=P1^2 ;

sbit  MCP_LDAC=P1^4 ;
sbit  MCP_CS  =P1^6 ;
sbit  MCP_SCK =P1^7 ;
sbit  MCP_SDI =P1^5 ;
  
int MCP3204GetResult(bit VOG_CUR unsigned int * Result); 
void MCP4822_WriteValue(uchar chuchar gateuchar shdnuint  dat);  
void delay()
{
uchar i= 255;
while(i--);

}
//函数:设置MCP4822的输出值,有效值为0-4095
//ch---0:通道A;1:通道B
//gate---0:2倍增益;1:不增益
//shdn---0:关闭;1:工作
//data---设置值
uint  result=0 ; 
uint  MCP_result ;
uint  final_result1=0 ;  
uint  final_result2=0 ;  
uchar change_flage=0;
/***********************
定时器0初始化
***********************/
void Timer0Init(void) //10000微秒@11.0592MHz
{
 
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0xF0; //设置定时初值
TH0 = 0xFF; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
    EA=1;
ET0=1;
}

/*******************************************************************************
****入口参数:无
****出口参数:无
//Mcp3202驱动函数 :需要先写配置bit,然后再读取转换结果
//硬件要求:需要端口定义csclkDIDO
//输入参数:chn=0,选通道0;chn=1,选择通道1
//输出参数:unsigned int 型 转换结果
*******************************************************************************/
unsigned int Read_Mcp3204(unsigned char chn)//3204驱动程序
 {
  unsigned char x;
unsigned int  temp=0;
        //GPIO_init();
MCP3204_CS=1;
MCP3204_CS=0;

MCP3204_CLK=0;
MCP3204_DI=1;   //启动位,对应时序图第一个bit
MCP3204_CLK=1; 

MCP3204_CLK=0;  
MCP3204_DI=1;  //选择单端输入模式 ,对应时序图第二个bit
MCP3204_CLK=1;  

 

MCP3204_CLK=0; //跳过无效位
      
MCP3204_CLK=1; 

MCP3204_CLK=0;  
    MCP3204_DI=chn&0x02; 
MCP3204_CLK=1; 

MCP3204_CLK=0;  
    MCP3204_DI=chn&0x01; 
MCP3204_CLK=1; 

MCP3204_CLK=0; //跳过无效位
      
MCP3204_CLK=1;

MCP3204_CLK=0;

MCP3204_CLK=1;  //跳过无效位,对应Dout的空位

MCP3204_CLK=0; // 准备读取数据
for(x=0;x<12;x++)
{
  MCP3204_CLK=1; //时钟上升沿MCP3202输出数据
  temp=(temp<<1)|MCP3204_DO;         //单片机读入一个bit
MCP3204_CLK=0;
}
 MCP3204_CLK=1;
 MCP3204_CS=1;  //结束本次转换
 return temp; //返回转换结果
 
 }
void main()
{
   //uart_init() ;
  Timer0Init();
    while(1)                       //等待串口中断
{
    //if(change_flage)
        { final_result1=Read_Mcp3204(0x01);

         MCP4822_WriteValue(001 final_result1);
   }

//else
  {  final_result2=Read_Mcp3204(0x00);

         MCP4822_WriteValue(101 final_result2);
  }
 
}

 

/******************************************************************************
**函数名称:i 
**功能描述: 
**入口参数: 
**输出: 
*******************************************************************************/
//函数:设置MCP4822的输出值,有效值为0-4095
//ch---0:通道A;1:通道B
//gate---0:2倍增益;1:不增益
//shdn---0:关闭;1:工作
//data---设置值
void MCP4822_WriteValue(uchar chuchar gateuchar shdnuint  dat)                

        uchar i; 
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-05-22 16:17  adc3204+MCP4822\
     文件        6376  2018-05-21 15:38  adc3204+MCP4822\STARTUP.A51
     文件       14048  2018-05-22 15:57  adc3204+MCP4822\STARTUP.LST
     文件         749  2018-05-22 15:57  adc3204+MCP4822\STARTUP.OBJ
     文件        8560  2018-05-22 15:57  adc3204+MCP4822\adc
     文件        8366  2018-05-22 15:57  adc3204+MCP4822\adc.LST
     文件        9976  2018-05-22 15:57  adc3204+MCP4822\adc.M51
     文件        8753  2018-05-22 15:57  adc3204+MCP4822\adc.OBJ
     文件        4095  2018-05-22 16:16  adc3204+MCP4822\adc.c
     文件        1347  2018-05-22 15:57  adc3204+MCP4822\adc.hex
     文件          39  2018-05-22 15:57  adc3204+MCP4822\adc.lnp
     文件        9880  2018-05-22 15:57  adc3204+MCP4822\adc.plg
     文件       56140  2018-05-22 16:17  adc3204+MCP4822\adc.uvopt
     文件       13386  2018-05-21 21:52  adc3204+MCP4822\adc.uvproj
     文件       56678  2018-05-21 21:52  adc3204+MCP4822\adc_uvopt.bak
     文件       13387  2018-05-21 15:38  adc3204+MCP4822\adc_uvproj.bak

评论

共有 条评论