MEGA单片机温度检测标准系统.docx
- 文档编号:28640947
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:830.13KB
MEGA单片机温度检测标准系统.docx
《MEGA单片机温度检测标准系统.docx》由会员分享,可在线阅读,更多相关《MEGA单片机温度检测标准系统.docx(18页珍藏版)》请在冰豆网上搜索。
MEGA单片机温度检测标准系统
单片机课程设计报告
基于MEGA16单片机温度检测系统
张坤张磊黄大明
(作品图)
一,系统设计目的,用途,功能
1,目的。
通过基于MEGA16芯片和DS18B20温度传感器控制温度,熟悉芯片的使用,温度传感器的功能,实验电路板的焊接,数码显示管的使用,汇编语言的设计。
锻炼团队合作能力,动手设计能力以及发现问题并且解决问题的能力。
2,用途。
温度是工业控制中主要的被控参数之一。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。
单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。
本文设计了一种基于MEGA16单片机的温度测量和控制装置,能对环境温度进行测量,在温度过高时,蜂鸣器发出蜂鸣声,有利于保障工业控制中的安全性。
并且能根据温度给定值
给出调节量,控制执行机构,实现调节环境温度的目的。
3,功能.DS18b20温度传感器温度的精确度高达0.1度,在许多工业控制中已经足够。
可以
满足从-55摄氏度到+125摄氏度测量范围,在一秒内把温度转化成数字,测得的温度值的存
储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。
从用途上讲,该单片机类似于温度计,但用途又不仅仅集限于温度计,由于蜂鸣器的使用,编写程序后,超过预设温度后,蜂鸣器发出蜂鸣声,为工业控制的安全保驾护航。
,硬件设计思想和电路原理图
Vcc
4.7K
单片机端口
18b20
F图为硬件连接框架图
硬件连接框架图
三,详细说明如何使用硬件单元
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连接。
4.软件设计流程和设计思想
软件设计思想:
现在生活很多方面都要用到温度这个概念,例如在温室里需要时刻注意温度的变化,另外在
一些科学实验里面,温度是一个很重要的条件,很多情况下要都对温度作很严格的要求,往往
温度的一点不适当会引起相当大的变化,从而影响一些重要结果的得出•因此对于环境温度的
测量显得很重要•基于这一点,萌生了采用单片机对温度进行监视的想法•
端口初始化
DS18B20初始并且进行温
*度采集
七段数码管显示温度
(使用timerO比较中断)
5.软件功能:
1.实现对温度的监视,达到实时显示的目的•
2.实现对不适合温度的警报,方便对温度监控•(报警温度可人工设定)
6.系统测试过程及测试数据:
(1)时间:
08年6月8日13:
10
地点:
十二号楼124宿舍
测试对象:
室内温度
设定警报温度:
31C
时间
13:
20
13:
25
13:
30
13:
35
13:
40
温度
30.3
30.4
30.3
30.3
30.3
⑵时间:
08年6月8日22:
20
地点:
十二号楼124宿舍
测试对象:
室内温度
设定警报温度:
31C
时间
22。
20
22:
25
22:
30
22:
35
22:
40
温度
29.7
29.7
29.7
29.8
29.7
7.实验程序代码
#inelude
#inelude
unsignedintds1820_read_temp(void)。
#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){ /*中断保护*/ /*关中断*/ /*延时500uS(480-960)*/ /*延时80uS*/ /*延时500uS(保持>480uS)*/ /*恢复中断状态*/ unsignedchari。 flag=SREG。 CLI()。 DQ_OUT。 DQ_CLR。 delay_10us(49)。 DQ_SET。 DQ_IN。 delay_10us(7)。 i=DQ_R。 delay_10us(49)。 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。 joj--)。 } } #pragmainterrupt_handlertimer0_comp_isr: iv_TIMER0_COMP voidtimer0_comp_isr(void) { display()o } display() { PORTD=position[poist]o PORTB=led_7[led_buf[poist]]o if(poist==1)PORTB=led_7[led_buf[poist]]|0x80odelay_ms (2)o if(++poist>=3) poist=0o } voidfeng(unsignedi) { if(i>=31)PORTC=0x83oelsePORTC=0x01o } voidmain(void) { unsignedinti,jo 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()。 while (1) {ds1820_start()。 delay_ms(15)。 i=ds1820_read_temp()。 i=(i*10)/16。 led_buf[3]=i/1000。 i=i%1000。 led_buf[2]=i/100。 i=i%100。 led_buf[1]=i/10。 led_buf[0]=i%10。 j=led_buf[2]*10+led_buf[1]。 feng(j)。 } } 八.需的全部资源 温度传感器 /*方向输入*/ /*打开上拉*/ /*方向输出*/ /*电平设置*/ /*复位D18B20*/ /*启动一次转换*/ /*等待转换结束*/ /*读取温度数值*/ /*数值处理*/ /*将显示信息加载到显示缓存区*/ 我们所采用的温度传感器是DS18B20这是最常用的温度芯片 •\IL (;M)l)yVl>l> 2 图IDS1820的PR35封装 该传感器为6.5元每个。 下图为蜂鸣器 该蜂鸣器为短叫蜂鸣器,一元每个。 ATmega16芯片 该芯片为实验室所赠。 去耦电容104 该电容主要对传感器其稳定作用,0.5元每个。 实验电路板。 基本的元件都焊接在该电路板上,五元每个。 电阻,买了4700欧姆,200千欧姆,100欧的电阻若干,总共花费1元。 两个咼亮的LED灯 花费1元,主要作用是发出警报是伴随有声音。 加上去去欧亚电子大厦来往车费,一共花费30元。 选器件的心得体会: 1,买元件前,应该将所买的元件全部记下来,避免买时遗忘。 2,买元件前,得弄清楚各个产品的型号,功能,避免出现盲目购买现象,力争一次将所有的元器件买完。 例如本次购买温度传感器,由于买之前不知道该买的型号,结果去了电子大厦以后,买时不知道买哪种好,花费了大量的时间精力,实在不值。 3,力争用最少的钱做最好的工程。 由于在生活生产中需要对仪器成本进行控制,所以控制成本成了产品能否广泛应用的关键,我们感觉做这个工程成本有些偏高,另外在功能上还有些单一,这是以后做工程必须注意的地方。 八•的分工和工作情况 1体会。 经过一个学期的学习和实践,我们终于做出了这个工程。 由于刚接触单片机,所 以从选择硬件到硬件焊接再到程序编写调试我们遇到了许多的困难,而且理论和实际有一定 的差距,但我们通过交流和向他人请教,最终把所有的问题都解决了。 在操作的过程中,我 们感到了自己的动手能力上有不足,但我们增强了自己的动手能力。 更重要的是,在实验中 我们不抛弃,不放弃,遇到困难从来不灰心,最终享受到了成功的喜悦。 只要抱着这种精神,我们相信以后的学习生活会做得更好! 具体分工如下: 张坤一软件的编写,程序的调试,器件的购买。 张磊一硬件的焊接,网页的设计。 黄大明一PPT的制作,文档的编写,器件的购买。 贡献分值: 张昆张磊黄大明 (附图: 正常温度) ••◎•eo ^••6eee nunJ 3 O1 (超过设定温度,报警) 最后感谢李茂奎的老师悉心指导和大力支持!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MEGA 单片机 温度 检测 标准 系统