AD0809的采集程序
//---A/D转换---
//-----头文件引用------
#include <Reg51h>
#include <absacch>
#include <intrinsh>
typedef unsigned char BYTE; /自定义字节类型/
#define Set_Bit(BIT) (BIT = 1) /定义置1函数/
#define Clear_Bit(BIT) (BIT = 0) /定义清0函数/
//
void Write_Hd7279(BYTE,BYTE); /定义HD7279写函数/
BYTE Read_Hd7279(BYTE); /定义HD7279读函数/
void Send_Byte(BYTE); /定义HD7279发送字节函数/
BYTE Receive_Byte(void); /定义HD7279接收字节函数/
void Short_Delay(void); /定义短延时函数/
void Long_Delay(void); /定义长延时函数/
void Mcu_Init(void); /定义MCU初始化函数/
void Delay_200_mS(void); /定义200ms延时函数/
sbit Hd7279_Clk=P1^6; /定义HD7279时钟硬件连接/
sbit Hd7279_Data=P1^5; /定义HD7279数据硬件连接/
sbit cs=P1^7;
void Short_Delay(void) /短延时函数/
{
BYTE i;
for(i=0;i<0x08;i++);
}
//
void Long_Delay(void) /长延时函数/
{
BYTE i;
for(i=0;i<0x30;i++);
}
//
void Write_Hd7279(BYTE Command,BYTE Data) /HD7279写函数/
{
Send_Byte(Command);
Send_Byte(Data);
}
//
void Send_Byte(BYTE Data_Out) /HD7279发送字节函数/
{
BYTE i;
cs=0;
Long_Delay();
for(i=0;i<8;i++)
{
if(Data_Out&0x80) Set_Bit(Hd7279_Data);
else Clear_Bit(Hd7279_Data);
Set_Bit(Hd7279_Clk);
Short_Delay();
Clear_Bit(Hd7279_Clk);
Short_Delay();
Data_Out=Data_Out<<1;
}
Clear_Bit(Hd7279_Data);
}
//-----宏声明-----
#define A_DPORT XBYTE[0xFef3]//0809通道0地址
#define uchar unsigned char
//-----变量定义-----
bit bdata bz=0;//定义标志
uchar val;
//-----初始化-----
void first(void)
{
P1=0xff;
P2=0xff;
P3=0xff;
P0=0xff;
Send_Byte(0xa4);
IT1=1;
EX1=1;
EA=1; //INT0 允许
}
//-----中断-----
void int_0(void) interrupt 2
{
val=A_DPORT; //读 A_D 数据
bz=1; //置读数标志
}
//-----主程序-----
main()
{
first(); //初始化
while(1)
{
A_DPORT=val; //启动 A_D
while(bz==0); //等待 A_D 转换结束
// val=~A_DPORT;
//P1=val; //数据输出
Write_Hd7279(0xc8,val&0x0f);
Write_Hd7279(0xc9,val>>4);
Write_Hd7279(0x92,0x00);
Write_Hd7279(0x93,0x00);
Write_Hd7279(0x94,0x00);
Write_Hd7279(0x95,0x00);
Write_Hd7279(0xce,0x0d);
Write_Hd7279(0xcf,0);
bz=0; //清读数标志
}
}
这就是C的程序
>
PIC单片机在某一时间段内只能采集开启一个AD转换通道来进行采集,你可以通过模拟通道选择位来进行通道选择的先后顺序/
可以定义一个数组用来存放采集数据
先使能AD采样,进中断清标志位,配置通道(如AN0),把采样结果存入数组
轮流进行
采集时间一结束,即可启动 A/D 转
换。 可将采集时间编程设定在 GO/DONE位置1和实际
转换启动之间。
可参考pic的PDF资料
看您的采样周期是1/5,直接采样就好了(不要纠结于冲击函数的数学表达在matlab里怎么对应,这是硬要用连续函数表示离散信号的结果,matlab里只能表示离散信号,所以直接忽略之即可)
t
=
[-10:1/5:10];
k
=
2;
x
=
exp(1ipikt^2);
得到x是一个向量,是t中各个采样时刻对应的采样值。
以上就是关于单片机AD采集的C程序全部的内容,包括:单片机AD采集的C程序、您好,我也想要那个“用MATLAB实现对一个任意信号进行采样和恢复 ”的程序,您能给我发一下吗、如何用程序实现PIC单片机AD转换器的8路信号轮流采集等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)