我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 2608|回复: 1

点阵多模式显示时间程序(另外一半代码)

[复制链接]

该用户从未签到

19

主题

114

回帖

111

积分

二级逆天

积分
111

社区居民终身成就奖贴图大师奖金点子奖宣传大使奖灌水天才奖幽默大师奖新人进步奖

QQ
发表于 2014-7-6 16:13:54 | 显示全部楼层 |阅读模式
/*********************************************************************************************
函数名:Displaying()
调  用:显示涵数
结  果:
/**********************************************************************************************/              
void Time_NOjieri(void) {   
      read_clockS();
if (hh>=4&&hh<6)  {
if ((hh>=4&&hh<6)&&ss>=30)//凌晨
        Be=9;
        else
        if(++Be>1)
        Be=0;        
         }

if (hh>=6&&hh<8)  {
if ((hh>=6&&hh<8)&&ss>=30)//早晨
        Be=2;
        else
        if(++Be>1)
        Be=0;        
         }

if (hh>=8&&hh<12)  {
if ((hh>=8&&hh<12)&&ss>=30)//上午
        Be=3;
        else
        if(++Be>1)
        Be=0;        
         }
if ( hh>=12&&hh<13)  {    //中午
if ((hh>=12&&hh<13)&&ss>=30)
        Be=4;
        else
        if(++Be>1)
        Be=0;        
         }
if ( hh>=13&&hh<19)  {    //下午
if ((hh>=13&&hh<18)&&ss>=30)
        Be=5;
        else
        if(++Be>1)
        Be=0;        
         }
if ( hh>=19&&hh<22)  {    //晚上
if ((hh>=19&&hh<22)&&ss>=30)
        Be=6;
        else
        if(++Be>1)
        Be=0;        
         }
if ( hh>=22&&hh<=23)  {    //夜里
if ((hh>=22&&hh<=23)&&ss>=30)
        Be=7;
        else
        if(++Be>1)
        Be=0;        
         }
if ( hh>=0&&hh<=4)  {    //深夜
if ((hh>=0&&hh<=4)&&ss>=30)
        Be=7;
        else
        if(++Be>1)
        Be=0;        
         }
            }
/*********************************************************************************************
函数名:intmcu()
调  用:定时和外中断初始化涵数
参  数:无
返回值:无
结  果:
备  注:
/**********************************************************************************************/
void intmcu()
{
    TH1=TH;                 //16位计数寄存器T1高8位定时器T1初值
    TL1=TL;                 //16位计数寄存器T1低8位定时器T1初值
//**************************************
//IP-x x pt2 ps pt1 px1 pt0 px0*/
    IP  =B(00000011);  //外中断0优先用于红外遥控
//**************************************
//TCON-TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0*/
    TCON=B(01010001);//IT0下降沿触发INT0.(IT0=0为低电平触发)TR1扫描点阵
//**************************************
//TMOD-GATE1 C/T M1 M0 GATE0 C/T M1 M0
    TMOD=B(00010010);//定时器01模式1(16位)
//**************************************
//IE-EA X ET2 ES ET1 EX1 ET0 EX0
    IE  =B(10001011); //总中断定时中断01和外中断0
//**************************************
}




void SMillPlay(void) {//滚动生日程序加载
       read_clockS();                       //读时钟数据
   for(disrow=0;disrow<8;disrow++)
   {
      OE=1;
     // H_PORT=disrow;
     
      if(mo/10==0)
      writeda(0xff,3,0);
      else
      writeda(tableshang[8+disrow],3,0);       //写1         
      writekong();
      writeda(tableshang[mo%10*8+disrow],4,0); //月个位      
      writeda(tableshang[80+disrow],5,1);      //月         
      writekong();                               //空一列
      writeda(tableshang[dd/10*8+disrow],4,0);        
      writekong();
      writeda(tableshang[dd%10*8+disrow],4,0);      
      writekong();
      writeda(~table[hh/10*8+disrow],6,1);            
      writekong();
      writeda(~table[hh%10*8+disrow],6,1);            
      writekong();
      if(half_sec_flag)
      writemao(~table[80+disrow]);
      else
      writemao(0xff);                             
      writekong();
      writeda(~table[mm/10*8+disrow],6,0);            
      writekong();
      writeda(~table[mm%10*8+disrow],6,0);            
      writekong();
      writekong();
      writeda(tablexing[week*8+disrow],8,1);
      H_PORT=swA2[disrow];
      STR=1;
      OE=0;
      DELAY_US(Light*3);
      STR=0;
      OE=1;
   }
for(disrow=0;disrow<8;disrow++)
   {
      OE=1;
      //H_PORT=8+disrow;
      if(month_moon/10==0)
      writeda(0xff,3,1);
      else
      writeda(tablexia[8+disrow],3,1);                  
      writekong();

      writeda(tablexia[month_moon%10*8+disrow],4,1);      
      writeda(tablexia[80+disrow],5,0);writekong();
      writeda(tablexia[day_moon/10*8+disrow],4,1);         
      writekong();
      writeda(tablexia[day_moon%10*8+disrow],4,1);         
      writekong();

      writeda(~table1[hh/10*8+disrow],6,1);              
      writekong();
      writeda(~table1[hh%10*8+disrow],6,1);              
      writekong();
      
      if(half_sec_flag)
      writemao(~table[80+disrow]);
      else
      writemao(0xff);                              
      writekong();

      writeda(~table1[mm/10*8+disrow],6,0);            
      writekong();
      writeda(~table1[mm%10*8+disrow],6,0);            
      writekong();
      
      writeda(tablexia[ss/10*8+disrow],4,2);            
      writekong();
      writeda(tablexia[ss%10*8+disrow],4,2);
      H_PORT=swA2[8+disrow];
      STR=1;
      OE=0;
      DELAY_US(Light*3);
      STR=0;
      OE=1;

   }  }
//******************************************************************************************
//******************************************************************************************
/*******************亮度自动控制************************************************************/
/*void Light_check(void)                  //判断是否需要变暗
{    if(read_clock(10,TempCH_LIGHTOUT)==1){
    if(hh>=0&&(hh<4))        //0点到早上4点 最暗
    Light=10;
    else
    if(hh>=4&&(hh<6))        // 早上4点和早上6点 接近很暗
    Light=20;
    else
    if(hh>=6&&hh<9)           // 早上6点和早上9点 偏暗
    Light=100;
    else  
    if(hh>=9&&(hh<12)) //  晚上6点 到8点  偏暗     
    Light=200;
    else   
    if(hh>=12&&(hh<15))   // 早上 8点之后最亮 直到晚上 7点才偏暗
    Light=100;
    else   
    if(hh>=15&&(hh<17))   // 早上 8点之后最亮 直到晚上 7点才偏暗
    Light=100;
    else   
    if(hh>=17&&(hh<21))   // 早上 8点之后最亮 直到晚上 7点才偏暗
    Light=90;
    else   
    if(hh>=21&&(hh<=23))   // 早上 8点之后最亮 直到晚上 7点才偏暗
    Light=60;
    else  Light=200;     }
    else
    Light=BCD2DEC(read_clock(10,TempCH_NumLIGHT))*13;                 
}    */








void   NLfestival_check(void)    {                //判断农历节日
    uchar a,i,u;
if(qingming_table[yy>>3]&(0x80>>(yy%8)))        //查清明节的表
    i=1;
    else
    i=0;
    NLjirig_bit=0;
    if( (mo==4) &&(dd==(0x04+i)) )    {           //清明是4号还是5号
        NLjirig_bit=1;                           //有节日
        for(a=0;a<4;a++) {                       //无节气显示清明
        A[91+a]=NLi_table[2][a];
        A[95]=190;     //加入节和!号
        A[96]=191;
        A[97]=218;
        }
               }
/*************************************************************/
    else  {  
for(i=0;i<NESTIVAL_MAX;i++)    {
if((month_moon==festival_table[0])&&(day_moon==festival_table[1])) {  //农历节日查表正确
             u=i;
              NLjirig_bit=1;                        //有节日
             for(a=0;a<4;a++) {                       //无节气显示今天清明
             A[91+a]=NLi_table[a];}
             if(u>0&&u<9){                   //加入节和!号
             A[95]=190;  //节
             A[96]=191;
             A[97]=218;  //!
                          }
            break;}     //if
           }         //for
           }         //else

   if (NLjirig_bit==1) {
   for(a=0;a<4;a++)                     
   A[87+a]=14+a; }

   if (NLjirig_bit==0)    //无节日显示空
   for(a=0;a<11;a++)                  
   A[87+a]=NL;
           }   


/*********************************************************************************************
函数名:nonglicn();
调  用:
参  数:无
返回值:无
结  果:农历数据加载到点阵显示数据库
备  注:农历显示涵数
/**********************************************************************************************/
void nonglicn(void)      {
// get_temp();
// jiqie_bit=0;                      //复位节气标记(作用是第二天不在重复显示)
// jirig_bit=0;                      //复位节日标记(作用是第二天不在重复显示)
// nongliCONV();                                   //农历换算
A[70]= (year_moon+100-84)%10*2+64;      //从"甲"开始64是甲的开始部分
A[71]= (year_moon+100-84)%10*2+65;        //甲的另外一部分
A[72]= (year_moon+100-84)%12*2+84;      //从"子"开始
A[73]= (year_moon+100-84)%12*2+85;         //子的另外一部分
A[74]= (year_moon+100-84)%12*2+108;     //从鼠生肖开始
A[75]= (year_moon+100-84)%12*2+109;     //生肖判断子鼠的另外一部分
//--------------农历月份的显示------------------------------------
switch(month_moon)    {//根据月的数据选择1,11,12月
case 1:                //一月显示为"正"月
{A[78]=180;        //----------"正"
A[79]=181;        //----------"正"
break;}
//-------------------------------------
case 11:               //十一月显示为"冬"月
{A[78]=182;        //-----------"冬"
A[79]=183;        //-----------"冬"
break;}
//-----------------------------------
case 12:                //十二月显示为"腊"月
{A[78]=184;        //--------------"腊"
A[79]=185;        //--------------"腊"
break;}
default :
//----------------------------------------1-10月的显示
{ A [78]=month_moon*2+38;     //大写月份数的一半
  A [79]=month_moon*2+39;     //大写月份数的另一半
}}
//-----------------------农历日期的显示----------------------------------
if(day_moon>10)  {                         //农历日期大于10号的处理
  switch (day_moon/10)                     //农历日期十位
  {case 1:                                 //"十号到十九号
  {A[82]=58;A[83]=59;break;}
   case 2:                                 //20号到29号显示廿
  {A[82]=62;A[83]=63;break;}
   case 3:                              //30号到31号位为3显示三
  {A[82]=44;A[83]=45;
   break;}
   default:
   break;}}
   else
  {A[82]=60;A[83]=61; }  //否则农历日期数肯定小于或等于十了,显示"初"
   if(day_moon%10==0)                  //如果十号
  {A[84]=58;A[85]=59;}
   else
  {A[84]=day_moon%10*2+38;    //日十位
   A[85]=day_moon%10*2+39;}    //日个位
   NLfestival_check();                //农历节日加载

        }
/*****************************************************************************
16X32点阵
函数功能: 装载一线点阵年月日时分秒数据
入口参数:
出口参数:
作者    :
数据格式说明:  
******************************************************************************/   
void timebuff(uchar  x)    {
  if(x)
  read_clockS();          //读取年月日时分秒数据
// if(ss==55)
// Read_temperature();     //将取得的温度值放入温度寄存器变量
  A[58]=(TMP)/10;   //温度十位
  A[59]=(TMP)%10;   //温度个位
  A[61]=0;          //温度小数部分
  A[36]=hh/10;                        //小时
  if(A[36]==0)  A[36]=NL;        //消隐小时十位
  A[37]=hh%10;                          //小时个位
  A[40]=mm/10;                          //分钟
  A[41]=mm%10;                          //分钟
  A[44]=ss/10;                          //秒十位
  A[45]=ss%10;                          //秒个位      
  A[16]=yy/10;                        //年十位
  A[17]=yy%10;                        //年个位
  A[20]=mo/10;                        //月十位
  if(A[20]==0) {A[20]=NL;}        //消隐月十位
  A[21]=mo%10;                        //月个位
  A[24]=dd/10;                          //日十位
  if(A[24]==0) {A[24]=NL;}        //消隐日十位
  A[25]=dd%10;                          //日个位
  Conver_week();                            //星期处理
  A[33]=week_data[week];                //周的一半
  A[34]=week_data[week]+1;            //周的另一半
  nonglicn();                                //农历节日处理                    
     }            
/*;*******************************************************************************
;程序名称:加载滚动节日
;功能    : Secondcolor(Buffnum+8)
;输入:
;输出:无.
;影响:无.
;修改日期:2011.05.15
;*********************************************************************************/
void JiaZai_liudonjieshu(void)      {
    uchar  p,u;
   
    for(p=0;p<FESTIVAL_MAX;p++)                    //节日检查
if((mo!=festival_table2[p][0])&&(dd!=festival_table2[p][1]))             //当前时间和数节日数据库是否吻合
     T=0XFF;   
     for(p=0;p<FESTIVAL_MAX;p++)            
if((mo==festival_table2[p][0])&&(dd==festival_table2[p][1]))             //当前时间和数节日数据库是否吻合
     T=p;   
     if(T==0XFF){                        //计算到无节日,显示广告
        for(u=0;u<17;u++)
        gdate=guangg[Be];
        if(Be>1) {
        gdate[5]=hh/10+2;
        gdate[6]=hh%10+2;  
        gdate[9]=mm/10+2;
        gdate[10]=mm%10+2;         
        gdate[13]=ss/10+2;
        gdate[14]=ss%10+2;}         
         }
         else{   
         if(T>43) {                             //第二个数据库的范围
         for(u=0;u<17;u++)                   //载入第二个节日滚动的字符数据
         gdate=fesJieRi_table2[T-44];}
         else  {                             //载入第一个节日滚动的字符数据
         for(u=0;u<17;u++)
         gdate=fesJieRi_table[T];}        
                   }
                                   }
/*;*******************************************************************************
;程序名称:sendRbyte().
;功能    :颜色控制     Secondcolor(Buffnum+8)
;输入:
;输出:无.
;影响:无.
;修改日期:2011.05.15
;*********************************************************************************/
uchar  Secondcolor(uchar b){//颜色控制程序
   uchar a=0;
    a=  (((color_g[b/8])>>(b%8))&0x01);
    a<<=1;
    a=a|(((color_r[b/8])>>(b%8))&0x01);
   return a;}
/*;******************************************************************************
;程序名称:SECOND_liudonshu().
;程序功能:发送各种流动数据
;修改日期:2011.05.15
;******************************************************************************- */
void SECOND_liudonshu(void)      {
        unsigned char b,i,word,c;
        for(i=0;i<8;i++){                    //送往8个4094的数据.
         b=Buffnum+i;
      if(disp_mode==0xFF)  {
         c=Buffnum+i;
        if(b<8||b>24)b=KG;                    //开始末尾发空格17+8=25                          
          else b=b-8;                            //发了8个空格
          if(T==0XFF) {                        
         
           word=Guanggao[gdate][disrow];
           sendRXbyte(word,2,8);
           }
          else{
          if(T>43)
          word=jirishujuku[gdate][disrow];
          else
          word=GonLIjierisuju[gdate][disrow];
          sendRXbyte(word,2,8);}
          }
          else {
          word=EC_8X16[A][disrow];
          sendRXbyte(word,Secondcolor(b),8);  }
        }
/*-------------------------------------------------*/
        b=Buffnum+8;
    if(disp_mode==0xFF)    {
     c=Buffnum+i;
      if(b<8||b>24)            //开始末尾发空格
       b=KG;
       else  
       b=b-8;
      if(T==0XFF) {        
           word=Guanggao[gdate][disrow];
           sendRXbyte(word,2,offset);      
                       }
      else{
      if(T>43)
      word=jirishujuku[gdate][disrow];
      else
      word=GonLIjierisuju[gdate][disrow];
      sendRXbyte(word,2,offset);
        }
        }
     else {
     word=EC_8X16[A][disrow];
     sendRXbyte(word,Secondcolor(b),offset); }
        }
   
/*********************************************************************************************
函数名:Displaying()
调  用:
结  果:
/**********************************************************************************************/
void Displaying(unsigned char mode)        {//送显示数据         
    switch(mode)  {
case 0xFF:{JiaZai_liudonjieshu();SECOND_liudonshu();if(offset==8) {offset=0;Buffnum++;if(Buffnum>32){Buffnum=2;disp_mode=0x03;Time_NOjieri();}}break;}            
case    2:{shutter_clockshow();if(++Cou>2000){disp_mode=0XFF;Cou=0;ZHSmode=3;};break;}            //翻页钟显示   
case    3:{timebuff(1);SECOND_liudonshu();if(offset==8) {offset=0;Buffnum++;
if(Buffnum==20) {stop_bit=1,stop_time=1580;}                        //月日停留时间
if(Buffnum==28) {stop_bit=1,stop_time=1580;}                       //星期停留时间                    
if(Buffnum>89&&NLjirig_bit==0)
{Buffnum=0;Read_temperature();disp_mode=2;}
else
if(Buffnum>102&&NLjirig_bit==1)
{Buffnum=0;Read_temperature();disp_mode=2;}
}break;}  //全部流动显示        
default:break;}        
}

/*********************************************************************************************
函数名:Timer_show()
调  用:
结  果:
/**********************************************************************************************/
void Timer_show(void)    {            
     
for(disrow=0;disrow<16;disrow++){ //disrow,当前扫描的行
            STR=0;                  //压入数据做准备
            Displaying(disp_mode);//显示模式
            STR=1;                //锁存数据74HC595输出   
        //    scan(disrow);           //扫描行   
            H_PORT=swA2[disrow];
            LS138_OE_L;           //开显示
            DELAY_US(Light*3);      //控制亮度
            LS138_OE_H;           //关显示
            }   
if(stop_counter>stop_time) {
            offset++;
            stop_counter=0;
            stop_bit=0;
              }
if(disp_mode==3||disp_mode==0xFF||disp_mode==1) {
            if(stop_bit==0)  
            SPEED++;
            if(SPEED>5)     {
            SPEED=1;
            offset++;} }
     
             }









void Play_show(void)    {

  switch(switc)  {
            case 0:if(windw==0)four_min_sec  ();windw=1;break;//时分秒
            case 1:if(windw==1)year_month    ();windw=2;break;//年月
            case 2:if(windw==2)month_day     ();windw=3;break;//月日
            case 3:if(windw==3)four_Week     ();windw=4;break;//星期
            case 4:if(windw==4)nongli_display();windw=5;break;//农历
            case 5:if(windw==5)JIQI_24buff   ();windw=6;break;//节气
            case 6:if(windw==6)LED_w_nl      ();windw=7;break;//生宵
            case 7:if(windw==7)temperature   ();windw=8;break;//温度
            case 8:if(windw==8)RHTerature    ();windw=9;break;//湿度
          //  case 9:if(windw==9)ShengriPlay   ();windw=0;break;//生日
                             }
            write_sec ();//----------------------------------显示切换和秒更新
            if(NO_flow)
            flow_frame();//----------------------------------流水边框
                         }


void Play_CLOUR(void)    {

         if(ADJ==2)                  //
        {
            Set_time(75,0);
            Beep_key();               //按键音
            Colour++;                 //下一
            if(Colour>5)              //溢出
            Colour=0;   
        }
        if(ADJ==3)                //
        {
             Set_time(75,0);
            Beep_key();               //按键音
            if(Colour>0)                   //溢出
            Colour--;
            else
            Colour=5;  
        }

    switch(Colour)
    {
    case  0:CLOUR_F[0]=CLOUR_F[1]=CLOUR_F[2]=RED_clour;                           break;
    case  1:CLOUR_F[0]=CLOUR_F[1]=CLOUR_F[2]=GREEN_clour;                       break;
    case  2:CLOUR_F[0]=CLOUR_F[1]=CLOUR_F[2]=ORGEN_clour;                       break;
    case  3:CLOUR_F[0]=ORGEN_clour;CLOUR_F[1]=GREEN_clour;CLOUR_F[2]=RED_clour;break;
    case  4:CLOUR_F[2]=ORGEN_clour;CLOUR_F[1]=GREEN_clour;CLOUR_F[0]=RED_clour;break;
    case  5:CLOUR_F[1]=ORGEN_clour;CLOUR_F[2]=GREEN_clour;CLOUR_F[0]=RED_clour;break;
     }

}


void Play_INT(void)    {

    LED_rectangle_erasure(1,1,64,16,0);//空白填充矩形框
    intmcu                      ();//初始化单片机中断和定时器中断初始化
    Light=BCD2DEC(read_clock(10,TempCH_NumLIGHT))*13;
    if(Light<80)
    write_1302clock(TempCH_NumLIGHT,15);
    Light=BCD2DEC(read_clock(10,TempCH_NumLIGHT))*13;
    typewrite       ();//打字效果"精品制作“
    //任意按键跳过LOGO进入频谱=========================
    /*-----频谱显示--------*/
    if(menu==46){
        if(KEY1==0||KEY2==0||KEY3==0||KEY4==0)
        {
            ADJ=0;                    //复位标记,不重复操作
            Beep_set ();              //设置声音
            LEDinit  ();              //内存清屏
            e=0;                      //选择第一项(时间设置)
            menu =  12;               //项目选择(频谱显示)
            while(!KEY1||!KEY2||!KEY3||!KEY4);
        }
        else
        {
            flying                              ();//飞入效果"
            parabola                            ();//画抛物线”
             LED16X64_write("欢迎使用",  Red,Noml);//"欢迎使用"
             delay(2000);                          //稍做延时
              LED_rectangle_erasure(1,1,64,16,1);    //擦除指定的矩形框
               LED16X64_write("点阵时钟",Green,Noml);//显示"点阵时钟"
                delay(2000);                          //稍做延时
                 LED_rectangle_erasure(1,1,64,16,2);    //擦除指定的矩形框
                  LED16X64_write("文杰制作",Orgen,Noml);//显示"文杰制作"
                   delay(2000);                          //稍做延时
                    LED16X64_write("MCU@24MH",  Red,Noml);//"欢迎使用"
                     delay(2000);                          //稍做延时
                      LED_rectangle_erasure(1,1,64,16,3);    //擦除指定的矩形框
                      LED16X64_write("*DIYLED*",  Red,Noml);//显示"*DIYLED*"
                       LED_rectangle_erasure(1,1,64,16,4);    //擦除指定的矩形框
                      Hz_ZDisplaY8();
                     Hz_16X16RightDispla(); //汉字右移动程序
                    delay(2000);
                   Hz_DisplaY();
                 Hz_DisplaDW();
                Hz_DisplaUP();
               NYRLoad      (); //汉字加载今天是2012年01月08日星期三
              Hz_LeftDispla(1); //汉字左移动程序
             NLSLoad      (); //汉字加载农历:壬辰龙年二月初三
            Hz_LeftDispla(0); //汉字左移动程序
           Hz_GDDispla();
          Hz_DisplaPUP();
         Donghua16X64(1);          //-------------------------------动画
        Picture16X64(Pic64X16);   //--------------------------图片
        }  }
    LEDinit       ();//***************************************内存清屏

//防止速度超出**********************************************************
    speead=read_clock(0,0xc3);
    if(speead<1||speead>5)     {
    speead=2;
    write_1302clock(0xc2,2);  }
//防止颜色超出************************************************************
    Colour=read_clock(10,0xF1);
    switch(Colour)
   {case  0:CLOUR_F[0]=CLOUR_F[1]=CLOUR_F[2]=RED_clour;                           break;
    case  1:CLOUR_F[0]=CLOUR_F[1]=CLOUR_F[2]=GREEN_clour;                       break;
    case  2:CLOUR_F[0]=CLOUR_F[1]=CLOUR_F[2]=ORGEN_clour;                       break;
    case  3:CLOUR_F[0]=ORGEN_clour;CLOUR_F[1]=GREEN_clour;CLOUR_F[2]=RED_clour;break;
    case  4:CLOUR_F[2]=ORGEN_clour;CLOUR_F[1]=GREEN_clour;CLOUR_F[0]=RED_clour;break;
    case  5:CLOUR_F[1]=ORGEN_clour;CLOUR_F[2]=GREEN_clour;CLOUR_F[0]=RED_clour;break;
    default: write_1302clock(0xF0,0);break;    //如果超出,写入第3种颜色
   }Colour=read_clock(10,0xF1);
//防止字体超出**************************************************************************
    FANpingf_TXT=read_clock(10,0xEF); {
    if(read_clock(0,0xEF)>2)   //0----2的3种字体
    FANpingf_TXT=0;
    write_1302clock(0xEE,1);          }
    FANpingf_TXT=read_clock(10,0xEF);
    STOP_flag=1;                //开界面切换记数开关
//*********************************************************************************
    menu=read_clock(10,0XC1);   //读界面
            switch(menu)
            {
            case  0:STOP_flag=1,                                 ZHSmode=1;break; //综合界面
            case  1:menu =99;                                    ZHSmode=0;break; //翻屏时钟
            case  2:menu = 0,Menmu=111,STOP_flag=0,temperature();windw=6;ZHSmode=0;break; //温度界面
            case  3:menu = 0;Menmu=131;STOP_flag=0;RHTerature ();windw=7;ZHSmode=0;break; //湿度界面
            case  4:menu = 0,NO_flow=~NO_flow                             ;break; //取消边框
            case  5:menu = 84;                                   ZHSmode=0;break; //显示广告
            case  6:menu = 85;                                   ZHSmode=0;break; //显示动画
            case  7:menu = 98;                                   ZHSmode=0;break; //全日历钟
            case  8:menu = 97;                                   ZHSmode=0;break; //全日历钟
            case  9:menu = 0;STOP_flag=1;windw=0;four_min_sec(); ZHSmode=0;break; //边框时钟
            default: write_1302clock(0xC0,1)                              ;break; //如果超出,写入第1种界面
            }
      Read_temperature();                       //读温度
      disp_mode=0XFF;                           //滚动节日和广告(0X02,0X03,0XFF)
    //P0M0=B(00001111);                           //推挽模式
    //P0M1=B(00000000);
    ZHSmode=read_clock(10,0xcB);               //综合模式和其他模式
    if(ZHSmode>1)                               //ZHSmode只能是0---1
    write_1302clock(0xCA,0);
//***********************************************************
    if(read_clock(10,0xCD)>1)                   //边框记忆
    write_1302clock(0xCC,1);
    if(read_clock(10,0xCD)==1)
    NO_flow=1;
    else
    NO_flow=0;
}

/*********************************************************************
**********************************************************************
***********************                    ***************************
***********************        Main        ***************************
***********************                    ***************************
**********************************************************************
**********************************************************************
函数名:main()
LEDup_dow=0;//朝下显示
LEDup_dow=1;//朝上显示
/**********************************************************************************************/
sbit D  =P3^3;  //行控制线D
void main(void)
{    ADCIO=0; D=1;
    DS1302_Initial  ();//1302初始化
    Read_temperature();//读温度
    read_clockS     ();//读1302时间转农历,星期转换
    Beep_set        ();//测试喇叭
    Beep_key        ();//测试喇叭
    LEDinit         ();//开中断前先清屏防止乱显
    Play_INT        ();//初始化数据
    while(1)
    {    D=1;
//        Light_check ();  //--------------------------------亮度自动
        Zhengdian_ti();  //--------------------------------整点报时
        search_time ();  //--------------------------------闹钟检测
        snaozhong_bs();  //--------------------------------闹钟动作
        TimeCHck    ();  //--------------------------------时间补偿
        KEY_Process ();  //--------------------------------遥控操作
        KEY_Manage  ();  //--------------------------------按键执行
//******************综合显示界面***************************************
        if(ZHSmode==1)
        {Play_show();Buffnum=0;menu=0;}
        if(ZHSmode==2)
        {menu=97;Timer_show(); }
        if(ZHSmode==3)
        {if(++Cou>2000){Cou=0;ZHSmode=1;menu=0;four_min_sec();Menmu=1;}SMillPlay();menu=98;}
//*************其他界面显示******************************************              
       if(ZHSmode==0)
       {if(menu==0)         //_______________________________时间菜单
        Play_show();
        if(menu==98)
        SMillPlay();        //_______________________________全日历时钟
        if(menu==97){        //加载字符
        timebuff(1);
        Timer_show();}      //_______________________________滚动时钟
        if(menu==99){
        Play_CLOUR();       //颜色控制
        shutter_clockshow();//_______________________________翻屏时钟
                     }
        }  //if(ZHSmode==0)
   }       //while(1)
}         
回复

使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 100 天

    [LV.6]常住居民II

    49

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    73169

    终身成就奖特殊贡献奖原创先锋奖社区居民忠实会员社区劳模最爱沙发社区明星原创达人优秀斑竹奖宣传大使奖

    QQ
    发表于 2014-7-6 18:16:39 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表