找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2574|回复: 3
打印 上一主题 下一主题
收起左侧

智能电子闹钟

[复制链接]
跳转到指定楼层
楼主
ID:136491 发表于 2016-8-11 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STC单片机制作的一英尺数码管程序
  1. #include <reg51.h>
  2. #include <math.h>
  3. #include "ADC.H"
  4. #include "ds1302.h"


  5. bit flag, Bell_Swh=1,Hourb,Minb,Kgb,flag_read,dot_Bell=1,Bell_Swh1=1;//闹钟调时闪烁标志位
  6. bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0,hour_Bell=0,min_Bell=0,hour_time=0,min_time=0;flag_bell=0,bell_bug = 0; //闪烁标志位
  7. unsigned char id,id2,d,e,S_1302,S1_1302,H_1302,H_Bell,S_Bell,H_time,S_time; //
  8. unsigned char disbuff[4]        ={0};
  9. unsigned char time=0;
  10. unsigned int temp[1];
  11. unsigned int temp_num = 0;

  12. unsigned char code LEDData1 [ ] = {  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff }; //正0-9LED数值
  13. unsigned char code LEDData2 [ ] = {  0xc0,0xcf,0xA4,0x86,0x8B,0x92,0x90,0xc7,0x80,0x82,0xff }; //反0-9LED数值


  14. void Delayms(unsigned int di) //延时
  15. {
  16.         unsigned int da,db;
  17.         for(da=0;da<di;da++)
  18.                    for(db=0;db<10;db++);
  19. }
  20. void Display(void)  //扫描方式led1~led4循环点亮
  21. {
  22.    time++;
  23.    if(time==1)
  24.    {  
  25.            if(dot_Bell)
  26.          {
  27.        P2=LEDData1[disbuff[0]]&0x7f;// 0x7F点亮DP小数点
  28.        LED1=0; LED4=1;
  29.          }
  30.            else
  31.          {
  32.        P2=LEDData1[disbuff[0]];
  33.        LED1=0; LED4=1;
  34.          }
  35.    }

  36.    if(time==2)
  37.    {
  38.       if(id>=3)
  39.           {
  40.            P2=(LEDData2[disbuff[1]])&0x7F;
  41.        LED1=1; LED2=0;
  42.           }
  43.           else
  44.       if(flag)
  45.      {
  46.        P2=(LEDData2[disbuff[1]])&0x7F;
  47.        LED1=1; LED2=0;
  48.      }
  49.          else
  50.          {
  51.            P2=LEDData2[disbuff[1]];
  52.        LED1=1; LED2=0;
  53.          }
  54.    }

  55.    if(time==3)
  56.    {
  57.      if(id>=3)
  58.           {
  59.          P2=LEDData1[disbuff[2]]&0x7f;
  60.          LED2=1; LED3=0;
  61.       }

  62.       else               
  63.       if(flag)
  64.           {
  65.          P2=LEDData1[disbuff[2]]&0x7f;
  66.          LED2=1; LED3=0;
  67.       }
  68.           else
  69.           {
  70.          P2=LEDData1[disbuff[2]];
  71.          LED2=1; LED3=0;
  72.       }
  73.         }
  74.           
  75.    if(time==4)
  76.    {
  77.      time=0;
  78.      if(disbuff[3]==0)
  79.     {
  80.       P2=LEDData1[10];
  81.       LED3=1; LED4=0;
  82.     }
  83.      else
  84.     {
  85.                 P2=LEDData1[disbuff[3]];
  86.         LED3=1; LED4=0;
  87.         }
  88.    }
  89. }



  90. /******************************************************************************/
  91. void Disp(void)//显示和闪烁函数
  92. {
  93.         unsigned int i=0;
  94.         unsigned char a=0,b=0,c=0,f=0;

  95.         if(hour==1)  //小时闪烁标志位
  96.     {
  97.             if(flag==1)
  98.                {   
  99.                 b=read_clock(0x85);//读小时
  100.                 a=b;
  101.                 b=b>>4;
  102.                 a=a&0x0f;
  103.                 disbuff[3]=b;
  104.                 disbuff[2]=a;
  105.                }
  106.              else
  107.                {
  108.                    disbuff[2]=10;
  109.                    disbuff[3]=10;
  110.             }
  111.     }
  112.           else
  113.            {
  114.             if(flag_read==1)//250MS 读一次

  115.                  {
  116.                 H_1302=read_clock(0x85);//读小时
  117.                 b=read_clock(0x85);//读小时
  118.                 a=b;
  119.                 b=b>>4;
  120.                 a=a&0x0f;
  121.                 disbuff[3]=b;
  122.                 disbuff[2]=a;
  123.                  }
  124.            }

  125.                
  126.         if(min==1)  //分钟闪烁标志位
  127.     {
  128.             if(flag==1)
  129.                {   
  130.                 d=read_clock(0x83);//读分钟
  131.                 e=d;
  132.                 d=d>>4;
  133.                 e=e&0x0f;
  134.                 disbuff[1]=d;
  135.                 disbuff[0]=e;
  136.                }
  137.              else
  138.                {       
  139.                 disbuff[1]=10;
  140.                 disbuff[0]=10;
  141.                }
  142.     }
  143.           else
  144.     {
  145.          
  146.            if(flag_read==1)        //250MS读写一次
  147.            {
  148.                 S1_1302=read_clock(0x81);//读秒
  149.                 S_1302=read_clock(0x83);//读分钟
  150.                 d=read_clock(0x83);//读分钟
  151.                 e=d;
  152.                 d=d>>4;
  153.                 e=e&0x0f;
  154.                 disbuff[1]=d;
  155.                 disbuff[0]=e;
  156.            }
  157.     }
  158.                        
  159. }
  160. /******************************************************************************/
  161. void Disp2(void)//显示和闪烁函数
  162. {
  163.         unsigned int i=0;
  164.         unsigned char a=0,b=0,c=0,f=0;


  165.         if(hour_Bell==1)  //小时闪烁标志位
  166.     {
  167.             if(flag==1)
  168.                {                   
  169.                 b=read_clock(0xc3);//读小时
  170.                 a=b;
  171.                 b=b>>4;
  172.                 a=a&0x0f;
  173.                 disbuff[3]=b;
  174.                 disbuff[2]=a;
  175.        
  176.                }
  177.              else
  178.                {
  179.                 disbuff[2]=10;
  180.                 disbuff[3]=10;
  181.             }
  182.     }
  183.           else
  184.            {
  185.             if(flag_read==1)
  186.                  {

  187.                 H_Bell=read_clock(0xc3);//读取闹钟的时
  188.                 S_Bell=read_clock(0xc5);//读取闹钟的分

  189.                 b=read_clock(0xc3);//读小时
  190.                 a=b;
  191.                 b=b>>4;
  192.                 a=a&0x0f;
  193.                 disbuff[3]=b;
  194.                 disbuff[2]=a;
  195.                  }
  196.            }

  197.        
  198.                
  199.         if(min_Bell==1)  //分钟闪烁标志位
  200.     {
  201.             if(flag==1)
  202.                {   
  203.                 d=read_clock(0xc5);//读分钟
  204.                 e=d;
  205.                 d=d>>4;
  206.                 e=e&0x0f;
  207.                 disbuff[1]=d;
  208.                 disbuff[0]=e;
  209.                }
  210.              else
  211.                {       
  212.                 disbuff[1]=10;
  213.                 disbuff[0]=10;
  214.                }
  215.     }
  216.           else
  217.     {
  218.          
  219.            if(flag_read==1)        //250MS读写一次
  220.            {
  221.                 d=read_clock(0xc5);//读分钟
  222.                 e=d;
  223.                 d=d>>4;
  224.                 e=e&0x0f;
  225.                 disbuff[1]=d;
  226.                 disbuff[0]=e;
  227.            }
  228.     }
  229.                        
  230. }
  231. /******************************************************************************/
  232. void Disp3(void)//显示和闪烁函数
  233. {
  234.         unsigned int i=0;
  235.         unsigned char a=0,b=0,c=0,f=0;

  236.         if(hour_time==1)  //小时闪烁标志位
  237.     {
  238.             if(flag==1)
  239.                {                   
  240.                 b=read_clock(0xc7);//读小时
  241.                 a=b;
  242.                 b=b>>4;
  243.                 a=a&0x0f;
  244.                 disbuff[3]=b;
  245.                 disbuff[2]=a;
  246.        
  247.                }
  248.              else
  249.                {
  250.                 disbuff[2]=10;
  251.                 disbuff[3]=10;
  252.             }
  253.     }
  254.           else
  255.            {
  256.             if(flag_read==1)
  257.                  {

  258.                 H_time=read_clock(0xc7);//读取闹钟的时
  259.                 S_time=read_clock(0xc9);//读取闹钟的分
  260.                
  261.                         if(H_time>S_time)
  262.                         {
  263.                 unsigned char i;
  264.                 i=H_time;
  265.                 H_time=S_time;
  266.                 S_time=i;
  267.                         }

  268.        
  269.                 b=read_clock(0xc7);//读小时
  270.                 a=b;
  271.                 b=b>>4;
  272.                 a=a&0x0f;
  273.                 disbuff[3]=b;
  274.                 disbuff[2]=a;
  275.                
  276.                  }
  277.            }

  278.        
  279.                
  280.         if(min_time==1)  //分钟闪烁标志位
  281.     {
  282.             if(flag==1)
  283.                {   
  284.                 d=read_clock(0xc9);//读分钟
  285.                 e=d;
  286.                 d=d>>4;
  287.                 e=e&0x0f;
  288.                 disbuff[1]=d;
  289.                 disbuff[0]=e;
  290.                }
  291.              else
  292.                {       
  293.                  disbuff[1]=10;
  294.                    disbuff[0]=10;
  295.                }
  296.     }
  297.           else
  298.     {
  299.          
  300.            if(flag_read==1)        //250MS读写一次
  301.            {
  302.              d=read_clock(0xc9);//读分钟
  303.              e=d;
  304.              d=d>>4;
  305.              e=e&0x0f;
  306.                  disbuff[1]=d;
  307.                  disbuff[0]=e;
  308.            }
  309.     }
  310.                        
  311. }


  312. /******************************************************************************/
  313.         void id_case1_key(void)//id为1时的下一级选择
  314. {
  315.         if(Add_Key == 0) //增加
  316.     {
  317.             Delay(4000);
  318.                if(Add_Key == 0) {while(Add_Key ==0); Set_time(id,0); }
  319.          //调用Set_time函数
  320.                        
  321.     }
  322.   
  323. }

  324. /******************************************************************************/
  325. void id_case2_key(void)//id为1时的下一级选择
  326. {
  327.         if(Add_Key == 0) //增加
  328.     {
  329.             Delay(4000);
  330.                if(Add_Key == 0)
  331.                         {
  332.                         while(Add_Key ==0);
  333.                         Set_Bell(id,0);
  334.                         }
  335.                    //        Set_Bell(id,0);  //调用Set_Bell函数
  336.                         //while(Add_Key ==0);
  337.     }
  338. }

  339. void id_AD_scan_key(void)
  340. {
  341.         if(Add_Key == 0)
  342.         {
  343.                 Delay(4000);
  344.                 if(Add_Key == 0)
  345.                 {
  346.                         ET1 = 0;
  347.                         id = 0;
  348.                         ET0 = 1;
  349.                 //        return;
  350.                 }
  351.         }
  352. }
  353. /******************************************************************************
  354. void id_case3_key(void)//id为1时的下一级选择
  355. {
  356.         if(Add_Key == 0) //增加
  357.     {
  358.             Delay(300);
  359.                if(Add_Key == 0)
  360.                     {
  361.                   dot_Bell=~dot_Bell;
  362.               Bell_Swh=dot_Bell;
  363.               write_clock(0x8e,0x00);//允许写操作
  364.                   write_clock(0xc8,Bell_Swh);
  365.           write_clock(0x8e,0x80);//写保护,禁止写操作
  366.                   }
  367.                   while(Add_Key ==0);
  368.     }
  369.   
  370. }


  371. /******************************************************************************/
  372. void Set_Bell(unsigned char sel, bit sel_1)//根据选择调整相应项目
  373. {
  374.   signed char address,item;
  375.   signed char max,mini;
  376.   //if(sel==4)  {address=0xc6; max=59;mini=0;}    //秒
  377.   if(sel==4)  {address=0xc2; max=23; mini=0;}   //时
  378.   if(sel==5)  {address=0xc4; max=59;mini=0;}    //分

  379.   if(sel==6)                                                                          //标志位
  380.   {
  381. //          address=0xc8;//for read
  382. //        if(Add_Key ==0 || Dec_Key ==0)
  383. //        Bell_Swh=~Bell_Swh;
  384. //        write_clock(address,Bell_Swh);
  385.           //address=0xc8;
  386.           dot_Bell=~dot_Bell;
  387.               Bell_Swh=dot_Bell;
  388.               write_clock(0x8e,0x00);//允许写操作
  389.                   write_clock(0xca,Bell_Swh);
  390.           write_clock(0x8e,0x80);//写保护,禁止写操作
  391.   }    //开关
  392.   if(sel==7)  {address=0xc6; max=23;mini=0;}    //分
  393.   if(sel==8)  {address=0xc8; max=23; mini=0;}   //时

  394.     if(sel==9)                                                                          //标志位
  395.   {
  396. //          address=0xc8;//for read
  397. //        if(Add_Key ==0 || Dec_Key ==0)
  398. //        Bell_Swh=~Bell_Swh;
  399. //        write_clock(address,Bell_Swh);
  400.           //address=0xc8;
  401.           dot_Bell=~dot_Bell;
  402.               Bell_Swh1=dot_Bell;
  403.               write_clock(0x8e,0x00);//允许写操作
  404.                   write_clock(0xcc,Bell_Swh1);
  405.           write_clock(0x8e,0x80);//写保护,禁止写操作
  406.   }    //开关


  407.   item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
  408.   if(sel_1==0)
  409.           item++;  
  410.   else
  411.           item--;
  412.   if(item>max) item=mini;   
  413.   if(item<mini) item=max;

  414.   write_clock(0x8e,0x00);//允许写操作
  415.   write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
  416.   write_clock(0x8e,0x80);//写保护,禁止写操作
  417. }

  418. /******************************************************************************/
  419. void Timer0_Init(void)//定时器0初始化
  420. {
  421.         /*
  422.         AUXR &= 0x7F;                //定时器时钟12T模式
  423.         TMOD &= 0xF0;                //设置定时器模式
  424.         TL0 = 0x18;                //设置定时初值
  425.         TH0 = 0xFC;                //设置定时初值
  426.         TF0 = 0;                //清除TF0标志
  427.         TR0 = 1;                //定时器0开始计时
  428.         ET0=  1;*/
  429.        
  430. /*
  431. //2毫秒@6.000MHz
  432.         AUXR |= 0x80;                //定时器时钟1T模式
  433.         TMOD &= 0xF0;                //设置定时器模式       
  434.         TL0 = 0x20;                //设置定时初值
  435.         TH0 = 0xD1;                //设置定时初值
  436.         TF0 = 0;                //清除TF0标志
  437.         TR0 = 1;                //定时器0开始计时       
  438.         ET0 = 1; //enable timer0 interrupt*/

  439.        
  440. //2毫秒@12.000MHz
  441.   AUXR |= 0x80;                //定时器时钟1T模式
  442.         TMOD &= 0xF0;        //设置定时器模式       
  443.         TL0 = 0x40;                //设置定时初值
  444.         TH0 = 0xA2;                //设置定时初值
  445.         TF0 = 0;                //清除TF0标志
  446.         TR0 = 1;        //定时器0开始计时       
  447.         ET0 = 1; //enable timer0 interrupt

  448. }

  449. void Timer1Init(void)                //20毫秒@12.000MHz
  450. {
  451.         AUXR &= 0xBF;                //定时器时钟12T模式
  452.         TMOD &= 0x0F;                //设置定时器模式       
  453.         TL1 = 0xE0;                //设置定时初值
  454.         TH1 = 0xB1;                //设置定时初值
  455.         TF1 = 0;                //清除TF1标志
  456.         TR1 = 1;                //定时器1开始计时       
  457. }

  458. /******************************************************************************/
  459. void Timer0(void) interrupt 1 using 1//中断入口,冒号闪烁
  460. {
  461.         static unsigned char timecount = 0;//
  462.           timecount++;

  463.         if(timecount > 125)
  464.         {
  465.                  flag_read = ~flag_read;  
  466.        
  467.         }
  468.   if(timecount > 250)//500MS
  469.   {
  470.             timecount = 0;   
  471.             flag = ~flag;

  472.   }
  473.         Display();
  474. }

  475. void Timer1(void) interrupt 3 using 1
  476. {
  477.         temp_num++;
  478.         if(temp_num > 40)
  479.         {
  480.                 temp_num = 0;
  481.         }
  482.        
  483. }


  484. void ADC_convert(void)
  485. {
  486.        
  487.         //EA = 0;//关中断
  488.        
  489.         ET0 = 0;
  490.        
  491.         if(temp_num == 0)
  492.         {
  493.                 GetADCResult(6,&temp[0]);
  494.        
  495.           //temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 273.15 ) * 100 );
  496.           temp[0]=(unsigned int) ((1/(log(((float)temp[0]*4700/(1024-(float)temp[0]))/10000)/3950+1/298.15)-273.15)*100);
  497.                
  498.                 temp_num = 1;
  499.         }
  500.                        
  501.         P2 = LEDData1[temp[0]/1000]; //千位
  502.         LED4 = 0;
  503.         Delayms(50);
  504.         LED4 = 1;
  505.         P2 = (LEDData1[temp[0]%1000/100])&0x7F;//百位
  506.         LED3 = 0;
  507.         Delayms(50);
  508.         LED3 = 1;
  509.         P2 = LEDData2[temp[0]%1000%100/10];//十位
  510.         LED2 = 0;
  511.         Delayms(50);
  512.         LED2 = 1;
  513.        
  514.         P2 = 0xa7;//c
  515.         LED1 = 0;
  516.   Delayms(50);
  517.         LED1 = 1;
  518.        
  519. //        id = 0;
  520.        
  521.         ET1 = 1;//启动定时器1
  522.        

  523. }


  524. /******************************************************************************/
  525. void main(void)//主函数
  526. {

  527.   P3M1=0x00;
  528.         P3M0=0x08;

  529.                                 H_Bell=read_clock(0xc3);//读取闹钟的时   
  530.         S_Bell=read_clock(0xc5);//读取闹钟的分   

  531.         H_time=read_clock(0xc7);//读取闹钟的时   
  532.         S_time=read_clock(0xc9);//读取闹钟的分   
  533.         
  534.                                 dot_Bell= Bell_Swh;
  535.        
  536.         InitADC(); //初始化ADC
  537.         Timer0_Init();//定时器T0初始化
  538.         Timer1Init();
  539.         EA=1;
  540.         while(1)//主循环
  541.         {       
  542.                 //设置时钟的初始值,显示14年4月5号11:59:55
  543.                 if(OK_Key == 0 && Add_Key == 0)
  544.                 {
  545.                 Delay(1000);
  546.                 if(OK_Key == 0 && Add_Key == 0)
  547.                 {
  548.                 while(OK_Key == 0);//等待键松开   
  549.                 Init_1302();
  550.                 H_Bell=read_clock(0xc3);//读取闹钟的时   
  551.                 S_Bell=read_clock(0xc5);//读取闹钟的分   

  552.                 H_time=read_clock(0xc7);//读取闹钟的时   
  553.                 S_time=read_clock(0xc9);//读取闹钟的分   

  554.                 dot_Bell= Bell_Swh;
  555.    
  556.                         }
  557.                 }       
  558. /*****************************************/
  559. //                MF:   //返回主界面
  560. /*****************************************/                       
  561.         if (OK_Key == 0) // 设置和选择项目键
  562.     {
  563.                        Delay(1000);
  564.                if(OK_Key == 0)
  565.                           {
  566.                                   id++;
  567.                                         if(id == 2)
  568.                                         {
  569.                                                 ET1 = 0;
  570.                                                 ET0 = 1;
  571.                                         }
  572.                                   if(id>9)id=0;       
  573.                           }
  574.                
  575.                        while(OK_Key == 0);//等待键松开
  576.                 }  
  577. /***************************************/
  578.              switch( id )
  579.               {
  580.                                 case 0:
  581.                                         hour=0;
  582.                                         min=0;
  583.                                         Disp( );                        
  584.                                         dot_Bell= Bell_Swh;
  585.                                         break;//正常显示
  586.                                 case 1:
  587.                                         hour=0;
  588.                                         min=0;
  589.                                         ADC_convert();
  590.                                         id_AD_scan_key();  
  591.                                         dot_Bell= Bell_Swh;
  592.                                         break;//显示温度
  593.                                 case 2:
  594.                                         hour=1;
  595.                                         id_case1_key();
  596.                                         Disp();                 
  597.                                         dot_Bell=0;
  598.                                         break;  //小时
  599.                                 case 3:
  600.                                         hour=0;
  601.                                         min=1;
  602.                                         id_case1_key();
  603.                                         Disp();           
  604.                                         dot_Bell=0;
  605.                                         break; //分钟
  606.                                 case 4:
  607.                                         hour_Bell=1;
  608.                                         id_case2_key();
  609.                                         Disp2();           
  610.                                         dot_Bell= Bell_Swh;
  611.                                         break;
  612.                                 case 5:
  613.                                         hour_Bell=0;
  614.                                         min_Bell=1;
  615.                                         id_case2_key();
  616.                                         Disp2();
  617.                                         dot_Bell= Bell_Swh;
  618.                                         break;   
  619.                                 case 6:
  620.                                         hour_Bell=0;
  621.                                         min_Bell=0;
  622.                                         id_case2_key();
  623.                                         Disp2();
  624.                                         dot_Bell= Bell_Swh;
  625.                                         break;
  626.                                 case 7:
  627.                                         hour_time=1;
  628.                                         id_case2_key();
  629.                                         Disp3();         
  630.                                         dot_Bell= Bell_Swh1;
  631.                                         break;
  632.                                 case 8:
  633.                                         hour_time=0;
  634.                                         min_time=1;
  635.                                         id_case2_key();
  636.                                         Disp3();
  637.                                         dot_Bell= Bell_Swh1;
  638.                                         break;
  639.                                 case 9:
  640.                                         hour_time=0;
  641.                                         min_time=0;
  642.                                         id_case2_key();Disp3();
  643.                                         dot_Bell= Bell_Swh1;
  644.                                         break;
  645.                                         default:
  646.                                         break;       
  647.               }







  648.         if(Bell_Swh == 1)//闹钟为开
  649.                 {
  650.                                
  651.                         if(H_Bell == H_1302)
  652.                          {
  653.                                 if(S_Bell == S_1302)        //分相等
  654.                                 {       
  655.                                  
  656.                                    if(S1_1302==0)        //秒等于0才开闹钟
  657.                                    {
  658.                                       flag_bell=1;
  659.                                          }

  660.                                    if(Add_Key ==0 )//按加退出
  661.                                          {
  662.                                             flag_bell=0;
  663.                                          }
  664.                                          
  665.                           }       
  666.                     else   
  667.                     {
  668.                         flag_bell=0;
  669.                     }
  670.                          }
  671.                 }//if
  672. /******************************************************************/
  673. /*                                if(Bell_Swh1 == 1)//整点报
  674.                 {               
  675.                         if((H_1302 >=H_time )&&(H_1302<=S_time))
  676.                          {
  677.                                 if( S_1302 == 0 )        //分相等
  678.                                 {       
  679.                                                 if(id != 2)
  680.                                                 {
  681.                                      if(S1_1302==0x00)        //秒等于0才开闹钟
  682.                                             {
  683.                                             flag_bell=1;
  684.                                                   bell_bug++;        //
  685.                                                          if(bell_bug == 2)  //整点报时bug修正小函数
  686.                                                          {                  //
  687.                                                                         bell_bug = 0;   //
  688.                                                                  flag_bell = 0;   //
  689.                                                          }
  690.                                                          
  691.                                           }
  692.                                           else           
  693.                                             flag_bell=0;
  694.                                     }
  695.                             }
  696.                         }         
  697.                 }//if  */
  698.        

  699.        
  700.                
  701.           if(Bell_Swh1 == 1)//整点报
  702.                 {               
  703.                         if((H_1302 >=H_time )&&(H_1302<=S_time))
  704.                          {
  705.                                 if( (S_1302 == 0) && ((S1_1302==0x00)) )        //分相等  //秒等于0才开闹钟
  706.                                 {       
  707.                                                 if(id != 2)
  708.                                                 {
  709.                                                         if(id != 3)
  710.                                                         {
  711.                                             flag_bell=1;
  712.                                                   bell_bug++;        //
  713.                                                          if(bell_bug == 2)  //整点报时bug修正小函数
  714.                                                          {                  //
  715.                                                                         bell_bug = 0;   //
  716.                                                                  flag_bell = 0;   //
  717.                                                          }
  718.                                                  }
  719.                                                         else
  720.                                                         {
  721.                                                                         flag_bell=0;
  722.                                                         }
  723.                                                        
  724.                                     }
  725.                                                 else
  726.                                                 {                                                       
  727.                                              flag_bell=0;
  728.                                                 }
  729.                             }
  730.                                   else
  731.                                         {
  732.                                                 flag_bell = 0;
  733.                                         }
  734.                         }
  735.                         else
  736.                         {
  737.                                 flag_bell = 0;
  738.                         }
  739.                 }//if

  740.                 if(flag_bell)  //
  741.                 {
  742.                  Bell();
  743.                 }
  744. /******************************************************************/
  745.         }//while
  746. }//main
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:211258 发表于 2017-6-14 22:36 | 只看该作者
谢谢分享,太好了正好需要
回复

使用道具 举报

板凳
ID:211258 发表于 2017-6-14 22:46 | 只看该作者
谢谢分享,太好了正好需要
回复

使用道具 举报

地板
ID:223127 发表于 2017-11-1 16:37 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

快速回复 返回顶部 返回列表