1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2559|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

在按鍵 時鐘的單片機(jī)程序上如何改動加上鬧鐘模式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:239793 發(fā)表于 2017-12-7 20:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
注:mshi秒的十位 fshi 分的十位 sshi分的十位  key2 秒分時的加 KEY3秒分時的減 key4時鐘開啟暫停 key5清零
如何在加一個按鍵 能切換成鬧鐘模式按key2 3可調(diào)定時 再按一下?lián)Q成時鐘  切換成鬧鐘的時候不影響時鐘的運行   時鐘到鬧鐘設(shè)定的時間 小燈亮
我有寫了一個函數(shù)去設(shè)置 但是不對
#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

void delayms(uint);

uchar num1,a,b,c,d;

uchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit key1=P3^0;

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3;

sbit key5=P3^4;
sbit key6=P3^5;

void delayms(uint xms)

{

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}


void display()

{


int mshi,mge,fshi,fge,sshi,sge;

if(num1==20)

  {

              num1=0;

              a++;

              if(a==60)

              {  

              a=0;

              b++;

              }

              if(b==60)

              {

              b=0;

              c++;

              }

              if(c==24)

              {

              c=0;

       }

  }

  mshi=a/10;

  mge=a%10;

  fshi=b/10;

  fge=b%10;

  sshi=c/10;

  sge=c%10;

P1=table[mge];

P2=0x7f;

delayms(1);

P2=0xff;


P1=table[mshi];

P2=0xbf;

delayms(1);

P2=0xff;


P1=0X40;

P2=0xdf;

delayms(1);

P2=0xff;


P1=table[fge];

P2=0xef;

delayms(1);

P2=0xff;


P1=table[fshi];

P2=0xf7;

delayms(1);

P2=0xff;


P1=0x40;

P2=0xfb;

delayms(1);

P2=0xff;


P1=table[sge];

P2=0xfd;

delayms(1);

P2=0xff;


P1=table[sshi];

P2=0xfe;

delayms(1);

P2=0xff;

       }



  void keyscan()

  {                       

if(key1==0)        

   {

          delayms(10);

          if(key1==0)                                 //選擇時分秒

          {                 

                 d++;

                 if(d==4)

                       d=0;

        }

          while(!key1)     display();         //等待按鍵釋放

   }


  if(d==1)                                                //選擇調(diào)秒

   {

          if(key2==0)                                    //key2 (++)

          {

                 delayms(10);

                 if(key2==0)

                 {

                        a++;

                        if(a==60)                    //當(dāng)?shù)?0時重新歸0

                        a=0;

                        while(!key2)display();

                 }

          }

          if(key3==0)                                    //key3 (--)

          {

               delayms(10);

                     if(key3==0)

                     {

                        if(a==0)

                        a=60;

                        a--;

                        while(!key3)display();

                      }

              }

   }


  if(d==2)                                             //選分

   {

          if(key2==0)

          {

                 delayms(10);

                 if(key2==0)

                 {

                         b++;

                            if(b==60)

                                   b=0;

                            while(!key2)display();

                     }

           }

               if(key3==0)

           {

               delayms(10);

                     if(key3==0)

                     {

                        if(b==0)

                        b=60;

                        b--;

                        while(!key3)display();

                      }

              }            

       }      


  if(d==3)                                                    //選時

   {

          if(key2==0)

          {

                 delayms(10);

                 if(key2==0)

                 {

                 c++;

                 if(c==24)

                 c=0;

                 while(!key2)display();

                 }

              }

              if(key3==0)

          {

               delayms(10);

                     if(key3==0)

                     {

                        if(c==0)

                        c=24;

                        c--;

                        while(!key3)display();

                      }

              }

   }

       if(key4==0)

      {

          delayms(10);

                 if(key4==0)

                 {   

                 TR0=~TR0;                    //啟動或停止定時器

                 while(!key4)display();

         

           }

       }

        if(key5==0)

       {

              delayms(10);

               if(key5==0)

               {

            a=0;

           b=0;

               c=0;

               while(!key5)display();

               }

       }

   }



void main()

{      

TMOD=0x11;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

EA=1;                        //開總中斷                                       

ET0=1;                      //開定時器0中斷

TR0=1;

while(1)

{

keyscan();

display();

}

}


void T0_time() interrupt 1

{

TH0=(65536-45872)/256;    //重裝初值

TL0=(65536-45872)%256;

num1++;


   }
#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

void delayms(uint);

uchar num1,a,b,c,d;

uchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit key1=P3^0;

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3;

sbit key5=P3^4;

void delayms(uint xms)

{

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}



void display()

{



int mshi,mge,fshi,fge,sshi,sge;

if(num1==20)

  {

              num1=0;

              a++;

              if(a==60)

              {  

              a=0;

              b++;

              }

              if(b==60)

              {

              b=0;

              c++;

              }

              if(c==24)

              {

              c=0;

       }

  }

  mshi=a/10;

  mge=a%10;

  fshi=b/10;

  fge=b%10;

  sshi=c/10;

  sge=c%10;

P1=table[mge];

P2=0x7f;

delayms(1);

P2=0xff;



P1=table[mshi];

P2=0xbf;

delayms(1);

P2=0xff;



P1=0X40;

P2=0xdf;

delayms(1);

P2=0xff;



P1=table[fge];

P2=0xef;

delayms(1);

P2=0xff;



P1=table[fshi];

P2=0xf7;

delayms(1);

P2=0xff;



P1=0x40;

P2=0xfb;

delayms(1);

P2=0xff;



P1=table[sge];

P2=0xfd;

delayms(1);

P2=0xff;



P1=table[sshi];

P2=0xfe;

delayms(1);

P2=0xff;

       }





  void keyscan()

  {                       

if(key1==0)        

   {

          delayms(10);

          if(key1==0)                                 //選擇時分秒

          {                 

                 d++;

                 if(d==4)

                       d=0;

        }

          while(!key1)     display();         //等待按鍵釋放

   }



  if(d==1)                                                //選擇調(diào)秒

   {

          if(key2==0)                                    //key2 (++)

          {

                 delayms(10);

                 if(key2==0)

                 {

                        a++;

                        if(a==60)                    //當(dāng)?shù)?0時重新歸0

                        a=0;

                        while(!key2)display();

                 }

          }

          if(key3==0)                                    //key3 (--)

          {

               delayms(10);

                     if(key3==0)

                     {

                        if(a==0)

                        a=60;

                        a--;

                        while(!key3)display();

                      }

              }

   }



  if(d==2)                                             //選分

   {

          if(key2==0)

          {

                 delayms(10);

                 if(key2==0)

                 {

                         b++;

                            if(b==60)

                                   b=0;

                            while(!key2)display();

                     }

           }

               if(key3==0)

           {

               delayms(10);

                     if(key3==0)

                     {

                        if(b==0)

                        b=60;

                        b--;

                        while(!key3)display();

                      }

              }            

       }      



  if(d==3)                                                    //選時

   {

          if(key2==0)

          {

                 delayms(10);

                 if(key2==0)

                 {

                 c++;

                 if(c==24)

                 c=0;

                 while(!key2)display();

                 }

              }

              if(key3==0)

          {

               delayms(10);

                     if(key3==0)

                     {

                        if(c==0)

                        c=24;

                        c--;

                        while(!key3)display();

                      }

              }

   }

       if(key4==0)

      {

          delayms(10);

                 if(key4==0)

                 {   

                 TR0=~TR0;                    //啟動或停止定時器

                 while(!key4)display();



           }

       }

        if(key5==0)

       {

              delayms(10);

               if(key5==0)

               {

            a=0;

           b=0;

               c=0;

               while(!key5)display();

               }

       }

   }





void main()

{      

TMOD=0x11;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

EA=1;                        //開總中斷                                       

ET0=1;                      //開定時器0中斷

TR0=1;

while(1)

{

keyscan();

display();

}

}



void T0_time() interrupt 1

{

TH0=(65536-45872)/256;    //重裝初值

TL0=(65536-45872)%256;

num1++;



   }


評分

參與人數(shù) 1黑幣 +5 收起 理由
這貨不是小武啊 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:239793 發(fā)表于 2017-12-7 22:16 | 只看該作者
求一個大概思路
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表