基于51单片机定时,数码管显示时间

要想让数码管显示时间,就得让数码管显示,然后需要让显示的数字按秒、分、时进位。数码管显示可以看我前面文章:
基于51单片机数码管显示

单片机的定时器中断
51单片机内部有两个16位可以编程的定时器T0/计数器T1,52单片机内多了一个T2定时器/计数器;

定时器/计数器的实质是加1计数器(16位),由高8位和低8位2个寄存器组成。TMOD 是定时器/计数器的工作方式寄存器,确定工作方式和功能: TCON 是控制寄存器,控制TO、TI的启动和停止及设置溢出标志。
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分 频后送来;另一个是T0或T1引脚输入的外部脉冲源,每来一个脉冲计数器加 1,当加到计数器为全I时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON寄存器中TFO或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到:如果工作于计数模式,则表示计数值已满。
由上可知,由溢出的计数器的值减去计数初值才是计数器的计数值。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tey就是定时时间t。
定时器初值计算

定时时间T=(2的N次方-X)12/单片机晶振频率(方式0时,N=13 方式1时,N=16 方式2时,N=8)

打个比方计时2ms,当晶振为12M。
方法一
定时时间2ms=(2的16次方-时间常数X)12/f 即晶振为12M f=121000000
2ms=(2的16次方-时间常数X)12/(12
1000000)
方法二
12MHz除12为1MHz,也就是说一秒=1000000次机器周期。2ms=50000次 机器周期。

时间常数X=2000
TH0=(65536-2000)/256; 就是转换成十六进制 再除以256 取整数 即高8位送时间常数寄存器的高8位计数器
TL0=(65536-2000)%256; 就是转换成十六进制 再除以256 取余数 即低8位送时间常数寄存器的低8位计数器

单片机在使用定时器或计数器功能时,通常需要设置2个与定时器有关的寄存器:定时器/计数器工作方式寄存器TMOD与定时器/计数器控制寄存器TCON。
定时器/计数器工作方式寄存器TMOD
TMOD各位定义如下表:

位序号 D7 D6 D5 D4 D3 D2 D1 D0
位符号 GATE C/T M1 M0 GATE C/T M1 M0

D7–D4是定时器1 D3–D0是定时器0
TMOD的高4位用于设置定时器1,低4位用于设置定时器0,对应4位含义如下:
GATE一门控制位。GATE=0,定时器/计数器启动与停止仅受TCON寄存器中的TRX(X=0, 1)来控制; GATE=1,定时器/计数器启动与停止由TCON寄存器中的TRX (X=0, 1)和外部中断引脚(INTO或INT1)上的电平状态来共同控制.
C/T一定时器模式和计数器模式选择位。C/T=1, 为计数器模式: C/T=0 为定时器模式。M1 M0是工作方式选择位。每个定时器计数器都有4种工作方式,它们由MIMO设定,如下表所示

M1 M0 工作方式
0 0 方式0 是13位定时器/计数器
0 1 方式1 是16位定时器/计数器
1 0 方式2 是8位初值自动重装的8位定时器/计数器
1 1 方式3 是仅仅适用与T0分为两个8位计数器,T1停止计数

定时器/计数器控制寄存器TCON

定时器/计数器控制寄存器TCON在特殊功能寄存器中,字节地址为88H, 位地址(由低位到高位)分别是88H~8FH,可进行位寻址。TCON寄存器用来控制定时器的启、停,以及标志定时器溢出和中断情况。单片机复位时,TCON 全部被清0.
其各位定义如下表所示.其中TFI、 TRI、TFO和TRO位用于定时器/计数器; 1IEI、 ITI、 IEO和ITO位用于外部中断。

位序号 D7 D6 D5 D4 D3 D2 D1 D0
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H

TF1 定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置1,并且申请中断。进入中断服务程序后,由硬件自动清0.注意,如果使用定时器的中断,那么该位完全不用人为去操作;如果使用软件查询方式的话,当查询到该位置1后,就需要用软件清0.
TR1 定时器1运行控制位。由软件清0关闭定时器1.当GATE=I且INT1为高电平时, TR1置1,启动定时器1;当GATE=0时, TRI置1, 启动定时器1.
TF0 定时器0溢出标志,其功能及操作方法同TF1.
TR0 定时器0运行控制位,其功能及操作方法同TR1.
IE1 外部中断1请求标志.

要让数码管显示时间要使用寄存器TMOD定时器0,工作方式1;
代码如下

void T0_init(){                    TMOD = 0x01; //设置定时器0为工作方式1(M1 M0为01)TH0 = (65536-50000)/256;//装初值12Mhz晶振定时50ms  TL0 = (65536-50000)%256;  EA = 1;//开总开关     ET0 = 1;//开定时器0中断     TR0 = 1;//启动定时器0
}
void timer0_int() interrupt 1{TH0 = (65536-50000)/256; //重装初值TL0 = (65536-50000)%256;i++;//每加一次就判断一次看是否到达1sif(i == 20){i = 0;  miao++//每加一次就判断一次看是否到达1分if(miao == 60){miao = 0;fen++;//每加一次就判断一次看是否到达1小时if(fen == 60){fen = 0;  shi++;if(shi == 24){shi = 0;  fen = 0;miao = 0;}}}miao_g = miao%10;//求余得到秒的个位   miao_s = miao/10;//取十得到十位 这就是送到数码管元素的下标与数组相对应 下同fen_g = fen%10;  fen_s = fen/10;shi_g = shi%10;  shi_s = shi/10;}
}

数码管显示函数如多段数码管动态显示相似可以看上文
代码与原理图已经上传资源,感兴趣可以看看,也请各位大佬纠正;

基于51单片机定时,数码管显示时间相关推荐

  1. 51单片机动态数码管显示时间+protues仿真

    项目场景: 纯小白 第一次写文章 写的不好请见谅 做51单片机数码管显示时间实验的时候protues 仿真出现了问题 问题描述 做51单片机数码管显示时间实验的时候protues 仿真出现了问题 仿真 ...

  2. 基于51单片机的数码管显示方案

    这一次给大家带来的项目是课堂作业级别的51单片机数码管显示,本次的项目着重于讲解原理,让大家明白单片机的io对于外界设备的控制是如何进行的. 共阳极和共阴极数码管的差异 (1)驱动方法的差异.一个数码 ...

  3. 基于51单片机密码锁数码管显示步进电机开锁设计

    视频演示地址:https://www.bilibili.com/video/BV1Eg411G7JW/ 该设计是由AT89C51单片机为主控芯片数码管显示 开机后输入密码正确步进电机转半圈错误蜂鸣器报 ...

  4. 【51毕设案例】基于51单片机-定时喂食供氧智能鱼缸

    目录 功能介绍: 整体功能简述: 硬件框图: 软件流程图: 原理图: 仿真图: 元器件清单: 主要部分代码展示:void main() 工程管理展示: 下载内容展示: 更详细代码视频讲解及代码下载请看 ...

  5. 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...

  6. 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真

    51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...

  7. 51单片机实现数码管显示小数

    51单片机实现数码管显示小数 要求 1 Proteus 面向编程的模型搭建 2 代码实现 2.1. 实现数码管刷新 2.2 对小数进行分解的函数 3 测试用例 4 仿真结果 要求 要求1:根据整数部分 ...

  8. 基于51单片机的数码管闹钟设计

    系统功能:利用定时器实现时钟,时钟可以通过独立按键设置,设有一个闹钟,闹钟时间可通过按键进行设置,时钟界面和闹钟界面可通过按键切换,当时钟和闹钟时间相同,蜂鸣器响,提示闹钟时间到等. 此系统重点在于: ...

  9. 基于51单片机定时宠物投喂自动喂食器

    资料编号:143 视频讲解: 143-基于51单片机的定时宠物投喂自动喂食器(源程序+原理图+PCB+全套毕设资料) 题目要求:设计一个基于51单片机的宠物自动投喂装置 具体要求: 1.可以定时进行投 ...

  10. 普中51单片机按键-数码管显示

    基于普中单片机按键-数码管显示 简介 1.硬件部分 普中单片机开发板 数码管 独立按键 2.软件部分 keil软件 硬件部分 普中单片机开发板 数码管 独立按键 (这些都是开发板的最基本的配置) 软件 ...

最新文章

  1. 看了毁你三观的PCB设计理论 高速PCB外层还要不要覆铜了
  2. setq 常驻内存lisp_常见Lisp中的set,setq和setf之间的区别?
  3. 网络动态负载均衡算法分析
  4. 为Visual Studio 2010添加HTML5的项目模板
  5. 状态输出导航栏html,css3与html5实现响应式导航菜单(导航栏)效果分享
  6. 服务器项目有哪些,怎么部署项目到服务器?服务器的特性有哪些?
  7. NSTimer实现读秒、倒计时等周期性操作
  8. Focal Loss 分类问题 pytorch实现代码(续1)
  9. 解决https无法缓存的问题
  10. Spring-context-AnnotationConfigUtils类
  11. 《CSS权威指南》第3版
  12. ug12对计算机配置要求,ug12.0对电脑配置要求
  13. Office 2007卸载
  14. 记录一次Win10莫名其妙被植入一个恶意软件
  15. 云计算上安装mysql,redis
  16. 《黑镜》(Black Mirror)
  17. UE 在C++中生成一个基于蓝图的Actor
  18. 嵩天老师Python面向对象-28,文本清洗及统计案例
  19. skywalking 之 告警篇
  20. 合同管理系统拥有怎样的使用价值?

热门文章

  1. 使用Vim/Neovim编辑二进制文件
  2. 如何快速找到微信支付的商户号和商户密钥?望相互转告!
  3. 计算机windows7桌面管理,win7自带桌面整理,win7系统怎么改回自带桌面
  4. 根据前序序列创建二叉树
  5. word批量修改图片的大小
  6. 【经典面试题】实现平方根函数sqrt
  7. 002HTML常用标签
  8. 中英文自动翻译(有道翻译、彩云小译)
  9. 重要发布全总结丨一文看懂阿里云弹性计算年度峰会
  10. java中乘法计算的三种方式 位运算中的另一种运算 — 左移运算