MEGA单片机温度检测标准系统Word文档下载推荐.docx
《MEGA单片机温度检测标准系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MEGA单片机温度检测标准系统Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
三,详细说明如何使用硬件单元
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
25
30
35
40
温度
30.3
30.4
(2)时间:
08年6月8日22:
地点:
十二号楼124宿舍
测试对象:
设定警报温度:
22。
22:
29.7
29.8
七.实验程序代码
#include<
iom16v.h>
macros.h>
unsignedchards1820_reset(void)。
unsignedintds1820_read_temp(void)。
#defineDQ_INDDRA&
=~(1<
<
PA7)/*设置输入*/
#defineDQ_OUTDDRA|=(1<
PA7)/*设置输出*/
#defineDQ_CLRPORTA&
PA7)/*置低电平*/
#defineDQ_SETPORTA|=(1<
PA7)/*置高电平*/
#defineDQ_RPINA&
(1<
PA7)/*读了电平*/
unsignedcharflag。
/*中断标志缓存*/
/*
延时函数
延时时间:
iX10+16uS。
CPU频率为:
1MHz。
*/
voiddelay_10us(unsignedchari){
if(i==0)
{
return。
}
while(i--)
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。
/*延时500uS(保持>
480uS)*/
if(flag&
0x80){/*恢复中断状态*/
SEI()。
if(i)
return0x00。
else
return0x01。
/*DS18B20字节读取函数*/
unsignedchards1820_read_byte(void)
{
unsignedcharvalue=0。
for(i=8。
i!
=0。
i--){
value>
>
=1。
DQ_OUT。
DQ_CLR。
/*延时4uS*/
DQ_SET。
DQ_IN。
/*延时10uS*/
if(DQ_R)
{
value|=0x80。
}
delay_10us(5)。
/*延时60uS*/
0x80)
{/*恢复中断状态*/
return(value)。
/*DS18B20字节写入函数*/
voidds1820_write_byte(unsignedcharvalue){
i--)
if(value&
0x01)
DQ_SET。
delay_10us(7)。
/*延时80uS*/
/*位结束*/
if(flag&
0x80)
/*启动ds1820转换*/
voidds1820_start(void){
ds1820_reset()。
ds1820_write_byte(0xCC)。
/*勿略地址*/
ds1820_write_byte(0x44)。
/*启动转换*/
/*DS8B20读取温度信息*/
unsignedintds1820_read_temp(void){
unsignedinti。
unsignedcharbuf[9]。
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。
/*打开上拉*/
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]=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)。
八.需的全部资源
温度传感器
我们所采用的温度传感器是DS18B20,这是最常用的温度芯片
该传感器为6.5元每个。
下图为蜂鸣器。
该蜂鸣器为短叫蜂鸣器,一元每个。
ATmega16芯片
该芯片为实验室所赠。
去耦电容104
该电容主要对传感器其稳定作用,0.5元每个。
实验电路板。
基本的元件都焊接在该电路板上,五元每个。
电阻,买了4700欧姆,200千欧姆,100欧的电阻若干,总共花费1元。
两个高亮的LED灯
花费1元,主要作用是发出警报是伴随有声音。
加上去去欧亚电子大厦来往车费,一共花费30元。
选器件的心得体会:
1,买元件前,应该将所买的元件全部记下来,避免买时遗忘。
2,买元件前,得弄清楚各个产品的型号,功能,避免出现盲目购买现象,力争一次将所有的元器件买完。
例如本次购买温度传感器,由于买之前不知道该买的型号,结果去了电子大厦以后,买时不知道买哪种好,花费了大量的时间精力,实在不值。
3,力争用最少的钱做最好的工程。
由于在生活生产中需要对仪器成本进行控制,所以控制成本成了产品能否广泛应用的关键,我们感觉做这个工程成本有些偏高,另外在功能上还有些单一,这是以后做工程必须注意的地方。
八.的分工和工作情况
1,体会。
经过一个学期的学习和实践,我们终于做出了这个工程。
由于刚接触单片机,所以从选择硬件到硬件焊接再到程序编写调试我们遇到了许多的困难,而且理论和实际有一定的差距,但我们通过交流和向他人请教,最终把所有的问题都解决了。
在操作的过程中,我们感到了自己的动手能力上有不足,但我们增强了自己的动手能力。
更重要的是,在实验中我们不抛弃,不放弃,遇到困难从来不灰心,最终享受到了成功的喜悦。
只要抱着这种精神,我们相信以后的学习生活会做得更好!
具体分工如下:
张坤—软件的编写,程序的调试,器件的购买。
张磊—硬件的焊接,网页的设计。
黄大明—PPT的制作,文档的编写,器件的购买。
贡献分值:
:
(附图:
正常温度)
(超过设定温度,报警)
最后感谢李茂奎的老师悉心指导和大力支持!