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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3008|回復: 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);
}
   }         

回復

使用道具 舉報

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 | 顯示全部樓層
求大神指點一二
回復

使用道具 舉報

ID:7485 發表于 2017-7-21 08:45 | 顯示全部樓層
你可以設置s4的按鍵動作次數。例如:如果按鍵次數=1,進入調時程序,次數=2,進入定時程序。按鍵次數=3,.........
回復

使用道具 舉報

6#
無效樓層,該帖已經被刪除
7#
無效樓層,該帖已經被刪除
8#
無效樓層,該帖已經被刪除
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕高清一区 | 91 视频网站 | 丁香六月激情 | 欧美日韩福利视频 | 日韩日b视频 | 日韩欧美国产精品一区二区 | 久久久久久久久久久久一区二区 | 成人免费区一区二区三区 | 粉嫩高清一区二区三区 | 亚洲成av人片在线观看无码 | 美国十次成人欧美色导视频 | 亚洲综合在线一区 | 欧美激情国产日韩精品一区18 | 麻豆精品久久久 | 男人天堂手机在线视频 | 欧美日韩在线一区二区三区 | 久久综合狠狠综合久久综合88 | 国产成人精品一区二区三 | 久久不射电影网 | 久久亚洲综合 | 久久无毛 | 99综合 | 蜜臀久久99精品久久久久久宅男 | 国产激情在线 | 日韩欧美专区 | 日韩一级免费看 | 日韩一级黄色片 | 伊人爽 | 精品www| 毛片a级毛片免费播放100 | 亚洲黄色在线免费观看 | 亚洲精品国产成人 | 国产精品欧美一区二区 | 日韩电影中文字幕在线观看 | 亚洲综合色视频在线观看 | xxxxx免费视频 | 日韩成年人视频在线 | 成人欧美一区二区三区黑人孕妇 | 中文字幕在线播放第一页 | 午夜在线影院 | 国产免国产免费 |