利用51单片机制作的电子时钟

最近研究起来了单片机,用的是国产STC98C52芯片。

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

买了很长时间了可是一直在那里放着,今天重新拿出来写了一段电子时钟的C++程序,利用充电宝供电,当作电子时钟挺不错的。

功能:

4个七段数码管作为时钟显示的主体两个显示小时,两个显示分钟,8个LED灯作为秒数的闪烁,4个独立按键分别为hour+1,hour+10,minute+1,minute+10。

     查询LED电路,接入端为P1^0到P1^7。

                                      数码管采用了驱动芯片,接入端为P2^0到P2^3。

                                                           
                 按键的接入端如图所示。

有了各种电路的接入端,我们利用keil进行编程。

/*
* Copyright (c) 2015,烟台大学计算机学院
* All right reserved.
* 作者:邵帅
* 文件:temp.c
* 完成时间:2015年05月29日
*/
#include <reg52.h>
#define uchar unsigned char
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit key1=P3^5;//按键
sbit key2=P3^4;
sbit key3=P3^3;
sbit key4=P3^2;
static unsigned char second,minute,hour;
unsigned int tcount;
unsigned char m;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
                        0xf8,0x80,0x90};

void delay(uchar i)
{
  uchar j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

void display()
{

   P0=table[hour/10];
   P2_0 = 0;
   delay(5);
   P2_0 = 1;

   P0=(table[hour%10]& 0x7f);
   P2_1 = 0;
   delay(5);
   P2_1 = 1;

   P0=table[minute/10];
   P2_2 = 0;
   delay(5);
   P2_2 = 1;

   P0=table[minute%10];
   P2_3 = 0;
   delay(5);
   P2_3 = 1;

}

void main(void)
{
    unsigned int  a;
	TMOD=0x02;
    TH0=0x06;
    TL0=0x06;
    TR0=1;
    ET0=1;
    EA=1;

 while(1)
 {
   	if(key1==0)
		{
			if(key1==0)	  //确认按键被按下
			{
				while(!key1);//松手检测
			     hour++;
			}

		}
		if(key2==0)
		{
			if(key2==0)
			{
				while(!key2);
			    hour=hour+10;
			}
		}
		if(key3==0)
		{
			if(key3==0)
			{
				while(!key3);
				minute++;
			}
		}
		if(key4==0)
		{
			if(key4==0)
			{
				while(!key4);
				minute=minute+10;
			}
		}
   for(a=100;a>0;a--)
   {
     display();
   }

 }
}

 void t0(void) interrupt 1 using 0
  {
  tcount++;
    if(tcount==4000)
	  {tcount=0;
	    second++;
		 if(second==60)
		  {second=0;
		   minute++;
		    if(minute==60)
			 {minute=0;
			  hour++;

			  if(hour==24)
			   {hour=0;
			   }
			 }
		  }
		P1=~P1;
	  }
	}

打包成hex文件,进行烧录。

运行单片机!

本来计划使用小米的盒子当外壳的,后来发现盒子有点小,就先裸机了,反正5V电不着~

@ Mayuko

时间: 2024-10-10 22:17:33

利用51单片机制作的电子时钟的相关文章

利用51单片机做出一些炫彩效果

今天我们来讨论一下我们如何利用单片机做出一些炫彩的效果,而昨天好像是七夕节,很多人都把它当做了情人节,那么我们来做一个浪漫的"I  Love u":今天我就把代码写出来,而不再是截图挂出来.效果图我也就拍出来了,你们如果有单片机可以自己复制代码下来看一些效果.(其实这一次的代码有一点跨度大了,毕竟前面我并没有说的很深入,现在一下子又变得看不懂了,不过慢慢来,我会在以后的博客中把后边的讨论写详细一点)代码如下,注释我来写了一部分,但是不全,我会慢慢把它补齐. 效果大致如我以下描述:首先,

电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键

这次课程设计要完成的是制作一个基于51单片机的电子时钟的万年历(protues仿真),需要用到1602液晶屏+DS1302+DS18B20+按键等模块.各个的模块就不在一一介绍,直接讲解这个系统的功能,首先是四个按键,第一个按键是选中需要修改时间位置,在按一次选中下一个,依次类推,第二个按键是对数值进行加一,第三个按键对数值进行减一,第四个按键确认. 先放仿真图 然后是代码: main.c #include <REG52.H> #include <intrins.h> #defin

单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》

引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准.具有走时精确,功耗低,显示直观,调整简单方便等优点. 功能描述 基本显示: 第一行为日期,依次为:年-月-日-星期 第二行为时间,依次为:时:分:秒 说明: 每月的天数,闰年的天数可自动调整 蓝牙校准日期: 命令d+年月日星期+#,如设置2016年12月8日星期四,手机发送命令:d16120804

基于单片机的电子时钟(有报时和定时)

我相信电工类的专业,对于单片机这个老东西是很熟悉的.下面.是我YID的一个电子时钟,包含了一个时钟的基本功能,定时和报时.(如果没有C51和单片机的基础知识可以先看看)话不多说.这来上来了: 要资料点击这里:下载地址1:下载地址2: 资料清单: (1)原件: (2) 控制流程图: (3)电路图(由于电路截图比较大,这里就不贴出来了.需要的朋友可以点击上面的下载地址下载) (4)最关键的地方来了,(电子时钟的c代码实现): #include<reg51.h> //头文件  定义单片机内部寄存器

51单片机电子密码锁设计

51单片机电子密码锁设计

实例源码2---基于51单片机的摇摇棒制作

最近整理资料,看见这个之前做的摇摇棒,是基于51单片机的,下面把源程序贴出来,有任何问题欢迎留言! #include #define uchar unsigned char #define uint unsigned int sbit key = P3^0;//定义切换画面开关 uchar Key_num;//定义按键次数 uchar Int0_num=0;//定义中断次数 uchar Direction;//定义摇动方向(从左到右) uchar code Embed[]={ 0x40,0x00

基于51单片机的万年历(算法实现)

基于51单片机的万年历,用到了单片机独立键盘.数码管.LED灯模块实现. 想要简单还是DS1302好用. 1 /************************************************** 2 3 作者:纟彖氵戋 博客:http://www.cnblogs.com/yllinux/ 4 5 时间:2017年6月7日 6 7 目标:利用单片机独立键盘.数码管.LED灯模块实现万年历(算法实现) 8 9 ************************************

一款纯JavaScript的圆形电子时钟

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>一款纯JavaScript的圆形电子时钟丨

单片机(simple chip microcomputer)概论、51单片机、MCS-51单片机、STM32、ARM

catalogue 1. 单片机概论 2. 51单片机 3. MCS-51单片机 4. QX-MINI51开发板(STC89C52芯片) 5. STM32单片机 6. stm32f103zet6开发板实验 1. 单片机概论 0x1: 仿真器 单片机应用系统的软硬件调试需要专门的开发工具,称为"单片机开发系统"或"仿真机".常用的开发方式是把开发系统(例如PC)中的CPU和RAM暂时出借给用户系统,利用开发系统对用户系统的软硬件进行调试(又称仿真),然后将调试好的程序