#include "sys.h"
#include "AD420.h"
#include "usart.h"
//运放电路,电平反向
#define DATA1_0 PAout(7)=1
#define DATA1_1 PAout(7)=0
#define SCLOCK1_0 PAout(5)=1
#define SCLOCK1_1 PAout(5)=0
#define LATCH1_0 PAout(4)=1
#define LATCH1_1 PAout(4)=0
#define CLEAR1_0 PAout(3)=0
#define CLEAR1_1 PAout(3)=1
//-----------------------------------------
//#define DATA1_0 PAout(7)=0
//#define DATA1_1 PAout(7)=1
//
//#define SCLOCK1_0 PAout(5)=0
//#define SCLOCK1_1 PAout(5)=1
//#define LATCH1_0 PAout(4)=0
//#define LATCH1_1 PAout(4)=1
//#define CLEAR1_0 PAout(3)=0
//#define CLEAR1_1 PAout(3)=1
//----------------------------------------
#define SELECT2_0 PAout(1)=0
#define SELECT2_1 PAout(1)=1
#define SELECT1_0 PAout(2)=1
#define SELECT1_1 PAout(2)=0
#define Alarm1 PBin(0)
void AD420_Delay(void)
{
u16 i=0;
// for(i=0;i<200;i++);
for(i=0;i<500;i++);
// os_dly_wait(1);
}
void AD420_Init(void)
{
/* 初始化引脚 */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = AD420_LATCH_PIN|AD420_DATA_PIN|AD420_SCL_PIN|AD420_SELECT2_PIN|AD420_SELECT1_PIN|AD420_CLEAR_PIN;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(AD420_PORT, &GPIO_InitStructure);
// /* 初始化引脚 */
// GPIO_InitStructure.GPIO_Pin = AD420_Alarm1_PIN;
// GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
// GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
// GPIO_Init(AD420_Alarm1_PORT, &GPIO_InitStructure);
//GPIO_SetBits(AD420_PORT, AD420_LATCH_PIN);
//SELECT1_0;
// GPIO_SetBits(AD420_PORT, AD420_DATA_PIN);
// GPIO_SetBits(AD420_PORT, AD420_SCL_PIN);
GPIO_ResetBits(AD420_PORT, AD420_CLEAR_PIN);
// CLEAR1_1;
// AD420_Delay();
// CLEAR1_1;
}
void AD420_Write_Data(u16 *inputdata)
{
unsigned int temp,data,i,j;
AD420_Delay();
temp=0x8000;
SCLOCK1_0;
AD420_Delay(); //PRECONFIGRE RESET AD421
DATA1_0;
AD420_Delay();
LATCH1_0;
AD420_Delay();
for(j=0;j<8;j++)
{
data=(unsigned int) inputdata[j];
for(i=0;i<16;i++)
{
if((temp&data)==0x0)
DATA1_0;
else DATA1_1;
AD420_Delay();
SCLOCK1_0;
AD420_Delay();
SCLOCK1_1;
AD420_Delay();
SCLOCK1_0;
AD420_Delay();
temp=temp>>1;
}
temp=0x8000;
}
LATCH1_1; //Rising edge of the latch signed data is loaded
}
//mode = 0:0-5v
//mode = 1:4-20mA
void DATA_to_AD420(u8 mode,u16 data)
{
u8 i,j;
u16 temp;
if(mode == Out_0_24V_mode)
{
SELECT2_0;
SELECT1_0;
printf("电压模式\n");
}
else if(mode == Out_4_20mA_mode)
{
SELECT2_0;
SELECT1_1;
printf("电流模式\n");
}
printf("data=%d\n",data);
AD420_Delay();
temp=0x8000;
AD420_Delay();
SCLOCK1_0; AD420_Delay();
DATA1_0; AD420_Delay();
LATCH1_0; AD420_Delay();
for(j=0;j<1;j++)
{
for(i=0;i<16;i++)
{
if((data & temp) == 0x0)
DATA1_0;
else
DATA1_1;
AD420_Delay();
SCLOCK1_1; //CLOCK信号置低
AD420_Delay();
SCLOCK1_0;
AD420_Delay();
temp=temp>>1;
}
//DATA1_0;
temp=0x8000;
}
LATCH1_1; //将串口寄存器中数据送至DAC
AD420_Delay();
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
AD420.zip (3个子文件)
AD420
AD420.h 642B
42051.c 1KB
AD420.c 4KB
共 3 条
- 1
资源评论
猫鼬桑
- 粉丝: 49
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功