Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306160
  • 博文数量: 65
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 284
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-21 15:10
文章分类
文章存档

2016年(3)

2015年(51)

2014年(8)

2013年(3)

分类: C/C++

2015-06-02 08:44:18

#include
#define HIGH P2OUT|=BIT1;
#define LOW P2OUT&=~BIT1;
#define uchar unsigned char


extern void nokia_main();
unsigned char RH, RL, TH, TL, SUM, CHK;


extern void LCD_init(void);
extern void LCD_write_char(unsigned char c);
extern void LCD_write_chinese_char(uchar x, uchar y, uchar dat);
extern void LCD_write_string(uchar x, uchar y, uchar *string);
extern void LCD_char();      
extern void LCD_clear(void);
extern void LCD_set_XY(unsigned char X, unsigned char Y);
extern void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);
extern void LCD_write_chinese_string(unsigned char X, unsigned char Y,
                   unsigned char ch_with,unsigned char num,
                   unsigned char line,unsigned char row);


void DelayNus(int n)
{
    CCR0 = n;
    TACTL |= MC_1; //增计数到CCR0
    while(!(TACTL & BIT0)); //等待
    TACTL &= ~MC_1; //停止计数
    TACTL &= ~BIT0; //清除中断标志
}


char receive(void) //接受函数
{
    char tem=0,cnt=0; //临时变量用于存储接受数据
    while(cnt<8)
    {
        while(!(P2IN&BIT1)); //等待50us的低电平结束
        DelayNus(45); 
        if(P2IN&BIT1) //长于30us定义为1
        {
            tem++; 
            tem<<=1;
            while(P2IN&BIT1); //结束高电平
        }
        else
        {
            tem<<=1;
        }
        if(cnt!=7) 
            while(!(P2IN&BIT1)); //最后一次给函数返回留下时间
        cnt++;
    }
    return tem;
}


#if 1
void DHT11_init()
{
    int i;
 //   DelayNus(1);
 //   P2OUT |= BIT1;
   
    WDTCTL=WDTPW+WDTHOLD;
    _DINT();
    BCSCTL1&=~XT2OFF;
    do
    {
    IFG1&=~OFIFG;
    for(i=0xff;i>0;i--);
    }
    
    while(IFG1&OFIFG);
    _EINT();
    
    BCSCTL2|=SELM_2+SELS; //SMCLK 8分频
    P2DIR|=BIT1;
    P2OUT|=BIT1;
    TACTL|=TASSEL_2+ID_3;
    //inited 
    LOW;
    DelayNus(18000);
    HIGH;
    DelayNus(30);
    P2DIR&=~BIT1; 
    while(P2IN&BIT1);
    
    while(!(P2IN&BIT1));
    
    while(P2IN&BIT1);
    
}


#endif


int DHT11_main()
{
    int i, t;
    
    char temph,templ,humdh,humdl,check,cal;
    //Data comes 
    humdh=receive()/2;
    humdl=receive()/2;
    temph=receive()/2;
    templ=receive()/2;
    check=receive();
    cal=humdh+humdl+temph+templ;
 /*   
    if(check==cal)
    {
    LPM0;
    }*/
        
          LCD_write_english_string(1,1,"shi") ;
          LCD_set_XY(20,1);
          LCD_write_char(':') ;
          LCD_set_XY(25,1);
          LCD_write_char(humdh/10 + '0') ;
          LCD_set_XY(30,1);
          LCD_write_char(humdh%10 + '0') ;
  
          LCD_write_english_string(2,2,"tem") ;
          LCD_set_XY(20,2);
          LCD_write_char(':') ;
          LCD_set_XY(25,2);
          LCD_write_char(temph/10 + '0') ;
          LCD_set_XY(30,2);
          LCD_write_char(temph%10 + '0') ;          
  
          for(t=0; t<20; t++)
                  DelayNus(20000);
       
     return 0;
}

阅读(2161) | 评论(0) | 转发(0) |
0

上一篇:一个项目中的5110

下一篇:java学习

给主人留下些什么吧!~~