精华内容
下载资源
问答
  • 【C51】:基于51单片机的多功能时钟设计 源代码
    千次阅读 多人点赞
    2020-03-20 21:36:31
    /***********************************/
    
    /*  时间2019.12.20,地点:dq218    转载请说明出处  */
    
    /***********************************/
    
    
    #include<reg51.h>
    #define uChar unsigned char
    #define uInt unsigned int
    #define d 60
    #define q 20
    sbit Key1 = P3^0;  //规定四个按键‖第五个按键K5为常开触点,按下后不弹起
    sbit Key2 = P3^1; 
    sbit Key3 = P3^2; 
    sbit Key4 = P3^3; 
    sbit Buzzer=P1^1;
     
    uChar a[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 
    uChar b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 
    uChar second=50,minute=30,hour=21,year=19,month=12,day=10,flag=0,flag1=0,count;
    
    
    /***************延时函数***************/
    
    void Delay(uInt t)
      {
       while(t)
        {
          t--;
        }
      }
    /***************显示时间函数***************/
    	
    void Dispaly1(uChar second,uChar minute,uChar hour)
      {
        P2=b[0];
        P0=a[hour/10];
        Delay(d);
        
        P2=b[1];
        P0=a[hour%10];
        Delay(d);
        
        P2=b[2]; 
        P0=0x40; 
        Delay(d);
        
        P2=b[3]; 
        P0=a[minute/10]; 
        Delay(d);
        
        P2=b[4];
        P0=a[minute%10]; 
        Delay(d);
        
        P2=b[5]; 
        P0=0x40; 
        Delay(d);
        
        P2=b[6]; 
        P0=a[second/10]; 
        Delay(d);
        
        P2=b[7];; 
        P0=a[second%10]; 
        Delay(d);
      }
    /***************显示日期函数***************/
    void Dispaly2(uChar day,uChar month,uChar year)
     { 
       P2=b[0];             //第一位
       P0=a[2];        
       Delay(d);
       
       P2=b[1];             //第二位
       P0=a[0];
       Delay(d);
       
       P2=b[2];              //第三位
       P0=a[year/10]; 
       Delay(d);
       
       P2=b[3];             //第四位
       P0=a[year % 10]; 
       Delay(d);
       
       P2=b[4]; 
       P0=a[month/10];             //第五位
       Delay(d);
       
       P2=b[5]; 
       P0=a[month%10];             //第六位
       Delay(d);
       
       P2=b[6];              //第七位
       P0=a[day/10]; 
       Delay(d);
       
       P2=b[7];             //第八位
       P0=a[day%10]; 
       Delay(d);
     }
    /****************按键函数1****************/
     /***************功能:修改时间**********/
    void Keyscan1()
    {
      static uChar i=0,j=0; 
      if(Key1==0) 
       {
        Delay(q); 
        if(Key1==0) 
        while(!Key1); 
        i++;
       }
      
      if(i%2==1)  //关闭定时器
       {
        TR0=0;
       }
      if(i%2==0)  //打开定时器
       {
        TR0=1;
       }
      
      if(Key2==0) 
       {
        Delay(q); 
        if(Key2==0)
        while(!Key2);
        j++; 
       }
      if(j%3==0&&i%2==1)  //修改时分秒
      {
        if(Key3==0)
         {
          Delay(q); 
          if(Key3==0)
          while(!Key3);
          second++;
          if(second==60)
          second=0;
         }
      }
    	
      if(j%3==1&&i%2==1)         //当k1按下后才能修改时间
       {
        if(Key3==0)
        {
        Delay(q); 
        if(Key3==0)
        while(!Key3);
        minute++;
        if(minute==60)
        minute=0; 
       }
      }
    	 
      if(j%3==2&&i%2==1)
       {
        if(Key3==0)
         { 
           Delay(q); 
           if(Key3==0)
           while(!Key3);
           hour++;
           if(hour==24)
           hour=0; 
         }
       }
    }
    /****************按键函数2****************/
    /****************功能:修改日期***********/
    void Keyscan2()
     {
      static uChar m=0,n=0; 
      if(Key1==0)           //K1按下后才能修改日期或时间
       {
        Delay(d); 
        if(Key1==0)
        while(!Key3);
        m++;
       }
    	 
      if(m%2==1) 
       {
        TR0=0;                //定时器关
       }
      
      if(m%2==0)
       {
        TR0=1;                //定时器开
       }
    	 
      if(Key2==0)       //K2功能:选择修改 “时分秒“ 或者 ”年月日”
       {
         Delay(10); 
         if(Key2==0)
         while(!Key2);
         n++; 
       }
      
      if(n%3==0)             //选择修改天数
       {
      if(Key3==0)       
      {
        Delay(d); 
        if(Key3==0)
        while(!Key3);
        day++;
        if(day==30)
        day=0;
      }
       }
    	 
      if(n%3==1)            //选择修改月份
       {
      if(Key3==0)
        { 
          Delay(10); 
          if(Key3==0)
          while(!Key3);
          month++;
          if(month==12)
          month=0; 
        }
       }
    	 
      if(n%3==2)                 //选择修改年份
       {
       if(Key3==0)
        { 
         Delay(d); 
         if(Key3==0)
         while(!Key3);
         year++;
         if(year==99)
         year=0; 
        }
       }
     }
    
    
    /***************主函数***************/
    
    void main()
    {						
    TMOD=0x01; 	 
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;  /*10ms*/
    EA=1;
    ET0=1;
    TR0=1;
    	
    	
     while(1)
     {
        static uChar h=0;
        
        if(Key4==0)                 //K4功能:12小时/24小时/日期切换
          {
           Delay(10); 
           if(Key4==0)
    		 	  {
               while(!Key4);
               h++;
    			  }
          }
    		if(h%3==0)
          {
           Dispaly1(second,minute,hour);      //显示24小时制
           Keyscan1(); 
          }  
        if(h%3==1)
          {
           Dispaly1(second,minute,hour-12);   //显示12小时制
           Keyscan1(); 
          }  
        if(h%3==2)
          {
           Dispaly2(year,month,day);          //显示日期
           Keyscan2();
          }
         if(Key3==0)
          { 
           Delay(d); 
           if(Key3==0)
           while(!Key3);
    		   flag++;
          }			
        	
    	   if(flag%2==0)  //记录K3按下后flag加一
    		 {
    			 flag1=0;     
    	   }
    	   if(flag%2==1)
    	   {
    	   	flag1=1;		
    	   }
    			
    /***********闹钟设定时间21:31开始响,无人应答30s后关闭*/
    		 
    		if(minute==31&&(second>0&&second<30)&&hour==21&&flag1==0)
    			Buzzer=0;//蜂鸣器响
    		else
    			Buzzer=1;//蜂鸣器关
      }
    }
    
    
    /**************中断函数***************/
    void time0_int(void) interrupt 1
    {
     TH0=(65536-10000)/256;
     TL0=(65536-10000)%256;
     count++;
    if(count==100) //10ms*100=1s
        {
         count=0;
         second++;
        if(second==60)      //秒归零
           {
            second=0;
            minute++;
           if(minute==60)   //分钟归零
             {
              minute=0;
              hour++;
             if(hour==24)   //小时归零
               {
                hour=0;
                day++;
               if(day==30)   //天数归零
                 {
                  day=0;
                  month++;
                 if(month==12)  //月份归零
                   {
                    month=0;
                    year++;
                   if(year==99)  //年份归零
                     {
                      year=0;
                     }
                   }
                 }
               }
             }
           }
        }
    		
    
    
    }
    
    更多相关内容
  • 基于单片机的多功能时钟设计
  • 多功能时钟设计报告.doc
  • 基于单片机的多功能时钟设计.pdf
  • 基于单片机的多功能时钟设计论文.doc
  • 基于51单片机的多功能时钟设计,可实现时钟,闹钟和万年历的切换,现将C源码和proteus原理图奉上。
  • 多功能时钟设计带原理图和程序可以直接用,自己用过很完美
  • 【C51】:基于51单片机的多功能时钟设计

    千次阅读 多人点赞 2019-12-21 17:18:15
    基于51单片机的时钟设计 此文章为某年某月某次单片机作业 首先:再keil上写下代码,用protues调试(不懂得百度搜索“keil与protues联机调试”) 这次没有使用38译码器,直接将数码管引脚全部放在单片机上 不说,...

    #基于51单片机的时钟设计

    此文章为某年某月某次单片机作业,一点拙见

    首先:再keil上写下代码,用protues调试(不懂得百度搜索“keil与protues联机调试”)
    使用的芯片和器件图中自己找
    这次没有使用38译码器,直接将数码管引脚全部放在单片机上
    在这里插入图片描述
    不多说,上部分代码和图:
    全部代码在另一个博文,关注后在本人主页可查看哦!!!
    全部代码在另一个博文,关注后在本人主页可查看哦!!!
    全部代码在另一个博文,关注后在本人主页可查看哦!!!

    /***************主函数***************/
    
    void main()
    {						
    TMOD=0x01; 	 
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;  /*10ms*/
    EA=1;
    ET0=1;
    TR0=1;
    	
    	
     while(1)
     {
        static uChar h=0;
        
        if(Key4==0)                 //K4功能:12小时/24小时/日期切换
          {
           Delay(10); 
           if(Key4==0)
    		 	  {
               while(!Key4);
               h++;
    			  }
          }
    		if(h%3==0)
          {
           Dispaly1(second,minute,hour);      //显示24小时制
           Keyscan1(); 
          }  
        if(h%3==1)
          {
           Dispaly1(second,minute,hour-12);   //显示12小时制
           Keyscan1(); 
          }  
        if(h%3==2)
          {
           Dispaly2(year,month,day);          //显示日期
           Keyscan2();
          }
         if(Key3==0)
          { 
           Delay(d); 
           if(Key3==0)
           while(!Key3);
    		   flag++;
          }			
        	
    	   if(flag%2==0)  //记录K3按下后flag加一
    		 {
    			 flag1=0;     
    	   }
    	   if(flag%2==1)
    	   {
    	   	flag1=1;		
    	   }
    			
    /***********闹钟设定时间21:31开始响,无人应答30s后关闭*/
    		 
    		if(minute==31&&(second>0&&second<30)&&hour==21&&flag1==0)
    			Buzzer=0;//蜂鸣器响
    		else
    			Buzzer=1;//蜂鸣器关
      }
    }
    ————————————————
    版权声明:本文为CSDN博主「傅里叶也头大」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_43625266/article/details/104999242
    

    在这里插入图片描述

    //******************************************************************//

    承接stm32单片机、STC系列单片机设计、嵌入式问题咨询

    联系QQ:2424644692

    //******************************************************************//

    喜欢请点赞哦!

    展开全文
  • 多功能数字时钟设计资料.
  • 本资源包含整个工程的源代码、原理图及proteus仿真 设计摘要:本设计使用11.0592MHZ晶振与单片机AT89C52相连接,以AT89C52芯片为核心,采用...按键设计4个有效按键,分别有时钟调整键、闹钟设置键、上调键、下调键。
  • 基于fpga的多功能时钟设计

    千次阅读 2021-04-23 23:14:36
    设计一个多功能数字时钟,具有以下功能: 1、数字钟功能:可以显示时、分、秒。 2、调时功能:可以校正时间。 3、闹钟功能:能对设置的时间进行蜂鸣器提醒。 4、秒表功能:能对设置的时间进行倒计时。 5、日期设置...

    一、设计内容

    设计一个多功能数字时钟,具有以下功能:
    1、数字钟功能:可以显示时、分、秒。
    2、调时功能:可以校正时间。
    3、闹钟功能:能对设置的时间进行蜂鸣器提醒。
    4、秒表功能:能对设置的时间进行倒计时。
    5、日期设置功能:可以显示年月日并进行设置。

    二、设计方案

    主要功能框图如下:
    在这里插入图片描述

    主要功能模块说明:
    控制模块:实现5个模块的切换(“设置”切换,“显示”切换)
    时分秒模块:用数码管显示时分秒,处于“工作模式”时,秒对应数码管每隔一秒加一,并实现分钟小时的进位。
    时分秒设置模块:用数码管显示待设置的时分秒数值,处于“时分秒设置模式”时,对应控制模块的“设置”按键可以实现对待设置的时分秒数值的设置,并通过时分秒模块的装载键实现对时分秒模块数字的载入。
    年月日模块:用数码管显示年月日,处于“工作模式”时,日对应数码管每隔一天加一,并实现月年的进位。
    年月日设置模块:用数码管显示待设置的年月日数值,处于“年月日设置模式”时,对应控制模块的“设置”按键可以实现对待设置的年月日数值的设置,并通过年月日模块的装载键实现对年月日模块数字的载入。
    闹钟设置模块:用数码管显示待设置闹钟的时分秒数值,处于“闹钟设置模式”时,对应控制模块的“设置”按键可以实现对待设置闹钟的时分秒数值的设置,并通过闹钟模块的开关键实现对闹钟模块的开关设置。
    静态共阳数码管显示模块:用于显示以上5个模块对应的数值。
    独立控制模块:主要有两个按键,一个按键实现秒表的复位,另一个按键实现秒表开启/暂停状态的切换。
    秒表模块:实现0.1秒的秒表计时精度。
    独立数码管显示模块:用于显示秒表的各位和小数点后一位。

    在这里插入图片描述

    展开全文
  • 毕业设计作品_多功能数字时钟设计资料.rar
  • 使用stm32f1内部的rtc完成的一个多功能时钟课设 功能: 1.设计能支持年、月、日、星期、时、分、秒的时钟,时钟有时间调整功能; 2.时钟附带有一个温度计功能 3.时钟附带有测量湿度的功能 4.重要日期提醒 5.整点提醒...
  • 多功能数字时钟设计资料.7z
  • 多功能数字时钟设计资料全套设计及说明材料
  • 多功能时钟设计 毕设

    2012-02-27 17:24:27
    基于单片机设计的一个多功能数字时钟毕业设计毕业设计
  • 以AT89S52单片机为控制核心,通过实时时钟芯片DS1307和数字温度传感器DS18B20构成了一个多功能的数字时钟系统。详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。系统采用液晶LCD1602作为显示器,...
  • 【Proteus】多功能数字时钟设计

    千次阅读 2021-12-27 19:44:40
    数字时钟设计

    课设

    首先是课设的内容
    我们将该电路分为几个部分:

    1:显示电路(用6个共阴数码管来显示)
    2:译码电路(用CD4511来现实译码显示)
    3:进制电路(用CD4518计数器来完成进时功能)
    4:脉冲产生器(555定时器产生1khz的信号)
    5:分频电路(用CD4518进行3次10分频产生1hz信号)
    6:校时电路(用CD4011二输入与非门实现)
    7:整点报时电路(用CD4012和CD4011实现)

    原理框图

    24进制
    60进制
    60进制
    1khz
    1hz
    1hz
    1hz
    译码显示器
    时计数器
    分计数器
    秒计数器
    振荡器
    多级分频器
    报时电路
    校时电路

    原理框图如上.

    一:各芯片引脚介绍:

    1:数码管:1

    引脚图:
    在这里插入图片描述

    课设中为共阴极(CC).

    2:CD4511(译码显示):2

    引脚图:
    在这里插入图片描述

    CD4511引脚功能:
    BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态是怎么样的,七段数码管都会处于消隐也就是不显示的状态。
    LE:锁定控制端,当LE=0时,允许译码输出。 LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
    LT:3脚是测试信号的输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮全部显示。它主要用来检测数7段码管是否有物理损坏。
    A1、A2、A3、A4、为8421BCD码输入端。
    a、b、c、d、e、f、g:为译码输出端,输出为高电平1有效。

    真值表:
    在这里插入图片描述

    3:CD4518(计数器)3

    引脚图:
    在这里插入图片描述

    CD4518是二、十进制(8421编码)同步加计数器,内含两个单元的加计数器。每单个单元有两个时钟输入端CLK和EN,可用时钟脉冲的上升沿或下降沿触发。可知,若用ENABLE信号下降沿触发,触发信号由EN端输入,CLK端置“0”;若用CL℃K信号上升沿触发,触发信号由CL℃K端输入,ENABLE端置“1”。RESET端是清零端,RESET端置“1”时,计数器各端输出端Q1~Q4均为“0”,只有RESET端置“0”时,CD4518才开始计数

    CD4518是一个同步加计数器,在一个封装中含有两个可互换二/十进制计数器,其功能引脚分别为1~7和9~{15}。该CD4518计数器是单路系列脉冲输入(1脚或2脚;9脚或10脚),4路BCD码信号输出(3脚~6脚;{11}脚~{14}脚)

    真值表:
    在这里插入图片描述

    3:555定时器

    引脚图:
    在这里插入图片描述
    内部结构:
    在这里插入图片描述
    在这里插入图片描述

    555定时器可接成多谐振荡器,多谐振荡器也称无稳态触发器,它没有稳定状态,同时毋须外加触发脉冲,就能输出一定频率的矩形脉冲(自激振荡)。用555实现多谐振荡,需要外接电阻R1,R2和电容C,并外接+5V的直流电源。选用合适的参数,使555定时器给数字钟提供一个频率稳定准确的1kHz的方波信号,可保证数字钟的走时准确及稳定。

    4:CD4011和CD4012

    在这里插入图片描述
    在这里插入图片描述
    1个2输入与非门,一个4输入与非门.

    二:各部分电路图搭建

    这里重点说一下校时电路和整点报时电路.
    先上电路图:

    1:校正时间电路

    在这里插入图片描述
    该图中的校时脉冲是555产生的1khz信号经过分频后的1hz信号.当开关没有按下去之前至时个位计数器和至分个位计数器的输出都是由分十位进位脉冲和秒十位进位脉冲控制的.因为没有按下开关前非门都输出1,阻断了校时脉冲的输入.反之当按下开关时非门都输出为1.而对校时脉冲没有影响,但零电位将输入与非门阻断十位的脉冲.这样就能时分,时进1.

    2:整点报时电路

    在这里插入图片描述
    在这里插入图片描述
    该电路当分为59秒为51时以500hz的信号输入蜂鸣器.
    当秒各位Q3为9秒时以1khz输入蜂鸣器.

    3:分频电路

    在这里插入图片描述
    555产生的1khz的信号,经过3次10分频后输出1hz信号.

    4:进制电路

    进制电路是由计数器CD4518来完成.CD4518的输出Q3是10分频.当CD4518来10个下降沿(脉冲)时Q3才会翻转一次.
    在这里插入图片描述
    吧Q3输出到另一个4518的输入.且当该4518的Q2,Q1输出为1时接到一个与门输出一个1,给这俩个4518的清零端.24进制也如此.

    芯片个数
    共阴数码管6
    CD45116
    CD45186
    CD40116
    CD40121
    电阻电容若干

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述


    1. 两个com都要接地,如果是共阳极的话com端都接VCC ↩︎

    2. 3,4引脚在实际接线时应接为低电平 ↩︎

    3. 实际接线为了节省接线,使用CD4518的下降沿,那么芯片的1,9引脚接地 ↩︎

    展开全文
  • 基于FPGA的多功能电子时钟设计.pdf
  • 随着生活节奏的加快,人们时间观念的加强,时钟已经成为人们日常生活中不可或缺的一部分,而如何在时钟的基础上,根据人们生活的需要增加相应的功能以及方便于人们的生活,成为时钟设计方面的重点。单片机以其强大的...
  • 基于MSP430F149单片机的多功能电子时钟设计.pdf
  • 设计使用AT89C51来做主控芯片,其强大的功能足够实现我们设计的所有功能。 使用LCD1602的液晶显示器来进行显示。 使用Keil uVision5进行编程。 通过Proteus8.6来进行仿真。 点击一次K1进入时钟设置页面,通过点击...
  • 该资源基于quartusII开发 压缩包内含全部代码以及论文 eda 课程设计 多功能数字时钟 语言vhdl 功能 1.进行正常的时、分计时功能,二十四小时制计时 2.由数码管显示24h、60min 3.设置时间 4.整点报时 5.闹钟功能
  • 多功能数字时钟毕业设计
  • 设计一个00时00分00秒~23时59分59秒的计时器,使之能完成以下几个功能: (1)能进行正常的时、分、秒计时功能; (2)分别由六个数码管显示时、分、秒的计时; (3)系统有时钟保持功能; (4)系统有时钟清零功能...
  • 多功能数字时钟设计资料.zip电子电路图PCB单片机设计案例资料多功能数字时钟设计资料.zip电子电路图PCB单片机设计案例资料多功能数字时钟设计资料.zip电子电路图PCB单片机设计案例资料多功能数字时钟设计资料.zip...
  • 单片机毕业设计——多功能数字时钟设计资料.zip
  • 单片机毕业设计——多功能数字时钟设计论文资料.zip
  • 同时用液晶显示数字时钟,并具有时钟、校准、闹钟多种功能设计要求: 精确检测到温度:使用DS18B20温度传感器检测温度,其精度较高,数据精确到0.01℃,测温范围为-55℃~125℃。 用数码管实时显示检测到的温度...
  • 多功能数字时钟课程设计报告,设计目的: 熟悉数字逻辑设计的基本概念和原理。 掌握计数器、定时器等逻辑芯片的工作原理及应用设计。 熟悉数字逻辑集成芯片的外围电路设计与使用。 设计任务及要求: 设计一个数字电子...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,372
精华内容 36,948
关键字:

多功能时钟设计