基于51单片机的数字电子时钟

基于51单片机的数字电子时钟

单片机课程设计要求使用51单片机完成一个电子时钟,要求满足基本功能的同时增添丰富的功能参考了很多大佬的方案代码才勉强完成,工程文件下载点击此链接欢迎交流。如遇下载问题可以留言通讯邮箱,联系作者发送压缩文件。
链接:https://pan.baidu.com/s/1knwCMcBalNPlbAU6IScuoQ
提取码:7a9i
该时钟完成的功能:数码管动态显示;蜂鸣器闹钟;蜂鸣器音乐;按键控制
文档包括:Proteus仿真、Keil5开发的C语言代码、AD16绘制的PCB工程
参考链接:
基于单片机的电子时钟设计(keil+protues仿真,含代码及原理图)
51单片机蜂鸣器播放小星星两只老虎欢乐颂 源程序

硬件方案

主控是STC89C51单片机、七段显示数码管作为显示电路、L7805作为电源、7个按键构成输入、5V无源蜂鸣器输出音乐

功能按键

K1:切换显示内容 时间 日期 闹钟 无(待拓展 可以接个DHT11 再显示温湿度)
K2:切换设置位
K3:音乐播放 按下后直接播放选择的音乐 只能在开启闹钟的情况下才能播放
K4:音乐切换按键 一共4首音乐 欢乐颂 两只老虎 小星星 生日快乐
K5:减1
K6:加1
K7:闹钟开关 闹钟显示F为关 T为开 播放音乐时长按可以退出播放 此时闹钟自动关闭

仿真图

使用Proteus做代码和功能的仿真
protuse仿真图

PCB板

使用Altium Designer16绘制PCB板,对技术要求不高,走线电流能满足要求就可以。封装库可以去立创商城中找对应元器件下载文件
Altium Designer 16绘制的PCB文件

C语言代码

使用keil编译的代码 但是上传后直接显示注释乱码了,所以就贴一个主函数的

/***************************************************
主函数
***************************************************/
void main()
{
	Timer0_Init();
	Timer1_Init();
	display_flag = 0;
	change_flag = 0;
	music_flag = 0;
	music_play_flag = 0;
	alarm_clock_flag = 0;
while(1)
{
	Key_scan();
	Key_play_judge();
	switch (display_flag)
	{
		case 0:Display_Time(second,minute,hour);break;
		case 1:Display_Time(day,month,year);	break;
		case 2:Display_Alarm_Clock();			break;
		default: break;
	}
	if(alarm_clock_flag&&hour_alarm==hour&&minute_alarm==minute)
	Buzzer_music();//闹钟时间到 开启音乐
	if(music_play_flag&&alarm_clock_flag)
	Buzzer_music();//开启音乐&音乐播放按键
	if(minute==0&&second==0)
	Buzzer_Didi(); //整点报时
}	
}

实物效果

PCB文件交给嘉立创打板,回来的板子自己焊接,有一些小问题,不过板子一次就成功了

实物照片

  • 0
    点赞
  • 275
    收藏
    觉得还不错? 一键收藏
  • 35
    评论
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值