资源简介
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
- 上一篇:1602液晶显示DS1302实时时钟程序
- 下一篇:LabView 低通滤波器
评论
共有 条评论