此程序是我做单片机课程设计的程序,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程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)