51单片机8位数码管电子时钟(完结)

发布者:星光闪耀最新更新时间:2015-07-09 来源: 51hei关键字:51单片机  8位数码管  电子时钟 手机看文章 扫描二维码
随时随地手机看文章
利用8位数码管显示时间,原理与4位数码管显示的基本一样


仿真图:

程序源代码:
作者:胡琴
联系qq:1257394091
本程序版本规本人所有可以任意转载:
技术支持网站:http://www.51hei.com 
本程序已经通过在线软件仿真和硬件制作.
  org 0000h   ;程序开始入口地址
  sjmp main   ;跳转至主程序
  org 000bh   ;T0中断入口地址
  ljmp inti0  ;跳转至T0中断程序
  org 001bh   ;T1中断入口地址
  ljmp inti1  ;跳转至T1中断程序
  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 38h,#00 ;闹钟分初值
  mov 39h,#00 ;闹钟时初值
  mov 31h,#00 ;时间秒初值
  mov 32h,#00 ;时间分初值
  mov 33h,#00 ;时间时初值
  setb tr0  ;启动定时器T0
  setb tr1    ;启动定时器T1
loop:lcall display ;调用时间显示程序
     lcall keysan ;调用时间调节按钮
  lcall keynz ;调用闹钟控制按钮
     ajmp loop
inti0:push psw   ;压入堆栈指针,保护现场
      push acc
   clr ea  ;关中断
   mov th0,#4ch ;重赋T0定时初值
   mov tl0,#00h
   inc 3ah ;3ah为50ms计数单元
   mov a,3ah
   cjne a,#20,out ;1秒计数是否到
   mov 3ah,#00 ;清50ms计数初值
   inc 31h   ;秒加1
   mov a,31h
   cjne a,#60,out   ;60秒计数是否到
   mov 31h,#00
   inc 32h  ;分加1
   mov a,32h
   cjne a,#60,out ;60分计数是否到
   mov 32h,#00
   inc 33h    ;时加1
   mov a,33h
   cjne a,#24,out   ;24时计数是否到
   mov 33h,#00
out: setb ea ;开中断
     pop acc ;弹出堆栈指针,恢复现场
  pop psw
  reti    ;中断返回
inti1:push psw  ;压入堆栈指针,恢复现场
      push acc
   clr ea
   mov th1,#4ch  ;重赋T1定时初值
   mov tl1,#00h
   inc 71h   ;71h为50ms计数单元
   mov a,71h
   cjne a,#20,out1
   mov 71h,#00
   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    ;中断返回
display:mov a,31h  ;秒显示
  mov b,#10
  div ab
     mov 20h,a  ;将十位放入20h单元
  mov 21h,b  ;将个位、余数放入21h单元
disp1:  mov a,20h ;秒十位显示
        mov dptr,#table
  movc a,@a+dptr  ;将A的内容+table内容,结果回存给A
  mov p0,a  ;将A给P0口
  clr p2.6  ;清p2.6,点亮第7位数码管
  lcall del1ms ;调用1ms延时子程序
  setb p2.6  ;灭第7位数码管
disp2:  mov a,21h ;秒个位显示
        mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.7
  lcall del1ms
  setb p2.7
disp4:  mov a,32h ;分显示
        mov b,#10
  div ab
  mov 22h,a
  mov 23h,b
disp5:  mov a,22h ;分十位显示
        mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.3
  lcall del1ms
  setb p2.3
disp6:  mov a,23h  ;分个位显示
        mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.4
  lcall del1ms
  setb p2.4
disp7:  mov a,33h   ;时显示
        mov b,#10
  div ab
  mov 24h,a
  mov 25h,b
disp8:  mov a,24h    ;时十位显示
        mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.0
  lcall del1ms
  setb p2.0
disp9:  mov a,25h  ;时个位显示
        mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.1
  lcall del1ms
  setb p2.1[page]
disp10: mov 34h,#0bfh  ;"-"显示
        mov a,34h
        mov p0,a
  clr p2.5
  lcall del1ms
  setb p2.5
disp11: mov 35h,#0bfh  ;"-"显示
        mov a,35h
  mov p0,a
  clr p2.2
  lcall del1ms
  setb p2.2
  ret
display1:mov a,38h   ;闹钟分显示
         mov b,#10
   div ab
   mov 26h,a
   mov 27h,b
      d1:mov a,26h    ;闹钟分十位显示
         mov dptr,#table
   movc a,@a+dptr
   mov p0,a
   clr p2.3
   lcall del1ms
   setb p2.3
      d2:mov a,27h    ;闹钟分个位显示
      mov dptr,#table
   movc a,@a+dptr
   mov p0,a
   clr p2.4
   lcall del1ms
      setb p2.4
dispnz: mov a,39h  ;闹钟时显示
        mov b,#10
  div ab
  mov 28h,a
  mov 29h,b
 d5: mov a,28h   ;闹钟时十位显示
     mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.0
  lcall del1ms
  setb p2.0
 d6: mov a,29h   ;闹钟时个位显示
     mov dptr,#table
  movc a,@a+dptr
  mov p0,a
  clr p2.1
  lcall del1ms
  setb p2.1
        mov 35h,#0bfh  ;"-"显示
        mov a,35h
  mov p0,a
  clr p2.2
  lcall del1ms
  setb p2.2 
   ret  
table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h   ;数字0—9               
del1ms:mov r7,#10   ;1ms延时子程序
del1: mov r6,#50
del2:djnz r6,del2
     djnz r7,del1
  ret
del20ms:mov r5,#40    ;20ms延时子程序
del3: mov r4,#250
del4: djnz r4,del4
      djnz r5,del3
   ret
keysan:jnb p3.1,key1 ;秒加1按钮
       jnb p3.2,key2 ;分加1按钮
    jnb p3.3,key3 ;时加1按钮
      
    sjmp keyout
key1: lcall del20ms
      jb p3.1,keyout
   jnb p3.1,$
   inc 31h  ;秒加1
   mov a,31h
   cjne a,#60,keyout
   mov 31h,#00
   sjmp keyout
key2:lcall del20ms
     jb p3.2,keyout
  jnb p3.2,$
  inc 32h  ;分加1
  mov a,32h
  cjne a,#60,keyout
  mov 32h,#00
  sjmp keyout
key3:lcall del20ms
     jb p3.3,keyout
  jnb p3.3,$
  inc 33h ;时加1
  mov a,33h
  cjne a,#24,keyout
  mov 33h,#00
  sjmp keyout
keyout:ret
keynz:jnb p3.4,keynz4 ;显示闹钟并可修改和显示当前时间
    jnb p3.7,keynz5
    jnb p3.5,nz3
    jnb p3.6,nz4
    sjmp nzout
nzout:ret
nz2:lcall display1
    jnb p3.5,nz3
 jnb p3.6,nz4
keynz4:jnb p3.4,nz2
  sjmp nzout
nz3:lcall del20ms
    jb p3.5,nzout
 jnb p3.5,$
    inc 38h
 mov a,38h
 cjne a,#60,nzout
 mov 38h,#00
 sjmp nzout
nz4:lcall del20ms
    jb p3.6,nzout
 jnb p3.6,$
 inc 39h
 mov a,39h
 cjne a,#24,nzout
 mov 39h,#00
 sjmp keyout
keynz5:jb p3.7,nzout
     jnb p3.7,$
  setb p1.0
 sjmp nzout
end

关键字:51单片机  8位数码管  电子时钟 引用地址:51单片机8位数码管电子时钟(完结)

上一篇:12864液晶显示实时时钟
下一篇:51单片机模拟交通灯

推荐阅读最新更新时间:2024-03-16 14:24

MCS-51单片机的基本知识
8051是MCS-51系列单片机的典型产品,其特性与我们实验的STC89C52RC完全相同,这里以8051为例简介一下单片机的基本知识。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 图1 数据存储器(RAM): 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它
[单片机]
MCS-<font color='red'>51单片机</font>的基本知识
如何将UCOSII移植到51单片机
一、准备工作 1. 开发环境: Keil C集成开发环境 2. 源代码:UCOSII的源代码,网上可以自己下载 3. 文件分析: 1)UCOSII文件中与处理器无关的文件: OS_CORE.C OS_FLAG.C OS_MBOX.C OS_MEM.C OS_MUTEX.C OS_Q.C OS_SEM.C OS_TASK.C OS_TIME.C UCOS_II.C UCOS_II.H 以上这些文件在c51移植过程中只需给函数加上可重入性即可,即在每个函数后面添加关键字:reentrant 2)与应用相关的文件: INCLUDES.H——其中包含51单片机头文件和相关应用头文件 OS_CFG.H——这个文件对于要应用系统中的相关工
[单片机]
如何将UCOSII移植到<font color='red'>51单片机</font>上
51单片机玩转物联网基础篇07-外部中断
前言 本节我们开始,我们学习51单片机的中断系统,51单片机有5个中断源,我们首先学习外部中断,并通过中断方式检测P3^2接口是否有低电平产生。 一、基础知识 1.中断简介 中断是指CPU在执行A事件的时候,突然收到B事件发出的(中断)请求,CPU停止手中的事情,转而去执行B事件,B事件执行完毕后,又回到原来A事件被打断的地方,继续执行程序的过程,示意图如下所示: 51单片机共有5个中断源,分别是外部中断0、外部中断1、定时器中断0、定时器中断1和串口中断,这5个中断源有二个中断优先级,每个中断源可以编程为高优先级和低优先级中断,可实现二级中断服务程序嵌套。 2.中断寄存器 (1) 中断允许寄存器TCON(88H)
[单片机]
<font color='red'>51单片机</font>玩转物联网基础篇07-外部中断
基于AT89C51单片机的恒温控制系统设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD1602显示+DS18B20测温+蜂鸣器报警+按键+风扇降温+小灯。 系统内使用AT89C51单片机作为主控,使用LCD1602显示采集到的温度数据和温度阈值,通过按键可以设定阈值,当检测到环境温度大于设定阈值时蜂鸣器就会进行报警,并且会通过风扇进行降温,当检测到环境温度低于设定阈值时加热小灯就会亮起。 二.仿真概述 1.LCD1602显示检测到的温度和温度阈值。 2.通过DS18B20温度传感器检测环境温度。 3.当温度低于阈值则通过加热小灯进行加热。 4.当温度高于阈值则通过蜂鸣器报警,并利用风扇进行降温。 三.程序设计 使用Keil 51进行
[单片机]
基于AT89C<font color='red'>51单片机</font>的恒温控制系统设计
MCS-51单片机时序
一、时序:单片机时序是指单片机执行指令时应发出的控制信号的时间序列。这些控制信号在时间上的相互关系就是CPU的时序。它是一系列具有时间顺序的脉冲信号。 CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。另一类用于片外存储器或I/O端口的控制,需要通过器件的控制引脚送到片外,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则,需要认真掌握。 扩展阅读:什么是单片机的时序 二、时钟周期、机器周期和指令周期 1、 时钟周期:又称振荡周期。指为单片机提供定时信号的振荡源周期。是最小的时序单位。 振荡源的频率越高,单片机的工作速度越快。 时钟周期被分成两个节拍P1和
[单片机]
MCS-<font color='red'>51单片机</font>时序
51单片机学习:定时器0实验
实验名称:定时器0实验 接线说明: 实验现象:下载程序后,D1指示灯间隔1s闪烁 注意事项: ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; /********************************************************************
[单片机]
基于51单片机的语音采集系统设计
功能: 基于51单片机的语音实时采集系统 系统由STC89C52单片机+ISD4004录音芯片+LM386功放模块+小喇叭+LCD1602+按键+指示灯+电源构成 具体实现功能: (1)可通过按键随时选择相应的录音进行播放; (2)可以通过按键随时录音,可以录制4段声音,并可以按键控制播放和暂停,最长可以录制8分钟; (3)播放的音量可以通过调节电位器改变。 第1章前言 1.1 研究意义 数码录音笔对于我们现如今的人们己经是再熟悉不过的产品了,它己经应用在了很多地方,其中主体部分应该是记者了。正是基于录音笔能够录音的特点,在你无法凭借记忆记住重要谈话,或者重要会议的重要内容的时候,它便体现除了它的优势,清晰完整无误的记录下你要记录
[单片机]
基于<font color='red'>51单片机</font>的语音采集系统设计
采用MXT8051单片机实现基站温控仪的设计
引言 移动基站分布在全国各地,覆盖面广,各地气候差异大。解决好散热问题,是基站正常运作的关键因素之一。本文介绍的温控仪,利用温度传感器采集信号,然后通过单片机进行A/D转换、处理、运算得到室内外温度,并且根据当前室内外温差,计算出风机风速。然后利用PWM方式控制可控硅对交流220V斩波,实现风机风速调制。从而实现了利用自然冷源达到降低基站内部温度的目的。 系统设计 本温控仪是以MXT8051单片机为核心,整个硬件系统(如图1)分为温度信号采集、显示、键盘、控制输出、通信接口和存储模块。该仪表工作流程是:单片机通过集成的A/D采样室内室外温度,根据温差调制风机风速。键盘部分实现对温控仪参数的设置,如风机启动温度、停止温度等参数。
[单片机]
采用MXT80<font color='red'>51单片机</font>实现基站温控仪的设计
热门资源推荐
热门放大器推荐
  •  pdf文件电子电路实用原理图300例
  •  zip文件STC51单片机程序与仿真练习
  •  pdf文件从零开始学单片机技术 (刘建清)
  •  pdf文件单片机与嵌入式系统 (关永峰,于红旗 主编)
  • 系统发生错误

    系统发生错误

    您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ]

    [ 错误信息 ]

    页面错误!请稍后再试~

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved