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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2274|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

定時鬧鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:204636 發(fā)表于 2017-5-25 10:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar code segtbl[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
                     // 0  1    2   3   4    5    6   7   8   9    -        c   
uchar data dis_b; //位段碼
uchar data dis_r; //位偏移量
uchar data dis[8];      //定義8個連續(xù)的存儲器

uchar data c_min;
uchar data c_hou;
uchar data second;
uchar data minite;
uchar data hour;
uchar data CNTA;
uchar data speaker_num;   //蜂鳴次數(shù)
bit beep;          //整點報時標志
bit run;         //運行標志
bit flash;         //滅燈標志
bit clarm_switch;     //鬧鐘開關(guān)標志
bit baoshi;     //報時開關(guān)標志
sbit  speaker=P1^3;
sbit minitek=P1^1;
sbit hourk=P1^0;
sbit enter=P1^4;
sbit led1=P1^6;      //  按鍵標識
sbit led2=P1^7;      // 運行標志
uint n,k;

void delay_10us(uchar n)    //10微秒級延時
{ do
  { _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
  }while(--n);
}
void delay_ms(uint n)     //毫秒級延時
{ do delay_10us(131);
  while(--n);
}
clk_to_dis()
{
    dis[0]=minite%10;
dis[1]=minite/10;
     if(flash)dis[2]=10;
        else dis[2]=11;
dis[3]=hour%10;
dis[4]=hour/10;
dis[5]=10;
dis[6]=11;
}
clarm_to_dis()
{
    dis[0]=c_min%10;
dis[1]=c_min/10;
if(flash)dis[2]=10;//亮燈
        else dis[2]=11;    //滅燈
dis[3]=c_hou%10;
dis[4]=c_hou/10;
dis[5]=10;
dis[6]=8;
}
void main()
{
P2=0xff;
P1=0XFF;
P0=0xff;
run=1;
led1=0;
flash=0x00;
dis[2]=10;      //第三位顯示“-”
dis_r=0;        //為偏移量初始為“0”
dis_b=0x80; //選通P2.7
second=0x00;
minite=0x00;
hour=0x00;
CNTA=0x00;
TMOD=0x11;
TH0=19500/256;
TL0=19500%256;
TH1=0xfc;
TL1=0x18;
EA=1;    //開中斷;
TR0=1;
TR1=1;
ET1=1;
EX0=1;
EX1=1;
ET0=1;

while(1)
  {

   while(run==1)
   {
  while(!minitek)
  {
  for(n=0;n<1000;n++);
  if(!minitek==0)break;    //延時防抖
  minite++;
  second=0x00;
  led1=0;
      for(n=0;n<20;n++)
        {
         speaker=!speaker;
           delay_10us(50);             //蜂鳴器響
         }

  if(minite==60)minite=0x00;
  while(!minitek);  //等待鍵松開
   led1=1;    //顯示燈   
  }

      while(!hourk)
  {
  for(n=0;n<1000;n++);
  if(!hourk==0)break;
  hour++;
  second=0x00;
  led1=0;
   for(n=0;n<30;n++)
   {
   speaker=!speaker;
   delay_10us(30);             //蜂鳴器響
   }

  if(hour==24) hour=0x00;
  while(!hourk);
  led1=1;
  }

  if(clarm_switch)
  {
  if(c_min==minite&&c_hou==hour)

   {speaker_num=60;
   beep=1;
   while(beep&& clarm_switch)
   {
   led1=!led1;
   delay_ms(100);
   }
   led1=1;
   beep=0;
   }
         }

  while(run==0)
  {
     while(!minitek)
{
for(n=0;n<1000;n++);
if(!minitek==0)break;    //延時防抖
c_min++;
led1=0;
for(n=0;n<25;n++)
{
speaker=!speaker;
delay_10us(40);             //蜂鳴器響
}
if(c_min==60)c_min=0x00;
while(!minitek);        //等待鍵松開
led1=1;
}

  while(!hourk)
{for(n=0;n<1000;n++);
if(!hourk==0)break;
c_hou++;
led1=0;
for(n=0;n<40;n++)
{
speaker=!speaker;
delay_10us(20);             //蜂鳴器響
}
if(c_hou==24) c_hou=0x00;
while(!hourk);
led1=1;
}



}
    }
}

}
timer0() interrupt 1 using 2//定時器0中斷號為1號 使用第2組寄存器
{
TH0=19534/256;
TL0=19534%256;
CNTA++;
if(beep)
{
if(speaker_num%2)speaker=!speaker;
if(!speaker_num) beep=0;

}
if(CNTA==20)
{       if(speaker_num)speaker_num--;
flash=!flash;
CNTA=0;
         second++;//秒加
   if(second==60)
   {second=0;
    minite++;
  if(minite==60)
  {
  minite=0;
  hour++;
  if(hour>7){speaker_num=2*hour;    //整點到 蜂鳴標志  置1
     beep=1;}
   if(hour==24)

   {
   hour=0;
   }
  }
    }
}

}
timer1() interrupt 3 using 3
  {

uchar ttt=0;                   //ttt存儲段碼
if(run==0) clarm_to_dis();
else clk_to_dis();
ttt = segtbl[dis[dis_r]];        //段碼賦值

P2= dis_b;                       //位碼送P2
P0=ttt;                          //段碼送P0

if(++dis_r==8)dis_r=0x00;
dis_b=_cror_(dis_b,1);          //位碼右移
TH1=0xfc;
        TL1=0x18;

  }

int_0() interrupt 0    //鬧鐘開關(guān)
{
clarm_switch=!clarm_switch;
if(clarm_switch)dis[7]=12;   //開啟顯示   C
else dis[7]=11;      //關(guān)閉 不顯示   
  for(k=0;k<40;k++)
{speaker=!speaker;
led1=!led1;
delay_ms(5);
}
led1=1;
}

int_1() interrupt 2     //鬧鐘時間設(shè)置/運行 轉(zhuǎn)換開關(guān)
{
run=!run;
if(run)led2=0;
else led2=1;
for(k=0;k<90;k++)      // 蜂鳴器響
{speaker=!speaker;      //指示燈閃爍
led1=!led1;
delay_10us(100);
}
led1=1;
}

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产第一亚洲 | 国产精品夜间视频香蕉 | 久久久久国产精品 | 国产精品亚洲二区 | 亚洲日本成人 | 99久久久久 | 一区二区三区四区五区在线视频 | 亚洲视频免费在线看 | 久久久影院| 色网站视频 | 成人精品一区亚洲午夜久久久 | 久久精品国产一区二区电影 | 免费激情| 久久久久国产一区二区三区 | 一区二区三区欧美 | 亚洲男女激情 | 国产精品日韩一区二区 | 日韩视频精品在线 | 国产亚洲精品久久久久动 | 欧美日韩一区二区三区四区 | 欧美日韩一区二区三区四区 | 日日爱视频 | 欧洲精品久久久久毛片完整版 | 成人不卡 | 国产精品久久久久久久久免费桃花 | 成人激情免费视频 | 可以看黄的视频 | 国产极品粉嫩美女呻吟在线看人 | 精品国产一区二区国模嫣然 | 夜夜夜夜草 | 成人网在线观看 | 日韩av一区二区在线观看 | 成人在线视频免费观看 | 久久夜色精品国产 | 视频一区在线观看 | 成人免费区一区二区三区 | 91高清视频 | 夜夜av| 激情黄色在线观看 | 精品在线播放 | 国产成人精品一区二区三区在线 |