久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2769|回復: 4
打印 上一主題 下一主題
收起左側

簡易單片機電子鐘制作

[復制鏈接]
跳轉到指定樓層
樓主
本著免費打樣的福利,鄭重聲明我不是廠商托,
不是廣告
不是廣告
不是廣告,
重要的事說三遍。
拿出了十幾年不用的STC,翻箱倒柜兩星期,終于找齊了原件,,打算給孩子做個玩具,本以為一兩天就搞定的事情,結果搞了一星期,。最后也是終于在參考論壇后,找到BUG,本著搬運他人,現回饋他人的原則,貢獻電路代碼。


單片機源程序如下:
#include "STC12C5A60S2.h"
#include<intrins.h>

typedef unsigned char uchar;
typedef unsigned int uint;

/* define constants */
#define FOSC 11059200L
//#define MODE1T                      //Timer clock mode, comment this line is 12T mode, uncomment is 1T mode

#ifdef MODE1T
#define T1MS (65536-FOSC/500)      //2ms timer calculation method in 1T mode
#else
#define T1MS (65536-FOSC/12/50)   //50ms timer calculation method in 12T mode
#endif

#define F4KHz (256-FOSC/2/12/1000)   //CLOCKOUT1

sfr WAKE_CLKO = 0x8f;

//數碼管共陰極端口選擇,低電平
sbit S1        =        P0^7;
sbit S2        =        P0^6;
sbit S3        =        P0^5;
sbit S4        =        P0^4;
//LED共陰極,低電平
sbit S5        =        P0^2;
sbit S6=        P0^1;
sbit S7        =        P0^0;
sbit S8        =        P1^2;
sbit S9        =        P1^3;
sbit S10        =        P1^7;
sbit S11        =        P1^6;
sbit S12        =        P0^3;

//蜂鳴器
sbit fmq = P3^5;

// 按鍵
sbit KEY_IN_1 = P1^4;
sbit KEY_IN_2 = P1^5;
//sbit KEY_IN_3 = P3^1;
//sbit KEY_IN_4 = P3^0;

//DS1302
sbit sclk = P3^2;
sbit sda  = P3^3;
sbit rst  = P3^4;

//共陰極數碼管顯示碼,0-9,a-f,-,全滅,code區常數
unsigned char code smg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,

                          0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00};

unsigned char num[4]={0,0,0,0};//顯示緩沖區
unsigned char alarm_num[4]={0,0,0,0};//alarm顯示緩沖區

//60位LED流水燈控制
unsigned char data led_smg [8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


/* define variables */

unsigned char  miao = 0,fen =0,shi =0;                     //TIME
unsigned char  alarm_fen = 0; alarm_shi =12;   //alarm time
unsigned int         count1;                //counter for 1s
unsigned int         key_count;             //按鍵次數計數,狀態切換
bit alarm = 0;                       //時鐘啟動控制位
bit dq =0;                           //設置時間模式
unsigned char mod = 0;  //設置分=1 設置時=2  ,設置鬧鐘分=3,設置鬧鐘時=4,

//------------------------------------------------------


/*----------------------------函數聲明-------------------*/
void led_display();
void display();
void alarm_display();
void time();
void KeyScan();
void alarm_prc();
void time_prc();

void delay(unsigned int T)   //us延時函數

{

    unsigned char b,c;

    for(c=T;c>0;c--)

        for(b=5;b>0;b--);

}

void delayms(uint z)     //delayms
{
         uint x,y;
          for(x=z;x>0;x--)
            for(y=848;y>0;y--);
}

/* Timer0 interrupt routines,2ms */
void tm0_isr() interrupt 1
{
     TL0 = T1MS;                     //reload timer0 low byte
     TH0 = T1MS >> 8;                //reload timer0 high byte
                 count1++;
                 time();                        //定時器時鐘
}

//-----------------------------------------------

/* main program */
void main()
{
          P2M1 = 0x00;
                P2M0 = 0xff;                                                                                //        P2強推挽
          P2   = 0x00;                                                                                //  全關閉
#ifdef MODE1T
    AUXR = 0x80;                    //timer0 work in 1T mode,timer1 work 12T mode
#endif
    TMOD = 0x21;                    //set timer0 as mode1 (16-bit),set timer1 as mode2 (8-bit auto-reload)
    TL0 = T1MS;                     //initial timer0 low byte
    TH0 = T1MS >> 8;                //initial timer0 high byte
          TL1 = F4KHz;                 //initial timer1
    TH1 = F4KHz;                 //initial timer1
    ET0 = 1;                        //enable timer0 interrupt
    EA = 1;                         //open global interrupt switch
                TR0 = 1;                        //timer0 start running
    while (1)
                 {
     KeyScan();
                        if (dq)
                           {
                                         time_prc();         //設置時鐘
                                         display();
          }
                        if(alarm)
                        {
                                 alarm_prc();         //設置鬧鐘
                                 alarm_display();     //顯示設置時間
      }               
                        if((dq == 0) && (alarm ==0))
                        {
                                display();
                    led_display();
             if((alarm_shi==shi)&&(alarm_fen==fen)) { WAKE_CLKO= 0x02;        TR1 = 1 ;}
                         if(fen == (alarm_fen+1))     // 1s
                         {
                         WAKE_CLKO= 0x00;TR1 = 0;
                         }
            }
    }
}
//-------------------- control time function --------------------

void time_prc()
{
                num[3] = fen%10;    //分鐘個位
                num[2] = fen/10;    //分鐘十位
                num[1] = shi%10;
                num[0] = shi/10;
}

//-----------------------alarm  time function------------------
void alarm_prc()
{
                alarm_num[3] = alarm_fen%10;    //分鐘個位
                alarm_num[2] = alarm_fen/10;    //分鐘十位
                alarm_num[1] = alarm_shi%10;
                alarm_num[0] = alarm_shi/10;  
}

//--------------------------------key Scan-----------------------
void KeyScan()
{
          if (KEY_IN_1 == 0)
                {
                          delayms(10);
                          if (KEY_IN_1 == 0)              //按鍵確認
                                   {
              key_count++;              //按鍵次數計數
                                      while(!KEY_IN_1);         //等待釋放
                                                  if(key_count ==1)         // first key
                                                           {
                                                                         TR0 =0;            //關閉定時器
                   P0 = P0|0x0f;
                   P1 = P1|0xcc;      //關閉LED                 
                                                                         dq =1;             //時間設置模式
                                                                         alarm = 0;                                        //鬧鐘設置關閉
                                                                         mod =1;            // 時間分設置
                 }
                                                        if(key_count == 2)     
                                                           {
                                                                         mod = 2;          //時間時設置
                 }
                                                        if(key_count == 3)     
                                                            {
                                                                                dq = 0;         //時間設置關閉
                                                                                alarm = 1;      //鬧鐘設置開
                                                                                mod = 3;       //鬧鐘分設置
                  }
                                                        if(key_count == 4)     
                                                            {
                                                                                mod = 4;       //鬧鐘時設置
                  }
                                                        if(key_count == 5)    //退出設置,開始記時
                                                            {
                                                                                key_count =0 ;      //
                                                                                alarm = 0;
                                                                                dq = 0;
                                                                                mod =0;
                                                                          TL0 = T1MS;                     //initial timer0 low byte
                    TH0 = T1MS >> 8;                //initial timer0 high byte        
                    TR0=1;
                  }
                                         }
                }

                if(key_count != 0)                //進入設置模式
                {
                   if(KEY_IN_2== 0)
                      {
                               delayms(10);
                               if(KEY_IN_2 == 0)        //確認KEY2按鍵
                                       {
                  while(!KEY_IN_2);     //等待釋放
                                                                     if(mod == 1)
                                                                                      {
                            fen++;
                               if(fen == 60)
                                                                                                                            {
                                                                                                                                                fen = 0;
                                   }                                                                                                                                 
                           }                                                                                                  
                                                                                        if(mod == 2)
                                                                                             {
                                                                                                                 shi++;
                                                                                                                 if(shi == 24)
                                                                                                                     {
                                                                                                                                         shi = 0;
                                  }
                            }
                                                                                        if(mod == 3)
                                                                                              {
                                                                                                                        alarm_fen++;
                                                                                                                        if(alarm_fen == 60)
                                                                                                                          {
                                                                                                                                        alarm_fen =0;
                                 }
                            }
                                                                                        if(mod == 4)
                                                                                              {
                                                                                                                alarm_shi++;
                                                                                                                        if(alarm_shi == 24)
                                                                                                                         {
                                                                                                                                 alarm_shi =0;
                                }
                            }                                                                 
                                                    }
                       }
          }        
}        

//-----------------------------auto 時間更新函數-----------------------------------
void time()
{
         if(count1 == 50)               // 1s
         {
                  count1 = 0;
                  miao++;
                         switch(miao)
                           {
                                          case 1:   led_smg[0] = 0x01;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;
                                                case 2:   led_smg[0] = 0x02;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;                                                               
                                                case 3:   led_smg[0] = 0x04;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;
                                                case 4:   led_smg[0] = 0x08;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
            case 5:   led_smg[0] = 0x10;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 6:   led_smg[0] = 0x20;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 7:   led_smg[0] = 0x40;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 8:   led_smg[0] = 0x80;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                          case 9:   led_smg[0] = 0x00;led_smg[1] = 0x01;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 10:  led_smg[0] = 0x00;led_smg[1] = 0x02;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 11:  led_smg[0] = 0x00;led_smg[1] = 0x04;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 12:  led_smg[0] = 0x00;led_smg[1] = 0x08;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
            case 13:  led_smg[0] = 0x00;led_smg[1] = 0x10;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 14:  led_smg[0] = 0x00;led_smg[1] = 0x20;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 15:  led_smg[0] = 0x00;led_smg[1] = 0x40;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 16:  led_smg[0] = 0x00;led_smg[1] = 0x80;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;   
                                          case 17:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x01;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 18:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x02;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;                                                               
                                                case 19:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x04;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;
                                                case 20:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x08;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;
            case 21:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x10;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;
                                                case 22:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x20;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;                                                               
                                                case 23:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x40;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;
                                                case 24:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x80;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;        
                                          case 25:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x01;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;
                                                case 26:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x02;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 27:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x04;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 28:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x08;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00; break;
            case 29:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x10;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 30:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x20;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;   break;                                                               
                                                case 31:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x40;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 32:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x80;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;               
                                          case 33:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x01;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;
                                                case 34:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x02;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;                                                               
                                                case 35:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x04;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;
                                                case 36:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x08;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
            case 37:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x10;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 38:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x20;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 39:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x40;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 40:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x80;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                          case 41:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x01;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 42:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x02;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 43:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x04;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 44:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x08;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
            case 45:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x10;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 46:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x20;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;                                                               
                                                case 47:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x40;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;
                                                case 48:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x80;led_smg[6] = 0x00;led_smg[7] = 0x00;  break;   
                                          case 49:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x01;led_smg[7] = 0x00;  break;
                                                case 50:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x02;led_smg[7] = 0x00; break;                                                               
                                                case 51:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x04;led_smg[7] = 0x00; break;
                                                case 52:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x08;led_smg[7] = 0x00; break;
            case 53:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x10;led_smg[7] = 0x00; break;
                                                case 54:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x20;led_smg[7] = 0x00; break;                                                               
                                                case 55:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x40;led_smg[7] = 0x00; break;
                                                case 56:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x80;led_smg[7] = 0x00; break;        
                                          case 57:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x01; break;
                                                case 58:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x02;  break;                                                               
                                                case 59:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x04;  break;
                                                case 60:  led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x08; break;
           default :         led_smg[0] = 0x00;led_smg[1] = 0x00;led_smg[2] = 0x00;led_smg[3] = 0x00;
                      led_smg[4] = 0x00;led_smg[5] = 0x00;led_smg[6] = 0x00;led_smg[7] = 0x00;        break;                                                                                
         }
                    if(miao == 60)             //1min
                              {
                                             miao = 0;
                                             fen++;
                                             if(fen == 60)
                                               {
                                                                         fen = 0;
                                                                         shi++;
                                                                         if(shi == 24)
                                                                          {
                                                                                         shi = 0;
                    }
                  }
             }
    }
                num[3] = fen%10;    //分鐘個位
                num[2] = fen/10;    //分鐘十位
                num[1] = shi%10;
                num[0] = shi/10;
}

//數碼管顯示函數
void display()
{     
        P2  =  smg[num[0]];
              S1= 0;
              delay(1);
                                P2 =   smg[17];
              S1  = 1 ;
        
              P2 = smg[num[1]];
              S2 = 0;
        delay(1);
                    P2 =   smg[17];        
              S2 = 1;
                        
                    P2 = smg[num[2]];
              S3 = 0;
        delay(1);
                    P2 =   smg[17];        
              S3 = 1;
        
              P2 = smg[num[3]];
              S4 = 0;
        delay(1);
                    P2 =   smg[17];        
              S4 = 1;         
}
//alarm數碼管顯示函數
void alarm_display()
{     
        P2  =  smg[alarm_num[0]];
              S1= 0;
              delay(1);
                                P2 =   smg[17];
              S1  = 1 ;
        
              P2 = smg[alarm_num[1]];
              S2 = 0;
        delay(1);
                    P2 =   smg[17];        
              S2 = 1;
                        
                    P2 = smg[alarm_num[2]];
              S3 = 0;
        delay(1);
                    P2 =   smg[17];        
              S3 = 1;
        
              P2 = smg[alarm_num[3]];
              S4 = 0;
        delay(1);
                    P2 =   smg[17];        
              S4 = 1;         
}
//流水燈顯示
void led_display()
{
              P2  =  led_smg[0];
              S5 = 0;
              delay(1);
                                P2 =   0x00;
              S5  = 1 ;
        
              P2 = led_smg[1];
              S6 = 0;
       delay(1);
                    P2 =   0x00;        
              S6 = 1;
                        
                    P2 = led_smg[2];
              S7 = 0;
        delay(1);
                    P2 =   0x00;        
              S7 = 1;
        
              P2 = led_smg[3];
              S8 = 0;
       delay(1);
                    P2 =   0x00;        
              S8 = 1;
                                
                                       
              P2 = led_smg[4];
              S9 = 0;
        delay(1);
                    P2 =   0x00;        
              S9 = 1;
                                
                                       
              P2 = led_smg[5];
              S10 = 0;
        delay(1);
                    P2 =   0x00;        
              S10 = 1;
                                
                                       
              P2 = led_smg[6];
              S11 = 0;
        delay(1);
                    P2 =   0x00;        
              S11 = 1;
                                
                                       
              P2 = led_smg[7];
              S12 = 0;
        delay(1);
                    P2 =   0x00;        
              S12 = 1;
}


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:57657 發表于 2021-11-27 16:34 | 只看該作者
你這程序太亂,delay 這樣寫,數碼管顯示,流水燈什么都要用定時器中斷處理才對的吧。

unsigned int delay_ms = 0;
bit _delay_ = 0;

#define delayms(ms) delay_ms=(ms);_delay_=1;while(_delay_)

void tm0_isr() interrupt 1
{
    TL0 = T1MS;
    TH0 = T1MS >> 8;
    count1++;
    time();
    if (_delay_ && !--delay_ms) {
        _delay_ = 0;
    }
}
回復

使用道具 舉報

板凳
ID:46065 發表于 2021-11-27 17:37 | 只看該作者
樓主,可以的,竟然給人送鐘(終),這要多大的仇啊!
回復

使用道具 舉報

地板
ID:88256 發表于 2021-11-27 23:31 | 只看該作者
圓盤LED那里,強迫癥患者表示無法接受,首先是數字1呆在了60(應該為0)的位置,所以15也無法呆在水平的位置,偏偏30的位置又是對的(29的絲印也反了)。
然后是LED的方向,從28到57是雜亂無章的
明明是圓盤時鐘,卻整了個四方形的邊框,而且數字太密也不好看,還是0、5、10、15……這樣比較好看。
沒有RTC,沒有亮度控制,所以并不實用(最好鬧鐘一起整一個)。
玩笑話,沒有貶低的意思,別介意啊,我自己用60個WS2812加ESP-12F模塊加PCF8563做的,硬件線路很簡單的,還可以網絡校時。
回復

使用道具 舉報

5#
ID:253767 發表于 2021-11-28 07:15 | 只看該作者
謝謝分享!!!
雖不完美,但值得稱贊!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产女人与拘做受免费视频 | 欧美在线a| 久久久999成人 | 欧美日韩久久 | 91视视频在线观看入口直接观看 | 成人精品国产免费网站 | 亚洲日本激情 | 一区二区三区四区国产 | 成人亚洲性情网站www在线观看 | 国产精品成人在线播放 | avhd101在线成人播放 | 国产精品二区三区 | 国产91精品久久久久久久网曝门 | 日本aⅴ中文字幕 | 一级毛片免费 | 日韩欧美在线一区 | 中文字幕一区二区三区不卡 | 亚洲国产成人av好男人在线观看 | 中文字幕在线观看视频一区 | 欧美精品二区 | 国产精品国产成人国产三级 | 国产精品视频在线观看 | 欧美一级毛片免费观看 | 国产精品久久影院 | 国产精品福利视频 | 黄免费观看 | 亚洲欧美综合精品久久成人 | 国产精品久久国产精品 | 亚洲国产看片 | 久久99精品久久久97夜夜嗨 | 亚洲精品乱码久久久久久蜜桃 | 亚洲精品中文字幕在线 | 国产一区二区在线看 | 亚洲成网| 在线一区| 日韩一区二区免费视频 | 国产三级大片 | 国产精品视频久久久 | 欧美性生活一区二区三区 | 欧美美女爱爱视频 | 一区二区三区日 |