单片机 PCF8591 波形采集存储与回放

合集下载

波形采集、存储与回放系统的设计

波形采集、存储与回放系统的设计

波形采集、存储与回放系统的设计作者:钟秀娟来源:《软件工程师》2013年第10期摘要:本系统利用MSP430F149单片机控制,可以同时采集单极性和双极性两路周期信号,并存储到FLASH存储器,系统断电重启后,能连续回放已采集的信号,同时测量信号周期和电平并显示。

本设计主要有输入电路模块、信号放大处理模块、单片机控制电路模块、D/A转换模块和输出模块等组成。

本系统特点是功耗低,高输入阻抗,低输出阻抗,回放信号与原信号误差小,能显示信号周期和高低电平。

关键词:MSP430F149单片机;A/D转换器;D/A7524转换器中图分类号:TP274.2 文献标识码:A1 总体方案设计及框图本系统主要由输入电路(集成运放和整形电路)部分、A/D转换电路模块、单片机及显示电路模块、D/A转换(DA7524转换电路)和输出电路模块[1]。

输入信号经电平移位电路,经A/D转换后存入储存器并实时显示,回放时经D/A转换,显示在示波器上。

具体框图如图1所示。

2 电路的设计与流程图设计(1)采样信号处理通过电阻分压方式实现电压的零点偏置,将电压整体抬高。

电阻分压方式具有结构简单,成本低的优点,且允许幅值较大的双极性模拟信号在板内传输,在外界干扰一定的时候,提高了信噪比[2]。

对于MSP430F149内部的积分型ADC而言,电阻分压方式的输入阻抗较大,为保证片内电容的充电时间,以达到应有的测量精度,需相应延长采样的时间。

(2)输入电路的设计由于MSP430F149内置的模数转换器(ADC)只能对低于3.3V的电压采样,而系统要求能完成对A通道高电平约4V,低电平接近0V信号的采样,所以系统在输入部分设计了一个同相比例运放电路,将输入信号衰减一倍,使之达到单片机对电压的采样要求。

(3)整形电路频率测量时,利用MSP430F149单片机捕获输入信号上升沿,计算两个上升沿之间的时间差,即信号的周期。

但设计的电路是正弦信号,有上升沿,不能达到电路的测量要求,所以本系统设计了一个整形电路,将正弦波信号转换为同频率的方波信号输出,以使单片机能准确捕捉到每一个上升沿信号。

PCF8591的介绍..

PCF8591的介绍..

PCF8591介绍
应用: 1 闭环控制系统 2 用于远程数据采集的低功耗转换器 3 电池供电设备 4 在汽车、音响和 TV 应用方面的模拟 数据采集
PCF8591介绍
管脚定义及原理图: AIN0-AIN3:模拟输入(A/D转换)。 AOUT:模拟输出(D/A转换)。 A0-A1:硬件设备地址。 GND:电源负极地 VREF:参考电压输入。 EXT:振荡器输入时,内部/外部的 切换开关。 OSC:振荡器输入/输出。 SCL: I2C BUS时钟输入。 SDA:I2C BUS 数据输入/输出。 AGND:模拟地,模拟信号和基准电 源的参考地
例子原理图及程序
void main() { unsigned int adNum[5]; float value0; LcdInit(); while(1) { //--显示电位器电压--// Pcf8591SendByte(0); //发送电位器转换命令 adNum[0]= Pcf8591ReadByte()*2;//将前一次转换结果读走 LcdWriteCom(0x80+0x46); LcdWriteData('0'+adNum[3]/1000); //发送显示数据 LcdWriteData('0'+adNum[3]%1000/100); LcdWriteData('0'+adNum[3]%100/10); LcdWriteData('0'+adNum[3]%10); Pcf8591SendByte(1); //发送热敏转换命令 adNum[0]= Pcf8591ReadByte()*2;//读取电位器转换结果 value0=adNum[0]/2*0.01953; //转为电压值 adNum[0]=value0*100; //保留两位小数 LcdWriteCom(0x80); LcdWriteData('0'+adNum[0]%1000/100); LcdWriteData('.'); LcdWriteData('0'+adNum[0]%100/10); LcdWriteData('0'+adNum[0]%10); LcdWriteData('V'); Pcf8591SendByte(2); //发送光敏转换命令 adNum[1]=Pcf8591ReadByte()*2; //ADC1读取热敏

单片机实验指导书(pcf8591) (1)

单片机实验指导书(pcf8591) (1)
P34=!P34;//指示灯IO口反转
}
}
实验2:
#include "reg52.h"
sbit P34=P3^4;//定义LED指示灯的IO口
sbit P20=P2^0;//定义key的IO口
void main()
{
int i;//计时变量
while(1)
{
for(i=0;i<30000;i++);//延时
5.运行、调试程序,观察实验结果。
四、实验参考电路及参考程序
1.参考电路
2.参考程序
实验1:
#include "reg52.h"
sbit P34=P3^4;//定义LED指示灯的IO口
void main()
{
int i;//计时变量
while(1)
{
for(i=0;i<30000;i++);//延时
8.选择“output”页面,选中“create Hex File”,并可在“Name of Executable:”输入框中,重新输入生成HEX文件的文件名,然后点“确定”,以在程序编译时,实时生成需下载到单片机中的HEX文件。
9.点击“File” 菜单下面的“New”选项,再点击“File”菜单下面的“Save”选项,保存文件。输入文件名(C文件扩展名为“.c”,汇编文件扩展名为“.asm”),如下图:取名为main.c:
13.添加成功后,点击“Project”菜单下面的“Rebuild all target files”选项。当编译通过之后HEX文件才能生成,如下图。如果程序有错误,编译结果框中会有提示错误。双击对应的错误列表,可定位到源程序的位置,以便快速寻找错误。

数字示波器中的波形存储、录制与回放

数字示波器中的波形存储、录制与回放

数字示波器中的波形存储、录制与回放郑涛;杨拴科;金印彬【摘要】波形存储、录制与回放是数字示波器的重要功能.在此采用闪速存储器( FLASH Memory)存储重要的波形数据,方便用户事后调出观察、分析和对比.每段波形存储的长度固定,根据存储波形的序号、大小、起始地址等建立波形存储索引表,通过查询波形索引表可选择要回放的波形.还可以通过波形录制功能把信号波形录制到静态数据存储器(SDRAM)中,然后回放波形,寻找并观察自己需要的波形.通过直接存储(DMA)方式实现将显示缓冲区存储的波形搬移到波形录制的缓存中去,实现了数据的高速存储.在手持式示波表的研制过程中实现了此波录制和回放方法达到了预期的效果.%Waveform storage, recording and playback are the important functions of a digital oscilloscope (DSO). The FLASH memory is adopted to store the important waveform data. It is convenient for users to call out the waveform informa-tion to observe, analyze and compare. Since the length of each stored waveform is fixed, and the index table of the stored waveforms is established according to their serial numbers, sizes and starting addresses, the waveform that is needed to play-back can be found by querying the index table. Signal waveforms can be also recorded in the static data memory (SDRAM) by the waveform recording function, and then users could find and observe the required waveform by waveform playback. The waveform data stored in display buffer can be moved to the recording buffer though the way of DMA to achieve the high-speed data storage. Waveform storage, recording and playback havebeen implemented during the development of the handheld oscil-loscope. The desired result was achieved.【期刊名称】《现代电子技术》【年(卷),期】2011(034)018【总页数】4页(P149-152)【关键词】数字示波器;波形存储;波形录制;波形回放【作者】郑涛;杨拴科;金印彬【作者单位】西安交通大学电气工程学院,陕西西安710049;西安交通大学电气工程学院,陕西西安710049;西安交通大学电气工程学院,陕西西安710049【正文语种】中文【中图分类】TN919-34;TM9330 引言自然界的信号大多都是瞬时变化的一过性信号,采用示波器的触发功能可以捕获符合触发条件的信号,一些重要的信号需要存储并做进一步的观察和分析。

PCF8591中文手册讲义

PCF8591中文手册讲义

PCF8591中文手册讲义一、PCF8591概述1. 内置一个模拟电压比较器;2. 提供4个模拟输入通道;3. 具有1个模拟输出通道;4. 适用于I2C总线通信;5. 工作电压范围宽,可达2.5V至6V。

二、PCF8591内部结构及功能1. 内部结构(1)模拟输入多路选择器:可以选择4个模拟输入通道之一;(2)A/D转换器:将模拟信号转换为数字信号;(3)D/A转换器:将数字信号转换为模拟信号;(4)模拟电压比较器:对输入的模拟电压进行比较;(5)I2C总线接口:实现与外部设备的通信。

2. 功能介绍(1)模拟输入多路选择器:通过I2C总线接口发送控制字,可以选择4个模拟输入通道之一;(2)A/D转换器:将选定的模拟输入信号转换为8位数字信号;(3)D/A转换器:将8位数字信号转换为模拟信号,输出至模拟输出通道;(4)模拟电压比较器:对输入的模拟电压进行比较,可应用于阈值检测等场景;(5)I2C总线接口:实现与单片机、微处理器等设备的通信,便于数据传输和控制。

三、PCF8591应用电路及编程方法1. 应用电路(1)电源电路:确保电源稳定,满足PCF8591的工作电压范围;(2)模拟输入电路:根据实际需求选择合适的传感器或信号源,并进行滤波、放大等处理;(3)模拟输出电路:可根据实际应用场景,对输出信号进行放大、滤波等处理;(4)I2C总线接口电路:连接单片机或其他设备的I2C接口,实现数据传输和控制。

2. 编程方法(1)初始化I2C总线接口:设置I2C总线的时钟频率、设备地址等参数;(2)发送控制字:选择模拟输入通道、启动A/D转换等;(3)读取A/D转换结果:通过I2C总线读取转换后的数字信号;(4)写入D/A转换数据:通过I2C总线发送8位数字信号,实现模拟信号输出;(5)模拟电压比较器应用:设置比较阈值,实现阈值检测等功能。

四、PCF8591编程实例及注意事项1. 编程实例include <Wire.h> // 引入I2C库define PCF8591_ADDR 0x48 // 设置PCF8591的I2C地址void setup() {Wire.begin(); // 初始化I2C总线}void loop() {// 读取模拟输入通道0的值Wire.beginTransmission(PCF8591_ADDR);Wire.write(0x04); // 控制字:选择通道0,启动A/D转换 Wire.endTransmission();Wire.requestFrom(PCF8591_ADDR, 2); // 请求2个字节的数据if (Wire.available() >= 2) {te high = Wire.read(); // 读取高8位te low = Wire.read(); // 读取低8位int value = (high << 8) | low; // 合并高低8位// value即为模拟输入通道0的数字值}// 通过模拟输出通道输出固定电压值(例如1.25V)Wire.beginTransmission(PCF8591_ADDR);Wire.write(0x40); // 控制字:选择D/A转换Wire.write(outputValue); // 写入D/A转换数据Wire.endTransmission();}2. 注意事项(1)确保I2C总线的电源和地线连接正确,避免信号干扰;(2)在读取A/D转换结果时,注意数据的字节顺序,避免数据解析错误;(3)模拟输入信号的幅值应在PCF8591的输入范围内,以免损坏芯片;(4)模拟输出通道的负载应适当,避免影响输出电压的精度;(5)在使用模拟电压比较器时,注意设置合适的比较阈值,以提高检测准确性。

pcf859芯片的使用

pcf859芯片的使用

pcf859芯片的使用PCF8591芯片的使用基于PCF8591的AD—DA的程序设计。

本设计是通过PCF8591芯片选择通道1将滑动变阻器的电压记过A/D转换,有单片机读回,并在数码管显示,比且有这个数据再经过D/A转换成模拟电压驱动发光二极管。

发光二极管的亮度与数码管显示的电压值相对。

1. PCF8591芯片PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。

3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。

器件地址、控制和数据通道通过两线双向I2C总线传输。

器件功能包括多路复用模拟量输入、片上跟踪和保持功能、8位模数转换和8位数模转换。

最大转换速率取决于I2C总线的最高速率。

我实现的AD转换是使用通道0将滑动变阻器两端的电压AIN0~AIN3:模拟信号输入端。

A0~A2:引脚地址端。

VDD、VSS:电源端。

(2.5~6V)SDA、SCL:I2C 总线的数据线、时钟线。

OSC:外部时钟输入端,内部时钟输出端。

EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。

AGND:模拟信号地。

AOUT:D/A 转换输出端。

VREF:基准电源端。

地址:I2C总线系统中的每一片PCF8591通过发送有效地址到该器件来激活。

该地址包括固定部分和可编程部分。

可编程部分必须根据地址引脚A0、A1和A2来设置。

在I2C 总线协议中地址必须是起始条件后作为第一个字节发送。

地址字节的最后一位是用于设置以后数据传输方向的读/写位。

(见下图)控制字:发送到PCF8591的第二个字节将被存储在控制寄存器,用于控制器件功能。

控制寄存器的高板字节用于允许模拟输出,和将模拟输入编程为单端过查分输入。

低半字节选择一个有高板字节定义的模拟输入通道。

如果自动增量标志置1,每次A/D转换后通道号将自动增加。

如果自动增量模式是使用内部振荡器的应用中所需要的,那么控制字中模拟输出允许标志应置1。

基于单片机的语音存储及回放系统

基于单片机的语音存储及回放系统

电子与信息工程学院基于单片机的语音采集及回放系统设计1 总体设计方案介绍:1.1语音编码方案:人耳能听到的声音是一种频率范围为20 Hz~20000 Hz ,而一般语音频率最高为3400 Hz。

语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。

根据“奈奎斯特采样定理”, 采样频率必须大于模拟信号最高频率的两倍,由于语音信号频率为300~3 400 Hz ,所以把语音采集的采样频率定为8 kHz。

从语音的存储与压缩率来考虑,模型参数表示法明显优于信号波形表示法[4]。

但要将之运用于单片机,显然信号波形表示法相对简单易实现。

基于这种思路的算法,除了传统的一些脉冲编码调制外,目前已使用的有VQ技术及一些变换编码和神经网络技术,但是算法复杂,目前的单片机速度底,难以实现。

结合实际情况,提出以下几种可实现的方案。

(1)短时平均跨零记数法该方案通过确定信号跨零数,将语音信号编码为数字信号,常用于语音识别中。

但对于单片机,由于处理数据能力底,该方法不易实现。

(2)实时副值采样法采样过程如图2.1所示。

图2.1 采样过程具体实现包括直存取法、欠抽样采样法、自相似增量调制法等三种基本方法。

其中第三种实现方法最具特色,该方法可使数据压1:4.5,既有M调制的优点,又同时兼有PCM编码误差较小的优点,编码误差不向后扩散。

1.2 A/D、D/A及存储芯片的选择单片机语音生成过程,可以看成是语音采集过程的逆过程,但又不是原封不动地恢复原来的语音,而是对原来语音的可控制、可重组的实时恢复。

在放音时,只要依原先的采样直经D/ A 接口处理,便可使原音重现。

(1)A/D转换芯片的选择根据题目要求采样频率fs=8KHZ,字长=8位,可选择转换时间不超过125µs的八位A/D转换芯片。

目前常用的A/D转换实现的方法A/D转换芯片AD574。

该芯片是高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换[5]。

基于单片机的波形采集、存储与回放系统设计

基于单片机的波形采集、存储与回放系统设计

基于单片机的波形采集、存储与回放系统设计作者:梁丽来源:《中国教育技术装备》2016年第18期摘要系统以单片机为核心,以低功耗运放构成输入输出电路,选用外部低功耗存储芯片作存储,软件系统控制外部A/D转换器实现对输入信号的采集、数据存储,并通过外部D/A 转换器实现对已采集信号的回放,系统的各种信息及采集波形信息由液晶显示输出。

关键词单片机;接口电路;波形采集中图分类号:G642 文献标识码:B文章编号:1671-489X(2016)18-0032-021 前言采用AT89C52单片机作为整个控制核心,通过软件编程实现对模拟信号的采集、存储数据的输出以及各种测量、逻辑控制的功能。

现从系统单元电路设计、单片机与外部设备的接口电路设计和系统软件设计的角度,阐述基于单片机的波形采集、存储与回放系统的设计思想。

2 单元电路设计通道调理电路将ADC0809转换器的基准电压输入端接至+5 V电源,它可对0~5 V的模拟信号进行转换。

A通道输入信号是单极性的,输入电压范围为0~4 V,符合A/D转换器对输入信号的要求。

A通道的输入、输出电路均选用电压跟随器,电压跟随器具有输出电压跟随输入电压、输入阻抗高、输出阻抗低的特点,使得整个通道的放大倍数为1。

B通道输入信号是双极性的,输入电压范围为-50~+50 mV。

为此,在B通道输入端需将信号电压由双极性转换为单极性,并调理为0~4 V 电压输出,以匹配A/D转换器的输入电压范围;在B通道输出端则需将信号电压的极性和幅度范围进行还原。

B通道输入电路如图1所示,它由三级运放构成:第一级运放构成电压跟随器;第二级运放构成反相比例电路,其交流放大倍数为-40,作用是将信号电压由-50~+50 mV 调理到+2~-2 V范围内;第三级运放构成反相求和电路,其交流放大倍数为-1,调节电位器给信号电压+2 V的电平平移,将双极性信号转换为单极性,即将信号电压由+2~-2 V调理到0~4 V范围内。

pcf8591采样和显示

pcf8591采样和显示
2、程序功能:单片机依输出0xff,0x7f,0x00.经过pcf8591DAC后,给led灯DA,5V。2.5V,0V供电。
观察DA亮度的变化!
3、DAC只需写pcf地址0x90+控制字节0x40(使能analog输出)+databyte0+……。
4、ADC过程:pcf地址0x90+控制字节0x40(通道AIN0)+(pcf地址0x91)+采样字节z;
case 7:LS138A=1; LS138B=1; LS138C=1; break;
}
for (j = 0 ; j<55;j++) { ;} //扫描间隔时间
}
}
void dacc(uchar cl)
{
start();
write_byte(0x90); // 数字转模拟输出地址0x90,因为是写w=0;所以pcf地址位+传送方向位=0x90;
scl=1;
delay();
while((sda==1)&&(i<255))i++; // sda是从机向主机发送的
scl=0; // 应答sda=0
delay(); // 非应答 sda=1或者是超时
case 3:LS138A=1; LS138B=1; LS138C=0; break;
case 4:LS138A=0; LS138B=0; LS138C=1; break;
case 5:LS138A=1; LS138B=0; LS138C=1; break;
case 6:LS138A=0; LS138B=1; LS138C=1; break;

PCF8591

PCF8591

PCF8591是8bit的A/D和D/A芯片,采用i2c接口,它有四路模拟输入口和一个模拟输出口,采样速率取决于i2c的速率。

数据传输是高位在前低位在后(不论是主机写入数据,还是主机读取的数据)。

写入数据时:起始信号->器件地址->应答信号->控制字节->写入的数据->应答信号(从机)->写入的数据->应答信号(从机)。

->停止信号读取数据时:起始信号->器件地址(写)->应答信号(从机)->控制字节->应答信号(从机)->停止信号(这个前提是设置读取的是哪一个通道,采用的哪种模式) 接着再是:起始信号->器件地址(读)->读取的字节->非应答信号(主机)->停止信号下图是AD通道自动增量模式采集数据时的数据格式:具体指令格式请参考PCF8591的数据手册。

下面是PCF8591的模拟输出和模拟输入的程序:/**************************************************************************Describe:PCF85891数模和模数转换** Time: 2015.5.20** Author: zys*************************************************************************/#include <reg52.h>#include <intrins.h>sbit SCL = P1^5;sbit SDA = P3^6;#define ADONE 0.0198 //5.06/256V PCF8591的Vref电压是5.06V/***本程序数码管是共阴极的***/const unsigned char smg_dp_yin[ 16 ] = {0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef,0xf7, 0xfc, 0xb9, 0xde, 0xfb, 0xf1};//0. 1. 2. 3......f.//共阴极,显示小数点//不显示小数点: smg_dp_yin[x] & 0x7f//共阳极显示小数点:~smg_dp_yin[x]//共阳极不显示小数点:~(smg_dp_yin[x] | 0x80)/****数码管的位是通过74LS138控制的****/const unsigned char smg_8_pos[ 8 ] = { 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; //对应P20,P21,P22,高位都为1,则与的时候P2的其他位不变const unsigned char smg_sum = 8; //8位数码管void i2c_start( void );void i2c_stop( void );void i2c_ack( void );void master_ack();void master_notAck();void i2c_writeByte( unsigned char byte);unsigned char i2c_readByte( void );void PCF8591_wirteCommand( unsigned char addr, unsigned char command ); void PCF8591_AOUT(unsigned char byte);unsigned char i2c_readADResult( void );void PCF8591_displayADResult( unsigned int ADResult);void delay( void );void i2c_delay( void );void delay_xms(unsigned int );/********************************************************** 函数名: void main( void )**输入参数:无**返回参数:无********************************************************/void main( void ){int i = 0;int ch = 0;while(1){/*for(i = 0; i <= 255; i++) //DA输出,呼吸灯效果{PCF8591_AOUT(i);delay();}for(i = 255; i >= 0; i--){PCF8591_AOUT(i);delay();} */for(ch = 0; ch < 4; ch++) //循环采集四路电压{PCF8591_wirteCommand(0x90, 0x00+ch);for(i = 0; i < 1000; i++){PCF8591_displayADResult(i2c_readADResult());}}}}/******************************************************** ** 函数名: void i2c_start( void ),i2c起始信号**输入参数:无**返回参数:无********************************************************/ void i2c_start( void ){SCL = 1;SDA = 1;i2c_delay();SDA = 0;i2c_delay();SCL = 0;i2c_delay();}/******************************************************** ** 函数名: void i2c_stop( void ),i2c停止信号**输入参数:无**返回参数:无********************************************************/ void i2c_stop( void ){SDA = 0;i2c_delay();SCL = 1;i2c_delay();SDA = 1;i2c_delay();}/******************************************************** ** 函数名: void i2c_ack( void ),i2c应答信号(从机)**输入参数:无**返回参数:无********************************************************/ void i2c_ack( void ){int i = 0;SCL = 0;i2c_delay();SDA = 1;i2c_delay();SCL = 1;i2c_delay();while(SDA == 1);/*while((SDA == 1) && ((i++) < 10)){_nop_();}*/}/********************************************************** 函数名: void master_ack( void ),主机应答信号,在读取数据时**输入参数:无**返回参数:无********************************************************/ void master_ack( void ){SCL = 0;i2c_delay();SDA = 0;i2c_delay();SCL = 1;i2c_delay();SCL = 0;i2c_delay();SDA = 1;i2c_delay();}/********************************************************** 函数名: void master_notAck( void ),主机非应答信号,在读取数据时**输入参数:无**返回参数:无********************************************************/ void master_notAck( void ){SCL = 0;i2c_delay();SDA = 1;i2c_delay();SCL = 1;i2c_delay(); // 没下面四句程序读取不正常SCL = 0; //i2c_delay(); //SDA = 0; //}/******************************************************** ** 函数名: void i2c_writeByte,i2c写一个字节**输入参数:unsigned char byte**返回参数:无********************************************************/ void i2c_writeByte( unsigned char byte ){char loop;for(loop = 0; loop < 8; loop++){SCL = 0;i2c_delay();if((byte<<loop)&0x80) //数据是从高位到低位传输{SDA = 1;}else{SDA = 0;}i2c_delay();SCL = 1;i2c_delay();}}unsigned char i2c_readByte( void ){int loop = 0;unsigned char temp = 0;unsigned char tempData = 0;//SDA = 0;for(loop = 7; loop >= 0; loop--){SCL = 0;i2c_delay();temp = SDA;i2c_delay();i2c_delay();tempData += (temp<<loop);temp = 0;}return tempData;}/********************************************************** 函数名: void PCF8591_wirteCommand( unsigned char addr, unsigned char command ),PCF8591写控制指令**输入参数:unsigned char addr, unsigned char command**返回参数:无********************************************************/void PCF8591_wirteCommand( unsigned char addr, unsigned char command ){i2c_start();i2c_writeByte(addr);i2c_ack();i2c_writeByte(command);i2c_ack();i2c_delay();i2c_stop();}/********************************************************** 函数名: unsigned char i2c_readADResult( void ),i2c读出一个字节**输入参数:无**返回参数:unsigned char********************************************************/unsigned char i2c_readADResult( void ){unsigned char temp = 0;i2c_start();i2c_writeByte(0x91);i2c_ack();temp = i2c_readByte();master_notAck();i2c_stop();return temp;}/********************************************************** 函数名: void PCF8591_displayADResult( unsigned int ADResult),显示AD采集的数据**输入参数:unsigned int ADResult********************************************************/void PCF8591_displayADResult( unsigned int ADResult){char loop = 0;unsigned int temp = ADONE * ADResult * 100; //两位小数取出来unsigned int dec = 1;for(loop = 7; loop >= 5; loop--){if(loop == 5){P0 = smg_dp_yin[temp/dec%10];}else{P0 = smg_dp_yin[temp/dec%10]&0x7f;}P2 = smg_8_pos[loop];delay_xms(1);dec *= 10;}}/********************************************************** 函数名: void PCF8591_AOUT( unsigned char byte ),DA输出**输入参数:unsigned char byte**返回参数:无********************************************************/void PCF8591_AOUT( unsigned char byte ){i2c_start();i2c_writeByte(0x90);i2c_ack();i2c_writeByte(0x40); //只有模拟输出AOUTi2c_ack();i2c_writeByte(byte);i2c_ack();i2c_stop();}/************************************************************************ **函数名:void i2c_delay( void ),i2c专用延时** 功能:无*************************************************************************/ void i2c_delay( void ){char loop;for(loop = 0; loop < 5; loop++){_nop_();}}/************************************************************************ **函数名:void delay_xms( unsigned int x )** 功能:延时xms** 参数: 无*************************************************************************/ void delay_xms( unsigned int x ){unsigned char j = 0;while( x-- ){while( (j++) < 100 );j = 0;}}/************************************************************************ **函数名:void delay( void ),在输出DA数据时使用的延时** 功能:无** 参数: 无*************************************************************************/ void delay( void ){unsigned int loop;for(loop = 0; loop < 30; loop++){_nop_();}}。

pcf859芯片的使用

pcf859芯片的使用

PCF8591芯片的使用基于PCF8591的AD—DA的程序设计。

本设计是通过PCF8591芯片选择通道1将滑动变阻器的电压记过A/D转换,有单片机读回,并在数码管显示,比且有这个数据再经过D/A转换成模拟电压驱动发光二极管。

发光二极管的亮度与数码管显示的电压值相对。

1. PCF8591芯片PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。

3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。

器件地址、控制和数据通道通过两线双向I2C总线传输。

器件功能包括多路复用模拟量输入、片上跟踪和保持功能、8位模数转换和8位数模转换。

最大转换速率取决于I2C总线的最高速率。

我实现的AD转换是使用通道0将滑动变阻器两端的电压AIN0~AIN3:模拟信号输入端。

A0~A2:引脚地址端。

VDD、VSS:电源端。

(2.5~6V)SDA、SCL:I2C 总线的数据线、时钟线。

OSC:外部时钟输入端,内部时钟输出端。

EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。

AGND:模拟信号地。

AOUT:D/A 转换输出端。

VREF:基准电源端。

地址:I2C总线系统中的每一片PCF8591通过发送有效地址到该器件来激活。

该地址包括固定部分和可编程部分。

可编程部分必须根据地址引脚A0、A1和A2来设置。

在I2C 总线协议中地址必须是起始条件后作为第一个字节发送。

地址字节的最后一位是用于设置以后数据传输方向的读/写位。

(见下图)控制字:发送到PCF8591的第二个字节将被存储在控制寄存器,用于控制器件功能。

控制寄存器的高板字节用于允许模拟输出,和将模拟输入编程为单端过查分输入。

低半字节选择一个有高板字节定义的模拟输入通道。

如果自动增量标志置1,每次A/D转换后通道号将自动增加。

如果自动增量模式是使用内部振荡器的应用中所需要的,那么控制字中模拟输出允许标志应置1。

单片机PCF8591波形采集存储与回放

单片机PCF8591波形采集存储与回放

目录一、设计题目、设计目的 (1)1.1、说明选题的来源、意义和目的 (3)1.2、课题承担人员及分工说明 (3)二、课题总体设计说明 (3)2.1、说明总体开发计划和课题所达到的功能目标和技术指标 (3)2.2、课题总体设计方案,比较几个备选方案,确定最终方案 (4)三、硬件设计说明 (5)3.1、硬件总体设计方案 (5)3.2、硬件设计的总电路原理图、PCB图及原件清单 (8)四、软件设计说明 (10)4.1、软件总体设计方案 (10)4.2、软件功能模块划分 (10)五、硬件调试说明 (13)5.1、硬件性能测试 (13)5.2、实验测得的数据 (13)5.3、软件性能测试 (14)六、附件 (14)附件1、波形回放信号图 (14)附件2、硬件外观图 (16)附件3、PROTUES仿真效果图 (17)毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:1学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

基于单片机的波形采集回放系统设计

基于单片机的波形采集回放系统设计

基于单片机的波形采集回放系统设计作者:张凯博来源:《科技创新与应用》2016年第29期摘要:文章完成了一款基于单片机STC12C5A60S2的波形采集存储与回放控制系统,其中单片机是整个控制系统的核心,结合AT24C04存储,可靠地实现对两路外部信号进行采集与存储。

系统分为软件和硬件两个部分。

硬件电路主要包括单片机的外围基本模块、按键电路、波形采集回放电路等。

软件部分包括了按键触发、信号存储、数模信号转换程序设计。

关键词:波形;存储;回放引言波形采集回放系统是目前检测电子电路的重要技术手段,已广泛应用于各式各样的技术行业,例如电力系统、医疗系统、教学科研系统等等。

但随着工作环境的日益复杂,传统的示波器在狭小的空间中已不能满足测量要求,因此设计一款轻便的数字滤波器对特殊工业环境有着较高的应用价值。

1 系统参数设计首先,需对系统实现的功能和相关参数进行设计。

要求能同时采集两路周期信号波形,系统断电恢复后,能连续回放已采集的信号,显示在示波器上。

并且能完成对A通道单极性信号(高电平约4V、低电平接近0V)、频率约1kHz信号的采集、存储与连续回放。

此外,要求系统输入阻抗不小于10kΩ,输出阻抗不大于1kΩ。

采集、回放时能测量并显示信号的高电平、低电平和信号的周期。

原信号与回放信号电平之差的绝对值≤50mV,周期之差的绝对值≤5%。

2 系统方案设计采样方式选择:等效时间采样虽然可以对很高频率的信号进行采样,可是步进延迟的采样技术与电路较为复杂。

再者,它只限于处理周期信号,而且对单次触发采样无能为力。

实时采样可以实现整个频段的全速采样。

实时采样是在信号存在期间对其采样。

根据采样定理,采用速率必须高于信号最高频率分量的两倍。

对于周期的正弦信号,一个周期内应该大于两个采样点。

为了不失真地恢复原被测信号,通常一个周期内就需要采8个点以上,故文章采用实时采样方式。

A/D、D/A转换方式选择:采用芯片PCF8591转换,其具有IIC接口,AIN0~AIN3四个模拟输入通道和一个模拟输出通道,最多可以有8片8591连接到IIC总线。

蓝桥杯单片机PCF8591原理

蓝桥杯单片机PCF8591原理

应答响应
主机在接收到一个字节后, 向从机作出应答
主机等待从机应答
void iic_ack(bit ackbit) { if(ackbit) SDA = 0; //应答 else SDA = 1; //非应答 somenop; SCL = 1; somenop; SCL = 0; SDA = 1; //SDA拉高,释放SDA线 somenop; }
I2C总线特征?
1、只要求两条总线线路:一条串行数据线SDA,一条串行时 钟线SCL; 2、每个连接到总线的器件都可以通过唯一的地址和一直存在 的简单的主机/从机关系软件设定地址,主机可以作为主机发送 器或主机接收器; 3、它是一个真正的多主机总线,如果两个或更多主机同时初 始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;
1、概述
• • • • • • • • • • • •
PCF8591
单电源供电 工作电压:2.5 V ~ 6 V 待机电流低 I2C总线串行输入/输出 通过3个硬件地址引脚编址 采样速率取决于I2C总线速度 4个模拟输入可编程为单端或差分输入 自动增量通道选择 模拟电压范围:VSS~VDD 片上跟踪与保持电路 8位逐次逼近式A/D转换 带一个模拟输出的乘法DAC
接收字节
unsigned char iic_recbyte(void) { unsigned char da; unsigned char i; for(i=0;i<8;i++) { SCL = 1; somenop; da <<= 1; if(SDA) da |= 0x01; SCL = 0; somenop; } return da; }
发送字节
void iic_sendbyte(unsigned char byt) { unsigned char i; for(i=0;i<8;i++) { if(byt&0x80) //先发高位 SDA = 1; else SDA = 0; somenop; SCL = 1; byt <<= 1; somenop; SCL = 0; } }

波形的采集存储与回放系统

波形的采集存储与回放系统

波形的采集存储与回放系统摘要随着电子信息技术的迅猛发展,医疗、卫星、雷达、现代航空等众多领域都需要实现对数据进行存储,回放等要求,信号的采集、存储在信息技术行业中应用的也越来越广泛。

本设计采用单片机作为总控制芯片,分别用A/D转换器和D/A转换器进行模数和数模转换,并将采集到的波形数据存储到Flash存储器中。

按下采集键后,该系统对0~+5v 变化的波形进行采样并将采样的数据存储起来;按下回放键后,该系统将采样波形进行循环回放;在采集时可改变幅值,并且采集到的数据也会同时在回放的时候变化;在回放时,若按下存储键,将停止波形的回放,显示一条直线;若按下回放键,将终止当前波形,并采集新的波形。

关键词:采集,存储,回放,单片机,波形Waveform Acquisition Storaging and Playbacking SystemABSTRACTWith the rapid development of electronic information technology, many fields such as Medical treatment, satellite, radar, Advanced Flight needs to implement the data storage, playback, Signal acquisition, storage in the applications of information technology industry is becoming more and more widely.This design uses the microcontrolle as the control chip, Respectively with the A/D converter and D/A converter as the digital analogy converter. And will be collected waveform data Stored in the Flash memory. After press the acquisition button, The system will be Sampling waveform that conversion from 0~4V and storing in the Flash memory. After press the playback button, The system will cycle sampling waveform playback. At the time of acquisition can change amplitude, And the collected data will be change when playback at the same time, During playback, If you press the store button, Will stop the playback waveform, according to a straight line, If press the playback button, will end the current waveform, and new waveform acquisition.KEY WORDS:Acquisition,storage,playback,microcontroller,waveformIII目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1 选题的意义 (1)1.2 研究现状与发展趋势 (2)2波形采集存储与回放系统的设计原理与功能 (3)2.1 波形采集存储与回放系统的设计原理 (3)2.2 波形采集存储与回放系统的功能 (3)2.3 总体开发计划和课题所达到的功能目标和技术指标 (3)2.3.1 达到的功能目标 (3)2.3.2 技术指标 (4)2.4 本章小结 (4)3 方案论证选择与硬件设计 (5)3.1 采样方式选择 (5)3.2 A/D与D/A转换选择 (5)3.3 触发方式选择 (5)3.4 输入模块 (6)3.4.1 A路输入电路 (6)3.4.2 B路输入 (6)3.5 A/D转换器 (7)3.5.1 ADC0809引脚图以及接口 (7)3.5.2 ADC0809使用要求及应用说明 (8)3.6 主控模块 (8)3.6.1 AT89S52芯片主要特点及性能 (8)3.6.2 AT89S52芯片的最小电路系统以及接口 (9)3.7 D/A转换器 (11)3.7.1 DAC0832的引脚图以及接口 (11)3.7.2 DAC0832的工作方式 (11)3.7.3 实现D/A转换时,主要涉及的参数 (12)3.8 输出模块 (12)3.9 显示模块 (13)3.10 存储模块 (13)IV3.11 本章小结 (14)4 软件设计 (15)4.1 软件设计目标 (15)4.2 Keil2简介 (16)4.3 软件功能模块分类 (16)4.3.1 主程序流程 (16)4.3.2 LCD子程序流程 (18)4.3.3 按键处理子程序流程 (18)4.3.4 回放子程序流程 (19)4.3.5 采集并存储子程序流程 (20)4.3.6 存储处理子程序流程 (21)4.4 本章小结 (21)5 系统测试及结果分析 (22)5.1 测试使用仪器与设备 (22)5.2 测试方案与测试结果 (22)5.2.1 测试方法 (22)5.2.2 测试结果与分析 (22)5.2.3 误差产生原因 (25)5.3 设计和调试中遇到的问题 (25)6 小结 (26)致谢 (28)参考文献 (29)附录 (30)附录ⅠAT89S52与LCD1602的接口程序 (30)附录ⅡAT89S52与ADC0809的连接程序 (31)波形的采集存储与回放系统 11 绪论1.1 选题的意义电子信息技术的迅猛发展,现代航空、雷达、卫星、医疗等众多领域常常需要对波形进行采集、存储和回放,波形信号的采集、存储在信息技术行业应用的越来越广泛。

AD(DA)芯片PCF8591使用介绍

AD(DA)芯片PCF8591使用介绍

AD (DA )芯片PCF8591使用介绍AD (DA )芯片PCF8591简介PCF8591是具有I2C 总线接口的8 位A/D 及D/A 转换器。

PCF8591有4个模拟输入、1个模拟输出和1个I²C 总线接口。

PCF8591有3个地址引脚A0, A1和A2,用于硬件地址设定,这允许在一条I 2C 总线上接入8个PCF8591器件。

PCF8591实物如下图所示:AD (DA )芯片PCF8591引脚1、AIN0、AIN1、AIN2、AIN3:模拟信号输入管脚。

2、A0、A1、A2:硬件地址设定管脚。

3、VDD:接电源(2.5V~6V)正极。

4、VSS:接电源(2.5V~6V)负极,即GND。

5、SDA:I2C 总线的数据线。

6、SCL:I2C 总线的时钟线。

7、OSC:外部时钟输入端,内部时钟输出端。

8、EXT:内部、外部时钟选择线,使用内部时钟时EXT 接地。

9、AGND:模拟信号地。

10、AOUT:D/A 转换输出端。

11、VREF:基准电源端。

AD(DA)芯片PCF8591内部结构框图AD(DA)芯片PCF8591特性1、PCF8591为单独供电,电压范围2.5V~6V。

2、PCF8591待机电流低。

3、PCF8591通过I2C总线串行输入/输出,其采样率由I2C总线速率决定。

4、PCF8591通过3个地址引脚设定硬件地址。

5、4个模拟输入可编程为单端型或差分输入。

6、自动增量频道选择。

7、PCF8591的模拟电压范围:VSS~VDD。

9、PCF8591内置跟踪保持电路。

10、8位逐次逼近A/D转换器。

11、带1路模拟输出DAC。

AD(DA)芯片PCF8591应用PCF8591器件总地址PCF8591采用I2C总线接口器件寻址。

地址由固定部分、可编程部分和方向位组成。

固定部分为1001。

可编程部分必须根据地址引脚AO、A1和A2进行设置,其值由用户选择,因此I2C系统中最多可接23=8个具有I2C 总线接口的PCF8591。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计报告题目:设计者1:负责任务:专业班级/学号:设计者2:负责任务:专业班级/学号:指导教师1:指导教师2:答辩时间:目录一、设计题目、设计目的 (2)1.1、说明选题的来源、意义和目的 (2)1.2、课题承担人员及分工说明 (2)二、课题总体设计说明 (2)2.1、说明总体开发计划和课题所达到的功能目标和技术指标 (2)2.2、课题总体设计方案,比较几个备选方案,确定最终方案 (3)三、硬件设计说明 (4)3.1、硬件总体设计方案 (4)3.2、硬件设计的总电路原理图、PCB图及原件清单 (7)四、软件设计说明 (9)4.1、软件总体设计方案 (9)4.2、软件功能模块划分 (9)五、硬件调试说明 (12)5.1、硬件性能测试 (12)5.2、实验测得的数据 (12)5.3、软件性能测试 (13)六、附件 (13)附件1、波形回放信号图 (13)附件2、硬件外观图 (15)附件3、PROTUES仿真效果图 (17)1一、设计题目、设计目的1.1、说明选题的来源、意义和目的选题来源:本次课题设计根据2011全国大学生电子大赛—H题波形采集、存储与回放系统基本要求设计的,意义和目的:制作一个波形采集、存储与回放系统,示意图如图1 所示。

该系统能同时采集两路周期信号波形,要求系统断电恢复后,能连续回放已采集的信号,显示在示波器上。

图1-1 总设计框架图1.2、课题承担人员及分工说明。

这次报告以及我们的硬件软件都是一起共同努力完成的,硬件也是一起做的,最后调试成功,我们的合作很愉快。

二、课题总体设计说明2.1、说明总体开发计划和课题所达到的功能目标和技术指标2.11、达到的功能目标1、能完成对A 通道单极性信号(高电平约4V、低电平接近0V)、频率约1kHz 信号的采集、存储与连续回放。

要求系统输入阻抗不小于10 kΩ,输出阻抗不大于1kΩ。

2、采集、回放时能测量并显示信号的高电平、低电平和信号的周期。

原信号与回放信号电平之差的绝对值≤50 mV,周期之差的绝对值≤5%。

3、本系统处理的正弦波信号频率范围限定在10Hz~10kHz,三角波信号频率范围限定在10Hz ~2kHz,方波信号频率范围限定在10Hz ~1kHz。

4、预留电源电流的测试点。

235、 采集与回放时采用示波器监视。

6、 采集、回放时显示的周期和幅度应是信号的实际测量值,规定采用十进制数字显示,周期以“ms ”为单位,幅度以“V ”为单位。

2.12、技术指标 1、A/D 位数选择依据通用示波器垂直方向共8格,要求每格32级,共有32⨯8=256级。

8256log 2==n因此采用8位A/D 以上的即可。

2、采用频率选择依据假设扫描速度为t s/div,每格点数为n ,采样频率为s f ,则:tnf s =,当n=20时,针对不同的扫描速度,可得到不同的采样频率。

在一定的情况下,扫描速度的改变是通过改变采样频率实现的。

对于10KHz 的正弦波,采样频率为1MHz 时,每周期可采样100个点,由采样值可以很好地恢复采样前的信号。

因而,选用采样频率为1MHz 以上的A/D 即可满足单路输入时对频率范围的要求。

若考虑到双路输入的情况,所需A/D 最高采样频率应为2MHz 。

因而,应选择采样频率为2MHz 以下的A/D 。

3、波形回放频率选择依据显示屏上显示的信号是从存储器中读出的信号,只要使观察到的波形不闪烁即可。

本设计中,单通道时刷新频率为200Hz ;双踪示波时,每通道刷新频率为100HZ 。

通过计算,每秒读出的点数为200*200=40K 。

即RAM 读出频率为40KHz ,要求D/A 转换速率高于40KHz 。

2.2、课题总体设计方案,比较几个备选方案,确定最终方案题目要求及相关指标分析 题目的要求是制作一个波形采集、 存储与回放系统。

由于被测信号为模拟信号, 存储过程为数字量,故应该通过 A/D 转化将模拟信号进行量化处理,然后送到单片机中存储,当需要显示的时候,从单片机读出数据并通过 D/A 转化为模拟信号,然后送往示波器观察信号的波形。

因此,设计的重点是模拟信号的处理与采样、数字信号的存储、数字信号转化为模拟信号送出及系统的控制 4 个方面。

有以下几种设计方案: 方案一:方案一采用PCF8591作为信号输入输出转换主控芯片,根据PCF 的特点,信号输入采用四个模拟量输入,一个模拟量输出,因为没有设计输入电路对输入信号进行相应的降压,所以输入限制在0~5V 之间,频率为几百赫兹左右,所以输4出也没有必要做输出电路,经过芯片内部DA 处理输出即可。

电路信号储存依然采用AT24c02进行储存,LCD1602显示。

方案二:使用具有高速A/D 转换STC12C5A60S2芯片、外部存储芯片和液晶显示1602, 方案三:升级成高极端单片机芯片STM32103RC (低功耗),内置A/D,D/A 转换,LCD1602显示。

方案二和方案三编程等实际操作要求高,芯片也没接触高,方案一的芯片STC89C51RC 比较熟悉,操作也比较方便,电路设计简单易懂,程序编写方便,且元器件少,,故选择第一个方案。

三、硬件设计说明3.1、硬件总体设计方案3.11、硬件设计目标设计的目标主要是以STC89C51RC 为电路核心加上外部AD/DA 芯片PCF8591、外部存储芯片AT24C02、1602液晶显示。

实现波形采集、存储与回放;电路会自动采集波形、存储于AT24C02中并在1602液晶上显示;当电源断电数据不会丢失。

按下存储键后,该系统对1HZ 的0~+5V 变化的波形进行采样并将采样的数据存储起来;按下回放键后,该系统将采样波形进行循环回放;在采集时可改变幅值,并且采集到的数据也会同时在回放的时候变化;在回放时,若按下存储键,将停止波形的回放,显示一天直线;若按下回放键,将终止当前波形,并采集新的波形。

3.12、硬件功能模块划分图3-1 PCF8591 AD/DA 转换模块原理图图3-1 PCF8591是具有I2C总线接口的A/D转换芯片。

和CPU的信息传输过程中仅靠时钟线SCL和数据线SDA就可以实现8位A/D及D/A转换器,有4路A/D转换输入,1路D/A模拟输出。

AIN0~AIN3:模拟信号输入端。

本次实验的输入信号接到AIN0。

A0~A3:引脚地址端。

VDD、VSS是电源端,SDA、SCL是I2C 总线的数据线、时钟线;OSC为外部时钟输入端,内部时钟输出端;EXT:内部、外部时钟选择线,使用内部时钟时EXT接地AGND:模拟信号地; AOUT为D/A 转换输出端; VREF:基准电源端。

AOUT为D/A 转换输出端,AIN0~AIN3为A/D的模拟信号输入端,输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

图3-2 LCD1602液晶显示模块原理图图3-2 LCD1602液晶显示模块,数据D0~D7接 STC89c51的P0口,RS\RW\EN 分别接STC89c51的P1.0、P2.0、P1.1接口。

56图3-3 AT24C02储存模块原理图如图3-3所示为本题的存储模块电路图,采集的外部信号经单片机处理后存到AT24C02。

引脚A0、A1、A2、GND 都接地,SCL 和SDA 接P1.2 、P1.3。

图3-4 按键模块图3-4 是按键模块,按键S1、S2、S3、S4分别接P3口的P3.2、P3.3、P3.4、P3.5,本次实验的存储与回放的两个按键分别由S4和S2完成的。

3.2、硬件设计的总电路原理图、PCB图及原件清单;图3-5 硬件电路总原理图78图3-6 硬件PCB 图四、软件设计说明4.1、软件总体设计方案最终目标是实现同时能够采集两路周期信号波形,当系统断电恢复后,能连续回放已采集的信号,并且显示在LCD上。

1、按S4按键,进入采集信号状态。

2、按下回放键S2后,该系统将所采样波形进行循环回放;3、在采集时可改变幅值和频率,并且采集到的数据也会同时在回放的时候变化;4、在回放时,若按下存储键,将停止当前波形的回放并且示波器上显示直线,若按下回放键,即采集到新的波形。

5、能够实现方波、三角波以及正弦波的采集和回放。

4.2、软件功能模块划分(1)主程序流程图主程序循环调用LCD显示子程序、PCF8591数模与模数转换、AT24C02存储程序,当端口上电时,转入相应功能程序。

如图4-1所示:图4-1 主程序流程图9(2)AT24C02存储功能流程图I2C24C02是4KB的EEPROM,它是一片I2C总线式串行器件,有两跟信号线,一根是双向的数据线SDA,另一根是时钟线SCL,A0,A1,A2为器件地址线,WP 为写保护引脚,符合I2C总线协议。

流程图如图4-2。

图4-3 24C02流程图(3)PCF8591数模与模数转换流程图PCF8591采用典型的I^2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成,A/D器件地址为1001,引脚地址为A2A1A0,其值由用户选择。

地址的最后一位为方向位R/ ,当主控器对A/D器件进行读操作时为1,进行写操作时为0。

总线操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一字节。

在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应答…一直到主控器从被控器中读出第n个数据字节,主控器发出非应答信号,最后主控器发出停止信号。

流程图见图4-4。

图4-4 PCF8591模数与数模转换程序流程图(4)LCD 显示子程序设计LCD 液晶显示数据存放在内存单元5EH~6CH 中。

其中5EH-66H 存放LCD 上排显示,67H~6CH 存放LCD 下排显示。

从P0口输出数据,由P2.0~P2.1对LCD 进行数据操作选择,就能显示该地址单元的数据值,流程图如图4-5所示。

如图4-5 LCD显示子程序流程图五、硬件调试说明5.1、硬件性能测试(1)下载程序后对板进行上电后,看看板是否正常工作,lcd是否有显示。

(2)载入程序后,液晶显示屏要是不显示。

首先对整个电路的连线检查,再次用万用表检查电路是否有短路的现象,还有看下程序与板的P口连接有没对应。

5.2、实验测得的数据表5-1实验测得的数据表5.3、软件性能测试本次系统设计软件部分采用单片机C语言进行编写,用kile软件进行编译,调试整个系统,在调试过程中与硬件相结合,提高调试效率。

能实现对波形的采集、存储与回放的功能。

六、附件附件1、波形回放信号图附件1-1 正弦波回放的信号附件1-2 方波回放的信号附件1-3 三角波回放的信号附件2、硬件外观图附件2-1 硬件外观图附件3、PROTUES仿真效果图附件3-1 正弦波仿真效果图黄色的波形是回放波形附件3-2 三角波仿真效果图附件3-3 方波仿真效果图。

相关文档
最新文档