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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2274|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕在线视频 | 中文字幕免费在线 | 亚洲精品乱码久久久久久黑人 | 日韩精品免费在线观看 | 国产高清免费 | 国产成人精品免费 | 久草视频在线播放 | 国产 日韩 欧美 制服 另类 | 天天夜碰日日摸日日澡 | 九九精品在线 | 久久久久亚洲av毛片大全 | 欧美888 | 亚洲伦理自拍 | 视频1区2区 | 手机在线一区二区三区 | 狠狠伊人| 精品国产一区二区 | 二区不卡 | 精品视频在线观看 | 国产成人高清在线观看 | 三极网站| 亚洲欧美中文日韩在线v日本 | 男插女下体视频 | 中文字幕一区二区三区乱码图片 | 欧美激情国产日韩精品一区18 | 色婷婷av久久久久久久 | 精品久久香蕉国产线看观看亚洲 | 久久一区二区三区四区 | 91爱啪啪 | 97国产精品视频人人做人人爱 | 亚洲精品在线免费观看视频 | 中文字幕在线视频观看 | 一久久久 | 一区二区不卡视频 | 一区观看 | 自拍偷拍亚洲欧美 | 亚洲精品久久久久中文字幕欢迎你 | 国产美女永久免费无遮挡 | 国产激情片在线观看 | 日韩电影免费在线观看中文字幕 | aaaaaaa片毛片免费观看 |