




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
科 技 学 院课程设计报告( 2015 - 2016年度第 一 学期)名 称: 单片机课程设计 题 目:基于DS18B20温度测量 院 系: 科 技 学 院 班 级: 13k2 学 号:31 学生姓名: 指导教师: 张老师 设计周数: 2 成 绩: 日期:2015年 1月 7 日一、课程设计的目的与要求1.1实验目的掌握DS18B20和ATmega16的工作原理,数字温度计设计方法,仿真软件的应用,ATmega16单片机电路的引脚安排.。1.2实验内容1) 用液晶显示温度。 2) 可以显示大于零度的温度也可以显示小于零度的温度。 3)具有显示相应环境温度的功能,并且温度超出20度时可以报警。1.3 设计要求1)选择合适的元器件,在面包板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。2)在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个数字温度电路的接线调试。二、设计正文数字温度计由主控制器(单片机)、温度传感器(DS18B20)、显示器(LCD1602)、报警电路组成,温度传感器所感应的温度信号经过其数据传输引脚传送给单片机,单片机将所接收到的温度信号经过处理,将其送至显示器LCD1602显示,采用液晶显示器件,液晶显示平稳、省电、美观,更容易实现题目要求,对后续的园艺通兼容性高,只需将软件作修改即可,可操作性强,也易于读数,并且能够通过独立按键设置温度报警值,若温度处于报警上限,报警电路工作。采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输。三、课程设计总结通过这次单片机的课程设计,学到了很多的东西,单片机是一门实用性很强的课程,也是本专业的重点专业课。这次的课程设计就相当于把平时的一些小实验和知识点全部综合起来得到的结果,经历过这次的课程设计之后我明白了,如果平时不认真学号一些基础知识,到最后是根本做不出来的。同时我也在网上查找了很多资料,从之前的不会到慢慢的学会看代码,改代码和写代码。在一开始的时候觉得自己无从下手,但是在看过很多列子之后,自己慢慢的通过引用和添加自己的东西,虽然每次添加自己想要的功能代码都不是一次成功,但是经过自己一点点的学,一步步的改正。在最后,我通过自己坚持不懈的改正代码中的错误,最后把代码写对了,完完整整的完成了此次的课程设计。四、仿真电路图五、程序代码#include #include #define uchar unsigned char #define uint unsigned int #define rs_h (PORTD|=0x08) #define rs_l (PORTD&=0xf7) #define rs_o (DDRD|=0x08) #define rw_h (PORTD|=0x10) #define rw_l (PORTD&=0xef) #define rw_o (DDRD|=0x10) #define en_h (PORTD|=0x40) #define en_l (PORTD&=0xbf) #define en_o (DDRD|=0x40) #define temp_h (PORTC|=0x40) /置高#define temp_l (PORTC&=0xbf) /拉低#define LCD PORTB #define tmp (PINC&0x40) /读数据并且分离出来#define temp_o (DDRC|=0x40) /设置为输出#define temp_i (DDRC&=0xbf) /设置为输出uchar dat1,dat2;/保存读出的温度 #define led_o (DDRA|=0x80) #define led_l (PORTA&=0x7f) #define led_h (PORTA|=0x80) unsigned long int dat=0; uchar flag=0; void delayms(uint z) /8M晶振下,延时1ms uint x,y; for(x=z;x0;x-) for(y=1333;y0;y-); void Ds18b20_reset(void)/DS18B20初始化 uint count; uint i=60000; temp_o; temp_l; for(count=700;count0;count-);/延时480us temp_h; temp_i;/不须配置PORT内部上拉电阻,MCU输入输出自动切换 while(tmp=0x08);/&(i0) i-; led_o; led_l;/开指示灯 for(count=700;count0;count-);/延时480us void Ds18b20_write(uchar dat)/向DS18B20写一个字节 uchar count; uchar i; temp_o; for(i=8;i0;i-) temp_l; for(count=2;count0;count-); if(dat&0x01=0x01) temp_h; else temp_l; for(count=120;count0;count-);/延时60us temp_h; dat=1; uchar Ds18b20_read(void)/从DS18B20读一个字节 uchar i,datt; uchar count; for(i=8;i0;i-) datt=1; temp_o; temp_l; for(count=2;count0;count-); temp_h;/此语句必须有,参考datasheet的P15 for(count=1;count0;count-); temp_i; if(tmp=0x40) datt|=0x80; for(count=120;count0;count-); return datt; void lcd_com(uchar com)/向LCD1602写命令 rs_o; rw_o; en_o; DDRB=0xff; rs_l; rw_l; LCD=com; delayms(1); en_h; delayms(1); en_l; void lcd_dat(uchar dat)/向LCD1602写数据 rs_o; rw_o; DDRB=0xff; en_o; rs_h; rw_l; LCD=dat; delayms(1); en_h; delayms(1); en_l; void lcd_write(uchar c,uchar r,uchar dat)/向LCD1602指定行、指定列、写数据 lcd_com(0x80+0x40*c+r); lcd_dat(dat); delayms(1); void lcd_init(void)/LCD1602初始化,初始化后第一行显示temperature:,第二行显示.C DDRB=0xff; DDRD|=0x58; lcd_com(0x38); lcd_com(0x0c); lcd_com(0x06); lcd_write(0,2,0x54); lcd_write(0,3,0x65); lcd_write(0,4,0x6d); lcd_write(0,5,0x70); lcd_write(0,6,0x65); lcd_write(0,7,0x72); lcd_write(0,8,0x61); lcd_write(0,9,0x74); lcd_write(0,10,0x75); lcd_write(0,11,0x72); lcd_write(0,12,0x65); lcd_write(0,13,0x3a); lcd_write(1,11,0xdf); lcd_write(1,12,0x43); void show(void)/把温度值送LCD1602显示 if(dat2=240) dat=(dat2*256+dat1)+1)*(0.0625*10);/取反加一,保留一位小数 flag=1; else dat=(dat2*256+dat1)*(0.0625*10); /前面是整数部分,高位加低位,后面小数放大10倍 flag=0; ; if(flag=1)/负温度显示 lcd_write(1,10,0x30+dat%10); lcd_write(1,9,0xa5); lcd_write(1,8,0x30+dat%100/10); lcd_write(1,7,0x30+dat%1000/100); lcd_write(1,6,0x30+dat/1000); lcd_write(1,5,0x2d); if(flag=0)/正温度显示 lcd_write(1,10,0x30+dat%10); /小数 lcd_write(1,9,0xa5); lcd_write(1,8,0x30+dat%100/10); /个位 lcd_write(1,7,0x30+dat%1000/100); /十位 lcd_write(1,6,0x30+dat/1000); /百位 lcd_write(1,5,0x20);/显示空格,刷掉负号 void baojing(void) PORTD|=0x20; delayms(100); PORTD&=BIT(5);void main(void) DDRD|=BIT(5); lcd_init(); while(1) dat1=0x00; dat2=0x00; Ds18b20_reset(); Ds18b20_write(0xcc); /跳过ROM Ds18b20_write(0x44);/发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市可持续发展规划设计
- 萤石矿选矿项目可行性研究报告
- 课目一模拟考试题及答案
- 考研专业课试题及参考答案(文学类)
- 跨境电商美工面试题及答案指南
- 安全培训徽标课件
- 预制构件在现代住宅建筑施工中的应用
- 现代别墅室内装饰设计思路与应用研究
- 安全培训形式专题讲座内容课件
- 金属材料加工厂、电机绝缘配件厂厂房联建项目可行性研究报告模板-备案拿地
- GB/T 42695-2023纺织品定量化学分析木棉与某些其他纤维的混合物
- 某培训基地可行性研究报告
- YY/T 1617-2018血袋用聚氯乙烯压延薄膜
- GB/T 39965-2021节能量前评估计算方法
- 尿动力学检查操作指南2023版
- 五星领导人课件
- GB/T 22560-2008钢铁件的气体氮碳共渗
- 《大体积混凝土》课件
- 日本产业发展及文化讲义课件
- 中北大学火炮概论终极版
- 《建设工程文件归档规范》讲义课件
评论
0/150
提交评论