找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3524|回复: 0
打印 上一主题 下一主题
收起左侧

STC89C52RC单片机、两片74HC595控制的七段4位数码管和有源蜂鸣器做的闹钟

[复制链接]
跳转到指定楼层
楼主
通过按钮可以调整正常时间和闹钟时间

下面是部分代码


// SCK接P32 DIO接 P33   RCK接P34  上电后数码管会显示时钟
#include <AT89X51.H>
#define DISP_WEI P2      
typedef unsigned char U8;
typedef unsigned int  U16;


sbit         KEY1 =P2^4;
sbit         KEY2 =P2^5;
sbit         KEY3 =P2^6;
sbit         KEY4 =P2^7;


U16 tcount;
U8 m;
U8 TIME_HOU_C,TIME_MIN_C,TIME_SEC_C;
U8 TIMER_TEMP,DISP_NUM;
static U8 second,minute,hour;
bit CLOCK_BUFF,CLOCK_FLAG;
bit ADJUST_TIME_FLAG,ADJUST_CLOCK_FLAG;        

int bing ;

sbit BEEP = P1^5;

//int mode;//闹钟模式,时间模式 0闹钟   1 时间模式   //2正常模式
U8 code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};  //位选
U8  disbuf[8]={0,0,0,0,0,0,0,0};
U8 ADJUST_TIME[8]={0,0,0,0,0,0,0,0};

U8 code fseg[]={
0xc0,   //0
0xf9,   //1
0xa4,   //2
0xb0,   //3
0x99,   //4
0x92,   //5
0x82,   //6
0xf8,   //7
0x80,   //8
0x90,   //9
0x88,   //10        A
0x83,   //11        B  
0xc6,   //12        C
0xa1,   //13        D
0x86,   //14        E
0x8e,   //15        F
0x8b,   //16        h
0x89,   //17        H
0xa3,   //18        o
0xc1,   //19        u
0xaa,   //20        M
0xcf,   //21        I
0xc8,   //22        N
0xbf ,   //23        -
0xff   , // 24   灭
0x00    // 25   全亮
};


void Buzzer();
void CLOCK_CALC();
void display();
void init();
void IN_KEY();

void hour_time();
void min();
void sec();
void hour_c();
void min_c();
void sec_c();
void sdata_c();
void DISP_ADJUST_TIME();

//数据传输//
void sdata(void)
{
unsigned char b,c,num;

         if(b==0)
        {        
          b++;
        num=segbit[m];
          for(c=0;c<8;c++)
                  {
                  P3_2=0;
                   P3_3=num&0x80;
                   num<<=1;
                   P3_2=1;
           }
        
        }

        if(b==1)

        {  
            b--;
          if((m==2||m==5))
          {num=0xbf;}
          else
           {
             num=fseg[disbuf[m]];
                 }
                  for(c=0;c<8;c++)
                   {  P3_2=0;
                         P3_3=num&0x80;
                         num<<=1;
                         P3_2=1;
                   }
        
        }
             m++;
             if(m==8)
                 {m=0;
                     }
}
//数据传输//

void sdata_c(void)
{
unsigned char b,c,num;

         if(b==0)
        {        
          b++;
        num=segbit[m];
          for(c=0;c<8;c++)
                  {
                  P3_2=0;
                   P3_3=num&0x80;
                   num<<=1;
                   P3_2=1;
           }
        
        }

        if(b==1)

        {  
            b--;
                    num = fseg[ADJUST_TIME[m]];
                  for(c=0;c<8;c++)
                   {  P3_2=0;
                         P3_3=num&0x80;
                         num<<=1;
                         P3_2=1;
                   }
        
        }
             m++;
             if(m==8)
                 {m=0;
                     }
}


//延时0.1ms个单位//

void delay (unsigned char h)
  {        while(h--);
  }
  //延时0.1ms个单位//


//数据输出//
void out(void)
{
  P3_4=0;
  delay(50);
  P3_4=1;
}
//数据输出//


  void bcon(void)
   {
        disbuf[0]=second%10;
        disbuf[1]=second/10;
        
        disbuf[3]=minute%10;
        disbuf[4]=minute/10;
               
        disbuf[6]=hour%10;
        disbuf[7]=hour/10;
               

   }

void DISP_ADJUST_TIME(){
sdata_c();
out();
}
   void display(){
   bcon();
   sdata();
   out();
   }




  //主函数//



void main(void)
{        
init();

  while(1)
  {
   display();       //显示时间
   IN_KEY();         //按键
   Buzzer();       //闹钟
  }
  while(1);

}
//主函数//



全部资料51hei下载地址:
时钟-闹钟代码.rar (109.94 KB, 下载次数: 89)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表