ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:55.54KB ,
资源ID:11115215      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11115215.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(单片机应用系统设计工程实践报告.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

单片机应用系统设计工程实践报告.doc

1、2016—2017学年第1学期 单片机应用系统设计/工程实践 (课号:103G06B) 实 验 报 告 项目名称: 基于AT89C51单片机温度报警系统 学 号 姓 名 班 级 学 院 信息科学与工程学院 完成时间 2016。10 目 录 一、 项目功能及要求 3 1。1、课程设计

2、的性质和目的 3 1。3、项目设计要求 3 二、 系统方案设计及原理 3 2.1、设计主要内容 3 2。2 、AT89C51单片机简介 3 2.3 、DS18B20简介 4 2.4 、数码管显示 5 2。5、报警电路 6 三、系统结构及硬件实现 7 3.1、总电路图 7 3.2、单片机控制流程图 8 四、软件设计过程 8 五、实验结果及分析 8 5。1 、Proteus 仿真 8 5。2 、C程序调试 9 六、收获及自我评价 14 七、参考文献 15 一、 项目功能及要求 1。1、课程设计的性质和目的 本温度报警器以AT89C51单片机为控制核心,

3、由一数字温度传感器DS18B20测量被控温度,结合7段LED以及驱动LED的74LS245组合而成.当被测量值超出预设范围则发出警报,且精度高。  利用现代虚拟仿真技术可对设计进行仿真实验,与单片机仿真联系紧密的为proteus仿真,利用keil软件设计单片机控制系统,然后与proteus进行联合调试,可对设计的正确性进行检验。 1。2、课程设计的要求 1、遵循硬件设计模块化. 2、要求程序设计结构化。 3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。 4、要求程序结构合理,语句使用得当。 5、适当追求编程技巧和程序运行效率。 1.3、项目设计要求 1、 基于A

4、T89C51单片机温度报警系统; 2、设计3个按键分别为:设置按钮、温度加、温度减; 3、DS18B20温度传感器采集温度,并在数码管上显示按键的区别; 4、当温度超过设定的上限或者低于设置的下限温度时蜂鸣器报警; 二、 系统方案设计及原理 2。1、设计主要内容 本设计以AT89C51单片机为核心,从而建立一个控制系统,实现通过3个按键控制温度,以达到设置温度上下限的功能,并在数码管上显示三个数字当前的温度上下限设置值和DS18B20温度采集值的显示(精确到小数点后一位),当温度高于上限或者低于下限蜂鸣器报警。 2.2 、AT89C51单片机简介 AT89C51是一个低

5、功耗,高性能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层中断嵌套中断

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

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

8、2)DS18B20供电方式 DS18B20可以采用外部电源供电和寄生电源供电两种模式。外部电源供电模式是将DS18B20的GND直接接地,DQ与但单总线相连作为信号线,VDD与外部电源正极相连。如图3。2 图3.2 (3)DS18B20的测温原理 DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值.计数器被预置到对应于-55℃的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃.同时,计数器被复位到一个值,这个值由斜坡式累加

9、器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程.  斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。DS18B20内部对此计算的结果可提供0。5℃的分辨率。温度以16bit带符号位扩展的二进制补码形式读出,  DS18B20遵循单总线协议,每次测温时都必须有4个过程]: 初始化、传送ROM 操作命令、传送ROM操作命令、数据交换。 2.4 、数码管显示 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见数码管有10根管脚。管脚排列

10、如下图所示。其中COM为公共端,根据内部发光二极管的接线形式可分为共阴极和共阳极两种。 共阳、阴极内部原理图(如图4.1),其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。本次试验采用共阳极,显示电路如图4.2。 图4。1

11、 图4。2 2.5、报警电路 通过P2口控制,当温度高于设置的上限或者设置的下限时蜂鸣器响报警。如图5。1。 图5.2 三、系统结构及硬件实现 3。1、总电路图 本电路是由AT89C51和DS18B20为核心,加上串口电路来实现对整个电路的控制和设计,电路图如下。 3.2、单片机控制流程图 四、软件设计过程 (1)、把程序在Keil uVision4中调试,成功无错误后生成Hex文件。 (2)、根据电路图在proteus软件中回去电路图,检查无错误. (3)、双击89C51导入生成Hex文件. (4)、点击proteus软件左下方的开始键,进行仿真,观

12、察高低电平情况. 五、实验结果及分析 5。1 、Proteus 仿真 (1) Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。  使用Prote

13、us 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力; 实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值. (2)在仿真时按设置按钮,按一次设置温度上限,按第二次设置温度下限,按第三次回到当前温度显示值,其它两个按键是对设置值的加减;或者利用串口在上位机上进行设置,端口选择COM2,波特率选择9600,三个按钮的功能和仿真图里的按键功能一样,对温度进行设置。如图5。1 图5。1 5。2 、C程序调试 在Kill

14、4中对程序进行编写调试源代码如下: # include 〈reg51。h〉 #define uint unsigned int #define uchar unsigned char //宏定义 sbit but1=P1^0; sbit but2=P1^1; sbit but3=P1^2; sbit p34=P2^4; sbit p35=P2^5; sbit p36=P2^6; sbit dp=P0^7; sbit p37=P2^7; sbit DQ=P2^2; //定义DS18B20总线I/O sbit LING=P2^0;

15、 //定义响铃 uchar shezhi=0; uint shangxian=300; //上限报警温度,默认值为60 uint 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)

16、 { uchar i; while(x——); for(i=0;i<120;i++); } void Init_DS18B20(void) { unsigned char x=0; DQ=1; Delay(8); //稍做延时 DQ=0; //单片机将DQ拉低 Delay(80); //精确延时,大于480us DQ=1; //拉高总线 Delay(14); x=DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化

17、失败 Delay(20); } /*****读一个字节*****/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i——) { DQ=0; // 给脉冲信号 dat>>=1; DQ=1; // 给脉冲信号 if(DQ) dat|=0x80; Delay(4); } return(dat); }

18、 /*****写一个字节*****/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat〉〉=1; } } void Tmpchange(void) //发送温度转换命令 { Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作

19、 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(); //

20、读低8位 b=ReadOneChar(); //读高8位 t=b; t〈〈=8; t=t|a; tt=t*0。0625; t= tt*10+0.5; //放大10倍输出并四舍五入 return(t); } Disp_Temperature(uint e) //显示温度 { uint a,b,c,d; a=e/1000; //计算得到十位数 b=e/100-a*10; //计算得到个位数字 d=e%10;

21、 //计算得到小数点后两位 c=(e%100)/10; //计算得到小数点后一位 p34=0;p35=0;p36=0;p37=0; P0 =LEDData[d]; //显示小数点后两位 p34=1; p35=0; p36=0; p37=0; Delay(500); p34=0; p35=0; p36=0; p37=0; P0 =LEDData[c]; //显示小数点后一位 dp=0; p34=0; p35=1; p36=0; p37=

22、0; Delay(500); p34=0; p35=0; p36=0; p37=0; P0 =LEDData[b]; //显示个位 p34=0; p35=0; p36=1; p37=0; Delay(500); p34=0; p35=0; p36=0; p37=0; P0 =LEDData[a]; //显示十位 p34=0; p35=0; p36=0; p37=1; Delay(500); p34=0; p35=0; p36=0; p37=0; //关闭

23、显示 } void initUart(void) //串口初始化9600 { TMOD|=0x20; SCON=0xfc; TH1=0xfd; TL1=0xfd; EA=1; ES=1; TR1=1; } void uart(void) interrupt 4 //串口中断处理函数 { if(RI) { RI=0; if(SBUF==’a’) { s1=1; } if(SBUF=='b') { s2=1; } if(SBUF=='c') { s

24、3=1; } } } /*****主函数*****/ void main(void) { uint z,e; IT0=1; IT1=1; EX0=1; EX1=1; EA=1; initUart(); while(1) { if(but1==0 || s1==1){ //判断按钮set Delay(100); if(but1==0 || s1==1){ s1=0; while(but1==0); shezhi++; if(shezhi==3)

25、 shezhi=0; } }else if(but2==0 || s2==1){ //判断按钮+ Delay(100); if(but2==0 || s2==1){ s2=0; while(but2==0); if(shezhi==1) xiaxian++; else if(shezhi==2) shangxian++; } }else if(but3==0 || s3==1){ //判断按钮— Delay(100); if(but3==0 || s3==1){ s3=0; w

26、hile(but3==0); if(shezhi==1) xiaxian——; else if(shezhi==2) shangxian——; } } if(shezhi==0){ e=ReadTemperature(); //获取温度值 if(e>shangxian || e

27、ature(xiaxian); //显示温度下限 }else if(shezhi==2){ Disp_Temperature(shangxian); //显示温度上限 } } } 六、收获及自我评价 这次课程设计不光是要掌握模单片机书本上的理论基础,还需要我们锻炼自己的动手能力.用时8周,需要用到Proteus ISIS绘图,同时也用到keil编程,仿真验证程序正确。仿真时发现按键不响应、数码管显示乱码,又返回去重新改程序,给单片机刷入程序第2次验证,最后终于发现了问题,原来是接线错误,修改之后果然调试正确。调试成功后真的很开心,,确实让我学到了很多东西,

28、很感谢这次的实践机会 通过这次设计,使我们得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。 在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合.全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔

29、前景,并且通过知识与应用于实践的结合更加丰富了自己的知识.总的感受有以下几方面: 1、通过本次设计,我们不但对单片机有了更深的了解,对一个课题如何画流程图,编程序等有了一定的认识. 2、进一步加强了我们的动手能力和运用专业知识。 3、让我们了解到单片机技术对当今人们生活的重要性。同时这次设计的经历也使我受益匪浅,让我知道做任何事情都应脚踏实地,刻苦努力地去做,只有这样,才能做好。 七、参考文献 [1]  高玉芹 单片机原理与应用及C51编程技术 【M】。北京:机械工业出版社 [2] 刘泉溪  单片机原理与应用实验教程   【M】北京航空航天大学出版社 [3]  孙育才。 MCS—51系列单片微型计算机及其应用【M】 东南大学出版社 [4] 叶景,基于单片机的温度控制系统的设计 经验与交流,2008 [5] 51单片机应用开发典型范例——基于Proteus仿真 【M】北京:电子工业出版社

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服