实验报告03 - 实验报告 - 书业网.docVIP

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

实验报告03 - 实验报告 - 书业网 篇一:实验报告03 嵌入式系统课程设计 成员信息 实验目的 1、设计硬件电路,提高硬件设计能力。 2、分析电路,编写控制和通信软件代码。 3、提高动手能力和协作能力。 实验内容 1、设计硬件电路,进行焊接和电路的连接,并进行验证。 2、编写温度控制的代码,进行加载,在LCD上进行显示。 3、编写串口通信的窗口软件,进行通信。 4、数据采集和验证,进行总结。 实验原理和方案 1. 硬件 1) 总体结构 单片机通过P3.7数据端口读取DS18B20采集的温度值后,需要通过RS-232串口与PC机进行通信,在这里要注意,单片机AT89S52的数据端口采用TTL/CMOS逻辑电平,而PC机的串口则采用RS-232电平,因此需要外接逻辑转换器。 总体结构图 单片机通过数据引脚P3.0(RXD)和P3.1(TXD)完成串口的数据通信,为了保证通信的正确和可靠,单片机程序中需要正确的设置工作方式和通信参数,通信参数主要包括波特率,校验位,数据位和停止位等,通信参数必须要与PC机的串口通信设置相一致。 2) 单片机系统 温度监控系统由受控对象(DS18B20数字温度传感器),下位机(51单片机)和上位机(PC机)组成。单片机通过P3.7接口读取温度传感器采集到的温度值,通过P3.6连接喇叭报警,通过串口将温度值传送至上位机,上位机通过应用软件将传来的温度值显示出来。 3) 温度传感器DS18B20 实验中温度传感器采用DS18B20数字温度计,与单片机构成温度控制系统,无需外接ADC,DS18B20具有独特的单总线接口,只需一位I/O即可进行通信,不许外接电源。 2. 软件 温度监控系统的软件主要包括两个部分: 1) 下位机程序:AT89S52上接受温度传感器和发送温度值程序; 单片机读取DS18B20实时温度 unsigned int Read_Temperature(void) { unsigned int temp_lsb,temp_msb; int k; ow_reset(); write_byte(0xCC); write_byte(0x44); delay(5); ow_reset(); write_byte(0xCC); write_byte(0xBE); for(k=0;klt;9;k++) { get[k]=read_byte(); } temp_msb=get[1]; temp_lsb=get[0]; temp_msb = temp_msblt;lt;8; temp_msb = temp_msb|0x00FF; temp_lsb = temp_lsb|0xFF00; temp_lsb = temp_lsbamp;temp_msb; return(temp_lsb); } 通过LED显示温度值: void intTL0() interrupt (来自:WWw.Zaidian.Com 在点网)1 //TL0 定时中断处理函数 { TL0 = -3686%256; //定时器中断时间间隔 TH0 = -3686/256; leddisp(); //每次定时中断显示更新一次 } void leddisp(void) { if(lednum == 6) //更新需要现实的数码位 { lednum = 0; } else { lednum++; } P2 = ~Led_en(lednum); P1 = segtab[led[lednum]]; } uchar Led_en(char lednum){ uchar led_en = 0; switch (lednum){ case 0: led_en = 1; break; case 1: led_en = 2; break; case 2: led_en = 4; break; case 3: led_en = 8; break; case 4: led_en = 16; break; case 5: led_en = 32; break; } return(led_en); } 2) 上位机程序:PC上接受温度值并处理温度值的程序。 PC接受温度值并显示 通过运用VC++6.0中ActiveX串口通讯控件处理串口通信,串口参数设置为波特率9600,无校验,8个数据位,1个停止位。 通过ActiveX穿孔通信控件实现,程序为事件驱动方式,处理数据源代码如下: void CSCommTestDlg::OnComm() { VAR

文档评论(0)

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

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

1亿VIP精品文档

相关文档