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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2016|回復: 1
收起左側

基于51單片機鬧鈴程序

[復制鏈接]
ID:474195 發表于 2019-6-4 23:37 | 顯示全部樓層 |閱讀模式
#include "reg52.h"
#include"intrins.h"
typedef unsigned int u16;  
typedef unsigned char u8;
char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u16 i,n,k,miao,fen,hour,feng,fens,hourg,hours,feng1,fens1,hourg1,hours1;
sbit flag=P1^0;
sbit flag1=P1^1;
sbit s1=P1^7;
sbit s11=P1^3;
sbit s2=P1^6;
sbit led=P2^0;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit led6=P0^6;
sbit led7=P0^7;
sbit beep=P1^5;
void delay70ms(void)  //??????70ms
{
    unsigned char a,b;
    for(b=158;b>0;b--)
        for(a=220;a>0;a--);
    _nop_();  
}
void delay(u16 u)
{
    u--;  
}
void turntime()  //??????亯??
{
if(k2==0)    //С???λ
{  
  delay70ms();
   if(k2 == 0)
   { miao = 0;
    hours++;
    hours = hours%3;
delay70ms();
   }
   while(!k2);
}
   if(k1 == 0)   //С??λ
{  
   delay70ms();
   if(k1 == 0)
   { miao = 0;
    hourg++;
    hourg = hourg%10;
delay70ms();
   }
   while(!k1);
}
    if(k3 == 0)     //?????λ
{  
   delay70ms();
   if(k3 == 0)
   { miao = 0;
    fens++;
    fens=fens%6;
delay70ms();
   }
   while(!k3);
}
    if(k4 == 0)      //?????λ
{  
   delay70ms();
   if(k4 == 0)
   { miao = 0;
    feng++;
    feng = feng%10;
    delay70ms();
   }
   while(!k4);
}
}
void turnclock()  //???????????
{
if(k2==0)    //С???λ
{  
  delay70ms();
   if(k2 == 0)
   { miao = 0;
    hours1++;
    hours1 = hours1%3;
delay70ms();
   }
   while(!k2);
}
   if(k1 == 0)   //С??λ
{  
   delay70ms();
   if(k1 == 0)
   { miao = 0;
    hourg1++;
    hourg1 = hourg1%10;
delay70ms();
   }
   while(!k1);
}
    if(k3 == 0)     //?????λ
{  
   delay70ms();
   if(k3 == 0)
   { miao = 0;
    fens1++;
    fens1=fens1%6;
delay70ms();
   }
   while(!k3);
}
    if(k4 == 0)      //?????λ
{  
   delay70ms();
   if(k4 == 0)
   { miao = 0;
    feng1++;
    feng1 = feng1%10;
    delay70ms();
   }
   while(!k4);
}
}
void InitTimer0(void)
{
    TMOD = 0x01;
    TH0 = (65535-10000)/256;
    TL0 = (65535-10000)%256;  //10ms
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}  
void Timer0Interrupt(void) interrupt 1
{
    TH0 = (65535-10000)/256;
    TL0 = (65535-10000)%256;
    i++;k++;
   if(k == 50)       //????
   {led =~led; k = 0;}
      if(i == 100)
   {i = 0; miao++;}
   if(miao == 60)   //????
   {miao = 0;feng++;}
   if(feng == 10)
   {feng=0;fens++;}
   if(fens == 6)    //С?
   {fens=0;hourg++;}
   if(hourg == 10)
   {hourg=0;hours++;}
   if(hours == 2&&hourg == 4) //????
   {hours=0;hourg=0;}
}
void select()   //?????
{
if(s1==0)
{
     delay70ms();
  if(s1==0)
  {
  flag=~flag;
  delay70ms();
  }
  while(!s1);
}
}
void openclock()   //??????????
{
  if(s2==0)
{
     delay70ms();
  if(s2==0)
  {
  flag1=~flag1;
  delay70ms();
  }
  while(!s2);
}
}
void DigDisplay()       //???????????????
{
  LSA=0;LSB=0;LSC=0;P0=smgduan[feng];delay(100);P0=0x00;
  LSA=1;LSB=0;LSC=0;P0=smgduan[fens];delay(100);P0=0x00;
  if(led==1)  
  {LSA=0;LSB=1;LSC=0;led6=1;delay(100);P0=0x00;
  LSA=1;LSB=1;LSC=0;led6=1;delay(100);P0=0x00;}
  LSA=0;LSB=0;LSC=1;P0=smgduan[hourg];delay(100);P0=0x00;
  LSA=1;LSB=0;LSC=1;P0=smgduan[hours];delay(100);P0=0x00;
  if(flag1==0)
  {LSA=1;LSB=1;LSC=1;led7=smgduan[flag1];delay(100);P0=0x00;}
   
}
void DigDisplay1()       //????????????????
{
  LSA=0;LSB=0;LSC=0;P0=smgduan[feng1];delay(100);P0=0x00;
  LSA=1;LSB=0;LSC=0;P0=smgduan[fens1];delay(100);P0=0x00;
  LSA=0;LSB=0;LSC=1;P0=smgduan[hourg1];delay(100);P0=0x00;
  LSA=1;LSB=0;LSC=1;P0=smgduan[hours1];delay(100);P0=0x00;
  LSA=1;LSB=1;LSC=1;s1=smgduan[flag1];delay(100);P0=0x00;
   
}
void alarmclock()  //???????ú???
{   
  turnclock();
  DigDisplay1();
  }

void clocking()      //??????к???
{
     openclock();
  if((feng1==feng)&&(fens1==fens)&&(flag1==0))
  {
  if((hourg1==hourg)&&(hours1==hours))
  {
   while(!flag1)
   {  
      openclock();
      beep=~beep;
      delay(10);
   DigDisplay();
  }
  }
}
}

void main(void)
{
    s11=0;
    InitTimer0();
while(1)
{
select();
clocking();
if(flag==1)
{DigDisplay();turntime();}
if(flag==0)
{DigDisplay1();alarmclock();}
}
}
  
正常模式下  k1 k2 k3 k4  分別為 小時十位 個位    分鐘 十位  個位調整函數



回復

使用道具 舉報

ID:1 發表于 2019-6-5 06:39 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看av网站 | 日韩在线视频观看 | 国产区在线看 | 国产激情在线 | 九九热精 | 久久国产欧美日韩精品 | 伊人导航 | 一级在线毛片 | 成人免费看黄网站在线观看 | 欧美一级欧美三级在线观看 | 国产91综合一区在线观看 | 午夜精品久久久 | 成人国产毛片 | 国产精品国产三级国产aⅴ中文 | 久久精品国产免费 | 婷婷色综合 | 91色视频在线观看 | 日韩高清电影 | 91视频进入 | 亚洲视频a| 亚洲综合在线播放 | 欧美老少妇一级特黄一片 | 亚洲精品久久久一区二区三区 | 久久国产精品久久国产精品 | 国产一区二区三区在线看 | 狠狠做深爱婷婷综合一区 | 综合网伊人 | 一本在线| 成人精品一区二区三区 | 四虎在线视频 | 天天操天天怕 | 日韩美女在线看免费观看 | 天天看夜夜| 国产成人免费视频 | 美国av片在线观看 | 久久精品99国产精品 | 国产精品毛片一区二区在线看 | 亚洲福利视频一区二区 | 韩国av电影网 | 亚洲精品国产成人 | 一区二区三区在线免费观看 |