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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

多功能電子時鐘仿真及代碼

查看數: 4045 | 評論數: 5 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2017-2-19 15:53

正文摘要:

多功能電子時鐘仿真原理圖:

回復

ID:170753 發表于 2017-4-19 19:59
感謝樓主分享
ID:165792 發表于 2017-2-21 22:29
不錯功能比較多
ID:140489 發表于 2017-2-20 11:17
顯示函數修改一下,調整時相應的數碼管閃爍

void display(char miao,char fen, char shi)           //顯示子程序,分別顯示時,分,秒
{

if(slnum==0)
{
snum=30;
fnum=30;
mnum=30;
}

if(slnum==1)
{
snum=30;
fnum=30;
mnum++;
}

if(slnum==2)
{
snum=30;
fnum++;
mnum=30;
}

if(slnum==3)
{
snum++;
fnum=30;
mnum=30;
}


if(mnum>=30)   //調整時,秒閃爍
{
  P0=table[miao%10];
  wei7=0;
  delay(1);
  wei7=1;
  P0=0xff;

  P0=table[miao/10];
  wei6=0;
  delay(1);
  wei6=1;
  P0=0xff;

  if(mnum==60)
          mnum=0;
}
  
  P0=table[16];
  wei5=0;
  delay(1);                                                                                                                                                                                                                       
  wei5=1;
  P0=0xff;

if(fnum>=30)   //調整時,分鐘閃爍
{
  P0=table[fen%10];
  wei4=0;
  delay(1);
  wei4=1;
  P0=0xff;

  P0=table[fen/10];
  wei3=0;
  delay(1);
  wei3=1;
  P0=0xff;
        if(fnum==60)
                fnum=0;

}
  
  P0=table[16];
  wei2=0;
  delay(1);
  wei2=1;
  P0=0xff;

if(snum>=30)          //調整時,小時閃爍
{
  P0=table[shi%10];
  wei1=0;
  delay(1);
  wei1=1;
  P0=0xff;

  P0=table[shi/10];
  wei0=0;
  delay(1);
  wei0=1;
  P0=0xff;
        if(snum==60)
                snum=0;

  }
}
ID:140489 發表于 2017-2-20 11:10
原來的程序,設置調整的時候數碼管不閃爍,我在原來的程序上修改了一下,現在調整的時候對應的數碼管閃爍,這樣比較直觀的知道調整的是時、分、秒。仿真通過  

/**************************/
/**************************/
/****   電子時鐘       ****/
/**************************/
/**************************/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
char miao,fen,shi;
bit flag, flag_time;
char set_miao=0,set_fen=0;set_shi=12; //鬧鐘初始化
uchar slnum,snum,fnum,mnum;

sbit s1=P3^0;                                         //功能鍵
sbit s2=P3^1;                                         //加鍵
sbit s3=P3^2;                                         //減鍵
sbit s4=P3^3;                                         //鬧鐘設置


sbit led1=P1^0;                                         //調整秒鐘的指示燈
sbit led2=P1^1;                                         //調整分鐘的指示燈
sbit led3=P1^2;                                         //調整時鐘的指示燈
sbit led4=P1^3;                                         //鬧鐘設置指示燈
sbit BUZZ =P1^4;                                 //報警

sbit wei0=P2^0;                                         //定義8個數碼管段選
sbit wei1=P2^1;
sbit wei2=P2^2;
sbit wei3=P2^3;
sbit wei4=P2^4;
sbit wei5=P2^5;
sbit wei6=P2^6;
sbit wei7=P2^7;

uchar code table[]={
                  0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
                                  0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};                //共陰數碼管編碼

void delay(uint z)                                  //延時函數
{
uint x,y;
for(x=z;x>0;x--)
    for(y=125;y>0;y--);

}

void start()                                         //定時器初始化
{
TMOD=0x11;
TH0=(65536-50000)/256;                           //時間累加
TH0=(65536-50000)%256;
TH1=(65536-50000)/256;                           //鬧鐘設置
TH1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=0;                                                           //關閉定時器
}

void display(char miao,char fen, char shi)           //顯示子程序,分別顯示時,分,秒
{

if(slnum==0)
{
snum=30;
fnum=30;
mnum=30;
}

if(slnum==1)
{
snum=30;
fnum=30;
mnum++;
}

if(slnum==2)
{
snum=30;
fnum++;
mnum=30;
}

if(slnum==3)
{
snum++;
fnum=30;
mnum=30;
}


if(mnum>=30)   //調整時,秒閃爍
{
  P0=table[miao%10];
  wei7=0;
  delay(1);
  wei7=1;
  P0=0xff;

  P0=table[miao/10];
  wei6=0;
  delay(1);
  wei6=1;
  P0=0xff;

  if(mnum==60)
          mnum=0;
}
  
  P0=table[16];
  wei5=0;
  delay(1);                                                                                                                                                                                                                       
  wei5=1;
  P0=0xff;

if(fnum>=30)   //調整時,分鐘閃爍
{
  P0=table[fen%10];
  wei4=0;
  delay(1);
  wei4=1;
  P0=0xff;

  P0=table[fen/10];
  wei3=0;
  delay(1);
  wei3=1;
  P0=0xff;
        if(fnum==60)
                fnum=0;

}
  
  P0=table[16];
  wei2=0;
  delay(1);
  wei2=1;
  P0=0xff;

if(snum>=30)          //調整時,小時閃爍
{
  P0=table[shi%10];
  wei1=0;
  delay(1);
  wei1=1;
  P0=0xff;

  P0=table[shi/10];
  wei0=0;
  delay(1);
  wei0=1;
  P0=0xff;
        if(snum==60)
                snum=0;

  }
}

void keyscan()                   //功能鍵
{
if(s1==0)
{
  delay(5);
  if(s1==0)                            //確認功能按下
  {
   while(!s1);                  
   slnum++;                           //功能鍵按下次數記錄
   if(slnum==1)                   //功能鍵第一次按下調整“秒鐘”
   {
           if(flag)
            TR0=1;                        //開定時器
        else
            TR0=0;                        //關閉定時器
                led1=0;
   }


   if(slnum==2)
   {
                led2=0;
                led1=1;
   }

   if(slnum==3)
   {
        led3=0;
                led2=1;
                led1=1;
   }

        if(slnum==4)
   {
                led3=1;
                led2=1;
                led1=1;
                slnum=0;
                TR0=1;
   }
  }
}
}

void time()
{
   if(slnum!=0)
   {
      if(s2==0)
           {
           delay(5);
           if(s2==0)
           {
           while(!s2);
           switch(slnum)
           {
              case 1:
                  miao++;
                  if(miao==60)
                  miao=0;
                  break;
                   case 2:
                  fen++;
                  if(fen==60)
                 fen=0;
                  break;
                   case 3:
                  shi++;
                  if(shi==24)
                  shi=0;
                  break;
                      }
                    }
                  }

          if(s3==0)
           {
           delay(5);
           if(s3==0)
           {
           while(!s3);
           switch(slnum)
           {
              case 1:
                  miao--;
                  if(miao<0)
                  miao=59;
                  break;
                   case 2:
                  fen--;
                  if(fen<0)
                 fen=59;
                  break;
                   case 3:
                  shi--;
                  if(shi<0)
                  shi=23;
                  break;
                      }
                    }
                  }
                  }
                  }
         void set_time()
         {
            if(slnum==0)
                 {
                   if(s4==0)
                   {
                      delay(5);
                          if(s4==0)
                          {
                          while(!s4);
                          led4=~led4;
                          flag=~flag;
                          }
                          }
                          }
                          if(flag)
                          {
                          if(slnum!=0)
                          {
                          if(s2==0)
                          {
                          delay(5);
                          if(s2==0)
                          {
                          while(!s2);
                          switch(slnum)
                          {
                          case 1:
                  set_miao++;
                  if(set_miao==60)
                  set_miao=0;
                  break;
                   case 2:
                  set_fen++;
                  if(set_fen==60)
                 set_fen=0;
                  break;
                   case 3:
                  set_shi++;
                  if(set_shi==24)
                  set_shi=0;
                  break;
                  }
                  }
                  }
                  if(s3==0)
                  {
                   delay(5);
                          if(s3==0)
                          {
                          while(!s3);
                          switch(slnum)
                          {
                          case 1:
                  set_miao--;
                  if(set_miao<0)
                  set_miao=59;
                  break;
                   case 2:
                  set_fen++;
                  if(set_fen<0)
                 set_fen=59;
                  break;
                   case 3:
                  set_shi--;
                  if(set_shi<0)
                  set_shi=23;
                  break;
                  }
                  }
                  }
                  }
                  }
                  }
         void main()
         {
         start();
         while(1)
         {
         keyscan();
         time();
         if(!flag)
         {
         display(miao,fen,shi);
         }
         else
         {
         display(set_miao,set_fen,set_shi);
         }
         if(miao==set_miao&&fen==set_fen&&shi==set_shi)
           {
             TR1=1;
                 }
                 if(flag_time)
                 {
                   TR1=0;
                   BUZZ=1;
                   flag_time=0;
                   }
                   set_time();
                   }
                   }
         void time_0()interrupt 1
         {
            uchar aa;
                TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
                aa++;
                if(aa==20)
                {
                aa=0;
                miao++;
                if(miao>=60)
                {
                miao=0;
                fen++;
                if(fen>=60)
                {
                  fen=0;
                  shi++;
                  if(shi>=24)
                  {
                  shi=0;
                  }
                  }
                  }
                  }
                  }
   void time_1()interrupt 3
   {
      uchar bz_time;
           TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
           bz_time++;
           if(bz_time==200)
                {
                bz_time=0;
                flag_time=1;
                }
                BUZZ=~BUZZ;
                }  
                          


ID:74868 發表于 2017-2-19 16:18
不錯功能比較多

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区av | 麻豆久久久久久 | 中文字幕在线视频一区二区三区 | 最近中文字幕第一页 | 精品美女久久久久久免费 | 在线观看免费av网 | a级在线 | 欧美日韩中文在线 | 久久高清精品 | 国产成人免费 | 国产亚洲精品精品国产亚洲综合 | 国产精品久久久久久久久久久久 | 亚洲视频免费在线看 | 国产视频久久 | 黑人一级片视频 | 日韩精品专区在线影院重磅 | 日韩精品一区二区三区中文在线 | 秋霞电影一区二区三区 | 天天插日日操 | 毛片在线免费播放 | 欧美日韩在线电影 | 欧美一级免费看 | 99色播 | 亚洲永久字幕 | 欧美中文字幕一区二区三区亚洲 | 91精品久久久久久久久久入口 | 久热久热 | 中文字幕一区二区三区四区 | 亚洲国产一 | 在线免费国产视频 | 国产精品一区二 | 夜夜草 | av网站免费观看 | 日韩在线不卡视频 | 亚洲精品久久久久久下一站 | 久久久久国产一区二区 | 成人欧美一区二区三区黑人孕妇 | 国产激情视频网站 | 曰韩一二三区 | 久久国产欧美日韩精品 | 日韩av在线一区二区 |