[原创] 基于ATmega16的温湿测量仪

鑫海宝贝   2011-3-7 16:12 楼主

        这原来是一个小项目,目的是用sht10温湿传感器对室外的温湿度值采集,依靠从机将数据经过无线24l01模块发送到室内主机上,进行显示;

        在单独一部单片机上已经实现显示了,这部分是我同学调试通过的,就是这个无线我就一直没有调试通过,老尴尬了,现在与大家一起分享这份资料吧,看看有没有好点子的。

        稍后我将图片传上来,我先将资料接口方法资料给大家。

     主程序:

/***************************************
SHT10测试程序(根据手册中的时序写的)
MCU:ATmega16
晶振:8M
编译器:ICCAVR

*****************************************/
#include <iom16v.h>
#include <avrdef.h>    
#include "12864.c"
#include "shit10.h"
//#include "test.c"
#include "delay.c"

/*=====宏定义=======================================*/
#define RESET 0x1e     //0001 1110


/*=====函数声明===============================================*/
void delay_ms(int t);
void s_transstart(void);
char s_write_byte(unsigned char value);  //写入一个字节的命令,并且检查传感器是否正确接收了这个数据,返回值为0表示正确接收
char s_read_byte(unsigned char ack);  //读一个字节的数据,并且向传感器发出一个字节的“已接收”信号
int s_measure(unsigned char mode);   //进行一次测量
void calc_sth11(float *p_humidity ,float *p_temperature);//测量结果修正


//-----温湿度显示------------------------------------------------
char a[]="00.00 C";
char b[]="00.00 %"; 
char c[]="Temp:";
char d[]="Humi:";

/*-----主函数-----------------------------------------------------------*/
void main(void)
{
 float temp,humi;
 delay_ms(20);  //越过休眠状态
 init_lcd();
 while(1)
 {   
         //init_NRF24L01();
         temp= s_measure(TEMP);
      humi= s_measure(HUMI);
      calc_sth11(&humi,&temp);
         a[0]=(int)(temp*100)/1000+0x30;
      a[1]=(int)(temp*100)/100%10+0x30;
      a[3]=(int)(temp*100)/10%10+0x30;
      a[4]=(int)(temp*100)%10+0x30;
         lcd_write(1,3,a);             //lcd_wright(行,列,数组) '字符显示位置'
      lcd_write(1,0,c);
   
         b[0]=(int)(humi*100)/1000+0x30;
      b[1]=(int)(humi*100)/100%10+0x30;
      b[3]=(int)(humi*100)/10%10+0x30;
      b[4]=(int)(humi*100)%10+0x30;
         lcd_write(2,3,b);
   lcd_write(2,0,d);           
      delay_ms(1000);
 }
}

[ 本帖最后由 鑫海宝贝 于 2011-3-10 19:59 编辑 ]
  • IMAG0032.jpg
  • IMAG0033.jpg
  • IMAG0036.jpg
  • IMAG0046.jpg

回复评论 (42)

很精致
点赞  2011-3-7 18:38

回复 沙发 wstt 的帖子

哈哈哈发上来,大家一起看看,没准会有更好的想法呢哈哈
点赞  2011-3-7 18:47
怎么没人搭理呢,资料不好吗?
点赞  2011-3-8 12:44
sht10也那么小?我记得还是很大的啊
点赞  2011-3-9 16:54

回复 5楼 larrybirdkobe 的帖子

没有那么大,很小的哈哈哈,比小指甲还小呢,有小指甲一半大小吧,就是贵了点35元一个
点赞  2011-3-9 20:13
写的不错,谢谢分享了
点赞  2011-3-11 09:14

回复 7楼 rogerangel 的帖子

恩哈哈哈,看看吧,这个程序是我同学调的,他的功底很好哈哈哈特别是程序
点赞  2011-3-11 09:53
嘿嘿,收藏是必须的,过几天要做个采集,里面用到了dht11温湿度传感器,最为只能家居的采集模块,并把太阳能热水器的水位和温度也通过m48的ad采集到,用cc1100发到主机
点赞  2011-3-12 08:33

回复 9楼 rogerangel 的帖子

听你讲很不错啊,弄完了,大家分享一下呦哈哈哈
点赞  2011-3-12 10:58
太好 了 有我想要的东西
点赞  2011-3-29 21:50

回复 11楼 郭小乐 的帖子

有用就收藏了吧嘎嘎嘎
点赞  2011-3-30 08:28
液晶要单独供电吗  共用一个电源会有影响吗
点赞  2011-3-31 09:44
液晶中的 写ram是干什么的
点赞  2011-3-31 11:26

回复 13楼 郭小乐 的帖子

我是用同一电源供电,没什么影响哈哈哈
点赞  2011-3-31 12:58

回复 14楼 郭小乐 的帖子

RAM存储的是当前你运行的程序所需要的代码 断电后就会消失
点赞  2011-3-31 13:00
这个温湿度传感器比较有吸引力......
水不撩不知深浅 人不拼怎知输赢
点赞  2011-4-3 22:53

回复 17楼 wo4fisher 的帖子

是啊就是价格贵了点,30多呢,我还烧过
点赞  2011-4-4 21:32

回复 楼主 鑫海宝贝 的帖子

真厉害
点赞  2011-6-21 21:59

温度传感器,怎么搞到的

http://shop34182318.taobao.com/ https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
点赞  2011-6-22 06:52
123下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复