数据采集器的设计实验报告
数据采集实验报告

引言概述数据采集是指收集并记录各种形式的数据以用于进一步分析和决策的过程。
在现代社会,数据采集已经成为了许多领域中不可或缺的一部分,如科学研究、商业分析和市场调研等。
本实验报告旨在介绍一个数据采集实验的过程和结果,以及对实验中遇到的挑战和解决方案的讨论。
正文内容1.实验背景1.1.引言数据采集是科学研究中的重要环节。
本实验旨在通过各种手段和方法采集有关消费者购物行为的数据,以便进一步分析和研究。
1.2.数据采集目的我们的目标是了解消费者的购物习惯和偏好,以及他们在购物过程中面临的问题和需求。
通过收集数据,我们可以得到一些有关市场趋势和消费行为的洞见,帮助企业制定更有效的营销策略。
1.3.数据采集方法我们采用了多种数据采集方法,包括在线调查、观察和采访等。
这些方法相互补充,可以提供更全面和准确的数据。
2.数据采集过程2.1.在线调查我们设计了一个在线调查问卷,针对消费者的购物行为和偏好进行了提问。
通过社交媒体和电子邮件的方式,向目标受众发送了问卷,并鼓励他们分享给其他人。
2.2.观察我们在几家商场和超市进行了观察实验。
观察者注意到消费者在购物过程中的行为,观察并记录了他们的购物车内容、购买决策过程和顾客间的互动。
2.3.采访我们选择了一些消费者进行了面对面的采访,了解他们的购物动机、偏好和体验。
通过这种方式,我们可以更深入地了解消费者的心理需求和感受。
3.实验结果分析3.1.在线调查结果我们收集到了大量的在线调查数据,通过数据分析,我们得出了一些有关消费者购物行为和偏好的结论。
例如,大多数消费者更喜欢在线购物,尤其是年轻人群体。
价格和品质是他们购买产品的最重要考虑因素。
3.2.观察结果通过观察实验,我们发现消费者在购物过程中更倾向于选择促销商品和品牌忠诚度较高的产品。
我们还注意到了一些购物环境对消费者行为的影响,如音乐和展示布局等。
3.3.采访结果通过采访实验,我们得到了一些有关消费者心理需求和感受的见解。
单片机 数据采集系统 实验报告

单片机数据采集系统实验报告1、被测量温度范围:0-120℃,温度分辨率为0.5℃。
2、被测温度点:2个,每5秒测量一次。
3、显示器要求:通道号2位,温度4位(精度到小数点后一位)。
显示方式为定点显示和轮流显示。
4、键盘要求:(1)定点显示设定;(2)轮流显示设定;(3)其他功能键。
设计内容:1、单片机及电源模块设计:单片机可选用AT89S51及其兼容系列,电源模块可以选用7805等稳压组件,本机输入电压范围9-12v。
2、存储器设计:扩展串行I2C存储器AT24C02。
要求:AT24C02的SCK接P3.2AT24C02的SDA接P3.42、传感器及信号转换电路:温度传感器可以选用PTC热敏电阻,信号转换电路将PTC输出阻值转换为0-5V。
3、A/D转换器设计:A/D选用ADC0832。
要求:ADC0832的CS端接P3.5ADC0832的DI端接P3.6ADC0832的DO端接P3.7ADC0832的CLK端接P2.14、显示器设计:6位共阳极LED显示器,段选(a-h)由P0口控制,位选由P2.2-P2.7控制。
数码管由2N5401驱动。
5、键盘电路设计:6个按键,P2.2-P2.7接6个按键,P3.4接公共端,采用动态扫描方式检测键盘。
6、系统软件设计:系统初始化模块,键盘扫描模块,数据采集模块,标度变换模块、显示模块等。
设计报告要求:设计报告应按以下格式书写:(1)封面;(2)设计任务书;(3)目录;(4)正文;(5)参考文献。
其中正文应包含以下内容:(1)系统总体功能及技术指标描述;(2)各模块电路原理描述;(3)系统各部分电路图及总体电路图(用PROTEL绘制);(4)软件流程图及软件清单;(5)设计总结及体会。
数据采集系统实验报告报告

任务要求1.4路模拟量输入,输入电压范围0~5V,分辨率8位,转换时间100us,具有显示(数码管)测量结果(用10进制显示直流电压值或交流电压峰值)的功能;2.1路模拟量输出,用来分别重现4路被采信号的波形(供示波器观测)摘要本数据采集系统是基于单片机AT89C51来完成的,4路的模拟电压通过通用的8位A/D 转换器ADC0809转换成数字信号后,由单片机进行数据处理,并将处理后的数据送LED显示器显示。
再经过常用的8位D/A转换器DAC0832将数字数据转换成模拟量,供示波器观测。
一、系统的方案选择和论证根据题目基本要求,可将其划为如下几个部分:●4路模拟信号A/D转换●单片机数据处理●LED显示测量结果●D/A转换模拟量输出系统框图如图1所示:图1 单片机数据采集系统框图1、4路模拟信号A/D转换由于被测电压范围为0~5V,分辨率为8位,转换时间为100us,所以A/D转换部分,本系统选择常用的8路8位逐次逼近式A/D转换器ADC0809。
ADC0809芯片有28条引脚,采用双列直插式封装。
下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。
ALE:地址锁存允许信号,输入,高电平有效。
START:A/D转换启动信号,输入,高电平有效。
EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
数据采集与处理实验报告

数据采集与处理实验报告本次实验主要涉及数据采集和处理领域,旨在通过实验练习,学习并掌握数据采集和处理的基本原理、方法和技巧。
一、实验过程1. 数据采集本次实验使用的是Python编程语言进行数据采集。
首先,我们需要了解一下Python中的一些库和工具。
在本次实验中,我们使用的是requests、BeautifulSoup以及pandas 库。
requests库用于发送网络请求,BeautifulSoup库用于解析网页内容,pandas库用于数据分析和处理。
我们选取的数据源是某网站的文章内容,通过requests库发起网络请求,获取到HTML文件,然后使用BeautifulSoup库解析HTML文件,获取我们需要的信息,最终将数据保存为CSV文件。
2. 数据处理数据处理采用了pandas库。
首先,我们读取CSV文件,并将其转换为DataFrame对象。
然后,根据我们的需求对数据进行处理和统计。
本次实验主要运用了一些常用的数据处理方法,如数据清洗、数据筛选、数据排序等方法。
二、实验结果最终,我们成功地采集了指定网站的文章内容,将其保存为CSV文件,并且使用pandas库对数据进行了处理和分析。
下面是我们得到的一些结果:1. 文章数量统计我们对采集到的数据进行统计,获得了文章的数量和发布时间分布。
通过分析,我们发现文章数量最多的月份是3月,共有89篇文章。
2. 词频统计为了更好地分析文章内容,我们对文章进行词频统计。
我们选取了频率较高的10个词汇,分别为:好看、漂亮、特别、好吃、好评、推荐、喜欢、值得、性价比、优惠。
其中,好看是出现最频繁的词汇,共出现了111次。
3. 价格筛选我们对文章中的价格信息进行筛选,并计算其平均值、最大值和最小值。
结果表明,文章中价格的平均值为105元,最大值为199元,最小值为12元。
通过本次实验,我们对数据采集和处理有了更深入的了解。
在数据采集方面,我们学会了如何使用Python编程语言和相关库进行数据爬取和解析。
数据采集_设计实验报告

一、实验目的1. 理解数据采集系统的基本原理和组成;2. 掌握数据采集系统的设计方法和步骤;3. 学会使用数据采集设备进行数据采集;4. 分析和解读采集到的数据。
二、实验原理数据采集系统是指将各种物理量、化学量、生物量等转换成数字信号,并存储、处理和分析的系统。
它由数据采集器、信号调理电路、数据传输线路和数据处理软件等组成。
三、实验器材1. 数据采集器:采用USB接口的数据采集器,可连接计算机;2. 信号调理电路:包括放大器、滤波器等;3. 计算机及数据处理软件;4. 模拟信号源:提供不同的模拟信号;5. 连接线及电源。
四、实验步骤1. 数据采集器与计算机连接,打开数据处理软件;2. 设计信号调理电路,对模拟信号进行放大、滤波等处理;3. 将信号调理电路与数据采集器连接,并连接模拟信号源;4. 设置数据采集器参数,如采样频率、分辨率等;5. 采集模拟信号,并将数据保存到计算机;6. 对采集到的数据进行处理和分析。
五、实验内容1. 采集不同频率的正弦信号,分析频率与幅值的关系;2. 采集不同带宽的滤波信号,分析带宽与滤波效果的关系;3. 采集不同放大倍数的信号,分析放大倍数与信号幅值的关系;4. 采集不同温度下的热电偶信号,分析温度与电势的关系。
六、实验结果与分析1. 频率与幅值的关系:在信号源频率不变的情况下,采集到的正弦信号的幅值随放大倍数的增大而增大,符合正比关系;2. 带宽与滤波效果的关系:在信号源带宽不变的情况下,滤波器的带宽越大,信号中的噪声成分越少,滤波效果越好;3. 放大倍数与信号幅值的关系:在信号源幅值不变的情况下,采集到的信号幅值随放大倍数的增大而增大,符合正比关系;4. 温度与电势的关系:在热电偶温度不变的情况下,采集到的电势随温度的升高而增大,符合线性关系。
七、实验结论1. 数据采集系统是进行科学实验和工程应用的重要工具,具有广泛的应用前景;2. 在数据采集过程中,信号调理电路的设计对采集结果具有重要影响;3. 通过数据处理软件对采集到的数据进行处理和分析,可以得到有价值的实验结果。
数据采集实验报告【最新】

基于Labiew的数据采集实验报告一、实验目的通过软件Labiew编写前面板和程序框图,将外部信号接于数据采集卡的模拟输入0号通道,外部信号由单片机和AD9850组成的信号发生器发出。
当在Labview环境下运行程序时,信号发生器所发出的信号显示在面板上。
仪器面板如下图所示。
二、实验器材PC机一台,单片机开发箱,信号发生器,数据采集卡,示波器,Labiew 软件,220V交流电源,导线若干等。
三、实验原理数据采集(DAQ)是指从系统外部采集数据并进行转换后传输到系统内部的过程,能够提供这一功能的完整系统被称为数据采集系统(Data Acquisition System)。
1.显示波形的原理框图如下:在上图所示的框图中,计算机对采集卡发出指令,启动采集卡,计算机将采集的信号数据进行存储、处理和显示,从而将波形显示在面板上。
采集卡将被测信号转为离散的数字信号,并保存在计算机的数组中,计算机通过Labiew 软件将保存在数组中的离散数字信号显示在图形控件中。
bview 数据采集在Labview 中提供了很多关于数据采集的相关的VI ,利用这些VI 可以创建相关的要求的数据采集系统,下图是程序框图的测量I/O 中的DAQ 子模板界面图。
下面介绍几个主要的数据采集的VI 。
1)DAQmx 创建通道 模拟输入初始化,给其分配一个任务ID 。
2)DAQmx 开始任务 模拟输入开始,将数据暂存在数据采集卡的缓存中。
3)DAQmx 读取 模拟输入读数,从数据采集卡的缓存中读至计算机中。
4) DAQmx 定时采集时的一些参数设置。
信号采集卡计算机 Labiew 软件5)DAQmx清楚任务模拟输入清楚任务。
这几个VI的详细端子图如下所示:我们采用带缓冲的模拟输入,即数据先从DAQ设备传到缓冲中,然后由DAQmxRead.VI读取到应用程序内存中。
这种输入又分为有限多点采集和连续采集。
在设定缓冲大小时,如果使用缺省值或设为-1,则NI-DAQmx根据任务的配置,自动确定读取的采样点数,如果通过控件来输入我们的缓冲大小,则每通道的采样点数(Samples per channel)等于缓冲大小。
空间数据采集实验报告

实验三、空间数据采集实验目的:通过学习空间数据采集,首先我们了解空间数据采集是指将遥感影像、纸质地图、外业观测数据等不同来源的数据进行处理,使之成为GIS软件能够识别和分析的形式,这往往是构建一个具体的GIS系统的第一步。
随着测绘技术的进步,尽管遥感和全数字化测量的数据成果已经是数字形式,但这些数据还需要进一步处理才能被GIS系统使用。
实验内容:首先学习矢量化的步骤,对其进行详细分解为扫描、图像处理、地理配准、数据分层、图形数据追踪以及属性录入;然后是地理配准问题,先是地理配准工具条介绍,其次地理配准的步骤。
实验过程:1.矢量化的步骤:⑴扫描:扫描是纸质地图矢量化的第一步,它将纸质地图转化为计算机可以识别的数字形式,扫描时需要设定的相关参数如下:①扫描模式。
地形图扫描一般采用二值扫描或灰度扫描,黑白航片或卫片采用灰度扫描,彩色航片或卫片采用彩色扫描。
一般情况是将图像进行彩色扫描,然后进行二值化处理。
②扫描分辨率。
根据扫描要求,地形图扫描一般采用300dpi或更高的分辨率③亮度、对比度、色调、GAMMA曲线等,根据需要调整。
⑵图像预处理:经过扫描后的图像还要经过图像预处理,如去噪声、几何纠正、投影变换等。
图像预处理是在图像分析中,对输入图像进行特征抽取、分割、匹配和识别前所进行的处理,主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而提高特征抽取、图像分割、匹配和识别的可靠性。
①几何校正:由于受地图介质及存放条件等因素的影响,地图的纸张容易发生变形,或者遥感影像本身就存在着几何变形,通过几何校正可以在一定程度上改善数据质量。
几何校正最常用的方法是仿射变换法(属于一阶多项式变换),可以在X轴和Y轴方向进行不同比例的缩放,同时进行旋转和平移。
仿射变换的特性是:直线变换后仍为直线,平行线变换后仍为平行线,不同方向上的长度比发生变化。
②投影变换:当数据源采用不同的地图投影时,需要将源数据转换为所需要的地图投影,这一过程称为投影变换,投影变换的方法有正解变换、反解变换和数值变换。
数据采集与输出程序设计实验报告总结心得体会

数据采集与输出程序设计实验报告总结心得体会
完成程序的编写,决不意味着万事大吉。
你认为万无一失的程序,实际上机运行时可能不断出现麻烦。
如编译程序检测出一大堆错误。
有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。
开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。
程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。
有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。
同时它让我知道,只要你努力,任何东西都不会太难。
C语言语言虽简单,但表达能力却强,使用起来灵活方便,而且程序设计自由度大,我们可以从多角度寻找解决问题的方案。
虽然人的能力很强,但不是所有问题解决的最佳途径依赖于人,有时候依靠C语言既省时又省力。
就像对很多的数据进行运算时,对人来说可谓是一项大工程,一点不注意就会全盘皆输,要重新来过,让人头大;而对计算机来说,它只会执行你的指令,不管其他,没有枯燥,不懂乏味,更重要的是,效率尤其高。
不止计算,C语言还有很多用处。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机项目实践报告数据采集器的设计班级:计应102姓名:潘琴学号:1008143233一、项目名称:数据采集器的设计二、项目目的:了解A/D转换的基本概念、并行A/D转换芯片ADC0809的内部结构、与单片机的接口方式,在此基础上完成数据采集器的设计与调试。
以及SPI总线的串行A/D转换芯片TLC549、串行D/A转换器件TLC5615,完成数字电压表、信号发生器的设计。
最后是用单片机的定时器/计数器实现频率与周期的测量,将被测信号的周期或频率在液晶屏上显示出来。
三、项目过程:1、数据采集器的设计Vref(+)Vref(-)OE图1、ADC0808/0809内部逻辑结构1、2、数据采集器的设计过程在Proteus环境下,用ADC0808设计一个数据采集器,通过串行口与上位机相连,如果串行口收到了上位机的采集命令(0x41),就将8路模拟量转换为数字量,通过串行口以ASCII码的形式发送给上位机。
1、2、1、硬件电路如图所示,ADC0808的时钟信号CLK 由Proteus 的虚拟信号源提供,时钟频率的设置为600 kHz ;8路模拟量中IN0接Vcc ,IN7接地,其他6路通过电位器分压获得;单片机串行口的数据收发线与虚拟终端连接。
需要说明的是Proteus 中ADC0808的数据线,OUT1表示最高位,OUT8表示最低位。
1、2、2、程序设计程序的流程如图所示,主程序首先完成对串行口和外部中断的初始化,并等待上位机的采集命令,一旦收到采集命令,就启动对IN0的转换。
转换完成,ADC0808通过EOC 向单片机发出中断请求,单片机响应中断,读取转换结果,并将其保存到数组adbuf 中。
然后启动下一通道的转换,当8路模拟量全部采集完成时,主程序再将存放在数组adbuf 中的8路数字量转换为ASCII 码,通过串行口发送出去,为了能在虚拟终端上得到清楚的显示格式,相邻两路数字量之间输出空格码,每行显示8个数字量后,输出回车、换行码。
数据采集器的程序: #include <reg51.h> #include <absacc.h>#define uint unsigned int#define uchar unsigned charuchar idata adbuf[8]; //存放A/D转换结果uint addr; //IN0~IN7的通道地址uchar n; //通道计数void init_serial(void){ SCON=0x50; //0101,0000 8位数据位,无奇偶校验TMOD=0x20; //定时器T1工作于方式2PCON=PCON&0x7f; //SMOD=0TH1=-3; //装入时间常数,波特率为9600TL1=-3;TR1=1;} /启动定时器T1void send(uchar dat){ SBUF=dat;while(TI==0);TI=0;}void int0(void) interrupt 0{ adbuf[n]=XBYTE[addr]; //读取并保存当前转换结果addr++; //指向下一通道的地址n++; //计数器加工厂if(n<8)XBYTE[addr]=0; //启动对一一通道的转换elseEX0=0;}void getadc(void){n=0;addr=0x7ff8; //指向IN0通道的地址XBYTE[addr]=0; //启动对当前通道的转换EX0=1; //允许外部中断0中断while(n<8);} //等待8路模拟量转换完成void main(){uchar i;init_serial(); //初始化串行口IT0=1; //外部中断0下降沿触发EA=1; //开中断while(1){ while(RI==0); //等待接收完一个字符RI=0; //清除接收标志i=SBUF; //读取收到的字符if(i==0x41){ getadc(); //依次完成对8个通道模拟量的转换for(i=0;i<8;i++){ send(adbuf[i]/100+0x30); //发送百位的ASCLL码adbuf[i]=adbuf[i]%100;send(adbuf[i]/10+0x30); //发送十位的ASCLL 码 send(adbuf[i]%10+0x30); //发送个位的ASCLL 码 send(0x20); //发送空格码 send(0x20); } send(0x0d); //发送回车、换行 send(0x0a);} } }1、2、3、调试方法与步骤在Keil 下建立项目,输入源程序,编译后进入调试方式全速运行,在虚拟终端的窗口中输入大写字母“A ”,此时8路模拟量转换结果会在一行中显示出来,依次为IN0、IN1、…、IN7,由于IN0接+5V ,IN7接地,因此对应的显示值为255和000,而IN1~IN6的值由电位器RV1中心抽头的位置确定,调节RV1,然后在虚拟终端的窗口中输入大写字母“A ”,IN1~IN6的值将随之变化。
如果在虚拟终端的窗口无任何显示,首先应检查串行口的初始化是否正确、虚拟终端的波特率是否与串行口一致、串行口能否收到采集命令“A ”。
如果串行口能收到采集命令,应检查外部中断的初始化是否正确、启动信号START 、转换结束信号EOC 、输出允许信号OE 的连接是否正确,ADC0808的时钟CLOCK 设置不正确,也将无法完成A/D 转换。
如果程序能够将IN0~IN7的转换结果存入数组adbuf ,应重点检查串行口数据发送函数send ()。
2、数字电压表的设计2、1、8位串行A/D 转换器TLC5492、2、数字电压表的设计过程利用TCL549转换器设计一个简易数字电压表,用4位LED 显示器将被测电压显示出来,测量范围为0.000~5.000V (电路连接:将ACS 、ACLK 、ADO 分别与P10~P12相连)。
2、2、1、硬件电路REF+ REF- AINCS CL KTLC549内部结构REF-直接接到Vcc、GND,模拟输入AIN接电位器的中心抽头,调节电位器即或改变被测输入电压值。
2、2、2程序设计程序首先读取A/D转换结果存入adin,其值在0~255之间,对应的电压值u=adin/255*5000(mV),然后将u转换为4位BCD码送显示缓存,并调用显示程序将显示出来,小数点固定在最高位。
数字电压表的设计程序:#include <reg51.h>#define uchar unsigned char#define ulong unshgned longuchar code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c,0xff};uchar dbuf[4]={0,0,0,0};sbit AD_CS=P1^0;sbit AD_CLK=P1^1;sbit AD_DAT=P1^2;bdata uchar adin;sbit adin0=adin^0;void delay(void){uchar i;for(i=0;i<20;i++);}uchar getad(void) //A/D转换程序{uchar i;AD_CS=0; //令CS为低选中TLC549delay(); //延时for(i=0;i<8;i++) //循环读取8位A/D转换结果{AD_CLK=0; //令CLK引脚为低adin=adin<<1; //先读取高位,后读取低位adin=AD_DAT; //读取数据线的一位数据AD_CLK=1; } //令CLK恢复为高位AD_CS=1;return adin;}void disp(void){ uchar i,n,bsel;bsel=0xfe; //首先点亮最低位for(n=0;n<4;n++){P2=bsel; //位选口P0=segtab[dbuf[n]]; //将显示缓存的数据转换为字段码显示if(n==3) P0=P0&0x7f; //点亮最高位的小数点bsel=(bsel<<1)+1; //准备显示下一位for(i=1;i<200;i++); //延时P0=0xff;} //熄灭所有字段}void main(){ulong u;uchar i;while(1){u=(ulong)getad()*5000/255; //将转换结果换成电压值for(i=0;i<3;i++) //转换为4位BCD码送显示缓存{dbuf[i]=u%10;u=u/10;}dbuf[3]=u;disp(); } //显示电压值}2、2、3、调试方法在Keil下建立项目,输入源程序,编译后进入高度方式全速运行,数码管将以“X.XXX”的格式显示当前测量的电压值,调节电位器,数码管上的电压值将随之而变化。
如果数码管没有显示,应首先检查显示及显示函数。
注意,将电压值u转换成BCD码送显示缓存如果出问题,也会影响显示结果。
如果数码管能正常显示,但显示的电压值与实际值不同,一般A/D转换程序有问题,可重点检查getad()函数,如果电位器W的中心抽头从最低调到最高,该函数返回的A/D转换结果也相应地由0x00变化到0xFF,说明A/D转换是对的,应检查语句“u=(ulong)getad()*5000/255;”以及随后的BCD码转换程序。
3、信号发生器的设计3、1、串行D/A转换器TLC5615TLC5615内部结构3、2、用TLC5615设计信号发生器的过程3、2、1、在Proteus环境下,用TLC5615设计一个锯齿波发生器。
(1)、硬件电路如图所示,将TLC5615的SCLK、CS、DOUT分别与单片机的P1.0、P1.1、P1.2相连,基准电压接+5V。
(2)、程序设计为了产生锯齿波,可定义一个用于计数的字符变量n,其值由0开始加1,每次加1后就将其输出,由TLC5615转换为相应的电压值,当n为255时,再加1又回到0,这样就实现了一个周期的转换。
程序如下:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit SCLK=P1^0; //时钟输入sbit CS=P1^1; //片选信号sbit DIN=P1^2; //串行数据输入void datout(uint dat) //向TL5615输出16位数据{uchar i;CS=1; //初始化片选信号为高SCLK=0; //初始化时钟为低CS=0; //选中TL5615for(i=0;i<16;i++){dat=dat<<1; //将最高位移入进位位CYDIN=CY; //将数据送到DIN引脚SCLK=1; //SCLK产生上升沿SCLK=0; } //SCLK恢复为低CS=1; } //片选信号恢复为高void main(void){uchar i=0;while(1){i=i++;datout(i<<2); }}在Keil下建立项目,输入源程序,编译后进入调试方式全速运行,示波器显示的波形如图所示。