欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机大作业报告(共19页).docx

    • 资源ID:13350991       资源大小:209.56KB        全文页数:19页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机大作业报告(共19页).docx

    精选优质文档-倾情为你奉上单片机大作业-温度控制系统设计班级:学号:姓名: 陈串串1 设计要求项目简介:温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。在许多场合,及时准确获得目标的温度、湿度信息是十分重要的,近年来,温湿度测控领域发展迅速,并且随着数字技术的发展,温湿度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。鉴于此,本文对基于单片机的温湿度计系统进行了相关研究。本系统是通过单片机控制来实现对周围环境的温湿度进行测量。本系统是以AT89C52单片机为控制单元、温度传感器DS18B20为主要检测器件,实现温度、湿度的测量、显示、控制,并利用单片机之间的通信功能,将所采集到的温度和湿度值在液晶屏中显示出来。温度测量范围为测温范围 4070,精度±0.0625。 (1)温度高于28启动制冷开关,从而使制冷压缩机工作;(2)温度低于15启动加热开关,从而使加热丝导通工作;(3)以上设定通过用户从键盘上输入实现;(4)温度需要用八段式LED显示(温度显示范围-4070);(5)制冷和制热需要LED灯显示其工作。2电路设计硬件电路的设计运用51单片机、七段数码管、LED灯、晶振、电解电容、DS18B20、电阻、排阻、电源等组成全部系统。DS18B20可以程序设定912位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。设计框图如下:项目视图 图2-1 温度控制系统原理总图单片机 运用单片机处理温度转化成的串行数字信号,实现信号处理。将获得的结果通过输出装置输出显示在七段数码管上,并且在最后的处理部分也借用了P2和P3口的三个引脚,来点亮所需要点亮的LED灯。 89C52单片机组成结构中包含运算器、控制器、片内存储器、并行I/O口、串行I/O口、定时/计数器、中断系统、振荡器等功能部件。 图2.1.1 单片机控制部分电路温度采集部分运用一个DS18B20温度传感器作为外部温度的检测部分,并将采集好的串行数字信号供单片机处理。图2.1.2 DS18B20传感器获取外界温度电路温度显示部分六个七段数码管组成显示部分。图2.1.3 温度显示部分温度状态指示电路 温度高于指定温度(28)时,LED-RED亮(代表制冷工作); 温度在指定温度(1528)之间时,LED-GREEN亮; 温度低于指定温度(15)时,LED-BLUE亮(代表制热工作)。图2.1.4 状态指示部分 软件的设计#include <reg52.h>#define W_IO P1 /片选线从左往右分别与P1.0-P1.4相连#define S_IO P0 /段选线从A-DP,分别与P0.0-p0.7相连#define uchar unsigned char#define ulong unsigned long#define uint unsigned intint t,a;uint temp,flag;float ftemp;sbit LED1=P20;sbit LED2=P24;sbit LED3=P31;sbit ds=P34;uchar Time5;/数码管要显示的4位数字和温度正负int code S_Data10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;int code W_Data5=0x01,0x02,0x04,0x08,0x10;void delayms(int time)/延时函数int i,j;for(i=time;i>0;i-)for(j=110;j>0;j-);void LED(uchar Data5,uint dp,uint flag)/七段数码管上的显示程序 int i=0,j=0;P0=0XFF;for(i=0;i<5;i+) if(i=0) W_IO=W_Datai; if(flag=0) S_IO=0xff; else S_IO=0xbf;delayms(5); else if(dp!=i)W_IO=W_Datai;S_IO=S_DataDatai; elseW_IO=W_Datai;S_IO=S_DataDatai&0x7f; delayms(5); void init18b20()/DS18B20复位,初始化函数 uint i; ds=0; i=103; while (i>0)i-; ds=1; i=4; while(i>0)i-;bit du1wei() /读一位数据 uint i; bit dat; ds=0;i+; ds=1;i+;i+; dat=ds; i=8;while(i>0)i-; return (dat);uchar du1zijie()/读一字节数据 uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=du1wei(); dat=(j<<7)|(dat>>1); return(dat);void xie1wei (uchar dat)/写一字节 uint i; uchar j; bit test; for(j=1;j<=8;j+) test=dat&0x01; dat=dat>>1; if(test) ds=0;i+;i+;ds=1;i=8; while(i>0)i-; else ds=0;i=8; while(i>0)i-; ds=1;i+;i+; void xie_temp_zhuanhuan()/开始获取温度并转换 init18b20(); delayms(1); xie1wei (0xcc); xie1wei (0x44);uint du_temp_flag()/读存储器中存储的温度,标记正负 uchar a,b; uint c; init18b20(); delayms(1); xie1wei (0xcc); xie1wei (0xbe); a=du1zijie(); b=du1zijie();temp=b;temp<<=8;temp=temp|a; c=0; if(temp>0xf000) c=1;return c; uint du_temp_cunchuqi(uint flag)/读存储器中存储的温度,转换 uchar a,b; init18b20(); delayms(1); xie1wei (0xcc); xie1wei (0xbe); a=du1zijie(); b=du1zijie();temp=b;temp<<=8;temp=temp|a; if(flag=1)temp=temp;temp=temp+1;ftemp=temp*0.0625;temp=ftemp*100+0.5;return temp; void baojin(uint flag)/温度状态处理 if(flag=1)LED1=0;LED2=1;LED3=0; else if(flag=0)if(temp<1500)LED1=0;LED2=1;LED3=0; else if(temp>=1500&&temp<=2800)LED1=0;LED2=0;LED3=1; else if(temp>2800)LED1=1;LED2=0;LED3=0;void main()/主函数while(1) xie_temp_zhuanhuan(); flag=du_temp_flag(); t=du_temp_cunchuqi(flag); Time0=flag; Time1=t/1000; Time2=t%1000/100; Time3=t/10%10; Time4=t%10; LED(Time,2,flag); baojin(flag);部分代码说明1.代码全程引入一关键(全局)变量flag,代表温度正负,当温度在零上时,flag为0,温度在零下时,flag为1,作为影响多个子函数的重要参数。2.void LED(uchar Data5,uint dp,uint flag)/八段数码管上的显示程序 int i=0,j=0;P0=0XFF;for(i=0;i<5;i+) if(i=0) W_IO=W_Datai; if(flag=0) S_IO=0xff; else S_IO=0xbf;delayms(5); else if(dp!=i)W_IO=W_Datai;S_IO=S_DataDatai; elseW_IO=W_Datai;S_IO=S_DataDatai&0x7f; delayms(5); 数码管的显示是另一关键,结合主函数可知,该子函数中i=0-4代表六联数码管上2-6即后五个的对应处理情况,即i=0对应符号位,i=1-4对应数字位。符号位与数字位处理方式不同,故有了for循环内第一层if-else条件判断区分参数dp关系小数点位设定,主函数中取dp=2,对应i=2时的小数点特殊处理,故有了第一层if-else中else下的又一层3测试结果仿真结果温度信号模拟,仿真结果如图。 温度大于28度时,系统开启制冷措施(红灯亮) 温度小于15度时,系统开启取暖措施(蓝灯亮) 温度在指定范围15-28之间时,系统不采取任何措施(绿灯亮) 温度低于测量下限时,系统发出警报(蓝灯亮) 温度高于测量上限时,系统发出警报(红灯亮)4 总结本次单片机课程设计,不仅要求设计者能熟练使用单片机来实现温度的采集与读数,熟练编写程序,还要求对单片机的电路连接结构,对数码管芯片有明确清晰的了解与认识。刚开始拿到老师给的题目,我们就开始分析应该需要用到哪些知识,我们发现首先应该了解Keil和protel软件的使用,其次就是DS18B20的数据采集和编程问题。由于汇编程序是非常晦涩难懂的,所以我们决定采用C语言进行编程,而我们本身学的是汇编,所以我就在网上下载了一个郭天祥的基于C的单片机教学视频,开始前几天我基本就在看视频学习。在学习过程中,我学到了很多编程技巧,对我之后写编程序有很大的帮助。本次课程设计中不断翻阅资料,提高了我的分析能力,也让我体会到了动手实践的快乐,当看到电路仿真成功时,内心十分欣喜。参考文献:1李广弟、朱月秀、冷祖祁.单片机基础M.北京:北京航空航天大学出版社,20072张俊谟、张迎新.单片机教程M.北京:单片机教程,20083马斌.单片机原理及应用M.北京:人民邮电出版社,20094于帆、赵妮.程序设计基础M.北京:清华大学出版社,20065郭天祥单片机教程专心-专注-专业

    注意事项

    本文(单片机大作业报告(共19页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开