导航:首页 > 操作系统 > 单片机课设adc项目要求

单片机课设adc项目要求

发布时间:2023-12-08 13:48:07

单片机中的ADC是什么意思作用是什么

ADC即模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。一个模拟数字转换器可以提供信号用于测量。与之相对的设备成为数字模拟转换器。

ADC的作用是将连续变化的模拟信号转换为离散的数字信号。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。

(上图为ADC针脚排布)

(1)单片机课设adc项目要求扩展阅读:

ADC模拟数字转换器:

典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。然而,有一些模拟数字转换器并非纯的电子设备,例如旋转编码器,也可以被视为模拟数字转换器。

数字信号输出可能会使用不同的编码结构。通常会使用二进制二补数(也称作“补码”)进行表示,但也有其他情况,例如有的设备使用格雷码(一种循环码)。

参考资料来源:

网络-ADC

⑵ AT89S51 单片机 ADC 接口电路设计

⑶ 51单片机的ADC请教

IO口接电源用大电阻。允许输入电流很小,大了会烧坏,热了也会烧坏。

⑷ 单片机中 ADC 是如何进行采集的

摘 要:本文设计并实现了基于2.4GHz ISM频段射频收发芯片nRF2401的计算机短距离无线数据采集系统。该系统采用PC作为系统控制中心,以C8051F021单片机为核心构成数据采集传送的前端,并且采用nRF2401芯片进行数据无线发射与接收。
关键词:ISM频段; 射频; C8051F021单片机; nRF2401

引言
针对某医疗装置中的人体生理信号采集和传输问题,本文设计了计算机近距离无线数据采集系统。采用Nodic公司的nRF2401作为无线收发核心器件。系统由一台PC、无线数据接收模块和无线数据采集发射模块组成。无线数据发射模块以C8051F021单片机为处理核心,采用单片机内部的12位ADC对现场的模拟信号进行采集和发送;无线数据接收模块以C8051F021单片机作为处理核心,接收与发射模块由nRF2401无线收发芯片完成,采用MAX5591实现12位D/A转换,采用 RS-485总线与PC进行通信,它负责现场数据的接收和初步处理,并转发给PC以供显示和监控,同时将数字量转换为模拟量,供示波器显示;PC有良好的人机界面,利用NI的虚拟示波器显示远端现场采集的数据,并可以向现场的采集模块发送控制命令,同时可以实现保存采集数据、打印、回放历史数据等功能。

系统分析及设计
计算机短距离无线数据采集系统组成如图1所示。

图 1 系统组成框图

系统分析及硬件设计
由于现场要采集的数据为医学人体实验数据,幅值大约在-1.0V~+1.0V之间,频率为300Hz,要求测量误差低于10mV,C8051F021自带的12位ADC在精度上可以满足要求;但是单片机中的ADC要求输入为正电压,同时考虑到转换精度要求,故需要对信号进行转换,将原信号转换为幅值在0~3V、频率300Hz左右的信号。可以利用MAX4194组成信号转换电路,将模拟信号的零参考电平抬升到1.0V。这样,原先-1.0V~0V之间的电压信号转换为0~1.0V之间的电压,而原先0V~1.0V之间的电压转换为1.0V~2.0V之间的电压。这样就完成了原始信号的转换,适应了单片机的输入要求。单片机A/D转换参考电压选择外部3.3V,由MAX6013提供。
考虑到无线数据的发送与接收特点,故选用Nordic 公司的nRF2401芯片。nRF2401是单片射频收发芯片,工作于2.4GHz~2.5GHz ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片功耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA。其独有的DuoCeiver技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401使用跳频技术,在2400MHz~2527MHz之间设立了128个频道(每个频道带宽1MHz),频道间的切换时间小于200ms。此外,nRF2401内置CRC编解码模块,可以在不增加编程难度的条件下减小误码率。
无线数据接收后,要进行D/A转换,供示波器观看;考虑到数据的采集精度要求,故采用了 MAX5591作为转换器件,一方面可以方便地与C8051F021单片机SPI接口连接,另一方面,它是12位DAC,与采集端的ADC匹配,可减小转换误差。
无线数据接收到终端后,要求能直观地观看,并且可以对现场的数据采集次数、采集启停时间进行控制,故需要将数据传到PC,进行显示;同时,通过人机界面,对现场进行远程控制。PC采用VC++编写程序,利用NI 的虚拟示波器和其它控件实现友好的人机界面,数据显示、存储和打印功能。
系统中的主要软件模块
系统软件主要由上位机软件和下位机软件组成。
上位机软件主要实现与单片机通信、波形显示、数据存储、数据回放、打印等功能。下位机的主要功能有:系统初始化、数据采集(A/D转换)、无线数据发射、无线数据接收、数据D/A转换、与PC串口通信等。下面重点介绍下位机的无线发射与接收部分软件。
无线数据收发主要通过对nRF2401进行操作实现,包括器件配置、发送数据、接收数据等。nRF2401的工作模式通过引脚PWR_UP、CE和CS选择。在RX/TX模式下,有两种工作方式:ShockBurs和Direct Mode。本系统选用了ShockBurst模式,这种模式下需要配置的内容有:接收数据长度、接收通道地址、CRC校验、工作方式、发送频率、传送速率、接收与发送等。需要15字节的配置内容,下面给出了16进制的配置内容:0x80,0x80,0x00,0xcc,0xcc,0xcc,
0x00,0xcd,0xcd,0xcd,0xcd,0x83,0x4f,
0x05。

难点分析及解决方法
nRF2401半双工通信方式与C8051全双工通信接口的转换
在数据的采集端,单片机与射频模块是双向通信,可以直接采用单片机自带的SPI 接口与射频模块单向通信,包括配置射频模块的工作方式、接收通道地址、接收数据长度、接收频率、发送功率等参数和要发送的采集数据;当单片机要读取远端发送的控制命令时,要将SPI模式关闭,同时将MOSI、DR1端口定义为输入方式,然后将射频模块接收的控制命令读到单片机内部,并根据控制命令进行相应的操作,如采集通道选择、采集次数设定、开始采集、停止采集、发送数据等。

表1 实验数据表

在接收端,单片机和射频模块之间也是双向通信,单片机首先关闭SPI 模式,将MISO定义为输入模式,通过模拟的SPI 操作,对射频模块进行配置;当有控制命令要发送时,仍将MISO端口定义为输出模式,将射频模块配置为发送模式,将控制命令发送到数据采集终端;当要接收采集终端传来的数据时,首先将射频模块配置为接收模式,然后打开SPI 功能,利用单片机的SPI接口,将数据读到单片机内部。
这样,就完成了射频模块的半双工通信接口与单片机全双工通信接口的转换。
单片机与MAX5591之间的
SPI接口通信
C8051单片机的SPI 操作时序不能满足MAX5591的时序要求。要使单片机和MAX5591之间进行数据传输,必须根据MAX5591的时序要求将单片机的SPI时序进行转换。

实验结果及分析总结
实验结果
现场模拟电压信号通过12位ADC转换为数字量,通过无线方式传送到远端监控室,一方面通过DAC转换为模拟量,供示波器观看;另一方面,通过RS-232传送到PC进行显示、存储和打印。表1是实验数据。
分析总结
从试验数据可以看到,系统实现了现场模拟电压信号的采集、无线传输以及模拟信号还原,误差不大于0.2%,满足了设计要求。同时系统还存在着不足之处:在数据量加大,传输速率为1MHz时,偶尔会出现数据丢失现象;当被测信号频率大于500Hz的时候,信号复现时会出现波形失真。
系统实现了远端现场采集8路人体生理信号,无线传送到监控中心并复现现场信号的功能。实验证明,系统在250Kbps速率下无线传输距离可达50米,采集信号误差低于0.5% 。数据传输中采用了16位CRC校验,降低了误码率。该系统已经在某医疗器械上得到应用。经改造,系统可以采集现场的数字量和一些开关量,实现设备状态监测和开关量控制等。

结语
本文采用软件切换的方式实现了半双工器件与全双工器件的通讯转换,采用软件模拟SPI操作,解决了多SPI器件之间的通信协议匹配问题。■

参考文献:
1 沈阳新华龙电子有限公司,C8051F020/1/2/3 混合信号ISP FLASH 微控制器,2005
2 赵念强,鲍可进,申屠浩.基于SoC单片机8051F的码头供给监控系统 北京:微计算机信息, 2005年第3期第70页

⑸ 恳求各位高手:帮忙看一下这个单片机课设题目呗。题目为 ADC0808转换 谢谢!谢谢!

27. ADC0809A/D转换器基本应用技术
1. 基本知识
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1). ADC0809的内部逻辑结构

由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
(2). 引脚结构
IN0-IN7:8条模拟量输入通道
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。
C B A 选择的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3
1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7
数字量输出及控制线:11条
ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。
2. ADC0809应用说明
(1). ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
(2). 初始化时,使ST和OE信号全为低电平。
(3). 送要转换的哪一通道的地址到A,B,C端口上。
(4). 在ST端给出一个至少有100ns宽的正脉冲信号。
(5). 是否转换完毕,我们根据EOC信号来判断。
(6). 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
3. 实验任务
如下图所示,从ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接+5V电压。
4. 电路原理图

图1.27.1
5. 系统板上硬件连线
(1). 把“单片机系统板”区域中的P1端口的P1.0-P1.7用8芯排线连接到“动态数码显示”区域中的A B C D E F G H端口上,作为数码管的笔段驱动。
(2). 把“单片机系统板”区域中的P2端口的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1 S2 S3 S4 S5 S6 S7 S8端口上,作为数码管的位段选择。
(3). 把“单片机系统板”区域中的P0端口的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端口上,A/D转换完毕的数据输入到单片机的P0端口
(4). 把“模数转换模块”区域中的VREF端子用导线连接到“电源模块”区域中的VCC端子上;
(5). 把“模数转换模块”区域中的A2A1A0端子用导线连接到“单片机系统”区域中的P3.4P3.5P3.6端子上;
(6). 把“模数转换模块”区域中的ST端子用导线连接到“单片机系统”区域中的P3.0端子上;
(7). 把“模数转换模块”区域中的OE端子用导线连接到“单片机系统”区域中的P3.1端子上;
(8). 把“模数转换模块”区域中的EOC端子用导线连接到“单片机系统”区域中的P3.2端子上;
(9). 把“模数转换模块”区域中的CLK端子用导线连接到“分频模块”区域中的/4端子上;
(10). 把“分频模块”区域中的CK IN端子用导线连接到“单片机系统”区域中的ALE端子上;
(11). 把“模数转换模块”区域中的IN3端子用导线连接到“三路可调压模块”区域中的VR1端子上;
6. 程序设计内容
(1). 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。
(2). 进行A/D转换之前,要启动转换的方法:
ABC=110选择第三通道
ST=0,ST=1,ST=0产生启动转换的正脉冲信号
7. 汇编源程序
CH EQU 30H
DPCNT EQU 31H
DPBUF EQU 33H
GDATA EQU 32H
ST BIT P3.0
OE BIT P3.1
EOC BIT P3.2

ORG 00H
LJMP START
ORG 0BH
LJMP T0X
ORG 30H
START: MOV CH,#0BCH
MOV DPCNT,#00H
MOV R1,#DPCNT
MOV R7,#5
MOV A,#10
MOV R0,#DPBUF
LOP: MOV @R0,A
INC R0
DJNZ R7,LOP
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
MOV TMOD,#01H
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256
SETB TR0
SETB ET0
SETB EA
WT: CLR ST
SETB ST
CLR ST
WAIT: JNB EOC,WAIT
SETB OE
MOV GDATA,P0
CLR OE
MOV A,GDATA
MOV B,#100
DIV AB
MOV 33H,A
MOV A,B
MOV B,#10
DIV AB
MOV 34H,A
MOV 35H,B
SJMP WT
T0X: NOP
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256
MOV DPTR,#DPCD
MOV A,DPCNT
ADD A,#DPBUF
MOV R0,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
MOV DPTR,#DPBT
MOV A,DPCNT
MOVC A,@A+DPTR
MOV P2,A
INC DPCNT
MOV A,DPCNT
CJNE A,#8,NEXT
MOV DPCNT,#00H
NEXT: RETI
DPCD: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH,00H
DPBT: DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
END

8. C语言源程序
#include <AT89X52.H>
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};
unsigned char dispcount;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
unsigned char channel=0xbc;//IN3
unsigned char getdata;

void main(void)
{
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TR0=1;
ET0=1;
EA=1;

P3=channel;

while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
getdata=P0;
OE=0;
dispbuf[2]=getdata/100;
getdata=getdata%10;
dispbuf[1]=getdata/10;
dispbuf[0]=getdata%10;
}
}

void t0(void) interrupt 1 using 0
{
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}

阅读全文

与单片机课设adc项目要求相关的资料

热点内容
如何从爱思服务器注销游戏账号 浏览:941
幼儿编程教育培训多少钱 浏览:404
经常生气有什么东西能解压 浏览:901
代理服务器地址和端口可以怎么填 浏览:63
unity5手游编译模型 浏览:265
安卓无人机app源码 浏览:809
pl1编程语言 浏览:801
台达plc编程换算指令大全 浏览:174
手机上的编程游戏 浏览:108
服务器密码机有什么用 浏览:477
dos磁盘命令 浏览:955
单片机cpu52的功能 浏览:691
opc服务器怎么开发 浏览:373
觅喜是个什么app 浏览:402
加密cd机 浏览:946
社保用什么app缴纳 浏览:313
nodevlinux 浏览:582
腾讯tt服务器怎么登录密码 浏览:898
windows命令提示符 浏览:352
win7管理员权限命令 浏览:729