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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

第一次求助,51單片機定時器鬧鐘問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:220340 發表于 2017-7-20 10:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我自己寫的時鐘程序,沒有用芯片只用了51單片機自帶的定時器設置的時鐘,請問怎么在這個基礎上加一個鬧鐘?求指點,謝謝。
uchar wei[4]={0XEf,0XDf,0XBf,0X7f};
uchar  LightSign= 0;        // 閃爍標志,=1 時滅, =0 時亮
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
uint a,b,c,d,e,f,t,i,m;
uint a1=0,b1=0,c1=0,d1=0,s1num=0,s2num=0,i1,k1;
void delay(uchar n)
{
  uchar i,j;
   for(i=0;i<n;i++)
   {
for(j=13;j>0;j--)
         { ;
         }
   }
}

void int0(void) interrupt 1
{

        TR0=0;        t++;
    m++;
        if(m==22)
    m=0;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        if(t==11)
        LightSign=s2num;
                  if(t==22)
                {t=0;
                f++;
                LightSign=0; }
                if(f==59)
                {
                f=0;
                d++;
                }
   if(d==10)
   {c++;
    d=0;
   }
   if(c==6)
   {b++;
   c=0;
   }
   if(b==10)
   {a++;
   b=0;
   }
   if(a==2&&b==4){a=b=0;}       
    e=1000*a+100*b+10*c+d;
   TR0=1;
        }

/*********************************************************************/
void Led(int date) //顯示函數
{
uint w,x,y,z;
  w=date/1000;                         //求千位
  x=date%1000/100;                 //求百位
  y=date%100/10;                 //求十位
  z=date%10;                         //求個位
          P2=0XFF;
          if(LightSign==4)
                  P0= 0xFF;
          else
                  P0=seg7code[w];                 //主函數一直循環掃描 在t=11時閃爍,t=2
          P2=wei[0];
          delay(80);
          P2=0XFF;
          if(LightSign==3)
                  P0= 0xFF;
          else
       P0=seg7cade[x];
          P2=wei[1];
          delay(80);                                                               
          P2=0XFF;
          if(LightSign==2)
                  P0= 0xFF;
          else
             P0=seg7code[y];
          P2=wei[2];
          delay(80);
          P2=0XFF;
          if(LightSign==1)
                  P0= 0xFF;
         else
      P0=seg7code[z];
          P2=wei[3];
          delay(80);
          P2=0XFF;                  
}
void jishu()
{  i1=1;
   k1=1;


  while(k1)
  {
  Led(0);
  if(s3==0)
  {
  while(s3==0){;}
  k1=0;
  }
  if(s1==0)
  {while(s1==0){;}
  i1=0;k1=0;s1num=0;
  }
  }
  while(i1)
  {
    if(m==21)          //時間的修改
          {
          m=0;
          d1++;       
          }         
    if(d1==10)
          {c1++;
          d1=0;
          }
    if(c1==10)
     {
     b1++;
     c1=0;
     }
   if(b1==10)
   {a1++;
   b1=0;
   }
   if(a1==10){a1=b1=c1=d1=0;}
    if(s2==0)
   {
   while(s2==0){;}                //計數暫停
  // j1=t;
   k1=1;
    while(k1)
        {
//        t=j1;
//        t=0;
    e=1000*a1+100*b1+10*c1+d1;
     Led(e);
     if(s3==0){while(s3==0){;}k1=0;}
         if(s1==0){while(s1==0){;}i1=0;s1num=0;s2num=0;k1=0;}        //暫停后清零     計數后操作
    }
   }
   if(s1==0){while(s1==0){;}i1=0;s1num=0;s2num=0;}        ///直接清零
  e=1000*a1+100*b1+10*c1+d1;
  Led(e); }
  }
void keyscan()
  {
  if(s1==0)
  {         
         while (s1==0) {;}
         s1num++;
         if(s1num==3) {s1num=0;}
         if(s1num==2) {jishu();}
         if(s1num==0) {s2num=0;}
         if(s1num!=0) {s2num=1;}
}
   if(s2==0)
   {
   while (s2==0) {;}
   if(s1num==1)
   {
    s2num++;
        if(s2num==5){s2num=1;}       
        }}
   if(s3==0)        //
   {
   while (s3==0) {;}
   if(s1num==1)
   {
    if(s2num==1)d++;
        if(s2num==2)c++;
        if(s2num==3)b++;
        if(s2num==4)a++;
    e=1000*a+100*b+10*c+d;        }        }
         Led(e);
                 }       
void main()
{
   TMOD=0x01;
   TH0=(65536-45872)/256;
   TL0=(65536-45872)%256;
   EA=1;
   ET0=1;
   TR0=1;
   while(1)
   {   
     e=1000*a+100*b+10*c+d;
     keyscan();       
     Led(e);
}
   }         

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

使用道具 舉報

沙發
ID:7485 發表于 2017-7-20 15:40 | 只看該作者
你可以按需要設置一個時間,把實時時間和其比較,如相同,則向接蜂鳴器的IO輸出一個低電平。
回復

使用道具 舉報

板凳
ID:220340 發表于 2017-7-20 16:07 | 只看該作者
ahshmj 發表于 2017-7-20 15:40
你可以按需要設置一個時間,把實時時間和其比較,如相同,則向接蜂鳴器的IO輸出一個低電平。

我思路也是這樣,但是加了一個s4之后時鐘和鬧鐘還是只能調一個。你可以幫我看一下我這個程序s4改該怎么加才可以設置鬧鐘嗎,s4是用來設置鬧鐘的單獨按鍵。
回復

使用道具 舉報

地板
ID:220340 發表于 2017-7-20 18:27 | 只看該作者
求大神指點一二
回復

使用道具 舉報

5#
ID:7485 發表于 2017-7-21 08:45 | 只看該作者
你可以設置s4的按鍵動作次數。例如:如果按鍵次數=1,進入調時程序,次數=2,進入定時程序。按鍵次數=3,.........
回復

使用道具 舉報

6#
ID:220340 發表于 2017-7-22 10:32 | 只看該作者
ahshmj 發表于 2017-7-21 08:45
你可以設置s4的按鍵動作次數。例如:如果按鍵次數=1,進入調時程序,次數=2,進入定時程序。按鍵次數=3,.. ...

對 我也是這樣想的 但是程序設置之按鍵達不到效果 而且設置鬧鐘后 設置時鐘 鬧鐘設定的時間還在。。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区亚洲二区 | 国产成人精品免费 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 人成在线 | 欧美综合在线观看 | 深夜福利亚洲 | 精品在线一区 | 精品一区在线 | 久久久国产精品 | 久久一区二区三区电影 | 天天射天天干 | 亚洲一区二区三区视频在线 | 日韩av第一页| 免费的一级视频 | 久久成人一区 | 亚洲国产成人精品女人久久久 | 国产一区二区三区在线免费 | 亚洲区一区二区 | 精品一区二区电影 | 超碰在线97国产 | 久久手机在线视频 | 久久成人精品 | 亚州激情| 污污的网站在线观看 | 一区二区国产精品 | 婷婷精品 | 国产精品自产av一区二区三区 | av黄色免费 | 日韩在线欧美 | 网站黄色在线 | 国产毛片av | 日韩欧美一区二区三区 | 欧美日韩久久精品 | av免费观看网站 | 黑人巨大精品欧美一区二区免费 | 手机在线一区二区三区 | 伊色综合久久之综合久久 | 性生生活大片免费看视频 | 亚洲一二三区不卡 | 一区二区激情 | 日韩欧美国产精品 |