目录

一、 前言---------------------------------------2
二、 硬件原理分析--------------------------2
三、 程序设计--------------------------------4
四、 程序代码--------------------------------4
五、 仿真效果-------------------------------10
六、 参考文献-------------------------------10
七、 学习体会-------------------------------11

一、 前言
<1>利用所学知识设计一个单片机数字电子钟
<2>数字电子钟的功能要求:
(1)有自动计时功能;
(2)能显示计时时间,显示效果良好;
(3)有校时功能,能对时间进行校准
<3>设计要求:
(1)主电路由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校准电路等构成。
(2)秒信号发生器一般用石英晶体振荡器加分频器实现。
(3)译码电路将时、分、秒计数器的输出状态送七段译码器译码,经过六位LED七段显示器显示出来。
(4)校时电路用来对时、分、秒显示数字进行校对。

二、 硬件原理分析
1、时钟信号部分
单片机XTAL1,XTAL2端接外部时钟电路(时钟电路参考课本),EA端接5V电源,使得单片机读取片内程序。

2、按键开关部分
开始仿真,按下开关K1,时钟暂停,然后按下开关K2一次,切到调时位,再按K3,K4实现时位加减;按K1两次切到调分位,按K4,K4实现分位加减;按K1三次切到调秒位,按K4,K4实现秒位加减;按下K5,确定当前操作,然后再按K1,重新启动时钟。

3、数码管显示器部分(共阴极)
所用的是一个六位七段共阴极数码管

4、共阴极数码管编码

三、 程序设计

四、 程序代码

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit set=P1^0;
sbit save=P1^5;
sbit rselect=P1^1;
sbit lselect=P1^2;
sbit add=P1^3;
sbit reduce=P1^4;uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar disp_buf[6];
uchar disp_bit=0;
uint hour,min,sec;
uint select_num=0;
uint hour_adj,min_adj,sec_adj;
uchar count;
uchar key_num=0;
void key_scan()
{                                                   if(!set){hour_adj=hour;min_adj=min;sec_adj=sec;key_num++;}while(!set);if(key_num%2==1)                {if(rselect==0){select_num++;if(select_num==4)select_num=1;}while(!rselect);if(lselect==0){select_num--;if(select_num<=0)select_num=3;}while(!lselect);}if(!add&&(key_num%2)){switch(select_num){case 1 :{hour_adj++;if(hour_adj==24)hour_adj=0;break;}case 2 :{min_adj++;if(min_adj==60)min_adj=0;break;}case 3 :{sec_adj++;if(sec_adj==60)sec_adj=0;break;}default:break;}while(!add);}if(!reduce&&(key_num%2)){switch(select_num){case 1 :{hour_adj--;if(hour_adj<=0)hour_adj=23;break;}case 2 :{min_adj--;if(min_adj<=0)min_adj=59;break;}case 3 :{sec_adj--;if(sec_adj<=0)sec_adj=59;break;}default:break;}while(!reduce);}if(!save&&(key_num%2)){select_num=0;hour=hour_adj;min=min_adj;sec=sec_adj;while(!save);}
}                void main()
{TMOD=0x11;TH0=0xf7;TL0=0x00;TH1=0x4c;TH0=0x00;ET0=1;ET1=1;EA=1;TR0=1;TR1=1;PT1=1;hour=23;min=59;sec=59;count=0;while(1){key_scan();if(key_num%2){switch(select_num){case 1 :{if(count<=10){disp_buf[0]=hour_adj/10;disp_buf[1]=hour_adj%10;}else{disp_buf[0]=0x40;disp_buf[1]=0x40;}disp_buf[2]=min_adj/10;disp_buf[3]=min_adj%10;disp_buf[4]=sec_adj/10;disp_buf[5]=sec_adj%10;break;}case 2 :{if(count<=10){disp_buf[2]=min_adj/10;disp_buf[3]=min_adj%10;}else{disp_buf[2]=0x40;disp_buf[3]=0x40;}disp_buf[0]=hour_adj/10;disp_buf[1]=hour_adj%10;disp_buf[4]=sec_adj/10;disp_buf[5]=sec_adj%10;break;}case 3 :{if(count<=10){disp_buf[4]=sec_adj/10;disp_buf[5]=sec_adj%10;}else{disp_buf[4]=0x40;disp_buf[5]=0x40;}disp_buf[0]=hour_adj/10;disp_buf[1]=hour_adj%10;disp_buf[2]=min_adj/10;disp_buf[3]=min_adj%10;break;}default :         break;}}if(key_num%2==0){disp_buf[0]=hour/10;disp_buf[1]=hour%10;disp_buf[2]=min/10;disp_buf[3]=min%10;disp_buf[4]=sec/10;disp_buf[5]=sec%10;        }}
}void timer0() interrupt 1
{TH0=0xf7;TL0=0x00;P2=~(0x01<<disp_bit);P0=tab[disp_buf[disp_bit]];disp_bit++;if(disp_bit==6) disp_bit=0;
}void timer1() interrupt 3
{TH1=0x4c;TL1=0x00;if(++count==20){count=0;if(++sec==60){sec=0;if(++min==60){min=0;if(++hour==24){hour=0;}}}}
}

五、 仿真效果

六、 参考文献
1. 网上搜索
2. 单片机教材
3. 网上论坛
七、学习体会
通过本次单片机课程设计,不仅加深了我对单片机理论课程知识的认识,而且通过将理论与实践相结合,使我真正地全面理解单片机的功能。 在刚开始编程时,没有一点思路,通过书上所提供的例程,慢慢理清了思路、基本了解了程序大致需要那几部分,基本确定编程思想。在课程设计的整个过程中也遇到了很多问题,但本着遇到问题解决问题的原则,通过查找资料和询问老师、同学的办法,基本解决了所遇到问题。整个课程设计过程学到了不少通过理论学习没法学到的东西,真正增强了自己的能力。
课程设计的这天时间,虽然辛苦但是收获巨大。

基于单片机的数字电子钟简单相关推荐

  1. 基于51单片机的数字电子钟万年历闰年判断闹钟设计

    基于51单片机的数字电子钟万年历闰年判断闹钟设计 视频 1 开发环境 2 功能说明介绍 3 仿真图 4 程序 5 原理图 6 视频讲解 7 设计报告 7.1 设计目的 7.2 概述 8 资料清单下载链 ...

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

    目录 摘  要 1.课程设计任务 1.1课程设计题目 1.2设计的要求 2.设计总体方案 2.1初步设计方案 2.2芯片的选型 2.2.1时钟芯片的选择 2.2.2温度传感器的选择 2.2.3显示电路 ...

  3. 基于单片机的数字温度计设计

    文末下载完整资料                   基于单片机的数字温度计 摘要:本文介绍一种基于AT89C2051单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围 ...

  4. 基于单片机的数字温度计设计-零妖

    1,开发前规划 基于单片机的数字温度计-开发前规划 关键字 温度计:51单片机:共阳数码管:MOS开关:便携式:课程设计:毕业设计 要求 一个随身携带的温度计. 步骤 项目 立创编号 型号 备注 1 ...

  5. 基于单片机控制的数字温度计课程设计c语言,基于单片机的数字温度计课程设计.doc...

    基于单片机的数字温度计课程设计.doc 目录1 绪论 .11.1 设计背景 .11.2 设计要求 .11.3 设计思路 .12 系统硬件设计 12.1 设计总框图 12.2 各模块功能 .22.3 设 ...

  6. 基于单片机的数字时钟设计

    设计简介: 本设计是基于单片机的数字时钟设计,主要实现以下功能: 实现体力显示,24小时的时钟计时: 实现星期显示: 实现温度实时采集显示: 实现通过按键修改时间信息: 实现通过LCD12864实时显 ...

  7. 单片机c语言时钟设计,基于单片机的数字时钟C语言设计.pdf

    第 2O卷第 6期 北华航天工业学 院学报 Vo1.2O No.6 2010年 l2月 JournalofNorthChinaInstituteofAerospaceEngineering Dec.2 ...

  8. 单片机课程设计数字心率计_课程设计-基于单片机的数字人体心率计设计.doc

    课程设计-基于单片机的数字人体心率计设计 中北大学 基于单片机的心率计设计 课 程 设 计 说 明 书 2017年 6月30日 课 程 设 计 任 务 书 1.设计目的:通过本课程设计的学习,学生将复 ...

  9. 基于单片机的数字秒表

    设计简介: 本设计是基于单片机的数字秒表的设计,主要实现以下功能: 可实现LCD12864显示时间以及倒计时.顺计时等信息: 可实现通过按键调节调节时间的大小以及实现计时功能: 可实现通过通过语音播报 ...

  10. (毕业设计资料)基于单片机FM数字收音机电路系统

    099[电路方案]基于单片机FM数字收音机电路系统 [资源下载]下载地址如下: https://docs.qq.com/doc/DTlRSd01BZXNpRUxl 单片机FM收音机采用51单片机+LC ...

最新文章

  1. ASP.NET MVC入门到精通——Spring.net-业务层仓储
  2. engine中调整Element的上下显示顺序(遮盖)
  3. 如果在CSDN博文编辑状态下获得博文最终网络链接?
  4. centos7 yum 安装 openssl 1.1.1k
  5. mysql 执行计划 优化_执行计划
  6. repeater 时间格式化
  7. flyway数据迁移_使用Flyway在Java EE中进行数据库迁移
  8. python3.7怎么使用arcpy_从Python到空间分析Arcpy|1.3.7 神啊!救救我之如何处理报错...
  9. DropDownList实现无限分级
  10. php搜索文件名,PHP搜索文件且列出文件名的代码参考
  11. 前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查
  12. c语言数组和字符串编程题,C语言中的字符数组和字符串详解
  13. 【数据结构笔记26】根据一棵树的先序/中序遍历Push与Pop内容,输出这棵树的先序、中序、后序遍历数组(不需要真的建立出树)
  14. 洛谷 P1164:小A点菜(DP/DFS)
  15. 使用pip安装tensorflow很慢的问题
  16. android 播放器 下载,VPlayer安卓最新版
  17. C语言实现贪吃蛇(简易)
  18. java io 和nio 区别_java IO和NIO区别
  19. 随机搜索 /爬山法/模拟退火/遗传算法
  20. 论灾备之重要性:七场无法预见的数据中心灾难

热门文章

  1. 想法独特 上半年最具特色摄像头集锦
  2. 把华为OLT主控设置为上联的方法
  3. Dynamics AX2012 保留上一次操作记录
  4. notepad++怎么换行命令_notepad
  5. oracle 数据库学习笔记
  6. 微信小程序开发(后端 Java)
  7. python绘制动态心电图_可穿戴设备中测心电图这样功能能达到医用标准吗?未来前景如何?在医用和便携之间是否还有市场?...
  8. SQL必知必会习题练习
  9. C语言数据结构各种结构体的定义
  10. 暗黑系博客主题,欢迎访问与魔改,博客网站有搭建教程