电路图简介: 本文分别介绍了不同四款单片机时钟设计电路图,另外还将它们的程序详细的表达了出来。

单片机四位时钟电路设计方案(一)

  以AT89C51单片机为核心的时钟电路的程序设计

  1.主程序设计及系统主流程图

  设计中采用定时器T0中断完成,其余状态循环调用显示子程序。系统主流程图如图所示

  2.时钟电路的时钟和闹铃程序设计及流程图

  时钟采用11.0256MHZ的脉冲控制, 闹铃采用整点报时功能。

  3 时钟电路的显示程序设计及流程图

  码管显示的数据存放在内存单元70H-75H中,其中70H~71H存放秒数据,72H~73H存放分数据,74H~75H存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出70H~75H某一地址中的数据,然后查的对应的显示段码从P1口输出。P3口将对应的数码管选中,就是显示该地址单元的数据值,每个LED数码管亮1MS时间再逐位循环。

  4.时钟电路的键盘程序设计及流程图

  P0口输出段码数据,P1.0-P1.2口作扫描输出,P0.1—P0.4口接按钮开关S1,S2,S3,S4,S5,rest 接S6复位按键。P0.0控制秒的调整,每按一次加1秒;P0.1控制分的调整,每按一次加1分;P0.2控制时的调整,每按一次加1个小时。

  5.仿真图及程序

  单片机四位时钟电路设计方案(二)

  通过S1、S2、S3和S4四个按键,对时间进行修改和闹钟的设置,S0控制闹钟的启动和停止。按下S4键显示闹钟,松开后显示时间;按下S1键进入时间修改模式,再按S1键时间的时加1,按S3分加1,调整结束后按下S4恢复正常显示;按下S2键进入闹钟修改模式,再按S3键闹钟的时加1,按S3分加1,调整结束后按下S4恢复正常显示。在按键按下和放开时会出现抖动现象。通过延时程序,可以进行去抖动设计。

  Proteus仿真电路

  单片机四位时钟电路设计方案(三)

  通过4位数码管来显示时间,系统晶振11.0592MHZ,仿真图中用二极管代替时钟冒号闪烁,非门代替三极管,让仿真速度与真实速度达到一致,本设计用了6个按钮来对时间及闹钟时间的调节、关闭,p3.2接时间分加1按钮,p3.3接时间时加1按钮,p3.4接闹钟时间与当前时间切换按钮,按住不放显示闹钟的时间,闹钟初始化为00:00,放开按钮则显示当前时间,p3.5接闹钟加1按钮,p3.6接闹钟时加1按钮,p3.7接关闭闹钟按钮。

  程序源代码:

  org 0000h

  ajmp main ;调至主程序

  org 000bh ;T0中断入口地址

  ljmp inTI0

  org 001bh ;T1中断入口地址

  ljmp inTI1

  org 0030h

  main:mov tmod,#11h ;设T0、T1为模式1

  mov ie,#8ah ;开T0、T1中断允许

  mov th0,#4ch ;赋T0 50ms初值

  mov tl0,#00h

  mov th1,#4ch ;赋T1 50ms初值

  mov tl1,#00h

  mov sp,#60h ;设置堆栈指针

  mov r0,#20 ; T0 50ms计数20次

  mov 31h,#00 ;时间秒初始化

  mov 32h,#00 ;时间分初始化

  mov 33h,#00 ;时间时初始化

  mov 38h,#00 ;闹钟分初始化

  mov 39h,#00 ;闹钟时初始化

  setb tr0 ;启动T0

  setb tr1 ;启动T1

  loop:lcall display ;调用时间显示子程序

  lcall key ;调用时间调节按键子程序

  lcall keynz ;调用闹钟按键子程序

  ajmp loop

  inTI0:push psw ;保护现场

  push acc

  clr ea ;关中断

  mov th0,#4ch ;重赋50ms初值

  mov tl0,#00h

  djnz r0,out ;对50ms计数判断

  mov r0,#20 ;重赋50ms计数值

  inc 31h ;秒加1

  cpl p2.2 ;P2.2取反输出

  mov a,31h

  cjne a,#60,out ;判秒是否加到60,没有加到中断返回

  mov 31h,#00 ;秒加到60,对秒清零

  inc 32h ;分加1

  mov a,32h

  cjne a,#60,out ;判分是否加到60,没有加到就中断返回

  mov 32h,#00 ;分加到60,对分清零

  inc 33h ;时加1

  mov a,33h

  cjne a,#24,out ;判时是否加到24,没有就中断返回

  mov 33h,#00 ;时加到24,对时清零

  out: setb ea ;开中断

  pop acc ;恢复现场

  pop psw

  reTI ;中断返回

  inti1:push psw ;保护现场

  push acc

  clr ea ;关中断

  mov th1,#4ch ;赋50ms初值

  mov tl1,#00h

  inc 3ah

  mov a,3ah

  cjne a,#20,out1 ;判断50ms计数是否到20,没到就中断返回

  mov 3ah,#00 ;50ms计数到20,将计数单元清零

  mov a,32h

  cjne a,38h,out1 ;闹钟分与时间分判断

  mov a,33h

  cjne a,39h,out1 ;闹钟时与时间时判断

  clr p1.0 ;相等就清p1.0输出

  out1: setb ea ;开中断

  pop acc ;恢复现场

  pop psw

  reti ;中断返回

  单片机四位时钟电路设计方案(四)

  附:源程序

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

  标题: 定时器中断 24小时时钟程序

  效果: 数码管显示24小时制时钟(具有调时功能)

  说明: 使用12M晶振 ,key1=P3^7; key2=P3^6; key3=P3^5; key4=P3^4; 数码管位选P1.0~P1.3 ,段选P0,共阳数码管

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

  #include《reg52.h》

  #define uchar unsigned char; #define uint unsigned int;

  uchar position; uchar tt; uchar second; uchar minute; uchar hour;

  uchar code table[]=

  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0--9

  sbit smg_q = P1^0; //数码管千位引脚 sbit smg_b = P1^1; sbit smg_s = P1^2; sbit smg_g = P1^3;

  sbit key1=P3^7; //按键定义 sbit key2=P3^6; sbit key3=P3^5; sbit key4=P3^4;

  void keyscan(); //函数声明

  void display(unsigned char hour,unsigned char minute); void delay(unsigned int timer); void init();

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

  主函数

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

  void main() {

  init(); while(1) {

  if(tt==20) { tt=0; second++;

  if(second==60) {

  second=0; minute++;

  if(minute==60) {

  minute=0; hour++;

  if(hour==24) hour=0; } } }

  keyscan();

  display(hour,minute); delay(1); } }

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

  调时

  ***********************************************************/ void keyscan() {

  if(key1==0) //小时加1 {

  TR0=0; hour++;

  if(hour==24) hour=0; delay(200) ; TR0=1; }

  if(key2==0) // 小时减 {

  TR0=0; hour--;

  if(hour《0) hour=23; delay(200) ; TR0=1; }

  if(key3==0) // 分钟加 {

  TR0=0; minute++;

  if(minute==60) minute=0; delay(200) ; TR0=1; }

  if(key4==0) // 分钟减 {

  TR0=0;

  minute--;

  if(minute《0)

  minute=59; delay(200) ; TR0=1; } }

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

  初始化

  ***********************************************************/ void init() {

  tt=0;

  position=0; second=0; minute=0; hour=0; smg_q=1; smg_b=1; smg_s=1; smg_g=1; key1=1; key2=1;

  TMOD=0X01;

  TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; }

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

  定时器TO中断

  ***********************************************************/ void t0() interrupt 1 {

  TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; }

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

  显示

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

  void display(unsigned char hour,unsigned char minute) {

  P0=0XFF; switch(position) {

  case 0: smg_g=1; smg_q=0;

  P0=table[hour/10]; break;

  case 1:

  smg_q=1; smg_b=0;

  P0=table[hour%10];

  if(tt》=10)

  P0&=0x7f; //小数点以半秒的时间闪烁 break;

  case 2:

  smg_b=1; smg_s=0; P0=table[minute/10]; break;

  case 3: smg_s=1; smg_g=0;

  P0=table[minute%10]; break; }

  position++; if(position》3) position=0; }

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

  延时

  ***********************************************************

  / void delay(unsigned int time) {

  unsigned int x,y; for(x=time;x》0;x--) for(y=110;y》0;y--);

找元器件现货上唯样商城


(本文来源网友上传,如有侵权,可联系管理员删除)

单片机四位时钟电路设计方案汇总(四款电路图及程序分享) - 数字时钟电路图相关推荐

  1. 锂电池供电电路设计方案汇总(四款设计方案)

    锂离子电池以其优良的特性,被广泛应用于: 手机.摄录像机.笔记本电脑.无绳电话.电动工具.遥控或电动玩具.照相机等便携式电子设备中. 一.锂电池与镍镉.镍氢可充电池: 锂离子电池的负极为石墨晶体,正极 ...

  2. 光电隔离电路设计方案(六款基于光耦、AD210AN的光电隔离电路图)

    光电隔离电路设计方案(一) 光耦亦称光电隔离器或光电耦合器,简称光耦.它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内.当输入端加电信号 ...

  3. 降噪耳机推荐,四款优秀的降噪耳机分享

    随着降噪耳机的降噪技术越来越成熟,甚至有些降噪耳机能让苹果降噪耳机对比,也随着耳机的增加,很多人不知如何购一款适合自己的那款降噪蓝牙耳机了,就怕入手不喜欢不适合的,接下来,我推荐四款优秀的降噪耳机分享 ...

  4. 74ls175四人抢答器电路图_四人抢答器电路设计方案(四) - 四人抢答器电路设计方案汇总(六款模拟电路设计原理图详解)...

    四人抢答器电路设计方案(四) 2.4.接触器实现 利用接触器可以实现抢答器功能,实验电路如图5所示. 按下抢答按键,如SB1,其抢答过程如下: 即L1灯亮,其它抢答键SB2.SB3.SB4均无效. 主 ...

  5. 八路抢答器一个数码管C语言,八路抢答器设计 - 八路抢答器电路设计方案汇总(五款模拟电路设计原理及工作原理详细)...

    八路抢答器电路设计方案四:一个简单的的八路抢答器电路 详细电路设计方案:八路抢答器电路图 八路抢答器电路设计方案五:基于74LS148和74LS297的八路抢答器 设计要求与内容 在许多比赛活动中,为 ...

  6. 自动计数报警器c语言程序,计数报警器电路设计方案汇总(多款模拟电路设计原理图详解)...

    计数报警器电路设计方案(一) 控制电路:控制Buzzer响10秒和LED报警10秒的电路.需要用555定时器中的单稳态触发器.用555定时器设计的多谐振荡器如图1所示. 图1 555定时器构成的多谐振 ...

  7. 三人抢答器逻辑电路图_三路抢答器电路设计方案汇总(三款模拟电路设计原理图详解) - 全文...

    三路抢答器电路设计方案(一) 总体框图 抢答器系统原理框图如上所示.当主持人宣布开始,定时电路开始秒脉冲电路的作用而进行倒记时,并通过译码器在显示器中显示.报警电路给出声音提示.当选手首先按某一开关键 ...

  8. 五人比大小c语言,五人表决器电路设计方案汇总(五款模拟电路逻辑图及原理图详解)...

    本文为大家带来五款五人表决器电路设计方案. 五人表决器电路设计方案一:基于74LS151设计的五人表决器电路 系统原理 五人表决器,只要赞成人数大于或等于三,则表决通过.因此,只需将每位表决人的结果相 ...

  9. 电流测试c语言算法,电流检测电路设计方案汇总(六款模拟电路设计原理图详解)...

    电流检测电路设计方案(一) 低端检流电路的检流电阻串联到地(图1),而高端检流电路的检流电阻是串联到高电压端(图2).两种方法各有特点:低端检流方式在地线回路中增加了额外的线绕电阻,高端检流方式则要处 ...

最新文章

  1. 浅析:seo工程师擅长的网站数据分析
  2. /etc/profile /etc/profile .bash_profile .bashrc解释
  3. 大学本科电子信息工程专业核心课程与主干课程
  4. 机器学习高阶认识(一): 机器学习假设与迁移学习
  5. 矩阵的乘法通用模板(C++/Java)
  6. ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍
  7. windows 提权 cve-2018-8897
  8. dotNet 5 中执行 Node.js
  9. robotac属于a类还是b类_工程项目分类A类、B类、C类、D类项目是指什么?注意:不是资料的A、B、C类报建资料...
  10. IT中一些常见英汉互译
  11. 耗尽linux内存脚本,Linux下swap耗尽该怎么办?如何释放swap?
  12. mysql 监听 udp_通用TCP、UDP服务监控脚本
  13. LeetCode入门题 两数之和
  14. python 蒙特卡洛模拟股价_利用python进行蒙特卡罗模拟
  15. 风力摆?这是不是太简单了点
  16. 开启微信悬浮窗权限有什么用_这个功能比微信自带的还好用
  17. 显卡是什么?显卡和Graphics的区别在哪里?
  18. [WARNING IsDockerSystemdCheck]: detected “cgroupfs“ as the Docker cgroup driver. The recommended dri
  19. js实现全屏和退出全屏功能
  20. 今天开始学Java log2N的表示

热门文章

  1. 帮忙投票-2009年度全国儿童摄影展艺术展(第十期)江苏南京展区
  2. i春秋 WEB code
  3. wsl调试linux内核,微软更新Linux子系统,编译WSL 2内核只需3步
  4. jquery 选择器返回值;jquery选择器返回对象还是数组?
  5. 圆明园兽首事件突然就开始高潮了
  6. Ubuntu之which查看命令所在位置
  7. vsftp用户设置目录访问权限
  8. 微软/高通发力!骁龙835 Win10电脑性能爆发
  9. [英语学习]老托福听力93篇 生词汇总
  10. SVN 代码行数统计