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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機鬧鐘程序及PROTUES仿真文件

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年03月16日   【字體:

//提示:k1k2k3k4分別是:小時。分鐘。秒鐘的調節功能。定時時間的顯示功能。k5k6分別是設定第二時間定為0:01:00,啟用或者關閉鬧鐘,

下面是仿真圖,芯片是用的51單片機: 


PROTUES工程文件可以從 http://www.zg4o1577.cn/bbs/dpj-24552-1.html 下載

下面是源程序:
#include"AT89X52.H"
#define uchar unsigned char
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};   //斷碼
uchar code pos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                                                //微碼
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit jidianqi1=P1^5;
sbit k6=P1^6;
sbit led=P1^7;
uchar k[8]={0,0,16,0,0,16,0,0};      //01234567

uchar code seg00[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};   //斷碼
uchar code pos00[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                                                //微碼
uchar k00[8]={0,0,16,0,0,16,0,0};                                                                            //01234567
uchar second;
uchar minite;
uchar hour;
uchar num;  
uchar naozhongqiyongFlag;
 
uchar second00;
uchar minite00;
uchar hour00;
uchar num00;
////////////////////////////////////////////////////////////////////////////////////
void TimeCompate(void)
  {
if(naozhongqiyongFlag) 
  {
    if((second00==0)&&(minite00==1)&&(hour00==0))               ///&&(minite00<=2),,,(naozhongqiyongFlag==1)&&,,  led=1
        {
       jidianqi1=0;                          
      }
  else if((second00==5)&&(minite00==42)&&(hour00==0))
        {
       jidianqi1=1;   naozhongqiyongFlag=~naozhongqiyongFlag;    led=~led;                   
      }
  }   
/* if(hour00!=0)
       { jidianqi1=1;   naozhongqiyongFlag=0;                             
    }
  if(hour00==0) 
       {
      if(minite00<1)
      { jidianqi1=1;   naozhongqiyongFlag=0;                             
      }
     else if(minite00>2)
       { jidianqi1=1;   naozhongqiyongFlag=0;                             
       }
      else
           {
           jidianqi1=0;                                 
        }
  }
 
/*/
//////////////////////////////////////////

    
}

 


//////////////// //延時程序///////////////////////////////
void delay_5ms(void)         
{
  uchar i,j;
  for(i=10;i>0;i--)
  for(j=248;j>0;j--)
  ;
}

////////////顯示程序,這個寫法不錯啊。//////////////////////////
void disp(uchar m,uchar n)    
{
P2=pos[n];                          //查表法 把對應的段碼送P2?
P0=seg[m];                           //查表法 把對應的未碼送P0口
delay_5ms();
P2=0x00;
}


////////////顯示程序,這個寫法不錯啊。//////222222222222222/////
void disp00(uchar x,uchar y)    
{
P2=pos00[y];                          //查表法 把對應的段碼送P2?
P0=seg00[x];                           //查表法 把對應的未碼送P0口
delay_5ms();
P2=0x00;
}

 

////////////////////主程序//////////////////////////////
void main(void)
{

  uchar j;
  uchar p;
  TMOD=0x01;
  // TH0=-50000/256;
  // TL0=-50000%256;
  TR0=1;
  ET0=1;
  EA=1;
  second=0;
  minite=0;
  hour=0;

  second00=7;
  minite00=8;
  hour00=9;

  jidianqi1=1;
  naozhongqiyongFlag=0;
  led=1;

  while(1)
   {

   TimeCompate();
     if(k1==0)
       {
         delay_5ms();
          if(k1==0)        //判斷按鍵是否按下
            { 
             second=0;
         while(k1==0);               
            }
        }
     if(k2==0)                //判斷按鍵是否按下
        {
          delay_5ms();
          if(k2==0)
            {
              minite++;
              if(minite==60)  minite=0;
     while(k2==0);
            }
        }
     if(k3==0)                    //判斷按鍵是否按下
        {
          delay_5ms();
          if(k3==0)
            {
              hour++;
              if(hour==24)  hour=0;
              while(k3==0)
                   {for(j=0;j<8;j++)              //掃描顯示程序,循環有8次,01234567.
                   disp(k[j],j);               //掃描顯示程序
         }     
            }
        }

 //////////////////////////////////////////////////////////////////////
  
   if(k4==0)                    //判斷按鍵是否按下
        {
          delay_5ms();
          if(k4==0)
            {
              while(k4==0)
       {
                    for(p=0;p<8;p++)
                     disp00(k00[p],p); 
       TimeCompate();
         ;
                 }    
            }
        }

    ///////////////////////////////////////////////////////////////////////////////
  if(k5==0)                    //判斷按鍵是否按下
        {
          delay_5ms();
          if(k5==0)
            {
     second00=57;
              minite00=0;
              hour00=0;


              while(k5==0)
       {
                    for(p=0;p<8;p++)
                     disp00(k00[p],p); 
         ;
                 }    
            }
        }
//////////////////////////////////////////////////////////////////////////////////////
if(k6==0)                    //判斷按鍵是否按下
        {
          delay_5ms();
          if(k6==0)
            {
             naozhongqiyongFlag=~naozhongqiyongFlag;
     led=~led;
     
              while(k6==0)
       {
                  ;
                 }    
            }
        }

   ////////////////////////////////////////////////////////////////////////////////////
      for(j=0;j<8;j++)              //掃描顯示程序,循環有8次,01234567.
      disp(k[j],j);               //掃描顯示程序
  ////////////////////////////////////////////////////////////////////////////////////

      TimeCompate();
  ////////////////////////////////////////////////////////////////////////////////////

 

   
   }
}
////////////////*定時器工作方式*/ /////////////////////////////////
void t0(void) interrupt 1  /*定時器工作方式*/  using 0   //工作寄存器
{
  num++;
 
  if(num==20)
    {
      num=0;
      second++;
      if(second==60)
        {
          second=0;
          minite++;
          if(minite==60)
            {
              minite=0;
              hour++;     
              if(hour==24)
                {
                  hour=0;
                }
             }
         }
     k[0]=second%10;     //各位
     k[1]=second/10;         //各十位
     k[3]=minite%10;        //各位
     k[4]=minite/10;      //各十位
     k[6]=hour%10;        //各位
     k[7]=hour/10;        //各十位

    }
  num00++;
  if(num00==20)
    {
      num00=0;
      second00++;
      if(second00==60)
        {
          second00=0;
          minite00++;
          if(minite00==60)
            {
              minite00=0;
              hour00++;
              if(hour00==99)
                {
                  hour00=0;
                }
             }
         }
        k00[0]=second00%10;         //各位
              k00[1]=second00/10;         //各十位
              k00[3]=minite00%10;         //各位
              k00[4]=minite00/10;         //各十位
              k00[6]=hour00%10;           //各位
              k00[7]=hour00/10;           //各十位
     }

 

 
 
   TH0=-50000/256;
   TL0=-50000%256;
   
}

關閉窗口

相關文章

主站蜘蛛池模板: 日韩性生活网 | 日韩av在线中文字幕 | 欧美久| 黄色国产在线视频 | 99久久99| av国产精品 | 成人免费视频网站在线看 | 中文字幕在线一区二区三区 | 麻豆一区一区三区四区 | 欧美日韩不卡合集视频 | 一区二区三区亚洲 | 欧美日韩精品一区二区三区四区 | 国产一区二区三区四区五区加勒比 | 国产美女精品 | 久久国产精品久久久久久 | 激情久久网 | 国产精品18hdxxxⅹ在线 | 欧美日一区二区 | 性视频网| 欧美啪啪 | 久久久久国产一区二区三区四区 | 伊人爽| 国产精品久久久久久久免费观看 | 精品美女久久久久久免费 | 欧美一区二区三区一在线观看 | 国产美女一区二区 | 999久久久精品 | 久久99视频 | 在线免费看黄 | 中文字幕欧美一区二区 | 国产高清一区二区三区 | 精品久久久久一区二区国产 | 精品国产欧美一区二区三区成人 | 亚洲91精品 | 日韩在线观看中文字幕 | 亚洲视频免费播放 | 日韩在线免费电影 | 国产在线一区二区三区 | 欧美专区在线观看 | 成人午夜精品 | 欧美jizzhd精品欧美巨大免费 |