单片机应用系统设计工程实践报告_第1页
单片机应用系统设计工程实践报告_第2页
单片机应用系统设计工程实践报告_第3页
单片机应用系统设计工程实践报告_第4页
单片机应用系统设计工程实践报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、2016-2017学年第1学期单片机应用系统设计/工程实践(课号:103G06B/D/E)实 验 报 告项目名称:基于AT89C51单片机温度报警系统学 号 姓 名 班 级 学 院 信息科学与工程学院 完成时间 目 录一、 项目功能及要求31.1、课程设计的性质和目的31.3、项目设计要求3二、 系统方案设计及原理32.1、设计主要内容32.2 、AT89C51单片机简介32.3 、DS18B20简介42.4 、数码管显示52.5、报警电路6三、系统结构及硬件实现73.1、总电路图73.2、单片机控制流程图8四、软件设计过程8五、实验结果及分析85.1 、Proteus仿真85.2 、C程序调

2、试9六、收获及自我评价14七、参考文献15一、 项目功能及要求1.1、课程设计的性质和目的 本温度报警器以AT89C51单片机为控制核心,由一数字温度传感器DS18B20测量被控温度,结合7段LED以及驱动LED的74LS245组合而成。当被测量值超出预设范围则发出警报,且精度高。利用现代虚拟仿真技术可对设计进行仿真实验,与单片机仿真联系紧密的为proteus仿真,利用keil软件设计单片机控制系统,然后与proteus进行联合调试,可对设计的正确性进行检验。1.2、课程设计的要求1、遵循硬件设计模块化。2、要求程序设计结构化。3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。4、

3、要求程序结构合理,语句使用得当。5、适当追求编程技巧和程序运行效率。1.3、项目设计要求1、 基于AT89C51单片机温度报警系统;2、设计3个按键分别为:设置按钮、温度加、温度减;3、DS18B20温度传感器采集温度,并在数码管上显示按键的区别;二、 系统方案设计及原理2.1、设计主要内容本设计以AT89C51单片机为核心,从而建立一个控制系统,实现通过3个按键控制温度,以达到设置温度上下限的功能,并在数码管上显示三个数字当前的温度上下限设置值和DS18B20温度采集值的显示(精确到小数点后一位),当温度高于上限或者低于下限蜂鸣器报警。 2.2 、AT89C51单片机简介AT89C51是一个

4、低功耗,高性能CMOS8位单片机,片内含4kBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案.AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器,32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中

5、断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。 此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。AT89C51单片机的基本结构和外部引脚如下图所示 。 图2.12.3 、DS18B20简介 (1)DS18B20内部结构 DS18B20是Dallas公司继DS1820后推出的一种改进型智能数字温度传感器,与传

6、统的热敏电阻相比,只需一根线就能直接读出被测温度值,并可根据实际需求来编程实现912位数字值的读数方式。 DS18B20的外形如一只三极管,引脚名称及作用如下:GND:接地端, DQ:数据输入/输出脚,与TTL电平兼容,VDD:可接电源,也可接地。因为每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采用数据总线供电方式时VDD接地,可以节省一根传输线,但完成数据测量的时间较长;采用外部供电方式则VDD接+5V,多用一根导线,但测量速度较快,内部结构如图如图3-1.图3.1 (2)DS18B20供电方式 DS18B20可以采用外部电源供电和寄生电源供电两种模式。外部

7、电源供电模式是将DS18B20的GND直接接地,DQ与但单总线相连作为信号线,VDD与外部电源正极相连。如图3.2图3.2(3)DS18B20的测温原理 DS1820是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程

8、。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。DS18B20内部对此计算的结果可提供0.5的分辨率。温度以16bit带符号位扩展的二进制补码形式读出,DS18B20遵循单总线协议,每次测温时都必须有4个过程:初始化、传送ROM操作命令、传送ROM操作命令、数据交换。 2.4 、数码管显示 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见数码管有10根管脚。管脚排列如下图所示。其中COM为公共端,根据内部发光二极管的接线形式可分为共阴极和共阳极两种。 共阳、阴极内部原理图(如图4.1),其中引脚图的两个COM端连在一起,是公共端

9、,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。本次试验的显示电路如图4.2. 图4.1 图4.22.5、报警电路 通过P2口控制,当温度高于设置的上限或者设置的下限时蜂鸣器响报警。如图5.1.图5.2三、系统结构及硬件实现3.1、总电路图本电路是由AT89C51和DS18B20为核心,加上串口电路来实现对整个电路的控制和设计,电路图如下。 3.2、单片机控制流程图四、软件

10、设计过程(1)、把程序在Keil uVision4中调试,成功无错误后生成Hex文件。(2)、根据电路图在proteus软件中回去电路图,检查无错误。(3)、双击89C51导入生成Hex文件。(4)、点击proteus软件左下方的开始键,进行仿真,观察高低电平情况。五、实验结果及分析5.1 、Proteus仿真 (1) Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片

11、机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus有较高的推广利用价值。(2)在仿真时按设置按钮,按一次设置温度上限,按第二次设置温度下限,按第三次回到当前温度显示值,其它两

12、个按键是对设置值的加减;或者利用串口在上位机上进行设置,端口选择COM2,波特率选择9600,三个按钮的功能和仿真图里的按键功能一样,对温度进行设置。如图5.1图5.15.2 、C程序调试在Kill4中对程序进行编写调试源代码如下:# include #define uint unsigned int #define uchar unsigned char /宏定义 sbit but1=P10; sbit but2=P11; sbit but3=P12; sbit p34=P24; sbit p35=P25; sbit p36=P26; sbit dp=P07; sbit p37=P27;sb

13、it DQ=P22; /定义DS18B20总线I/Osbit LING=P20; /定义响铃 uchar shezhi=0;uint shangxian=300; /上限报警温度,默认值为60uint xiaxian=200; /下限报警温度,默认值为0 uchar code LEDData=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf; bit s1,s2,s3,s4; /*延时子程序*/ void Delay(uint i) while( i- ); void delayms(uint x)uchar i;while

14、(x-);for(i=0;i0;i-) DQ=0; / 给脉冲信号 dat=1; DQ=1; / 给脉冲信号 if(DQ) dat|=0x80; Delay(4); return(dat); /*写一个字节*/ void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat=1; void Tmpchange(void) /发送温度转换命令 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作

15、 WriteOneChar(0x44); /启动温度转 unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Tmpchange(); Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; tshangxian | exiaxian) LING=

16、0; /温度不在范围内报警 else LING=1; Disp_Temperature(e); /显示温度else if(shezhi=1) Disp_Temperature(xiaxian); /显示温度下限else if(shezhi=2) Disp_Temperature(shangxian); /显示温度上限 六、收获及自我评价 这次课程设计不光是要掌握模单片机书本上的理论基础,还需要我们锻炼自己的动手能力。用时8周,需要用到ProteusISIS绘图,同时也用到keil编程,仿真验证程序正确。仿真时发现按键不响应、数码管显示乱码,又返回去重新改程序,给单片机刷入程序第2次验证,最后终

17、于发现了问题,原来是接线错误,修改之后果然调试正确。调试成功后真的很开心,确实让我学到了很多东西,很感谢这次的实践机会通过这次设计,使我们得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识。总的感受有以下几方面:1、通过本次设计,我们不但对单片机有了更深的了解,对一个课题如何画流程图,编程序等有了一定的认识。2

温馨提示

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

评论

0/150

提交评论