立即注册 登录
返回首页

uid:82781的个人空间

日志

耗费一下午功夫!

已有 1808 次阅读2015-6-13 16:38 | 功夫

 /******************************************************************
 * 作者:小ARM菜菜
 * 时间:2012年
 * 地点:日照
 * 文件名:"LCD_Display.c"
 *  备注:All rights reserved!
  Q Q:925295580
 ******************************************************************/
#include <stdio.h>
#include "M051Series.h"
#include "DrvSYS.h"
#include "DrvUART.h"
#include "DrvFMC.h"
#include "DrvGPIO.h"
#include "main.h"
#include "USART.h"
#include "GPIO.h"
#include "DrvTIMER.h"
#include "HT1381.h"
#include "HDT11.h"
#include "HT1622.h"
#include "LCD_Display.h"
const static uint8_t Temperature_tab[10]={0xf7,0xa2,0xdb,0xeb,0xae,0xed,0xfd,0xa3,0xff,0xef};//断码0-9
const static uint8_t time_hour_msb_tab[3]={0,6,3}; //时钟断码1,2

void display_set_time_off(void)
{
 
 
  lcd_display_set_open_time_hour_off();//关闭设置开启小时显示
       lcd_display_set_open_time_mint_off();//关闭设置开启分钟显示
    lcd_display_set_close_time_hour_off();//关闭设置关闭小时显示
      lcd_display_set_close_time_mint_off();
 
 
 
}
/******************************************************************
 * 时间:2012年
 * 功能:设置关闭时间小时关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void  lcd_display_set_close_time_hour_off()//关闭设置关闭小时显示
{
uint8_t da;
       da=read_ht1622_data(21);
    
        write_HT1622_data(21,da&0x7);
    
          //write_HT1622_data(21,0); //
    da=read_ht1622_data(23);
    
       write_HT1622_data(23,da&0x7);
   // write_HT1622_data(23,0); //
   
    da=read_ht1622_data(25);

     
       write_HT1622_data(25,0);
   
      //write_HT1622_data(25,0); //
    write_HT1622_data(24,0);
 
}
/******************************************************************
 * 时间:2012年
 * 功能:设置时间分钟关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void  lcd_display_set_close_time_mint_off()//关闭设置关闭分钟温度显示
{
  write_HT1622_data(26,0);
  write_HT1622_data(27,0);
  write_HT1622_data(28,0);
  write_HT1622_data(29,0);
}
/******************************************************************
 * 时间:2012年
 * 功能:设置关闭时间全显示
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_set_close_time(uint8_t hour_msb,uint8_t hour_lsb,uint8_t min_msb,uint8_t min_lsb)
{
      uint8_t lsb,msb,da,da1=0,da2=0,da3=0;
 

     
          

      if(hour_msb==0)
      {
   da1=read_ht1622_data(23);
   clr_bit(da1,3);
            //write_HT1622_data(23,da); //
   da2=read_ht1622_data(21);
   clr_bit(da2,3);
           // write_HT1622_data(21,da); //
   da3=read_ht1622_data(25);
   clr_bit(da3,3);
            //write_HT1622_data(25,da); //
      }
      else
      if(hour_msb==1)
      {
    da1=read_ht1622_data(23);
   clr_bit(da1,3);
            //write_HT1622_data(23,da); //
   da2=read_ht1622_data(21);
   set_bit(da2,3);
            //write_HT1622_data(21,da); //
   da3=read_ht1622_data(25);
   set_bit(da3,3);
            //write_HT1622_data(25,da); //
      }
      else
      if(hour_msb==2)
      {
   da1=read_ht1622_data(23);
   set_bit(da1,3);
            //write_HT1622_data(23,da); //
   da2=read_ht1622_data(21);
   set_bit(da2,3);
            //write_HT1622_data(21,da); //
   da3=read_ht1622_data(25);
   clr_bit(da3,3);
            //write_HT1622_data(25,da); //
      }
      else
      {
      da1=read_ht1622_data(23);
   clr_bit(da1,3);
            //write_HT1622_data(23,da); //
   da2=read_ht1622_data(21);
   clr_bit(da2,3);
            //write_HT1622_data(21,da); //
   da3=read_ht1622_data(25);
   clr_bit(da3,3);
            //write_HT1622_data(25,da); //
      }
    write_HT1622_data(21,da2); //
    write_HT1622_data(23,da1); //
    write_HT1622_data(25,da3); //
          lsb=Temperature_tab[hour_lsb];
     lsb&=0x0f;
     da=read_ht1622_data(25);
     msb=(Temperature_tab[hour_lsb]>>4)&0x0f; //小时低位加冒号
     if(get_bit(da,3))
      {
        set_bit(msb,3);
      }
      else
      {
        clr_bit(msb,3);
      }
           write_HT1622_data(24,lsb);
           write_HT1622_data(25,msb|da);
       lsb=Temperature_tab[min_msb];
     lsb&=0x0f;
     msb=(Temperature_tab[min_msb]>>4)&0x0f;    //分高位
           write_HT1622_data(26,lsb);
           write_HT1622_data(27,msb);
     lsb=Temperature_tab[min_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[min_lsb]>>4)&0x0f;    //分高位
           write_HT1622_data(28,lsb);
           write_HT1622_data(29,msb);
 
 
 
 
 
}
 /******************************************************************
 * 时间:2012年
 * 功能:设置开启时间小时关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void  lcd_display_set_open_time_hour_off()//关闭设置开启小时显示
{
           write_HT1622_data(16,0);
    
      write_HT1622_data(18,0);
       write_HT1622_data(19,8);
}
/******************************************************************
 * 时间:2012年
 * 功能:设置关闭时间分钟关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void  lcd_display_set_open_time_mint_off()//关闭设置开启分钟温度显示
{
uint8_t da;
        write_HT1622_data(20,0);
      da=read_ht1622_data(21);
     if(get_bit(da,3))
      {
        write_HT1622_data(21,8);
      }
      else
      {
       write_HT1622_data(21,0);
      }
    
     write_HT1622_data(22,0);
        da=read_ht1622_data(23);
     if(get_bit(da,3))
      {
        write_HT1622_data(23,8);
      }
      else
      {
       write_HT1622_data(23,0);
      }
    
}
/******************************************************************
 * 时间:2012年
 * 功能:设置开启时间开启
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_set_open_time(uint8_t hour_msb,uint8_t hour_lsb,uint8_t min_msb,uint8_t min_lsb)
{
     uint8_t lsb,msb,da;
     write_HT1622_data(16,time_hour_msb_tab[hour_msb]);
     write_HT1622_data(17,0xf);
      
                    lsb=Temperature_tab[hour_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[hour_lsb]>>4)&0x0f;    //小时低位加冒号
           write_HT1622_data(18,lsb);
           write_HT1622_data(19,msb);

     lsb=Temperature_tab[min_msb];
     lsb&=0x0f;
     da=read_ht1622_data(21);

     msb=(Temperature_tab[min_msb]>>4)&0x0f;    //分高位
     if(get_bit(da,3))
      {
        set_bit(msb,3);
      }
      else
      {
        clr_bit(msb,3);
      }
           write_HT1622_data(20,lsb);
           write_HT1622_data(21,msb|da);
     lsb=Temperature_tab[min_lsb];
     lsb&=0x0f;
     da=read_ht1622_data(23);
     
     msb=(Temperature_tab[min_lsb]>>4)&0x0f;    //分高位
      if(get_bit(da,3))
      {
        set_bit(msb,3);
      }
      else
      {
        clr_bit(msb,3);
      }
           write_HT1622_data(22,lsb);
           write_HT1622_data(23,msb);
 

}
 /******************************************************************
 * 时间:2012年
 * 功能:设置温度全关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_set_Temperature_off()//关闭设置温度显示
{
   write_HT1622_data(12,0);
 write_HT1622_data(13,0x08);
  write_HT1622_data(14,0);
 write_HT1622_data(15,0x08);
}
/******************************************************************
 * 时间:2012年
 * 功能:设置温度开启
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_set_Temperature(uint8_t set_Temperature_msb,uint8_t set_Temperature_lsb)
{
      uint8_t lsb,msb;
                    lsb=Temperature_tab[set_Temperature_msb];
     lsb&=0x0f;
     msb=(Temperature_tab[set_Temperature_msb]>>4)&0x0f;    //
     msb&=0x0f;
           write_HT1622_data(12,lsb);
           write_HT1622_data(13,msb);
        lsb=Temperature_tab[set_Temperature_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[set_Temperature_lsb]>>4)&0x0f;   
           write_HT1622_data(14,lsb);
           write_HT1622_data(15,msb);
}
/******************************************************************
 * 时间:2012年
 * 功能:设置星期显示
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_week(uint8_t week)
{

     uint8_t lsb,msb;
                   lsb=Temperature_tab[week];
     lsb&=0x0f;
     msb=(Temperature_tab[week]>>4)&0x0f;    //
     msb&=0x0f;
           write_HT1622_data(38,lsb);
           write_HT1622_data(39,msb);
 

}
/******************************************************************
 * 时间:2012年
 * 功能:设置星期关闭显示
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_week_off()
{
   write_HT1622_data(38,0);
   write_HT1622_data(39,0);
}
  /******************************************************************
 * 时间:2012年
 * 功能:设置年显示关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
 void lcd_display_year_off()//关闭年显示
 {
                  write_HT1622_data(34,0);
           write_HT1622_data(35,0);
      write_HT1622_data(36,0);
           write_HT1622_data(37,0);
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置月显示关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
 void lcd_display_month_off()//关闭月显示
 {
                    write_HT1622_data(44,0);
           write_HT1622_data(45,0);
 
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置天显示关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
 void lcd_display_date_off()//关闭日显示
 {
                    write_HT1622_data(42,0);
           write_HT1622_data(43,0);
      write_HT1622_data(40,0);
           write_HT1622_data(41,0);
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置日历显示
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_calendar(uint8_t year_msb,uint8_t year_lsb,uint8_t month_msb,uint8_t month_lsb,uint8_t date_msb,uint8_t date_lsb)
{
                  uint8_t lsb,msb;

                    lsb=Temperature_tab[2];
     lsb&=0x0f;
     msb=(Temperature_tab[2]>>4)&0x0f;    //2
           write_HT1622_data(30,lsb);
           write_HT1622_data(31,msb);
      lsb=Temperature_tab[0];
     lsb&=0x0f;
     msb=(Temperature_tab[0]>>4)&0x0f;    //0
           write_HT1622_data(32,lsb);
           write_HT1622_data(33,msb);

     lsb=Temperature_tab[year_msb];
     lsb&=0x0f;
     msb=(Temperature_tab[year_msb]>>4)&0x0f;    //*
           write_HT1622_data(34,lsb);
           write_HT1622_data(35,msb);
     lsb=Temperature_tab[year_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[year_lsb]>>4)&0x0f;    //*
           write_HT1622_data(36,lsb);
           write_HT1622_data(37,msb);
 
       
        lsb=Temperature_tab[month_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[month_lsb]>>4)&0x0f;    //*
      if(month_msb==0)
         {
       msb&=0x7;//把十位的一熄灭
         }
         else
         {
        msb&=0xf;//把十位的一点亮
        }
        
           write_HT1622_data(44,lsb);
           write_HT1622_data(45,msb);
 
     lsb=Temperature_tab[date_msb];
     lsb&=0x0f;
     msb=(Temperature_tab[date_msb]>>4)&0x0f;    //*
           write_HT1622_data(42,lsb);
           write_HT1622_data(43,msb);
      lsb=Temperature_tab[date_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[date_lsb]>>4)&0x0f;    //*
           write_HT1622_data(40,lsb);
           write_HT1622_data(41,msb);
 
 
 
 

}
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开X6显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_X6_on_or_off(uint8_t status)//关闭/打开“信号X6“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(53);
   set_bit(da,3);
            write_HT1622_data(53,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(53);
    clr_bit(da,3);
          write_HT1622_data(53,da);// 
    }
 }
/******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开X5显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_X5_on_or_off(uint8_t status)//关闭/打开“信号X5“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(53);
   set_bit(da,2);
            write_HT1622_data(53,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(53);
    clr_bit(da,2);
          write_HT1622_data(53,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开X4显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_X4_on_or_off(uint8_t status)//关闭/打开“信号X4“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(53);
   set_bit(da,1);
            write_HT1622_data(53,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(53);
    clr_bit(da,1);
          write_HT1622_data(53,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开X3显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_X3_on_or_off(uint8_t status)//关闭/打开“信号X3“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(53);
   set_bit(da,0);
            write_HT1622_data(53,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(53);
    clr_bit(da,0);
          write_HT1622_data(53,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开X2显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_X2_on_or_off(uint8_t status)//关闭/打开“信号X2“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(52);
   set_bit(da,3);
            write_HT1622_data(52,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(52);
    clr_bit(da,3);
          write_HT1622_data(52,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开X1显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_X1_on_or_off(uint8_t status)//关闭/打开“信号X1“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(52);
   set_bit(da,2);
            write_HT1622_data(52,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(52);
    clr_bit(da,2);
          write_HT1622_data(52,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开s3显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_s3_on_or_off(uint8_t status)//关闭/打开“设置“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(52);
   set_bit(da,1);
            write_HT1622_data(52,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(52);
    clr_bit(da,1);
          write_HT1622_data(52,da);// 
    }
 }
/******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开s2显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
void lcd_display_turn_on_s2_on_or_off(uint8_t status)//关闭/打开“关“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(52);
   set_bit(da,0);
            write_HT1622_data(52,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(52);
    clr_bit(da,0);
          write_HT1622_data(52,da);// 
    }
 }

 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开s8显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
 void lcd_display_turn_on_s8_on_or_off(uint8_t status)//关闭/打开“无线“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(54);
   set_bit(da,3);
            write_HT1622_data(54,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(54);
    clr_bit(da,3);
          write_HT1622_data(54,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开s7显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
  void lcd_display_turn_on_s7_on_or_off(uint8_t status)//关闭/打开“分时“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(54);
   set_bit(da,2);
            write_HT1622_data(54,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(54);
    clr_bit(da,2);
          write_HT1622_data(54,da);// 
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开s6显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
 void lcd_display_turn_on_s6_on_or_off(uint8_t status)//关闭/打开“手动“显示
 {
            uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(54);
   set_bit(da,1);
            write_HT1622_data(54,da); //
     }
    else  //0关闭
    {
    da=read_ht1622_data(54);
    clr_bit(da,1);
          write_HT1622_data(54,da);// 
    }
 }
/******************************************************************
 * 时间:2012年
 * 功能:设置关闭或者打开s1显示
 * 输入: 状态,1,开启,0关闭
 * 输出: 无
 ******************************************************************/
 void lcd_display_turn_on_s1_on_or_off(uint8_t status)//关闭/打开“开“显示
 {
 uint8_t da;
    if(status)//1显示
   {
   da=read_ht1622_data(54);
   set_bit(da,0);
            write_HT1622_data(54,da); //?
     }
    else  //0关闭
    {
    da=read_ht1622_data(54);
    clr_bit(da,0);
          write_HT1622_data(54,da);//  
    }
 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置显示小时关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_time_hour_off() //关闭小时显示
{

 write_HT1622_data(55,0); //小时高位
 write_HT1622_data(50,0);
 write_HT1622_data(51,8);

}
/******************************************************************
 * 时间:2012年
 * 功能:设置分钟显示关闭
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_time_mint_off() //关闭分钟显示
{
 
write_HT1622_data(48,0);
write_HT1622_data(49,0);
write_HT1622_data(46,0);
write_HT1622_data(47,0);
}
 /******************************************************************
 * 时间:2012年
 * 功能:设置时间显示开启
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_time(uint8_t hour_msb,uint8_t hour_lsb,uint8_t min_msb,uint8_t min_lsb)//显示时间
{
        uint8_t lsb,msb;
     write_HT1622_data(55,time_hour_msb_tab[hour_msb]); //小时高位
      
                    lsb=Temperature_tab[hour_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[hour_lsb]>>4)&0x0f;    //小时低位加冒号
           write_HT1622_data(50,lsb);
           write_HT1622_data(51,msb);
     lsb=Temperature_tab[min_msb];
     lsb&=0x0f;
     msb=(Temperature_tab[min_msb]>>4)&0x0f;    //分高位
           write_HT1622_data(48,lsb);
           write_HT1622_data(49,msb);
     lsb=Temperature_tab[min_lsb];
     lsb&=0x0f;
     msb=(Temperature_tab[min_lsb]>>4)&0x0f;    //分高位
           write_HT1622_data(46,lsb);
           write_HT1622_data(47,msb);
 

}
/******************************************************************
 * 时间:2012年
 * 功能:设置温度显示开启
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_Temperature(uint8_t shi,uint8_t ge)  //显示温度
  {
                  uint8_t lsb,msb;
                    lsb=Temperature_tab[shi];
     lsb&=0x0f;
     msb=(Temperature_tab[shi]>>4)&0x0f;    //第一位
           write_HT1622_data(0,lsb);
           write_HT1622_data(1,msb);
 
     lsb=Temperature_tab[ge];
     lsb&=0x0f;
     msb=(Temperature_tab[ge]>>4)&0x0f;    //第二位
     msb-=8;
           write_HT1622_data(2,lsb);
           write_HT1622_data(3,msb);

     write_HT1622_data(63,8);
    
 

 }
 /******************************************************************
 * 时间:2012年
 * 功能:设置湿度开启显示
 * 输入: 无
 * 输出: 无
 ******************************************************************/
void lcd_display_Humidity(uint8_t shi,uint8_t ge)  //显示湿度
 {
 
                  uint8_t lsb,msb;
                    lsb=Temperature_tab[shi];
     lsb&=0x0f;
     msb=(Temperature_tab[shi]>>4)&0x0f;
           write_HT1622_data(60,lsb);
           write_HT1622_data(61,msb);
 
     lsb=Temperature_tab[ge];
     lsb&=0x0f;
     msb=(Temperature_tab[ge]>>4)&0x0f;
     msb-=8;
           write_HT1622_data(58,lsb);
           write_HT1622_data(59,msb);
       write_HT1622_data(57,8);
}

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部