新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于ATmega128的DHT11溫濕度傳感器的使用

基于ATmega128的DHT11溫濕度傳感器的使用

作者: 時(shí)間:2012-08-14 來源:網(wǎng)絡(luò) 收藏

#define LCK_1 PORTB|=(1

#define SDI_0 PORTB=~(1

#define SDI_1 PORTB|=(1

void init(void);

void send_595(unsigned char dat);

void digitron_show(unsigned int int_part,unsigned int float_part);

#endif

================================================

//這里是xianshi.c

#includexianshi.h

#ifndef __DELAY_H

#includedelay.h

#endif

#ifndef ___H

#includedht11.h

#endif

//數(shù)碼管顯示數(shù)組定義

const unsigned char table[]=

{

0x3F,// 0

0x06,// 1

0x5B,// 2

0x4F,// 3

0x66,// 4

0x6D,// 5

0x7D,// 6

0x07,// 7

0x7F,// 8

0x6F,// 9

0x3F+0x80,// 0.

0x06+0x80,// 1.

0x5B+0x80,// 2.

0x4F+0x80,// 3.

0x66+0x80,// 4.

0x6D+0x80,// 5.

0x7D+0x80,// 6.

0x07+0x80,// 7.

0x7F+0x80,// 8.

0x6F+0x80// 9.

};

unsigned int s,t,st,int_part,float_part,temp,SH;

//發(fā)送一字節(jié)數(shù)據(jù)到595

void send_595(unsigned char dat)

{

unsigned char i;

LCK_0;

SDI_1;

SCK_0;

//上面的三條語句為了初始化端口狀態(tài)

for(i=0;i8;i++)

{

LCK_0;//時(shí)鐘線拉低

if(dat0x80)

SDI_1;

else SDI_0;

dat=dat1;

delay_us(100);

LCK_1; //時(shí)鐘線拉高將數(shù)據(jù)讀入595的移位寄存器

delay_us(100);

}

SCK_1; //發(fā)送數(shù)據(jù)到并行端口

SCK_0;

}

void show(void)

{

unsigned char temp_shi,temp_ge,SH_shi,SH_ge,x,y;

unsigned int i;

st=dht();

t=st0x0000ffff;

s=st0xffff0000;

s=s>>16;

//下面為把溫度和濕度換算成十進(jìn)制并且四舍五入

temp=(t>>8);

temp_shi=temp/10;

temp_ge=temp%10;

SH=(s>>8);

SH_shi=SH/10;

SH_ge=SH%10;

int_part=SH_shi*10+SH_ge;

float_part=0;

for(i=0;i50;i++)

{

digitron_show(int_part,float_part);

}

}

void digitron_show(unsigned int int_part,unsigned int float_part)

{

PORTA=0x01;

send_595(table[float_part/10]);

send_595(0x00);

delay_ms(5);

PORTA=0x02;

send_595(table[(int_part%10)+10]);

send_595(0x00);

delay_ms(5);

PORTA=0x04;

send_595(table[int_part/10]);

send_595(0x00);

delay_ms(5);

}

================================================

//這里是MAIN.C

#include

#include

#includedelay.h

#includedht11.h

#includexianshi.h

#pragma interrupt_handler Timer0_COMP:16

#define uchar unsigned char

uchar k=0;

void init(void);

void main()

{

init();//初始化

TCCR0=0X0F;

DDRA=0XFF;

TCCR0=0X0f;//CTC模式

OCR0=145;//10ms

TIMSK=0X02;

SEI();

while(1);

}

//初始化子函數(shù)

void init(void)

{

DDRA=0XFF;

DDRB=0XFF;

}

void Timer0_COMP(void)

{

TCCR0=0X08;

CLI();

k++;

if(k==255)

{

k=0;

show();

}

TCCR0=0X0f;//重置初值

SEI();

}

電磁爐相關(guān)文章:電磁爐原理


上拉電阻相關(guān)文章:上拉電阻原理
土壤濕度傳感器相關(guān)文章:土壤濕度傳感器原理

上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉