基于MEGA16单片机温度检测系统方案.docx
- 文档编号:1328674
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:16
- 大小:206.02KB
基于MEGA16单片机温度检测系统方案.docx
《基于MEGA16单片机温度检测系统方案.docx》由会员分享,可在线阅读,更多相关《基于MEGA16单片机温度检测系统方案.docx(16页珍藏版)》请在冰豆网上搜索。
基于MEGA16单片机温度检测系统方案
单片机课程设计报告
基于MEGA16单片机温度检测系统
-------张坤张磊黄大明
(作品图)
一,系统设计目的,用途,功能
1,目的。
通过基于MEGA16芯片和DS18B20温度传感器控制温度,熟悉芯片的使用,温度传感器的功能,实验电路板的焊接,数码显示管的使用,汇编语言的设计。
锻炼团队合作能力,动手设计能力以及发现问题并且解决问题的能力。
2,用途。
温度是工业控制中主要的被控参数之一。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。
单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。
本文设计了一种基于MEGA16单片机的温度测量和控制装置,能对环境温度进行测量,在温度过高时,蜂鸣器发出蜂鸣声,有利于保障工业控制中的安全性。
并且能根据温度给定值给出调节量,控制执行机构,实现调节环境温度的目的。
3,功能.DS18b20温度传感器温度的精确度高达0.1度,在许多工业控制中已经足够。
可以满足从-55摄氏度到+125摄氏度测量范围,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。
从用途上讲,该单片机类似于温度计,但用途又不仅仅集限于温度计,由于蜂鸣器的使用,编写程序后,超过预设温度后,蜂鸣器发出蜂鸣声,为工业控制的安全保驾护航。
二,硬件设计思想和电路原理图
104电容
1
2
3
Vcc
4.7K
单片机端口
下图为温度传感器驱动电路图
18b20
下图为硬件连接框架图
硬件连接图如上.
三,详细说明如何使用硬件单元
1,七段数码管型号是LG5641AH(共阴极)的使用。
该显示管总共有12个引脚,包括a-g和dp以及四个位选g1-g4。
将a-f分别与ATmega芯片的PB1-PB6连接,g1-g4分别与PD0-PD3连接。
2,蜂鸣器的连接。
蜂鸣器的两个引脚分别与ATmega芯片的PC2,PC1连接,其中,前者接负极,后者接正极。
3,DS18B20温度传感器的连接。
该传感器3个端口分别与接地口,芯片的PA7,去耦电容104连接。
四.软件设计流程和设计思想
软件设计思想:
现在生活很多方面都要用到温度这个概念,例如在温室里需要时刻注意温度的变化,另外在一些科学实验里面,温度是一个很重要的条件,很多情况下要都对温度作很严格的要求,往往温度的一点不适当会引起相当大的变化,从而影响一些重要结果的得出.因此对于环境温度的测量显得很重要.基于这一点,萌生了采用单片机对温度进行监视的想法.
五.软件功能:
1.实现对温度的监视,达到实时显示的目的.
2.实现对不适合温度的警报,方便对温度监控.(报警温度可人工设定)
六.系统测试过程及测试数据:
(1)时间:
08年6月8日13:
10
地点:
十二号楼124宿舍
测试对象:
室内温度
设定警报温度:
31℃
时间
13:
20
13:
25
13:
30
13:
35
13:
40
温度
30.3
30.4
30.3
30.3
30.3
(2)时间:
08年6月8日22:
20
地点:
十二号楼124宿舍
测试对象:
室内温度
设定警报温度:
31℃
时间
22;20
22:
25
22:
30
22:
35
22:
40
温度
29.7
29.7
29.7
29.8
29.7
七.实验程序代码
#include
#include
unsignedchards1820_reset(void);
unsignedintds1820_read_temp(void);
#defineDQ_INDDRA&=~(1< #defineDQ_OUTDDRA|=(1< #defineDQ_CLRPORTA&=~(1< #defineDQ_SETPORTA|=(1< #defineDQ_RPINA&(1< unsignedcharflag;/*中断标志缓存*/ /* 延时函数 延时时间: iX10+16uS。 CPU频率为: 1MHz。 */ voiddelay_10us(unsignedchari){ if(i==0) { return; } while(i--) { NOP(); NOP(); NOP(); NOP(); } } /*DS18B20复位函数*/ unsignedchards1820_reset(void){ unsignedchari; flag=SREG;/*中断保护*/ CLI();/*关中断*/ DQ_OUT; DQ_CLR; delay_10us(49);/*延时500uS(480-960)*/ DQ_SET; DQ_IN; delay_10us(7);/*延时80uS*/ i=DQ_R; delay_10us(49);/*延时500uS(保持>480uS)*/ if(flag&0x80){/*恢复中断状态*/ SEI(); } if(i) { return0x00; } else { return0x01; } } /*DS18B20字节读取函数*/ unsignedchards1820_read_byte(void) { unsignedchari; unsignedcharvalue=0; flag=SREG;/*中断保护*/ CLI();/*关中断*/ for(i=8;i! =0;i--){ value>>=1; DQ_OUT; DQ_CLR; NOP();/*延时4uS*/ NOP(); NOP(); NOP(); DQ_SET; DQ_IN; NOP();/*延时10uS*/ NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); if(DQ_R) { value|=0x80; } delay_10us(5);/*延时60uS*/ } if(flag&0x80) {/*恢复中断状态*/ SEI(); } return(value); } /*DS18B20字节写入函数*/ voidds1820_write_byte(unsignedcharvalue){ unsignedchari; flag=SREG;/*中断保护*/ CLI();/*关中断*/ for(i=8;i! =0;i--) { DQ_OUT; DQ_CLR; NOP();/*延时4uS*/ NOP(); NOP(); NOP(); if(value&0x01) { DQ_SET; } delay_10us(7);/*延时80uS*/ DQ_SET;/*位结束*/ value>>=1; } if(flag&0x80) {/*恢复中断状态*/ SEI(); } } /*启动ds1820转换*/ voidds1820_start(void){ ds1820_reset(); ds1820_write_byte(0xCC);/*勿略地址*/ ds1820_write_byte(0x44);/*启动转换*/ } /*DS8B20读取温度信息*/ unsignedintds1820_read_temp(void){ unsignedinti; unsignedcharbuf[9]; ds1820_reset(); ds1820_write_byte(0xCC);/*勿略地址*/ ds1820_write_byte(0xBE);/*读取温度*/ for(i=0;i<9;i++) { buf[i]=ds1820_read_byte(); } i=buf[1]; i<<=8; i|=buf[0]; returni; } flashunsignedcharled_7[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x80}; flashunsignedcharposition[4]={0x01,0x02,0x04,0x08}; intled_buf[4]; unsignedcharpoist=0; voiddelay_ms(unsignedinti) { intj; for(;i;i--) { for(j=999;j;j--); } } #pragmainterrupt_handlertimer0_comp_isr: iv_TIMER0_COMP voidtimer0_comp_isr(void) { display(); } display() { PORTD=position[poist]; PORTB=led_7[led_buf[poist]]; if(poist==1)PORTB=led_7[led_buf[poist]]|0x80; delay_ms (2); if(++poist>=3) poist=0; } voidfeng(unsignedi) { if(i>=31) PORTC=0x83; else PORTC=0x01; } voidmain(void) { unsignedinti,j; DDRA=0x00;/*方向输入*/ PORTA=0xFF; DDRC=0xFF; PORTC=0x01;/*打开上拉*/ DDRB=0xFF;/*方向输出*/ PORTB=0x00;/*电平设置*/ DDRD=0xFF; PORTD=0x80; SEI(); TCCR0=0x0B; TCNT0=0x00; OCR0=0x8B; TIMSK=0x02; delay_ms(200); ds1820_reset();/*复位D18B20*/ while (1) { ds1820_start();/*启动一次转换*/ delay_ms(15);/*等待转换结束*/ i=ds1820_read_temp();/*读取温度数值*/ i=(i*10)/16;/*数值处理*/ led_buf[3]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MEGA16 单片机 温度 检测 系统 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)