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

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

ID:18610975

大小:173.50 KB

页数:15页

时间:2018-09-19

数据采集器的设计实验报告_第1页
数据采集器的设计实验报告_第2页
数据采集器的设计实验报告_第3页
数据采集器的设计实验报告_第4页
数据采集器的设计实验报告_第5页
资源描述:

《数据采集器的设计实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、单片机项目实践报告数据采集器的设计班级:计应102姓名:潘琴学号:100814323315一、项目名称:数据采集器的设计二、项目目的:了解A/D转换的基本概念、并行A/D转换芯片ADC0809的内部结构、与单片机的接口方式,在此基础上完成数据采集器的设计与调试。以及SPI总线的串行A/D转换芯片TLC549、串行D/A转换器件TLC5615,完成数字电压表、信号发生器的设计。最后是用单片机的定时器/计数器实现频率与周期的测量,将被测信号的周期或频率在液晶屏上显示出来。三、项目过程:1、数据采集器的设计

2、1、1、ADC0808/0809的内部结构STARTCLKIN0IN1IN2IN3IN4IN5IN6IN7EOCABCALEVccGNDD0D1D2D3D4D5D6D78路模拟开关8位A/D转换器地址锁存与译码三态输出锁存器Vref(+)Vref(-)OE图1、ADC0808/0809内部逻辑结构1、2、数据采集器的设计过程在Proteus环境下,用ADC0808设计一个数据采集器,通过串行口与上位机相连,如果串行口收到了上位机的采集命令(0x41),就将8路模拟量转换为数字量,通过串行口以ASCII

3、码的形式发送给上位机。1、2、1、硬件电路15如图所示,ADC0808的时钟信号CLK由Proteus的虚拟信号源提供,时钟频率的设置为600kHz;8路模拟量中IN0接Vcc,IN7接地,其他6路通过电位器分压获得;单片机串行口的数据收发线与虚拟终端连接。需要说明的是Proteus中ADC0808的数据线,OUT1表示最高位,OUT8表示最低位。1、2、2、程序设计开始初始化串行口初始化外部中断收到采集命令启动对IN0的转换等待8路转换完成发送adbuf中的转换结果中断服务程序读取当前转换结果存入a

4、dbuf数组8路转换完成?启动对下一路的转换中断返回程序的流程如图所示,主程序首先完成对串行口和外部中断的初始化,并等待上位机的采集命令,一旦收到采集命令,就启动对IN0的转换。转换完成,ADC0808通过EOC向单片机发出中断请求,单片机响应中断,读取转换结果,并将其保存到数组adbuf中。然后启动下一通道的转换,当8路模拟量全部采集完成时,主程序再将存放在数组adbuf中的8路数字量转换为ASCII码,通过串行口发送出去,为了能在虚拟终端上得到清楚的显示格式,相邻两路数字量之间输出空格码,每行显示

5、8个数字量后,输出回车、换行码。数据采集器的程序:#include#include15#defineuintunsignedint#defineucharunsignedcharucharidataadbuf[8];//存放A/D转换结果uintaddr;//IN0~IN7的通道地址ucharn;//通道计数voidinit_serial(void){SCON=0x50;//0101,00008位数据位,无奇偶校验TMOD=0x20;//定时器T1工作于方式2PC

6、ON=PCON&0x7f;//SMOD=0TH1=-3;//装入时间常数,波特率为9600TL1=-3;TR1=1;}/启动定时器T1voidsend(uchardat){SBUF=dat;while(TI==0);TI=0;}voidint0(void)interrupt0{adbuf[n]=XBYTE[addr];//读取并保存当前转换结果addr++;//指向下一通道的地址n++;//计数器加工厂if(n<8)XBYTE[addr]=0;//启动对一一通道的转换elseEX0=0;}voidge

7、tadc(void){n=0;addr=0x7ff8;//指向IN0通道的地址XBYTE[addr]=0;//启动对当前通道的转换EX0=1;//允许外部中断0中断while(n<8);}//等待8路模拟量转换完成voidmain(){uchari;init_serial();//初始化串行口IT0=1;//外部中断0下降沿触发EA=1;//开中断while(1){while(RI==0);//等待接收完一个字符RI=0;//清除接收标志i=SBUF;//读取收到的字符if(i==0x41){geta

8、dc();//依次完成对8个通道模拟量的转换for(i=0;i<8;i++){send(adbuf[i]/100+0x30);//发送百位的ASCLL码adbuf[i]=adbuf[i]%100;15send(adbuf[i]/10+0x30);//发送十位的ASCLL码send(adbuf[i]%10+0x30);//发送个位的ASCLL码send(0x20);//发送空格码send(0x20);}send(0x0d);//发送回车、换行send(0x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。