传感器 ad转换程序

传感器 ad转换程序,第1张

此程序是我做单片机课程设计的程序,PROTEL原理图在附件里

程序经过了实验的测试,没有任何问题。

一 设计要求:

1 以8031为主控器组成A/D,D/A转换系统。

2 对任意波形的脉冲信号进行A/D转换后进入数据存储器,要求能够存储5~10个周波,然后定时将数据经D/A转换输出示波器显示。

3 采样的频率可由键盘有级调节。

二 课程设计条件:

硬件:个人PC一台,8051单片机仿真头一个,89S51单片机一个,ADC0809芯片一块,DAC0832芯片一块,7402一个,LM358一片,按键开关5个,电阻电容若干,6M晶振一个,稳压电源,函数信号发生器,及示波器个一个

软件:PC机WINDOWS *** 作系统,KEIL单片机仿真调试软件

三 设计思想:

通过ADC0809将正弦波模拟信号按照一定的频率进行采样,频率由键盘进行串级控制,转换成数字量,然后存储到8155的RAM里面,再将数据输出到DAC0832,将数字量转化成模拟量,经过LM358将信号放大,送到示波器终端循环显示出来

BUFFRE EQU 31H ;采样频率设置单元

BUFRAM EQU 7E00H ;8155RAM首地址

BUFADC EQU 0FD1FH ;0809启动地址

BUFDAC EQU 0BFFH ;0832启动地址

K1 EQU P14 ; 四个频率选择按键

K2 EQU P15

K3 EQU P16

K4 EQU P17

ORG 0000H

LJMP START

ORG 0030H

START: MOV R4,#02 ;由于8155的复位时间比8051慢,所以在对8155初始化之前必须有延时

DEL11:MOV R6,#200 ; 延时为021s的倍

DEL21:MOV R7,#126

DEL31:DJNZ R7,DEL31

DJNZ R6,DEL21

DJNZ R5,DEL11

MOV DPTR,#7FF8H ; 8155初始化

MOV A,#00H ; 写入命令字

MOVX @DPTR,A

MOV R0,#0FAH

MOV DPTR,#BUFRAM

LOOP:MOVX @DPTR,A ;对8155RAM清零

INC DPTR

DJNZ R0,LOOP

FRESET:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT1 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT1:JB K2,NEXT2

MOV BUFFRE,#04H

LJMP INPUT

NEXT2:JB K3,NEXT3

MOV BUFFRE,#08H

LJMP INPUT

NEXT3:JB K4,NEXT4

MOV BUFFRE,#06H

LJMP REALIO ;如果是K4按下,则进行实时输入输出

NEXT4:LJMP FRESET ; 循环等待按键按下

INPUT: ; A/D采样程序

MOV R0,#0FAH ;共采集250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP1:PUSH DPL ; 先保存次地址

PUSH DPH

MOV DPTR,#BUFADC ; 0809启动地址

MOV A,#00H

MOVX @DPTR,A ; 启动0809 A/D转换开始

NOP ; 一定时间延时

NOP

WAIT:JB P10,WAIT ; 等待转换结束

MOVX A,@DPTR ;读取转换结果

POP DPH

POP DPL ;恢复RAM地址

MOVX @DPTR,A ; 保存数据至8155RAM

INC DPTR ;RAM地址加一,指向下一个存储单元

ACALL DELAY ; 延时,即以一定频率采样

DJNZ R0,LOOP1 ; 250个数据是否采集完成,否则继续

OUTPUT: ; D/A转换模块

MOV R1,#0FAH ;250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP2: PUSH DPL ; 保存此地址

PUSH DPH

MOVX A,@DPTR ;将数据输出到A中

MOV DPTR,#BUFDAC ; 0832地址

MOVX @DPTR,A ;将数据输出进行D/A转换

NOP ;为了与采样频率一直,设定一定延时

NOP

POP DPH ;恢复RAM地址

POP DPL

INC DPTR ;指向下一个要转换的数据单元

ACALL DELAY ; 与采样相同延时

DJNZ R1,LOOP2 ; 直道转换完成

WAIT2:JNB K4,NEXT

LJMP OUTPUT ;循环显示输出结果

NEXT:LJMP REALIO

DELAY:MOV R5,BUFFRE ;延时程序,通过R5的不同,改变延时时间,从而改变

DEL1:MOV R6,#2 ; 延时为0001s的倍

DEL2:MOV R7,#126

DEL3:DJNZ R7,DEL3

DJNZ R6,DEL2

DJNZ R5,DEL1

RET

REALIO: ;实时显示程序

MOV DPTR,#BUFADC

MOV A,#00H

MOVX @DPTR,A

NOP

NOP

WAIT1:JB P10,WAIT1

MOVX A,@DPTR

MOV DPTR,#BUFDAC

MOVX @DPTR,A

NOP

NOP

FRESET1:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT11 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT11:JB K2,NEXT12

MOV BUFFRE,#04H

LJMP INPUT

NEXT12:JB K3,NEXT13

MOV BUFFRE,#08H

LJMP INPUT

NEXT13:LJMP REALIO

END

八 使用说明

1上电复位或者按键复位后,程序开始运行后,等待K1-K4的按键被按下,根据按下的键值作不同的处理。

2如果被按下的是K1-K3键,则根据按下的键分别设置不同的采样频率,然后开始进行A/D转换进行信号的采样,再存储至8155的RAM中,如果存储完了250个数据,则自动开始进行数据的D/A输出,在示波器上可以看到相应的波形,数据是循环输出的,所以可以一直看到数据输出!

3如果是按键K4被按下,则进行的是实时的采样输入输出,即将信号通过ADC0809采样进来,不保存至8155的RAM中,就立即送到DAC0832输出到示波器显示,这样的信号基本上就是原来的信号波形。

4在K1-K3按下后正常的采样,存储,输出过程中,也可以按下K4键而转到实时的输入输出程序,便于将采样数据和原数据进行对照。

5在实时的输入输出时,也可以同过按下K1-K3键,立即切换到原来的一定频率采样,存储,输出过程。

6硬件设计上还有一个复位键,可以对程序进行按键复位(汇编,已经实验通过)

简单的A/D,D/A转换程序

此程序是我做单片机课程设计的程序,PROTEL原理图在附件里

程序经过了实验的测试,没有任何问题,

一 设计要求:

1 以8031为主控器组成A/D,D/A转换系统。

2 对任意波形的脉冲信号进行A/D转换后进入数据存储器,要求能够存储5~10个周波,然后定时将数据经D/A转换输出示波器显示。

3 采样的频率可由键盘有级调节。

二 课程设计条件:

硬件:个人PC一台,8051单片机仿真头一个,89S51单片机一个,ADC0809芯片一块,DAC0832芯片一块,7402一个,LM358一片,按键开关5个,电阻电容若干,6M晶振一个,稳压电源,函数信号发生器,及示波器个一个

软件:PC机WINDOWS *** 作系统,KEIL单片机仿真调试软件

三 设计思想:

通过ADC0809将正弦波模拟信号按照一定的频率进行采样,频率由键盘进行串级控制,转换成数字量,然后存储到8155的RAM里面,再将数据输出到DAC0832,将数字量转化成模拟量,经过LM358将信号放大,送到示波器终端循环显示出来

BUFFRE EQU 31H ;采样频率设置单元

BUFRAM EQU 7E00H ;8155RAM首地址

BUFADC EQU 0FD1FH ;0809启动地址

BUFDAC EQU 0BFFH ;0832启动地址

K1 EQU P14 ; 四个频率选择按键

K2 EQU P15

K3 EQU P16

K4 EQU P17

ORG 0000H

LJMP START

ORG 0030H

START: MOV R4,#02 ;由于8155的复位时间比8051慢,所以在对8155初始化之前必须有延时

DEL11:MOV R6,#200 ; 延时为021s的倍

DEL21:MOV R7,#126

DEL31:DJNZ R7,DEL31

DJNZ R6,DEL21

DJNZ R5,DEL11

MOV DPTR,#7FF8H ; 8155初始化

MOV A,#00H ; 写入命令字

MOVX @DPTR,A

MOV R0,#0FAH

MOV DPTR,#BUFRAM

LOOP:MOVX @DPTR,A ;对8155RAM清零

INC DPTR

DJNZ R0,LOOP

FRESET:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT1 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT1:JB K2,NEXT2

MOV BUFFRE,#04H

LJMP INPUT

NEXT2:JB K3,NEXT3

MOV BUFFRE,#08H

LJMP INPUT

NEXT3:JB K4,NEXT4

MOV BUFFRE,#06H

LJMP REALIO ;如果是K4按下,则进行实时输入输出

NEXT4:LJMP FRESET ; 循环等待按键按下

INPUT: ; A/D采样程序

MOV R0,#0FAH ;共采集250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP1:PUSH DPL ; 先保存次地址

PUSH DPH

MOV DPTR,#BUFADC ; 0809启动地址

MOV A,#00H

MOVX @DPTR,A ; 启动0809 A/D转换开始

NOP ; 一定时间延时

NOP

WAIT:JB P10,WAIT ; 等待转换结束

MOVX A,@DPTR ;读取转换结果

POP DPH

POP DPL ;恢复RAM地址

MOVX @DPTR,A ; 保存数据至8155RAM

INC DPTR ;RAM地址加一,指向下一个存储单元

ACALL DELAY ; 延时,即以一定频率采样

DJNZ R0,LOOP1 ; 250个数据是否采集完成,否则继续

OUTPUT: ; D/A转换模块

MOV R1,#0FAH ;250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP2: PUSH DPL ; 保存此地址

PUSH DPH

MOVX A,@DPTR ;将数据输出到A中

MOV DPTR,#BUFDAC ; 0832地址

MOVX @DPTR,A ;将数据输出进行D/A转换

NOP ;为了与采样频率一直,设定一定延时

NOP

POP DPH ;恢复RAM地址

POP DPL

INC DPTR ;指向下一个要转换的数据单元

ACALL DELAY ; 与采样相同延时

DJNZ R1,LOOP2 ; 直道转换完成

WAIT2:JNB K4,NEXT

LJMP OUTPUT ;循环显示输出结果

NEXT:LJMP REALIO

DELAY:MOV R5,BUFFRE ;延时程序,通过R5的不同,改变延时时间,从而改变

DEL1:MOV R6,#2 ; 延时为0001s的倍

DEL2:MOV R7,#126

DEL3:DJNZ R7,DEL3

DJNZ R6,DEL2

DJNZ R5,DEL1

RET

REALIO: ;实时显示程序

MOV DPTR,#BUFADC

MOV A,#00H

MOVX @DPTR,A

NOP

NOP

WAIT1:JB P10,WAIT1

MOVX A,@DPTR

MOV DPTR,#BUFDAC

MOVX @DPTR,A

NOP

NOP

FRESET1:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT11 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT11:JB K2,NEXT12

MOV BUFFRE,#04H

LJMP INPUT

NEXT12:JB K3,NEXT13

MOV BUFFRE,#08H

LJMP INPUT

NEXT13:LJMP REALIO

END

八 使用说明

1上电复位或者按键复位后,程序开始运行后,等待K1-K4的按键被按下,根据按下的键值作不同的处理。

2如果被按下的是K1-K3键,则根据按下的键分别设置不同的采样频率,然后开始进行A/D转换进行信号的采样,再存储至8155的RAM中,如果存储完了250个数据,则自动开始进行数据的D/A输出,在示波器上可以看到相应的波形,数据是循环输出的,所以可以一直看到数据输出!

3如果是按键K4被按下,则进行的是实时的采样输入输出,即将信号通过ADC0809采样进来,不保存至8155的RAM中,就立即送到DAC0832输出到示波器显示,这样的信号基本上就是原来的信号波形。

4在K1-K3按下后正常的采样,存储,输出过程中,也可以按下K4键而转到实时的输入输出程序,便于将采样数据和原数据进行对照。

5在实时的输入输出时,也可以同过按下K1-K3键,立即切换到原来的一定频率采样,存储,输出过程。

6硬件设计上还有一个复位键,可以对程序进行按键复位

点击左侧面板“流量主”,满足开通门槛的小程序开发者点击“开通”,同意协议提交即可。

小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。

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的程序

>

在Altium designer原理图中晶振在XTAL中可以找到。

电脑型号:微星 GF63 Thin 9SC。

系统版本:Microsoft Windows 10 家庭中文版 (64位)。

altium designer。

方法/步骤:

1、首先打开AD软件,如图。

2、依次点击文件-新的-原理图,如图。

3、然后在右侧找到如图所示的库,如图。

4、接着输入“Tube Triode”,然后点击“Place Tube Triode”如图。

5、此时出现一个活动的电子三极管,如图。

6、拖动电子三极管到合适的位置,单击鼠标左键完成绘制,如图,这样一个电子三极管就绘制好了。

1、在altiumdesigner中,有很多集成电路制造厂商的库。它是按照厂商的名字来划分的。每个厂商的库一个文件夹。这个文件夹位于你的altiumdesigner的安装目录下的library文件夹下。很多家公司都生产运放。比较常用的用ADI公司,TI公司,NS等。

2、在每个公司的库文件夹里面,运放是以英文命名的。

3、OperationAmplifier就是运放库。或者叫OPAmplifier在你的altiumdesigner的右下角点击Systerm,选中library,打开library面板,点击Install开始安装库。

4、选择库文件,选中一个运放库安装就好了。

“首选项”对话框的“系统–导航”页面提供与“导航器”面板中的导航 *** 作有关的控件。

Options/Controls选项/控件

Highlight Methods-选择在导航,交叉探测以及浏览文档或编译器消息之间的差异时,突出显示图形对象的所需方法。从以下选项中选择:

Selecting-启用此选项以选择您感兴趣的项目。

Connective Graph-启用此选项可显示项目的连接方式。

Include Power Parts-启用此选项可在连接图中显示与电源部件的连接。仅在选中“Connective Graph(连接图)”时此选项才可用。

Zooming-启用此选项可以放大以显示您感兴趣的项目。

Far/Close-使用此滑块可控制系统放大突出显示的对象的紧密程度。将滑块移到最右边(关闭),放大倍率越大,反之亦然。

Dimming-启用此选项可使除您感兴趣的项目以外的所有其他对象的显示变暗。

None/Invisible-使用此滑块控制调光。将滑块移到最右边(不可见),morr对象将变暗。

Objects To Display-启用要在“导航器”面板中显示的以下对象:

Pins引脚

Ports端口

Sheet Connectors图纸连接器

Graphical Lines图形线

Net Labels网络标签

Sheet Entries图纸条目

Sheet Symbols图纸符号

Cross Select Mode-使用以下选项在原理图和PCB之间交叉选择对象。

Cross Selection-用于打开和关闭交叉选择。选中此选项后,将在另一个编辑器的打开文档中选择一个编辑器中的每个选定对象。

Dimming-启用此选项可使除选定项目以外的所有其他对象的显示变暗。

Zooming-启用此选项可以放大以显示您选择的项目。

Reposition selected component in PCB-使您能够在原理图中选择一个组件并将其重新放置在PCB中。

Focus document containing selection if visible-启用此选项可将焦点转移到交叉选择其中的原理图或PCB文档时对象可见的原理图或PCB文档。

Objects for cross selection-启用要交叉选择的必需选项:组件,网和/或引脚。可以选择任意数量的选项。

芯片厂商

芯片资料

ad精度

一个字都不说这没人帮得了你。。。

我说个大概吧:

用ad芯片和其他芯片一样

片选给上去。输入数据的时钟和mcu的输出连起来,输入数据端和数据总线连起来。同步时钟一般用个特定频率的晶振,如果频率低就用mcu的定时器做分频。

要让ad工作一般需要首先往ad的设置寄存器里写设置数据,定义ad使用哪个通道,增益是多少,频率是多少等。

然后向设置好的ad芯片发送实际需要读取哪个通道。

最后再写回读函数,将dataout脚上的数据传回mcu进行之后的 *** 作。

例程的话百度文库里有很多。

以上就是关于传感器 ad转换程序全部的内容,包括:传感器 ad转换程序、ad推小程序怎么用、单片机AD采集的C程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存