爱爱小说网 > 体育电子书 > lcd带温度显示万年历 >

第2章

lcd带温度显示万年历-第2章

小说: lcd带温度显示万年历 字数: 每页3500字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




    }
    case 5:
    {
     l_tmpdisplay'4'=yue++;
     if(yue13) yue=0;
     display_scan(0x40+5;yue);
     write_(0x80+0x40+6;1);
     break;
    }
    case 6:
    {
     l_tmpdisplay'3'=ri++;
     if(ri32) ri=0;
     display_scan(0x40+8;ri);
     write_(0x80+0x40+8;1);
     break;
    }
    case 7:
    {
     l_tmpdisplay'6'=xin++;
     if(xin8) xin=0;
     week_display();
     write_(0x80+0x40+11;1);
     break;
    }
   }
  } 
 }
  if(key20) //减
  delay(10);
  if(key20)
  {
   while(!key2);
   delay(10);
   while(!key2);
   temp_num=funtion_flag; 
   switch(temp_num)
   {
    
    case 2:
    {
     l_tmpdate'1'=fen;
     if(fen…1) fen=59; 
     display_scan(11;fen);
     write_(0x80+0x0c;1);
     break;
    }
    case 3:
    {
     l_tmpdisplay'2'=shi;
     if(shi…1) shi=23;
     display_scan(8;shi);
     write_(0x80+0x09;1);
     break;
    }
    case 4:
    {
     l_tmpdisplay'2'=nian;
     if(nian…1) nian=12;
     display_scan(0x40+2;nian);
     write_(0x80+0x40+3;1);
     break;
    }
    case 5:
    {
     l_tmpdisplay'2'=yue;
     if(yue…1) shi=31;
     display_scan(0x40+5;yue);
     write_(0x80+0x40+6;1);
     break;
    }
    case 6:
    {
     l_tmpdisplay'3'=ri;
     if(ri…1) ri=31;
     display_scan(0x40+8;ri);
     write_(0x80+0x40+8;1);
     break;
    }
    case 7:
    {
     l_tmpdisplay'6'=xin;
     if(xin…1) xin=7;
     week_display();
     write_(0x80+0x40+11;1);
     break;
    }
   }
    
  }


 /*us级延时函数                                        */
/*******************************************************************/

void Delay1(uint num)

  while( num ) ;


/*******************************************************************/
Init_DS18B20(void)
{  
     DQ = 1 ;      //DQ复位
     Delay1(8) ;    //稍做延时

     DQ = 0 ;      //单片机将DQ拉低
     Delay1(90) ;   //精确延时 大于 480us

     DQ = 1 ;       //拉高总线
     Delay1(8) ;

     presence = DQ ;    //如果=0则初始化成功 =1则初始化失败
     Delay1(100) ;
     DQ = 1 ; 
     
     return(presence) ; //返回信号,0=presence;1= no presence



/* 读一个字节                     */
/*******************************************************************/
 ReadOneChar(void)

uchar i = 0 ;
uchar dat = 0 ;

for (i = 8 ; i 》 0 ; i)
  {
    DQ = 0 ; // 给脉冲信号
    dat 》》= 1 ;
    DQ = 1 ; // 给脉冲信号

    if(DQ)
     dat |= 0x80 ;
   Delay1(4) ;
  }

    return (dat) ;


/* 写一个字节                                         */
/*******************************************************************/
 WriteOneChar(uchar dat)

  unsigned char i = 0 ;
  for (i = 8 ; i 》 0 ; i)
  {
    DQ = 0 ;
    DQ = dat&0x01 ;
  Delay1(5) ;

    DQ = 1 ;
    dat》》=1 ;
  }


/* 读取温度                            */
/*******************************************************************/
 Read_Temperature(void)

     Init_DS18B20() ;
  
     WriteOneChar(0xCC) ;  // 跳过读序号列号的操作
     WriteOneChar(0x44) ;  // 启动温度转换

     Init_DS18B20() ;
     WriteOneChar(0xCC) ;  //跳过读序号列号的操作
     WriteOneChar(0xBE) ;  //读取温度寄存器

     temp_data'0' = ReadOneChar() ;   //温度低8位
     temp_data'1' = ReadOneChar() ;   //温度高8位 

/*  设定显示位置                                    */
/*******************************************************************/
void lcd_pos(uchar pos)
{                          
  write_ (pos | 0x80) ;  //数据指针=80+地址变量


/*自定义字符写入CGRAM                                   */
/* 数据转换与温度显示                                              */
/*******************************************************************/
 Disp_Temperature()

  display'4'=temp_data'0'&0x0f ;
  display'0'=ditab'display'4''+0x30 ;     //查表得小数位的值
  
  display'4'=((temp_data'0'&0xf0)》》4)|((temp_data'1'&0x0f)

返回目录 上一页 回到顶部 0 0

你可能喜欢的