<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > MSP430F449單片機RTC時鐘C語言程序(帶鬧鐘)

          MSP430F449單片機RTC時鐘C語言程序(帶鬧鐘)

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          功能:實現(xiàn)軟件萬年歷功能,并自動識別閏年,A屏每顯示5秒種就自動切換到B屏,B屏再顯示5秒種就自動切換到C屏,C屏再顯示5秒種就自動切換到A屏,通過按鍵在A屏、B屏和C屏之間切換,可通過按鍵手動設(shè)定和調(diào)整時間,當調(diào)整時對應調(diào)整位要有閃爍功能,有鬧鐘功能,可設(shè)置幾點幾分鬧鐘,當前時間等于鬧鐘時間時,用點亮LED指示,直到某個鍵(自定義)被按下時,熄滅LED燈

          ***************************************************/

          本文引用地址:http://www.ex-cimer.com/article/201611/322546.htm

          #include

          unsignedcharcnt;//計數(shù)器

          unsignedchartian;//天寄存器

          unsignedcharkey_code;//按鍵值

          unsignedcharflag;//換屏標志位

          unsignedchartwinkle_num;//閃爍標志位

          unsignedcharfunction_flag;//加減功能標志位

          unsignedcharfunction_ping1,function_ping2,function_ping3;//每屏閃爍位

          unsignedcharchange_num;//閃屏時間定時

          unsignedcharchange_ping;//三屏計數(shù)位

          unsignedcharclock_flag;//鬧鐘標志位

          unsignedcharping_flag;//按鍵跟蹤閃屏標志位

          unsignedcharnum_flag;//按鍵計數(shù)閃屏標志位

          unsignedchartian_flag;//天判斷標志位

          unsignedcharrun_flag;//閏年判斷標志位

          unsignedintkey_num=150;//按鍵消逗延時時間

          unsignedintyear=2008;//

          unsignedcharmonth=2;//

          unsignedcharday=28;//

          unsignedcharhour=23;//小時

          unsignedcharmin=59;//

          unsignedcharsec=57;//

          unsignedcharnao_hour=0;//鬧鐘時

          unsignedcharnao_min=0;//鬧鐘分

          unsignedcharnao_sec=0;//鬧鐘秒

          constunsignedchartianshu[13]=

          {0,31,28,31,30,31,30,31,31,30,31,30,31};//每月天數(shù)表

          chardigit[12]=//液晶顯示段碼表

          {

          0x7b,

          0x12,

          0x4f,

          0x1f,

          0x36,

          0x3d,

          0x7d,

          0x13,

          0x7f,

          0x3F,

          0x00

          };

          voidinit_clk(void);//初始化時鐘

          voidkey_scan(void);//按鍵掃描

          voidkey_value(void);//按鍵值確定

          voidrtc(void);//時鐘掃描函數(shù)

          voidrtc_show(void);//rtc掃描函數(shù)

          voidleap_year(void);//閏年判定函數(shù)

          voidmain(void)

          {

          init_clk();//時鐘初始化

          while(1)

          {

          key_scan();//按鍵掃描

          key_value();//鍵值確定

          rtc_show();//RTC顯示

          leap_year();//閏年判定

          if((sec==nao_sec)&&(min==nao_min)&&(hour==nao_hour))//鬧鐘判定

          {

          clock_flag=1;//鬧鐘標志位置一

          }

          }

          }

          voidinit_clk(void)

          {

          unsignedchari;

          WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗

          FLL_CTL0|=XCAP14PF;//選擇14PF電容

          IE2|=BTIE;//開啟基本定時器中斷

          BTCTL=BT_ADLY_250+BTFRFQ1;//250ms16分頻

          LCDCTL=LCDON+LCD4MUX+LCDP2;//STKLCD4Mux,S0-S14

          P5SEL=0xFC;//選擇P5口第二功能

          P1DIR|=0x01;//P1.0選擇輸出

          _EINT();//開總中斷

          for(i=0;i<19;i++)

          {

          LCDMEM[i]=0;//清LCD緩沖區(qū)

          }

          }

          voidkey_scan(void)

          {

          staticunsignedintnum;//按鍵消抖計數(shù)器

          if((P1IN&0x0e)!=0x0e)//如果不等于表示有鍵按下

          {

          num++;//消逗計數(shù)器加

          key_code=0;//鍵值清零

          }

          else

          {

          num=0;//按鍵抖動,鍵值清零

          key_code=0;//鍵值清零

          }

          if(num==key_num)//鍵值確定

          {

          num=0;//消逗寄存器清零

          twinkle_num=0;//閃爍清零

          key_code=((P1IN&0x0e)>>1)^0x07;//鍵值轉(zhuǎn)換

          }

          }

          voidkey_value(void)

          {

          if(key_code==0x01)//第一個鍵被按下

          {

          function_flag=1;//功能鍵標志位置一

          clock_flag=2;//關(guān)閉鬧鐘

          if(change_ping==0)//第一屏

          {

          function_ping1++;//數(shù)值閃爍加

          if(function_ping1==4)//閃爍到第三位

          {

          if(tian_flag==1)

          {

          function_ping1=1;//

          }

          else

          {

          function_ping1=0;//清零

          function_flag=0;//功能鍵清零

          }

          }

          change_num=0;//換屏計數(shù)器

          }

          if(change_ping==1)//第二屏

          {

          function_ping2++;//數(shù)值閃爍加

          if(function_ping2==4)

          {

          function_ping2=0;

          function_flag=0;//清零//功能標志位清零

          }

          change_num=20;//換屏時間計數(shù)器

          }

          if(change_ping==2)//第三屏

          {

          function_ping3++;//數(shù)值閃爍加

          if(function_ping3==4)

          {

          function_ping3=0;//清零

          function_flag=0;//功能標志位清零

          }

          change_num=40;//換屏計數(shù)器

          }

          }

          if((key_code==0x02)&&(function_flag==1))//加法

          {

          clock_flag=2;//關(guān)閉鬧鐘

          if(function_ping2==1)//秒閃爍

          {

          sec++;//秒加

          if(sec==60)//秒是否等于60

          sec=0;//秒數(shù)清零

          }

          if(function_ping2==2)//分閃爍

          {

          min++;//分加

          if(min==60)//分是否等于60

          min=0;//分清零

          }

          if(function_ping2==3)//小時閃爍

          {

          hour++;//小時加

          if(hour==24)//小時是否等于24

          hour=0;//小時清零

          }

          if(function_ping1==1)//日閃爍

          {

          day++;//日加加

          if(day>tian)//日是否大于天

          day=1;//日等于1

          }

          if(function_ping1==2)//月閃爍

          {

          month++;//月加加

          tian=tianshu[month];

          if(day>tian)

          {

          tian_flag=1;

          }

          else

          tian_flag=0;

          if(month==13)//月是否等于13

          month=1;//月等于1

          }

          if(function_ping1==3)//年閃爍

          {

          year++;//年加加

          if((year%4!=0)||(year0!=0)||(year@0==0))

          {

          tian=tianshu[month];

          if(day>tian)

          {

          tian_flag=1;

          }

          else

          tian_flag=0;

          }

          if(year==2100)//年是否等于2100

          year=2000;//年到2000

          }

          if(function_ping3==1)//鬧鐘秒閃爍

          {

          nao_sec++;//鬧鐘秒加加

          if(nao_sec==60)//鬧鐘秒是否等于60

          nao_sec=0;//鬧鐘秒清零

          }

          if(function_ping3==2)//鬧鐘分閃爍

          {

          nao_min++;//鬧鐘分加加

          if(nao_min==60)//鬧鐘分是否等于60

          nao_min=0;//鬧鐘分清零

          }

          if(function_ping3==3)//鬧鐘小時閃爍

          {

          nao_hour++;//鬧鐘小時加加

          if(nao_hour==24)//鬧鐘小時是否等于24

          nao_hour=0;//鬧鐘小時清零

          }

          }


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: MSP430F449單片機RTC時

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();