234彩票代理

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

    (玩电子) 电子技术学习与研究
    当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

    51单片机电子钟制作-升级版

    作者:佚名   来源:本站原创   点击数:x  更新时间:2011年08月23日   【字体:

             经过两天熬夜的一艰苦奋战,在原程序基础上    进行升级,添加按键多功能操作

              新增功能:1.  K1模式转换,可自由切换:主界面显示,时间调整,闹钟设置,温度上    下限设定等 。等                           2.  K2选定需要调整的一位数 。

                 切换至时间调整时,通过K3-"加",K4-"减"按键调整数值 。

                 切换至闹钟设置时,通过K3-"加",K4-"减"按键调整数值 。

                 切换至温度上    下限设定时,通过K3-"加",K4-"减"按键调整数值 。

    准备扩展的一新功能:闹钟音乐,喇叭开启№和关闭, 。

     操作说明:

             开机进入主界面,显示时钟№和温度 。按下K1时,进入模式选择,(有时间调整,闹钟设置,温度上    下限设定等),当K1按下四次后,长响一声,回到主界面 。

              当K1(模式选择键)按下第一次,选择在时间调整时,按下K2,选定需要调整的一位数,选定的一位数会一秒钟不 停的一闪烁 。然后按下K3 “加”或者K4 “减”按键,进行数值的一加减,当K2按到五次时,返回时间调整界面 。

              再按下K1(模式选择键)按下第二次,进入到下一个模式,闹钟设置 。按下K2,选定需要调整的一位数,选定的一位数会一秒钟不 停的一闪烁 。然后按下K3 “加”或者K4 “减”按键,进行数值的一加减,当K2按到五次时,返回闹钟设置界面 。

              再按下K1(模式选择键)按下第三次,进入到下一个模式,温度上    下限设定 。按下K2,选定需要调整的一位数,选定的一位数会一秒钟不 停的一闪烁 。然后按下K3 “加”或者K4 “减”按键,进行数值的一加减,当K2按到五次时,返回温度上    下限设定界面 。

              当K1(模式选择键)按下第四次,返回到时钟№和温度主界面显示 。



     

     

    下面是我录制的一一段视频文件:
     


    采用的一是stc89c51单片机,代码为自己原创,没有进行整理№和优化,有点乱,还有些没有加注释说明
    完整的一源代码下载地址:234彩票代理http://www./f/dianzz5.rar 

    
    #include"reg51.h"
    #define uchar unsigned char 
    #define uint unsigned int
     
    
    
    /****温度 端口定义******/
      sbit wx5=P2^4;
      sbit wx6=P2^5;
      sbit wx7=P2^6;
      sbit wx8=P2^7;
      sbit DQ=P3^6;
    
      uint temp, temp1,temp2, xs,H1,H2,L1,L2;             
    
      uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
           0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0X9c,0xc6,0x91,0xfc,0XE3};   
    
    
    /******延时程序*******/ 
     void delay1(uint m)
        {
          uint i,j;
        for(i=m;i>0;i--)
       for(j=110;j>0;j--);
        }
    
    
     void delay(unsigned int m)
        {
          while(m--);
         }
    
     void Init_DS18B20()  
       {
         unsigned char x=0;
         DQ = 1;          //DQ复位 ds18b20通信端口 
         delay(8); //稍做延时
         DQ = 0;          //单片机将DQ拉低
         delay(80); //精确延时 大于 480us
         DQ = 1;          //拉高总线   
         delay(4);
         x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
         delay(20);
        }
    
     
    
    
    /***********ds18b20读一个字节**************/
      uchar ReadOneChar()
       {
         unsigned char i=0;
         unsigned char dat = 0;
         for (i=8;i>0;i--)
         {
          DQ = 0; // 高电平拉成低电平时读周期开始
          dat>>=1;
          DQ = 1; // 给脉冲信号
          if(DQ)
          dat|=0x80;   // 
          delay(4);
          }
         return(dat);
       }
    
     
    
    /*************ds18b20写一个字节****************/
      void WriteOneChar(unsigned char dat)
      {
       unsigned char i=0;
       for (i=8; i>0; i--)
        {
          DQ = 0;          //从高电平拉至低电平时,写周期的一开始
          DQ = dat&0x01;   //数据的一最低位先写入
          delay(5);        //60us到120us延时
          DQ = 1;        
          dat>>=1;         //从最低位到最高位传入
        }
      }
    
    
    /**************读取▓ds18b20当前温度************/
    void ReadTemperature()
      {
        unsigned char a=0;
        unsigned  b=0;
        unsigned  t=0;
    
        Init_DS18B20();
        WriteOneChar(0xCC);   // 跳过读序号列号的一操作
        WriteOneChar(0x44);   // 启动温度转换 
        delay(1);            // this message is wery important
        Init_DS18B20();
        WriteOneChar(0xCC);   //跳过读序号列号的一操作
        WriteOneChar(0xBE);   //读取▓温度寄存器等(共可读9个寄存器) 前两个就是温度
        delay(1);
        a=ReadOneChar();      //读取▓温度值低位  
        b=ReadOneChar();      //读取▓温度值高位    
        temp1=b<<4;           //高8位中后三位数的一值 
        temp1+=(a&0xf0)>>4;   //低8位中的一高4位值加上    高8位中后三位数的一值   temp1室温整数值
        temp2=a&0x0f;         //小数的一值
        temp=((b*256+a)>>4);  //当前采集温度值除16得 实际温度值    zhenshu    
        xs=temp2*0.0625*10;   //小数位,若为0.5则算︻为5来显示  xs小数    xiaoshu
       }
    
     
    
     
    
     
    
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////
    /****时钟 端口定义******/
      sbit wx1=P2^0;
      sbit wx2=P2^1;
      sbit wx3=P2^2;
      sbit wx4=P2^3;
    
    
      uchar  qian,bai,shi,ge,miao1,miao2,count1,count2;
      uchar  n1,n2,z1,z2;//设置闹钟变量
      uchar code table1[]={0xc0,0xcf,0xa4,0x86,0x8b,
           0x92,0x90,0xc7,0x80,0x82};
    
    
      
    
      ////////////////////////////////////////////
      /***************按键调时程序***************/ 
    
       sbit K1=P3^0;
       sbit K2=P3^1;
       sbit K3=P3^2;
       sbit K4=P3^3;
    
    
       sbit BEEP=P3^7;    //// 定义蜂鸣器口
    
       uchar K1num,K2num,K3num,K4num,K5num,K6num,K7num;
    
    
       
    
      //////////////////////////////////////////
        /**********报警声音**************/
    
       bi(uint t)
       {
          int c,n;
          for(c=0;c<t;c++)
          {
          for(n=0;n<50;n++);
          BEEP=~BEEP;      //按位取▓反BEEP
          }
       return(t);
       }
    
     
    
    
      ///////////////////////////////////////////////
    /********定时器初始化*************/ 
    
      void init1()
        {
          TMOD=0x01; //定义定时器0,工作方式1  
          TH0=(65536-50000)/256;   //高8位  
          TL0=(65536-50000)%256;   //低8位  
          EA=1;     //开全局中断  
          ET0=1;    
          TR0=1;    //打开定时器   
         }
    
     ///////////////////////////////////////////////  
    /***********定时器中断函数************/ 
    
    
      void timer0() interrupt 1
       {  
         TH0=50;
         TL0=50;
         count1++; 
       if( count1==19 ) {count1=0; miao1++;//LED1=~LED1;                   
       if( miao1==10 ) { miao1=0;  miao2++; }
       if( miao2== 6 ) { miao2=0;     ge++; }
       if(    ge==10 ) {    ge=0;    shi++; }
       if(   shi== 6 ) {   shi=0;    bai++; }
       if(   bai==10 ) {   bai=0;   qian++; }
       if(  qian== 3 ) {  qian=0;     }
       if(qian==2&&bai==4){qian=0;bai=0;    }} 
       }                 
    
      
      
      
       void init2()
        {
          TMOD=0x01; //定义定时器0,工作方式1  
          TH1=(65536-50000)/256;   //高8位  
          TL1=(65536-50000)%256;   //低8位  
          EA=1;     //开全局中断  
          ET1=1;    
          TR1=1;    //打开定时器   
         }
    
     ///////////////////////////////////////////////  
    /***********定时器中断函数************/ 
      void timer1() interrupt 3
       {  
         TH1=50;
         TL1=50;
         count2++; 
       if( count2==120 ) {count2=0;  }}                       
    
     
    
    
    void  MODE() //模式选择
    {
    //正常显示 时钟№和温度   
    if( K1num==0 )       
          { 
         TR0=1;TR1=0;  //打开定时器0,关闭定时器1
    
      wx1=1; P0=table[qian]; delay1(2);wx1=0;  //时十位 
       if( count1<9.5 )  //时分之间的一小数点闪烁,定时器0小于0.5秒,小数点亮
        {
      wx2=1; P0=table[bai]+0X80;  delay1(2); wx2=0; //时个位打开小数点
      wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位+小数点
        }
          else    //定时器0大于0.5秒,小数点灭
        {
      wx2=1; P0=table[bai];       delay1(2); wx2=0;  //时个位关闭小数点
      wx3=1; P0=table1[shi];      delay1(2); wx3=0;  //分十位关闭小数点
        }   
      wx4=1; P0=table1[ge];       delay1(2); wx4=0;  //分个位    
      wx5=1; P0=table[temp/10];   delay1(2); wx5=0;  //温度十位
            wx6=1; P0=table[temp%10];   delay1(2); wx6=0;  //温度个位
      wx7=1; P0=table[12];        delay1(2); wx7=0;  //温度℃
            wx8=1; P0=table[13];        delay1(2); wx8=0;  //温度℃ 
    
        if((n1==qian)&&(n2==bai)&&(z1==shi)&&(z2=ge)) { bi(2000);}
        if((H1==temp/10)&(H2==temp%10))           { bi(1000); }
        if((L1==temp/10)&(L2==temp%10))           { bi(500); }
      }
    
    //时间调整显示
    if((K1num==1 )&&(K2num==0))
        {
         TR1=0; 
         wx1=1; P0=table[qian];      delay1(2); wx1=0;   //时十位 
      wx2=1; P0=table[bai]+0X80;  delay1(2); wx2=0;   //时个位,小数点停止不 动
      wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0;   //分十位,小数点停止不 动
      wx4=1; P0=table1[ge];       delay1(2); wx4=0;   //分个位  
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0x92;             delay1(2); wx6=0;   //s 
      wx7=1; P0=0x87;             delay1(2); wx7=0;   //t  
      wx8=1; P0=0xBF;             delay1(2); wx8=0; //-
      }
    if((K1num==1 )&&(K2num==1))
        {
         TR1=1; 
     if (count2<60)
        {wx1=1; P0=table[qian];      delay1(2); wx1=0; }  //时十位       
      else {wx1=1; P0=0xff;             delay1(2); wx1=0; }  //时十位 
      wx2=1; P0=table[bai]+0X80;  delay1(2); wx2=0;    //时个位,小数点停止不 动
      wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0;    //分十位,小数点停止不 动
      wx4=1; P0=table1[ge];       delay1(2); wx4=0;    //分个位  
      wx5=1; P0=0xBF;             delay1(2); wx5=0;  //-
      wx6=1; P0=0x92;             delay1(2); wx6=0;    //s 
      wx7=1; P0=0x87;             delay1(2); wx7=0;    //t  
      wx8=1; P0=0xBF;             delay1(2); wx8=0;  //-
       }
    if((K1num==1 )&&(K2num==2))
        {
         TR1=1;  
         wx1=1; P0=table[qian];      delay1(2); wx1=0;   //时十位       
     if (count2<60)
        {wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; }  //时个位,小数点停止不 动 
      else {wx2=1; P0=0xff;            delay1(2); wx2=0; }
      wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0;   //分十位,小数点停止不 动
      wx4=1; P0=table1[ge];       delay1(2); wx4=0;   //分个位  
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0x92;             delay1(2); wx6=0;   //s 
      wx7=1; P0=0x87;             delay1(2); wx7=0;   //t  
      wx8=1; P0=0xBF;             delay1(2); wx8=0; //-
       }
    if((K1num==1 )&&(K2num==3))
        {
         TR1=1;
         wx1=1; P0=table[qian];      delay1(2); wx1=0;   //时十位       
      wx2=1; P0=table[bai]+0X80;  delay1(2); wx2=0;   //时个位,小数点停止不 动
     if (count2<60)
        {wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; } //分十位,小数点停止不 动
      else {wx3=1; P0=0xff;             delay1(2); wx3=0; }
      wx4=1; P0=table1[ge];       delay1(2); wx4=0;   //分个位  
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0x92;             delay1(2); wx6=0;   //s 
      wx7=1; P0=0x87;             delay1(2); wx7=0;   //t  
      wx8=1; P0=0xBF;             delay1(2); wx8=0; //-
        }
    if((K1num==1 )&&(K2num==4))
        {
         TR1=1; 
         wx1=1; P0=table[qian];      delay1(2); wx1=0;  //时十位       
      wx2=1; P0=table[bai]+0X80;  delay1(2); wx2=0;  //时个位,小数点停止不 动
      wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0;  //分十位,小数点停止不 动
     if (count2<60)
        {wx4=1; P0=table1[ge];       delay1(2); wx4=0; }//分个位
      else {wx4=1; P0=0xff;             delay1(2); wx4=0; }  
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0x92;             delay1(2); wx6=0;   //s 
      wx7=1; P0=0x87;             delay1(2); wx7=0;   //t  
      wx8=1; P0=0xBF;             delay1(2); wx8=0; //-
      }
    
    
    //闹钟调整显示
    if(( K1num==2 )&&(K3num==0))
        {
         TR1=0;   
         wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
      wx3=1; P0=table1[n1];       delay1(2); wx3=0; //时十位
      wx4=1; P0=table1[n2];       delay1(2); wx4=0;  //时个位 
      wx5=1; P0=0x8E;             delay1(2); wx5=0; //F
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
      wx7=1; P0=table[z1];        delay1(2); wx7=0;   //分十位  
      wx8=1; P0=table[z2];     delay1(2); wx8=0; //分个位
        }
    if (( K1num==2 )&&(K3num==1))
            {
      TR1=1;
      wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
     if (count2<60)
        {wx3=1; P0=table1[n1];       delay1(2); wx3=0;} //时十位
      else {wx3=1; P0=0xff;      delay1(2); wx3=0;}
      wx4=1; P0=table1[n2];       delay1(2); wx4=0;  //时个位 
      wx5=1; P0=0x8E;             delay1(2); wx5=0; //F
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
      wx7=1; P0=table[z1];        delay1(2); wx7=0;   //分十位  
      wx8=1; P0=table[z2];     delay1(2); wx8=0; //分个位
      }
    if(( K1num==2 )&&(K3num==2))
            {
      TR1=1;
      wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
         wx3=1; P0=table1[n1];       delay1(2); wx3=0; //时十位
     if(count2<60)
      {wx4=1; P0=table1[n2];       delay1(2); wx4=0;}  //时个位 
     else{wx4=1; P0=0xff;       delay1(2); wx4=0;}
         wx5=1; P0=0x8E;             delay1(2); wx5=0; //F
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
      wx7=1; P0=table[z1];        delay1(2); wx7=0;   //分十位  
      wx8=1; P0=table[z2];     delay1(2); wx8=0; //分个位
      }
    if (( K1num==2 )&&(K3num==3))
            {
      TR1=1;
      wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
         wx3=1; P0=table1[n1];       delay1(2); wx3=0; //时十位
      wx4=1; P0=table1[n2];       delay1(2); wx4=0;  //时个位 
         wx5=1; P0=0x8E;             delay1(2); wx5=0; //F
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
     if(count2<60)
      {wx7=1; P0=table[z1];        delay1(2); wx7=0;}   //分十位 
        else{wx7=1; P0=0xff;        delay1(2); wx7=0;}   
      wx8=1; P0=table[z2];     delay1(2); ;wx8=0; //分个位
      }
    if (( K1num==2 )&&(K3num==4))
            {
      TR1=1;
      wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
         wx3=1; P0=table1[n1];       delay1(2); wx3=0; //时十位
      wx4=1; P0=table1[n2];       delay1(2); wx4=0;  //时个位 
         wx5=1; P0=0x8E;             delay1(2); wx5=0; //F
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
         wx7=1; P0=table[z1];        delay1(2); wx7=0;   //分十位 
      if(count2<60)  
      {wx8=1; P0=table[z2];     delay1(2); wx8=0;} //分个位
     else{wx8=1; P0=0xff;     delay1(2); wx8=0;}
      }
    
         
    //温度调整显示
    if( (K1num==3)&&(K4num==0) )
        {
         TR1=0;   
         wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
      wx3=1; P0=table1[H1];       delay1(2); wx3=0; //时十位
      wx4=1; P0=table1[H2];       delay1(2); wx4=0;  //时个位 
      wx5=1; P0=0xC7;             delay1(2); wx5=0; //L
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
      wx7=1; P0=table[L1];        delay1(2); wx7=0;   //分十位  
      wx8=1; P0=table[L2];     delay1(2); wx8=0; //分个位
        }
    
    if( (K1num==3)&&(K4num==1) )
        {
         TR1=1;   
         wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
      if(count2<60)
      {wx3=1; P0=table1[H1];       delay1(2); wx3=0;} //时十位
      else
      {wx3=1; P0=0xff;       delay1(2); wx3=0;}
      wx4=1; P0=table1[H2];       delay1(2); wx4=0;  //时个位 
      wx5=1; P0=0xC7;             delay1(2); wx5=0; //L
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
      wx7=1; P0=table[L1];        delay1(2); wx7=0;   //分十位  
      wx8=1; P0=table[L2];     delay1(2); wx8=0; //分个位
        }    
    
    if( (K1num==3)&&(K4num==2) )
        {
         TR1=1;   
         wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //-
      wx3=1; P0=table1[H1];       delay1(2); wx3=0; //时十位
     if(count2<60) 
      {wx4=1; P0=table1[H2];      delay1(2); wx4=0;}  //时个位
     else {wx4=1; P0=0xff;           delay1(2); wx4=0;}  
      wx5=1; P0=0xC7;             delay1(2); wx5=0; //L
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
      wx7=1; P0=table[L1];        delay1(2); wx7=0;   //分十位  
      wx8=1; P0=table[L2];     delay1(2); wx8=0; //分个位
        } 
        
    if( (K1num==3)&&(K4num==3) )
        {
         TR1=1;   
         wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //- 
      wx3=1; P0=table1[H1];       delay1(2); wx3=0; //时十位
      wx4=1; P0=table1[H2];       delay1(2); wx4=0;  //时个位 
      wx5=1; P0=0xC7;             delay1(2); wx5=0; //L
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //- 
     if(count2<60)
      {wx7=1; P0=table[L1];        delay1(2); wx7=0;}   //分十位 
         else {wx7=1; P0=0xff;        delay1(2); wx7=0;}   
      wx8=1; P0=table[L2];     delay1(2); wx8=0; //分个位
        }          
    
    if( (K1num==3)&&(K4num==4) )
        {
         TR1=1;   
         wx1=1; P0=0x89;             delay1(2); wx1=0;   //H 
      wx2=1; P0=0xBF;             delay1(2); wx2=0; //- 
      wx3=1; P0=table1[H1];       delay1(2); wx3=0; //时十位
      wx4=1; P0=table1[H2];       delay1(2); wx4=0;  //时个位 
      wx5=1; P0=0xC7;             delay1(2); wx5=0; //L
      wx6=1; P0=0xBF;             delay1(2); wx6=0;   //-  
      wx7=1; P0=table[L1];        delay1(2); wx7=0;   //分十位
     if(count2<60)     
      {wx8=1; P0=table[L2];     delay1(2); wx8=0;} //分个位
     else{wx8=1; P0=0xff;     delay1(2); wx8=0;}
        }
    
     
    
     
    
    
    //喇叭开启关闭显示
    if( (K1num==4)&&(K5num==0) )
        {
         TR1=0;   
         wx1=1; P0=0x92;             delay1(2); wx1=0;   //S 
      wx2=1; P0=0x8C;             delay1(2); wx2=0; //P
      wx3=1; P0=0x81;             delay1(2); wx3=0; //A
      wx4=1; P0=0xF0;             delay1(2); wx4=0;  //C 
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0xF7;             delay1(2); wx6=0;   //_ 
      wx7=1; P0=0xF7;             delay1(2); wx7=0;   //_  
      wx8=1; P0=0xBF;             delay1(2); wx8=0; //-
        }
        
    if( (K1num==4)&&(K5num==1) )
        {
         TR1=1;   
         wx1=1; P0=0x92;             delay1(2); wx1=0;   //S 
      wx2=1; P0=0x8C;             delay1(2); wx2=0; //P
      wx3=1; P0=0x81;             delay1(2); wx3=0; //A
      wx4=1; P0=0xF0;             delay1(2); wx4=0;  //C 
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0xC0;             delay1(2); wx6=0;   //o 
      wx7=1; P0=0x8E;             delay1(2); wx7=0;   //F  
      wx8=1; P0=0x8E;             delay1(2); wx8=0; //F
        }
        
    if( (K1num==4)&&(K5num==2) )
        {
         TR1=1;   
         wx1=1; P0=0x92;             delay1(2); wx1=0;   //S 
      wx2=1; P0=0x8C;             delay1(2); wx2=0; //P
      wx3=1; P0=0x81;             delay1(2); wx3=0; //A
      wx4=1; P0=0xF0;             delay1(2); wx4=0;  //C 
      wx5=1; P0=0xBF;             delay1(2); wx5=0; //-
      wx6=1; P0=0xC0;             delay1(2); wx6=0;   //o 
      wx7=1; P0=0xC8;             delay1(2); wx7=0;   //n  
      wx8=1; P0=0xBF;             delay1(2); wx8=0; //-
        }                           
       }  
      
    
     
    
     
    
     
    //////////////////////////////////////////////////////////////////////////////////// 
    ///////////////////按键功能设置///////////////////////////////////////////////////// 
    //////////////////////////////////////////////////////////////////////////////////// 
      void keycan()
      {
      /**********模式选择***********/
      if( K1==0  )  { K1num++; delay(5);
      if( K1==0  )  { while(!K1); bi(350);
      if(K1num==5)  { K1num=0;bi(650);TR0=1;TR1=0;} } }
                 
      if(K1num!=0) 
        {
      if( K2==0  )  { K2num++; K3num++; K4num++; K5num++; delay(5);
         if( K2==0  )  { while(!K2);bi(100); TR1=1;
      {
      if(K2num==5)  { K2num=0;bi(400);TR1=0;}
      if(K3num==5)  { K3num=0;bi(400);TR1=0;} 
      if(K4num==5)  { K4num=0;bi(400);TR1=0;} 
      if(K5num==3)  { K5num=0;bi(400);TR1=0;} }}}  }
       
       if(K1num!=0)  //加
        {
      if( K3==0 )  { delay(5);
      if( K3==0 )  { while(!K3); bi(100);
      if((K1num==1)&&(K2num==1)) { qian++; if(qian==3 ) qian=0; }      
            if((K1num==1)&&(K2num==2)) {  bai++; if( bai==10)  bai=0; }
         if((K1num==1)&&(K2num==3)) {  shi++; if( shi==6 )  shi=0; }
         if((K1num==1)&&(K2num==4)) {   ge++; if(  ge==10)   ge=0; } 
      if((K1num==2)&&(K3num==1)) {   n1++; if(  n1==3 )   n1=0; }
      if((K1num==2)&&(K3num==2)) {   n2++; if(  n2==10)   n2=0; }
      if((K1num==2)&&(K3num==3)) {   z1++; if(  z1==6 )   z1=0; }
      if((K1num==2)&&(K3num==4)) {   z2++; if(  z2==19)   z2=0; }
      if((K1num==3)&&(K4num==1)) {   H1++; if(  H1==10)   H1=0; }
      if((K1num==3)&&(K4num==2)) {   H2++; if(  H2==10)   H2=0; }
      if((K1num==3)&&(K4num==3)) {   L1++; if(  L1==10)   L1=0; }
      if((K1num==3)&&(K4num==4)) {   L2++; if(  L2==10)   L2=0; }
      if((K1num==4)&&(K5num==1)) {   BEEP=0; }                                  
         }  }
                   
       if( K4==0 )  { delay(5);
       if( K4==0 )  { while(!K4); bi(100);
      if((K1num==1)&&(K2num==1)) { qian--; if(qian==-1) qian=2; }      
            if((K1num==1)&&(K2num==2)) {  bai--; if( bai==-1)  bai=9; }
         if((K1num==1)&&(K2num==3)) {  shi--; if( shi==-1)  shi=5; }
         if((K1num==1)&&(K2num==4)) {   ge--; if(  ge==-1)   ge=9; }
      if((K1num==2)&&(K3num==1)) {   n1--; if(  n1==-1)   n1=2; }
      if((K1num==2)&&(K3num==2)) {   n2--; if(  n2==-1)   n2=9; }
      if((K1num==2)&&(K3num==3)) {   z1--; if(  z1==-1)   z1=5; }
      if((K1num==2)&&(K3num==4)) {   z2--; if(  z2==-1)   z2=9; }
      if((K1num==3)&&(K4num==1)) {   H1--; if(  H1==-1)   H1=9; }
      if((K1num==3)&&(K4num==2)) {   H2--; if(  H2==-1)   H2=9; }
      if((K1num==3)&&(K4num==3)) {   L1--; if(  L1==-1)   L1=9; }
      if((K1num==3)&&(K4num==4)) {   L2--; if(  L2==-1)   L2=9; }
      if((K1num==4)&&(K5num==2)) {   bi(); }   
        }
       } 
      }
        }
    
     
    
     
    
    ///////////////////////////////////////////// 
    ////////////////
    /////////////////////////////////////////////////////////////
    /***********主函数********************/
    ////////////////////////////////////////////////////////////
     void main()
     { 
        BEEP=0;
        init1();
     init2();
        qian=0;bai=6;shi=3;ge=0;miao2=0;miao1=0,H1=H2=L1=L2=2,n1=n2=z1=z2=1;
        while(1)
         {         
           ReadTemperature();
        keycan();
           MODE();
        
         }
      }
    
    
    
    发表评论】【告诉好友】【收藏此文】【关闭窗口

    文章评论

    相关文章