《串行模拟信号采集2.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《串行模拟信号采集2

课程设计报告 设计课题: 串行模拟信号采集(2) 专业班级: 学生姓名: 指导教师: 设计时间: 串行模拟信号采集(2) 课程设计目的 1.熟悉单片机有关器件,掌握单片机工作原理 2.熟练运用单片机编程的一般技巧,对单片机进行编程 3.掌握ADC0831的工作原理与单片机接口原理及其应用 4.掌握单片机系统调试的一般步骤及方法 二、课程设计题目(问题)描述和要求 对ADC0831的输入信号进行采集,然后对所采集的信号进行数字滤波后,应用串口液晶对所采集的数据进行显示。 三、系统分析与设计 系统总体设计 信号采集:通过ADC0831对模拟信号进行采集,转换成数字信号输出 串并转换:利用编程实现对ADC0831输出的串行数字信号进行采集,转换为并行信号 数字滤波:是通过程序编程完成的,原理是将采集的十个数进行比较,去掉其中最大的和最小的信号,然后将剩余的八个信号进行求平均值,得出平均信号的值。 信号输出:利用液晶显示器LCD1602对输出信号进行串行显示 系统详细设计 接口电路 图一 SCLD接口电路图 图2 89C51单片机接口电路图 图3 ADC0831与单片机的接口电路图 程序流程图 源程序清单 #includereg52.h #includeintrins.h #includeabsacc.h #include Dis_slcd1.h sbit Ldat=P3^5; /*LCD数据端接P3.5*/ sbit L=P3^4; /*LCD时钟端接P3.4*/ sbit p0831cs=P3^3; /*0831片选接P3.3*/ sbit p0831clk=P3^4; /*0831时钟接P3.4*/ sbit p0831data=P3^5; /*0831数据端接P3.5*/ sbit bflag=ACC^7; #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar tempdata[10]; uchar dis[3]; uchar read0831( ) { uchar idata m,TempData=0 ; p0831cs=0; p0831clk=1; p0831clk=0; p0831clk=1; for(m=0;m9;m++) /*进行采集,循环采集8次*/ { TempData=1; p0831clk=0; if(p0831data==1) TempData|=0x01; /*用TempDATA循环存入0831输出的内容*/ p0831clk=1; } p0831clk=0; p0831clk=1; p0831cs=1; return TempData ; /*返回值*/ } uchar ave0831() /*数字滤波程序,取10个数比较去掉最大和最小的数然后进行取平均值*/ { uint min,max,i,ave=tempdata[0]; min=tempdata[0]; max=tempdata[0]; for(i=1;i10;i++) /*将采集到的十个数据排序*/ { if(tempdata[i]min)min=tempdata[i]; if(tempdata[i]max)max=tempdata[i]; ave+=tempdata[i]; } ave=ave-min-max; /*去掉最大值和最小值求和*/ ave/=8; /*取平均值*/ return ave; /*返回值*/ } Delay() /*延时子程序*/ { uint i; for(i=60000;i0;i--); } main() { uchar p,n,i; uint p0831ave; while(1) { for(p=0;p10;p++) /*采集10个0831输出的数据*/ { tempdata[p]=read0831(); } Delay(); p0831ave=ave0831(); /*数字滤波*/ p0831ave=p0831ave*100/51; /*取回的数经过

文档评论(0)

xiayutian80 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档