嵌入式系统课程设计.doc_第1页
嵌入式系统课程设计.doc_第2页
嵌入式系统课程设计.doc_第3页
嵌入式系统课程设计.doc_第4页
嵌入式系统课程设计.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统课程设计成员信息小组编号3实验题目温控成员信息姓 名学 号实验分工分值联系信箱组长贾文涛200406020030单片机代码、测试0.5成员1高昆鹏200406020041上位机、装焊、测试0.5实验目的1、 设计硬件电路,提高硬件设计能力。2、 分析电路,编写控制和通信软件代码。3、 提高动手能力和协作能力。实验内容1、 设计硬件电路,进行焊接和电路的连接,并进行验证。2、 编写温度控制的代码,进行加载,在LCD上进行显示。3、 编写串口通信的窗口软件,进行通信。4、 数据采集和验证,进行总结。实验原理和方案1. 硬件1) 总体结构 单片机通过P3.7数据端口读取DS18B20采集的温度值后,需要通过RS-232串口与PC机进行通信,在这里要注意,单片机AT89S52的数据端口采用TTL/CMOS逻辑电平,而PC机的串口则采用RS-232电平,因此需要外接逻辑转换器。AT89S51单片机PC上位机接受并显示温度DS18B20温度传感器总体结构图单片机通过数据引脚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;k9;k+)getk=read_byte();temp_msb=get1;temp_lsb=get0;temp_msb = temp_msb8;temp_msb = temp_msb|0x00FF;temp_lsb = temp_lsb|0xFF00;temp_lsb = temp_lsb&temp_msb;return(temp_lsb);通过LED显示温度值:void intTL0() interrupt 1 /TL0 定时中断处理函数 TL0 = -3686%256; /定时器中断时间间隔TH0 = -3686/256; leddisp(); /每次定时中断显示更新一次void leddisp(void)if(lednum = 6) /更新需要现实的数码位 lednum = 0; else lednum+; P2 = Led_en(lednum);P1 = segtabledlednum; 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() VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; BYTE bt; float tt=0; if(m_ctrlComm.GetCommEvent()=2) /事件值为2表示接收缓冲区内有字符 variant_inp=m_ctrlComm.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;klen;k+) safearray_inp.GetElement(&k,rxdata+k);/转换为BYTE型数组 for(k=0;klen;k+) /将数组转换为Cstring型变量 bt=*(int *)(rxdata+k); /字符型 if(bt=255)/发送开始标志,和下位机上Com_Out(0xFF);/发送标志对应 else if(bt16&pp=0)/ /temp_msb i=bt; pp=1;/接受temp_msb标志 else /temp_lsb tt=(float)bt/16 + i*16;/根据DS18B20的温度存放方式处理 i=0; pp=0; strtemp.Format(%.3f,tt); m_strRXData=strtemp;/在屏幕上显示出来 UpdateData(FALSE); 特色和创新本实验主要是各部件之间的通信,对于温度显示和报警要十分关注通行的实时性,为了保证能够快速通信。把温度格式的处理在上微机上实现能够提高实时性能。 在高级功能方面,主要做到了两点:实现了在LED上显示了实时温度值;实现了温度上下限,并报警。 实验总结和建议组长:贾文涛通过这次课程实践,学到了很多工程方面的东西,锻炼了动手能力。第一次用单片机做东西,完整的过了一遍流程,应该说是达到了老师的教学目的,更重要的是,自己积累了经验。也许以后不会从事这方面的工作,但相信还是会有机会用到的。关于老师的教学方面,个人觉得老师的课内容充实,经验性较强,很适用!建议老师有机会多给同学们授课,如果可能的话,希望在研究生阶段参加一些工程项目!最后,感谢老师和辅导教员的谆谆教导和辛勤工作。组员:高昆鹏实验中主要存在时序方面的错误,以及引脚的电位问题,由于没有示波器,对板子引脚用万能表来测也不方便,只好通过显示管来测试。不断的对引脚的电位修改以及进行时序调整,最终获得有效的结果。通过实验,在动手方面和分析问题方面的能力有了些提高。在焊接板子的过程中,对引脚的连接和配置也有了更多的认识,也学会了一些硬件的测试方法。当然也存在很多不足,如在电路设计方面的欠缺,很多时候都是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论