单片机AD采集的C程序

单片机AD采集的C程序,第1张

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路信号轮流采集等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10122677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存