加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

PIC16F716抽油烟机主控板程序

时间:2013-09-02  来源:123485.com  作者:9stone

/**************************************************
**************抽油烟机主控板程序*******************
**************MCU=PIC16F716-04/pq*****************
**************deisigned By 小强**********************
**************date=2008年7月25日*******************
说明:
1,四个独立按键。
2,ht1621驱动液晶
3,用到的外围模块不是很多,但控制逻辑比较复杂点,对按键的处理要求也比较高的,另外还有时间显示和定时,倒计时功能,还有,液晶是段式显示的,还有图形转动,对处理技巧要求比较高,标志位也非常多,有些程序段稍微改亿下就可以用到你自己的程序中!
4,用picc写的
/5,本着学自网络,奉献网络的精神发了本程序,希望对初学者有用
***************************************************/
#include<pic16f716.h>
#define  uint unsigned int

#define TMR0Init  0x3e

#define keyOnDelay 0x08
#define keyBuzzerDelay 0x09

#define off 0
#define on 1

#define outLight RB0     //外部灯
#define we RB1    //弱风
#define st RB2    //强风
#define bz RB3   //蜂鸣器
#define backLight RB4 //背光灯
#define da RB5 //数据线
#define wr RB6   //控制线
#define cs RB7   //片选线
#define RBon 0  //低电平选通相应的功能 相当于负逻辑
#define RBoff 1 //高低电平关闭选通相应的功能

#define switchKey  RA0
#define lightKey   RA1
#define adjustKey  RA2
#define setKey     RA3

bit lightKeyFlag,switchKeyFlag,setKeyFlag,adjustKeyFlag,switchFlag,strongFlag,colFlag,f3Flag;
bit setFlag,endFlag,hourFlag,backLightFlag,twoMinutesFlag,halfSecondFlag ,LCDLightFlag,f2Flag;    
bit f6Flag,f7Flag,f4Flag,f5Flag,longKeyFlag,shortKeyFlag,l1Flag,l2Flag,l3Flag,f1Flag;

signed char timeNumber[4]={0,3,0,0};
signed char timeNumberTemp[4]={0,3,0,0};
char sWeiTemp,bWeiTemp,qWeiTemp;
char gWeiTemp;
char fiveSecondTime;//5秒定时;
char weakCount,strongCount,switchCount,setCount,endTimeCount;
uint count,backLightTime;
char gWei,sWei,bWei,qWei;
char count2;//倒计时关机用
char secondCount;//每秒递增;
char  keyOnTime;//每过0.05s钟,keyOnTime++;
uint twoMinutesCount;//每0.05s时twoMinutesCount自增1,当twoMinutesCoun=2400时到达两分钟,风机关闭;
char map[]={0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f};//映射到LCDRAM寄存器内容的MAP数组;
char num[]={0x5f,0x06,0x3d,0x2f,0x66,0x6b,0x7b,0x0e,0x7f,0x6f,0x00};//注意:0x00代表空显示,数字显示对应的笔段码,分别显示(0123456789空格)十个字符;
void delayms(unsigned char a);//延时函数 
void sendHighBit(char data,char count);//发送data数据里的高count位
void sendLowBit(char data,char low);//发送data数据里的低low位
void init(void);//系统初始化
void writeData(char *pa, char *pm);//刷LCD新显示 
void writeCommand(char command);//LCD写命令; 
void refurbish(void);  //刷新MAP数组;
void strongWindOff(void);//关强风
void weakWindOff(void);//关弱风
void timeCount(void);//时间计时函数
void keyScan(void); //键盘扫描函数
void keyOnResponse(void);//按键起作用时通常要做出响应的函数
void recover(void);//还原定时时间
void colFliker(void);//秒针闪动函数
void twoMinutes(void);//当switchCount=1,也就是相当于开关按第2次时的处理程序
void endFunction(void);//endFlag==on时的处理程序片段      
void setFlagOn();//*********************设置标志为ON时的相关操作
          
void main()
{
 init();//初始化
 writeCommand(0x01); //lcd系统使能
 writeCommand(0x29); //占空比设置等
 writeCommand(0x03); //开启LCD
 writeData(0,map);//调用显示函数
 
 while(1)
 {
  if(T0IF==1)
  {
   T0IF=0;
   TMR0=0x3e;//T0再赋计数初值   
   count++;
   if(count==10)//到0.5S关蜂鸣器
    bz=RBoff; 
   if(count==40)//延时2s
   {
    count=0;
    l3Flag=on;   
    break;//跳出循环
   }
  } 
 } 
 while(1)
 {
  while(T0IF==1)
  {           
   T0IF=0;
   TMR0=0x3e;//TMR0赋初值   
   count++;//每50ms count自增1;
   if(backLightFlag==on)//backLightFlag==on,则背光源一直亮;
   {
    backLight=on;//背光开
   } 
   else //backLightFlag==off时,若没有按任何键,则背光源过15秒熄灭
   {
    backLightTime++; 
    if(backLightTime==300)
     backLight=off;//背光关
   }  
   colFliker();//col每一秒闪烁一次
               timeCount();//时间
               keyScan();  //键盘扫描函数
               if(LCDLightFlag==on)
   {
    outLight=RBon;
   } 
   else
   {
    LCDLightFlag=off;
    outLight=RBoff;
   } 
//******************************************灯开光按键操作子程序*****************************************
               if((lightKeyFlag==on)&&(lightKey ==1))
   {
    lightKeyFlag=off;
    LCDLightFlag=!LCDLightFlag;
    keyOnResponse();
   }
//***************************************** 强弱风键操作  ********************************
   if(setFlag==off)//当setFlag==off时的处理;
   {
    if((adjustKeyFlag==on)&&(adjustKey==1))
    {
     adjustKeyFlag=off;
     if(switchFlag==on)
     {
      backLightTime=0;    
      backLight=on;
            strongFlag=!strongFlag; 
            keyOnResponse();
     }
    }
   }
   else//setFlag标志位起作用时的处理
   {
    if(setCount!=3)
    {
     if(adjustKeyFlag==on)
     { keyOnTime++;
      if(keyOnTime>10)
       longKeyFlag=on;
      if(adjustKey==1)
      {
       adjustKeyFlag=off;
       longKeyFlag=off;
       shortKeyFlag=on;
       keyOnTime=0; 
       keyOnResponse();
      }
        
     }
    }
    else
    {
     if((adjustKeyFlag==on)&&(adjustKey==1))
     {
      strongFlag=!strongFlag;
      adjustKeyFlag=off;
      keyOnResponse();
     } 
     
    }   
   }  
//*****************************************  排风开关按键处理程序片段  **********************************
   if((switchKeyFlag==on)&&(switchKey==1))
   { 
    switchKeyFlag=off;
    twoMinutesFlag=off;
    if(switchFlag==off)
    {
     switchFlag=on;
     strongFlag=on;
    } 
    else
    {
     switchCount++;
     if(switchCount==1)
      twoMinutesFlag=on;       
     if(switchCount==2)//按两次按钮,关掉
     {
      switchCount=0;
      switchFlag=off;
      setFlag=off; 
      recover();
      gWeiTemp=timeNumber[0];
      sWeiTemp=timeNumber[1];       
      bWeiTemp=timeNumber[2];
      qWeiTemp=timeNumber[3];          
     }
    }
    keyOnResponse();
   }
//**********************************设置按钮键操作处理程序段**************************************************************
   if((setKeyFlag==on)&&(setKey==1))
   {
    setKeyFlag=off;
    setFlag=on;
    setCount++;//按设置键的次数;
    fiveSecondTime=0;//时间计数复位
    keyOnTime=0;
    count2=0;
    hourFlag=off;
    if(switchFlag==on)
    {
     if(setCount>=4)
     { 
      recover(); //数据从timeNumberTemp数组重新写回到timeNumber中;
      setFlag=0;
      gWeiTemp=timeNumber[0];
      sWeiTemp=timeNumber[1];       
      bWeiTemp=timeNumber[2];
      qWeiTemp=timeNumber[3]; 
     }    
    }
    else
    {
     if(setCount>=3)
     {
      recover(); //数据从timeNumberTemp数组重新写回到timeNumber中;
      setFlag=0;
      gWeiTemp=timeNumber[0];
      sWeiTemp=timeNumber[1];       
      bWeiTemp=timeNumber[2];
      qWeiTemp=timeNumber[3];
     } 
    }
    keyOnResponse();     
   }
//*********************设置标志为ON时的相关操作*************************************************************  
   setFlagOn();      
//************************************ switchFlag标志为on或者off时的相应程序片段*************************************************
   if(switchFlag==on)
   {       
    backLightFlag=on;
    if(strongFlag==on)
    {
     weakWindOff();
     st=RBon;
     l1Flag=on;
          strongCount++;
     switch(strongCount)
     {
      case 0x01: f1Flag=on; f2Flag=off; f3Flag=on; f4Flag=off; break;
      case 0x02: f1Flag=on; f2Flag=off; f3Flag=on; f4Flag=off; break;
      case 0x03: f1Flag=off; f2Flag=on; f3Flag=off; f4Flag=on; break;
      case 0x04: f1Flag=off; f2Flag=on; f3Flag=off; f4Flag=on; break;
      default:   strongCount=0x00; break;
     } 
    }
    else
    {
     strongWindOff();
     we=RBon;
     l2Flag=on;
     weakCount++;      
     switch(weakCount)
     {
   
      case 0x01: f5Flag=on;f6Flag=on;f7Flag=off; break;
      case 0x02: f5Flag=on;f6Flag=on;f7Flag=off; break;
      case 0x03: f5Flag=off;f6Flag=on;f7Flag=on; break;
      case 0x04: f5Flag=off;f6Flag=on;f7Flag=on; break;
      case 0x05: f5Flag=on;f6Flag=off;f7Flag=on; break;
      case 0x06: f5Flag=on;f6Flag=off;f7Flag=on; break;
      default:   weakCount=0;break;
     }  
    } 
   
   }
   else
   {
    strongWindOff();
    weakWindOff();
    backLightFlag=off;
    switchCount=0;
   }
   endFunction();   
   twoMinutes();          
   refurbish();//刷新寄存器
   writeData(0,map);//显示
   if(count==60000)
    count=0;        
  } 
 } 
}

//************************************** 时 间 计 时 函 数 **************************************************
void timeCount(void)
{
 if(count%20==0)
 {
  secondCount++;
  if(secondCount==60)
  {
   secondCount=0;
   gWei++;
   if(gWei==10)
   {
     gWei=0;
    sWei++;
    if(sWei==6)
    {
     sWei=0;
     bWei++;
     if(qWei==2&&bWei==4)
     {
      bWei=0;
      qWei=0;
     } 
     if(bWei==10)
     {
      bWei=0;
      qWei++;        
      } 
     }            
    }
  }
 }  
}
//*******************************************键 盘 扫 描 函 数 *****************************************
void keyScan(void)
{              
 if(lightKeyFlag==off)
 {
  if(lightKey ==0)//判断lightKey 键是否按下,outLight灯和LCDLigh图形灯开关键
  {
   delayms(keyOnDelay);
   if(lightKey ==0)
   {
    lightKeyFlag=on;
   } 
  }
 }
 if(switchKeyFlag==off)
 {
  if(switchKey==0)//判断switchKey键是否按下  风机开关键
  {
   delayms(keyOnDelay);
   if(switchKey==0)
   {
    switchKeyFlag=on;
   } 
  }
 }
 if(setKeyFlag==off)
 {
  if(setKey==0)//判断setKey键是否按下  设置键
  {
   delayms(keyOnDelay);
   if(setKey==0)
   {
    setKeyFlag=on;
   } 
  }
 }
 if(adjustKeyFlag==off)
 {
  if(adjustKey==0)//判断adjustKey键是否按下  强弱控制键
  {
   delayms(keyOnDelay);
   if(adjustKey==0)
   {
    adjustKeyFlag=on;
   } 
  }
 }               
}
//************************************************刷 新  显 示 内 容*****************************************
void refurbish(void)  //刷新显示内容;LCD要显示的内容和本地的map数组一一对应;
{
 if(setFlag==1)
 {
  map[0]=num[gWeiTemp]; 
  map[1]=num[gWeiTemp]>>4;
  if(l3Flag==on)   
   map[1]=map[1] | 0x08;
  map[2]=num[sWeiTemp]; 
  map[3]=num[sWeiTemp]>>4;
  if(colFlag==on)  
   map[3]=map[3] | 0x08;
  map[4]=num[bWeiTemp]; 
  map[5]=num[bWeiTemp]>>4;
  if(l2Flag==on)
   map[5]=map[5] | 0x08;
  map[6]=num[qWeiTemp]; 
  map[7]=num[qWeiTemp]>>4;
 }
 else
 {
  map[0]=num[gWei]; 
  map[1]=num[gWei]>>4;
  if(l3Flag==on)   
   map[1]=map[1] | 0x08;
  map[2]=num[sWei]; 
  map[3]=num[sWei]>>4;
  if(colFlag==on)  
   map[3]=map[3] | 0x08;
  map[4]=num[bWei]; 
  map[5]=num[bWei]>>4;
  if(l2Flag==on)
   map[5]=map[5] | 0x08;
  map[6]=num[qWei]; 
  map[7]=num[qWei]>>4; 
 }
 if(f6Flag==on)  
  map[7]=map[7]| 0x08;
//*******************map[8]赋值*****************
 if(LCDLightFlag==on)
  map[8]=0x01;
 else
  map[8]=0;
 if(f1Flag==on)
  map[8]=map[8] | 0x02;
 if(f2Flag==on)
  map[8]=map[8] | 0x04;
 if(l1Flag==on)
  map[8]=map[8] |0x08;
  
//*******************map[9]赋值*****************    
 if(f4Flag==on)
  map[9]=0x01;
 else
  map[9]=0;
 if(f3Flag==on)
  map[9]=map[9] | 0x02; 
 if(f5Flag==on)
  map[9]=map[9] | 0x04;
 if(f7Flag==on)
  map[9]=map[9] | 0x08;
}
//*****************************  系 统 初 始 化  ******************************************************
void init(void)
{
 GIE=0;//关总中断
 T0IE=0;//关T0中断
 OPTION=0x07;//设置预分频器TMR0并设置分频比为256;
 ADCON1=0x07;
 TMR0=TMR0Init;//赋初值
 T0IF=0;   
 TRISB=0x00;//设置B口为输出
 TRISA0=1;//设置A口为输出
 TRISA1=1;
 TRISA2=1;
 TRISA3=1;
 backLight=on;//LCD背光亮
 bz=RBon;//蜂鸣器响
 we=RBoff; //弱风
 st=RBoff;   //强风//背光灯
 outLight=RBoff;
 lightKeyFlag=off;
 switchKeyFlag=off;
 setKeyFlag=off;
 adjustKeyFlag=off;
 strongFlag=off;
 switchFlag=off;
 LCDLightFlag=off;
 colFlag=on;//col标志置位
 setFlag=off;
 halfSecondFlag=off; 
 twoMinutesFlag=0;
 longKeyFlag=off;
 shortKeyFlag=off;
 setCount=0;
 endFlag=off;
 backLightFlag=off;
 backLightTime=0;
 endTimeCount=0;
 fiveSecondTime=0;
 twoMinutesCount=0;
 keyOnTime=0;
 secondCount=0;
 count2=0;
 hourFlag=off;
}
//***************************************发送data数据里的低low位*************************
void sendLowBit(char data,char low)
{
 char i;
 for(i=0;i<low;i++)
 {
  if((data&0x01)==0)
   da=0;
  else
   da=1;
  wr=0;
  asm("nop");
  wr=1;
  asm("nop");
  data>>=1;
 }
}
//************************************发送data数据里的高count位************************
void sendHighBit(char data,char count)
{
 char i;
 for(i=0;i<count;i++)
 {
  if (data & 0x80)
   da = 1;
  else
   da = 0;
  wr = 0;
  asm("nop");
  wr = 1;
  asm("nop");
  data <<= 1;
 }
}
//***********************************************延时毫秒函数******************************
void delayms(unsigned char a)
{
 uint mmm;
 while(a-->1)
 {
  for(mmm = 0; mmm < 1000;mmm ++) {}
 }
}
//**********************************************刷新LCD显示********************************
void writeData(char *pa, char *pm)
{
 char i;
 cs=1;
 asm("nop");
 cs=0;
 asm("nop");
 sendHighBit(0xa0,3);//发送写数据命令
 sendHighBit(*pa<<2,6);//写器件地址; 高位先发; 在本程序里都是从第0位开始写
 for(i=0;i<10;i++)//数据4位4位的写,一共写10次;写数据时低位先发;
 {
  sendLowBit(*pm++,4);
 }
}
//*******************************************LCD写命令函数***********************************
void writeCommand(char command)
{
 cs=1;
 asm("nop"); 
 cs=0;
 asm("nop");
 sendHighBit(0x80,3);
 sendHighBit(command,9); 
}
//************************************关  强  风****************************************************************
void strongWindOff()//关强风
{
 st=RBoff;
 l1Flag=off;
 f1Flag=off;
 f2Flag=off;
 f3Flag=off;
 f4Flag=off; 
}
//************************************关  弱  风****************************************************************
void weakWindOff(void)
{
 we=RBoff;
 l2Flag=off;
 f5Flag=off;
 f6Flag=off;
 f7Flag=off; 
}

//********************************按键起作用时通常要做出的响应***************************************************
void keyOnResponse(void)
{
 bz=RBon;//蜂鸣器开
 backLightTime=0;//LCD背光延时时间清零;
 backLight=on;//LCD背光灯开
 delayms(keyBuzzerDelay);//蜂鸣器延时开
 bz=RBoff;//蜂鸣器关;  
}
//*********************************从备份数组中去吃数据还原定时数据**********************************************
void recover(void)  //还原定时数据
{
 setCount=0; 
 setFlag=off;
 timeNumber[0]=timeNumberTemp[0];
 timeNumber[1]=timeNumberTemp[1];
 timeNumber[2]=timeNumberTemp[2];
 timeNumber[3]=timeNumberTemp[3]; 
}
//***************************当switchCount=1,也就是相当于开关按第2次时的处理程序*********************************
void twoMinutes(void)
{
 if(twoMinutesFlag==on)
 {
  twoMinutesCount++;
  if(twoMinutesCount>=2400)
  {
   bz=RBon;
   LCDLightFlag=off;
   switchFlag=off;
   backLightFlag=off;
   backLight=off;
   switchCount=0;
   setFlag=0;
   if(twoMinutesCount==2404)
   {
    bz=RBoff;
    twoMinutesFlag=off;
    gWeiTemp=timeNumber[0];
    sWeiTemp=timeNumber[1];       
    bWeiTemp=timeNumber[2];
    qWeiTemp=timeNumber[3];
   }
  }   
 }
 else
 {
  twoMinutesCount=0;
 } 
}
//***********************endFlag==on时的处理程序片段*************************************************************
void endFunction(void)//定时结束:当倒计时结束时,蜂鸣器以0.5S内发出三次提示音,一秒为一周期共5个周期.
{   
 if(endFlag==on)
 {
      
       backLight=off;
       setFlag=off;
       LCDLightFlag=off;
       switchFlag=off;    
       endTimeCount++;
  if(endTimeCount%3==0)
   bz=!bz;
  if(endTimeCount==100)
  {
   bz=RBoff;
   endFlag=off;
   endTimeCount=0;
  }  
 }
}

//*********************设置标志为ON时的相关操作**********************************************************      
void setFlagOn()

 if(setFlag==on)
 {
  if(setCount==1)
  {
    fiveSecondTime++;
    if(longKeyFlag==on)
    {
       backLightTime=0;
       fiveSecondTime=0;
       if(count%4==0)
       {
        timeNumber[2]++;
        if((timeNumber[3]==2)&&(timeNumber[2]==4))
        {
         timeNumber[3]=0;
         timeNumber[2]=0;
        }
        else
        {
         if(timeNumber[2]==10)
         {
          timeNumber[2]=0;
          timeNumber[3]++;
         }
        }
        timeNumberTemp[2]=timeNumber[2];//更新高2位显示数据
        timeNumberTemp[3]=timeNumber[3]; //更新高2位显示数据        
       } 
    }
    else
    {
       if(shortKeyFlag==on)
       {
        shortKeyFlag=off;
        fiveSecondTime=0;
        timeNumber[2]++;
        if((timeNumber[3]==2)&&(timeNumber[2]==4))
        {
         timeNumber[3]=0;
         timeNumber[2]=0;
        }
        else
        {
         if(timeNumber[2]==10)
         {
          timeNumber[2]=0;
          timeNumber[3]++;
          
         }
        }
        timeNumberTemp[2]=timeNumber[2];
        timeNumberTemp[3]=timeNumber[3];          
       }
    }
    if(fiveSecondTime%10==0)
      halfSecondFlag=!halfSecondFlag;
    if((longKeyFlag==off)&&(halfSecondFlag==off))//每一秒闪烁一次
    {
      bWeiTemp=10;
      qWeiTemp=10;     
      colFlag=on;
    }  
    else
    {
      gWeiTemp=timeNumber[0];
      sWeiTemp=timeNumber[1];       
      bWeiTemp=timeNumber[2];
      qWeiTemp=timeNumber[3];
      colFlag=on;
    }
    if(fiveSecondTime==100)
    {
      fiveSecondTime=0;
      setFlag=off;
      setCount=0;
      keyOnTime=0;
    }  
   
  }
//××××××××××××××××××××××× if(setCount==2)时的处理程序  ××××××××××××××××××××××××××   
  if(setCount==2)
  { 
     fiveSecondTime++;
     if(longKeyFlag==on)
     {
        backLightTime=0;
        fiveSecondTime=0;
        if(count%4==0)
        {
         timeNumber[0]++;
         if(timeNumber[0]==10)
         {
          timeNumber[0]=0;
          timeNumber[1] ++;
          if(timeNumber[1]==6)
          {
           timeNumber[0]=0;
           timeNumber[1]=0;
          } 
         }          
         timeNumberTemp[0]=timeNumber[0];
         timeNumberTemp[1]=timeNumber[1];         
        } 
     }
     else
     {
        if(shortKeyFlag==on)
        {
         shortKeyFlag=off;
         fiveSecondTime=0;
         timeNumber[0]++;
         if(timeNumber[0]==10)
         {
          timeNumber[0]=0;
          timeNumber[1] ++;
          if(timeNumber[1]==6)
          {
           timeNumber[0]=0;
           timeNumber[1]=0;
          } 
         } 
         timeNumberTemp[0]=timeNumber[0];
         timeNumberTemp[1]=timeNumber[1];          
        }
     }
     if(fiveSecondTime%10==0)
         halfSecondFlag=!halfSecondFlag;
     if((longKeyFlag==off)&&(halfSecondFlag==off))//每一秒闪烁一次
     {
         gWeiTemp=10;
         sWeiTemp=10;      
         colFlag=on;
     } 
     else
     {
         gWeiTemp=timeNumber[0];
         sWeiTemp=timeNumber[1];       
         bWeiTemp=timeNumber[2];
         qWeiTemp=timeNumber[3];      
         colFlag=on;
     }
     if(fiveSecondTime==100)
     {
         fiveSecondTime=0;
         setFlag=off;//回到上一次状态
         setCount=0;//
         keyOnTime=0;
     }
  }
//×××××××××××××××××××××××× setCount==3 时的处理程序段××××××××××××××××××
  if(setCount==3)
  {          
    if(hourFlag==off)
    {              
           if((timeNumber[3]==0)&&(timeNumber[2]==0))
           {
          hourFlag=on; 
          count2=0;     
          timeNumber[3]=timeNumber[1];
          timeNumber[2]=timeNumber[0];       
          timeNumber[1]=0;
          timeNumber[0]=0;        
            }
            else
            {
                if(count%20==0)
                {        
           count2++;
           if(count2==60)
           {
            count2=0;
            timeNumber[0]--;
            if(timeNumber[0]<0)
            {
             timeNumber[0]=9;
             timeNumber[1]--;
             if(timeNumber[1]<0)
             {
              timeNumber[1]=5;
              timeNumber[2]--; 
              if(timeNumber[2]<0)
              {
               timeNumber[2]=9;
               timeNumber[3]--; 
               }  
               } 
                }
                }
               }
            }
        }    
         else
        {
             if(count%20==0)
             {
               timeNumber[0]--;
         if(timeNumber[0]<0)
         {
          timeNumber[0]=9;
          timeNumber[1]--;
          if(timeNumber[1]<0)
          {
           timeNumber[1]=5;
           timeNumber[2]--;
           if(timeNumber[2]<0)
           {
            timeNumber[2]=9;
            timeNumber[3]--;
            if(timeNumber[3]<0)
            {
             endFlag=on;
             hourFlag=off;
             bz=RBon;
             recover();
             gWeiTemp=timeNumber[0];
             sWeiTemp=timeNumber[1];       
             bWeiTemp=timeNumber[2];
             qWeiTemp=timeNumber[3]; 
            } 
           }  
          }
         }
       }   
        
          }      
    gWeiTemp=timeNumber[0];
    sWeiTemp=timeNumber[1];       
    bWeiTemp=timeNumber[2];
    qWeiTemp=timeNumber[3];
    colFlag=on;
  }                            
 }
 else
 {
  setCount=0;
 } 
}

//*******************************col每 一 秒 闪 烁 一 次********************************************************
void colFliker(void)
{
 if(count%10==0)
 {
  colFlag=!colFlag;
 } 
}


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门