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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

   {

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

          {

                 delayms(10);

                 if(key2==0)

                 {

                        a++;

                        if(a==60)                    //當到60時重新歸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)                                                //選擇調秒

   {

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

          {

                 delayms(10);

                 if(key2==0)

                 {

                        a++;

                        if(a==60)                    //當到60時重新歸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++;



   }


評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品一区二区 | 国产高清精品在线 | 成人免费看黄 | 久久免费精品视频 | 国产欧美一区二区三区久久 | 成人久久18免费网站图片 | 性一交一乱一透一a级 | av黄在线观看 | 欧美操操操 | 欧洲成人 | 一区二区三区日韩 | 国产午夜精品一区二区三区四区 | 久久久久久国产精品免费 | 亚洲精品久久久久avwww潮水 | 九九av | 超碰成人在线观看 | 久久综合一区 | 日本黄色不卡视频 | 日韩一二区| 久久精品亚洲国产 | 欧美电影免费观看高清 | 一级做a爰片性色毛片 | 日本亚洲一区 | 欧美a在线 | 激情一区二区三区 | 国产精品国产亚洲精品看不卡15 | 成人欧美一区二区三区视频xxx | 国产激情精品视频 | 九九热精品在线视频 | www国产亚洲精品久久网站 | 一区二区影院 | 欧美一区二区在线免费观看 | 亚洲成人播放器 | 91精品国产色综合久久 | 欧美视频区 | 亚洲免费观看视频网站 | 人人操日日干 | 久久精品国产亚洲 | 国产美女在线播放 | 免费午夜视频 | 成人毛片一区二区三区 |