基于串口通信的数据采集系统.docVIP

  1. 1、本文档共18页,可阅读全部内容。
  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文档。上传文档
查看更多
数据采集与实践 基于串口通信的数据采集系统 综合设计 电子信息科学与技术 物理与电子技术学院 2012年12月18日 电工电子中心2009年5月绘制 基于串口通信的数据采集系统 一.任务解析 1、串口通信接口,单片机232接口与PC机232接口通信相关内容 2、单片机控制的ADC,电路,控制程序 3、上位机软件编写,VB基础,MSCOMM控件,代码分析 4、通信协议,为什么要通信协议,如何设计通信协议 5、温度(电压)数据采集系统设计实现 二.总要求 对【一】中5点任务,结合授课内容,查阅相关资料,进行实验验证,撰写书面报告(电子版)。考虑到同学们的实际水平,要求你们立足老师提供的现成资料,完成实验验证,同时自己再查阅一些资料后,对所掌握的资料进行合理的整理,完成报告,对创新不作要求。 三.实验内容 主程序 主程序进行系统初始化操作,主要是进行定时/计数器的初始化。 1.定时/计数器0中断服务程序 应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。 2.温度采集及模数转换子程序ADCON 该子程序进行温度采样并将其转换为8位数字量传送给89C51的P0口。采样得到的温度数据存放在片内RAM的20H单元中。 3.温度计算子程序CALCU 根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在DATATAB数据表中,由于篇幅关系,本程序只给出0-49℃的温度数据。一个温度有两个字节组成,前一字节为温度值,后一字节为该温度所对应的热敏电阻上的电压的数字量。根据采样值,通过查表及比较的方法计算出当前的温度值,并将其存入片内RAM的21H单元。采用查表法计算温度值时为了克服热敏电阻的阻值——温度特性曲线的非线性,提高测量精度。 4.驱动控制子程序DRVCON 该子程序调节温度,当温度高于上限温度时(本程序设为30℃), P1.0输出驱动控制信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为25℃),P1.0停止输出,温度上升,周而复始;工作状态有LED1-LED4指示。 5.十进制转换子程序METRICCON 将存放于内部RAM21H单元的当前温度值得二进制数形式转换为十进制数(BCD码)形式,以便输出显示,转换结果存放在片内RAM的32H单元(百位)、31H(十位)、30H单元(个位)。 6.数码显示子程序DISP 该子程序利用89C51串口的方式0串行移位寄存器工作方式,将片内RAM的30H、31H、32H单元的BCD码查表转换为七段码后由RXD端串行发出去,然后经74LS164串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。 3.1串口通信(核心内容) ===================================================== //发送程序 ===================================================== void send_answer(unsigned char n, unsigned char *str) { unsigned char i,temp; temp=n; for(i=0;in;i++) temp += *(str+i); temp=~temp+1; uart_putc(:); uart_putc(hex_to_asc(n,1)); uart_putc(hex_to_asc(n,0)); for(i=0;in;i++) { uart_putc(hex_to_asc(*(str+i),1)); uart_putc(hex_to_asc(*(str+i),0)); } uart_putc(hex_to_asc(temp,1)); uart_putc(hex_to_asc(temp,0)); } ===================================================== //串口接收中断程序 ===================================================== void serial_int(void) interrupt 4 { static unsigned char i=0; static unsigned char num=0; static

文档评论(0)

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

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

1亿VIP精品文档

相关文档