基于51的数码管电子时钟(显示时、分、秒)——定时器

视频效果:

基于51单片机的数码管时钟设计

Proteus 仿真电路图:

在这里插入图片描述

C51代码:

#include<reg51.h>

typedef unsigned char uchar;
typedef unsigned int uint;

uchar code num[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};  // 0~9字码

uchar miao=0, fen=0, shi=0;  //进位标志位

uint i=0;  //计时

uchar miao_L, miao_H, fen_L, fen_H, shi_L, shi_H;  //时、分、秒的个位(xxx_L)和十位(xxx_H)  

void delay(uint x){  //延时函数 
	while(x--);
}

void T0_init(){                     //定时器 0 初始化 
	TMOD = 0x01; //工作方式 1
	TH0 = 0x3c;  //高八位赋初值    65536-50000=15536 = 3cb0H
	TL0 = 0xb0;	 //底八位赋初值
	EA = 1;	     //开总中断
	ET0 = 1;     //开 T0 中断
	TR0 = 1;     //启动 T0
}

void display(){  //显示
	
	P2 = 0x20;  //秒与分间隔线
	P0 = 0xbf;	
	delay(500);
		
	P2 = 0x04;  //分与时间隔线
	P0 = 0xbf;
	delay(500);


	P2 = 0x80;  //数码管位选 1000 0000
	P0 = num[miao_L];  //秒个位
	delay(500);

	P2 = 0x40;	//数码管位选 0100 0000
	P0 = num[miao_H];  //秒十位
	delay(500);

	P2 = 0x10;	//数码管位选 0001 0000
	P0 = num[fen_L];  //分个位
	delay(500);

	P2 = 0x08;	//数码管位选 0000 1000
	P0 = num[fen_H];  //分十位
	delay(500);

	P2 = 0x02;	//数码管位选 0000 0010
	P0 = num[shi_L];  //分个位
	delay(500);
	
	P2 = 0x01;	//数码管位选 0000 0001
	P0 = num[shi_H];  //分十位
	delay(500);

}

void main(){

	T0_init();  //定时器初始化

	while(1){

		display();  //显示		
   }

}

void timer0_int() interrupt 1{  //中断服务函数
 	 
	 i++;

	 if(i == 20){
	 	i = 0;  //满一秒清零
	 	miao++;	//i = 100 为一,秒标志位加 1

		if(miao == 60){
			miao = 0;  //满一分清零
			fen++;

			if(fen == 60){
				fen = 0;  //满一时清零
				shi++;

				if(shi == 24){
					shi = 0;  //24小时制
					fen = 0;
					miao = 0;
				}
			}
		}

		miao_L = miao%10;  //秒个位
		miao_H = miao/10;  //秒十位

		fen_L = fen%10;  //分个位
		fen_H = fen/10;  //分十位

		shi_L = shi%10;  //时个位
		shi_H = shi/10;  //时十位

	 }
 }

按键实现日期可调的转这篇

基于51单片机的数码管时钟设计——按键修改时间

  • 179
    点赞
  • 1375
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论
### 回答1: 基于51单片机电子时钟是一种数字钟,它使用51单片机作为控制器,通过数码管显示间。它可以实现间的显示、闹钟功能、定功能等。它的优点是精度高、稳定性好、易于制作和维护。同,它也是一种很好的电子制作项目,可以帮助人们提高电子制作技能。 ### 回答2: 基于51单片机电子时钟是一个常见的电子制作项目,主要利用51单片机作为控制器,通过连接数码管显示模块完成刻的显示。我们可以将电子时钟为硬件和软件两个部来进行讨论。 硬件部主要包括电路连接和硬件设计。首先,我们需要选用51单片机作为主控芯片,由于51单片机的应用广泛,其价格低廉且易于操作,因此成为了电子时钟设计首选芯片。其次,我们需要选用数码管模块完成刻的显示,通常数码管有共阳和共阴两种类型,我们需要根据选用的数码管类型选择相应的接线。同电子时钟还需要钟发生器模块,以便产生固定的钟信号。最后,我们需要加入电源模块,以保证电子时钟的正常工作。 软件部主要包括程序设计和调试。首先,我们需要对51单片机的程序进行编写,主要实现钟信号的接收和处理,并将结果显示数码管上。其次,根据不同的设计需求,我们可以考虑加入闹钟、温度显示等功能。最后,我们需要对电子时钟进行调试,确保其正常工作。 总体而言,基于51单片机电子时钟设计不仅可以帮助我们了解电子制作的基本原理,同还可以提高我们的编程能力和电路调试能力。除此之外,随着科技的发展,电子时钟还可以发扬其创意性,加入更多的功能,使其更加实用和有趣。 ### 回答3: 基于51单片机电子时钟是一种常见的电子制品,同也是学习单片机编程的好项目之一。电子时钟通过使用51单片机作为核心控制器,驱动数码管显示间和日期信息。以下是基于51单片机电子时钟的制作过程和工作原理的详细介绍。 1.硬件设备 (1)单片机芯片:51单片机系列中的AT89C51或AT89S51芯片 (2)钟电路:蜂鸣器 (3)显示模块:4位共阳数码管 (4)钟模块:DS1302实钟模块 (5)电源:9V电池或直流电源 2.电路原理 电子时钟的电路原理非常简单,由单片机、实钟模块、数码管和蜂鸣器组成。单片机通过钟信号源和编程逻辑,从实钟模块获取间和日期信息,之后将其显示数码管上。蜂鸣器用于发出警报声,提醒用户设定的闹钟间已到达。 3.电路连接 首先,将DS1302实钟模块连接到单片机上。SCLK、RST和DAT引脚连接到单片机的P2.2、P2.3和P2.4引脚上。接下来,将4个共阳数码管连接到单片机上。将位置1的数码管连接到P0.1~P0.7引脚,位置2的数码管连接到P0.8~P0.14引脚,位置3的数码管连接到P1.5~P1.1引脚,位置4的数码管连接到P1.0~P1.7引脚。最后,将蜂鸣器连接到单片机的P3.5引脚上。 4.编程实现 使用Keil C编译器和51单片机对程序进行编译。程序的主要功能是获取实钟模块的间和日期信息,并将其显示数码管上,同发出警报声。 5.总结 基于51单片机电子时钟是一种简单易用的电子制品,它能够通过使用单片机来实现间和日期的显示,具有较高的准确性和稳定性。此外,它还有其他功能,如定闹钟、警报提醒等,能够满足用户的多种需求。对于想要学习单片机编程的人来说,基于51单片机电子时钟是一个不错的入门项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guan_qiqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值