目录

0x00 前言

0x01 定时器/计数器的控制

一、定时器/计数器的方式控制寄存器(TMOD)

二、定时器/计数器控制寄存器(TCON)

0x02 题目要求与解题

一、题目

二、解题

1、步骤理解

2、代码与成品图

0x03 反思与总结


0x00 前言

  • 抄袭可以得到公之于众的结果,理解过程则可销毁最后的证据。    --涂寐

0x01 定时器/计数器的控制

一、定时器/计数器的方式控制寄存器(TMOD)

定时器/计数器方式寄存器TMOD的格式

位序

B7

B6

B5

B4

B3

B2

B1

B0

位符号

GATE

C/~T

M1

M0

GATE

C/~T

M1

M0

高4位(T1)

低4位(T0)

例:TMOD=0x05(0000 0101),则T1=0,T0=5。在T0中,GATE=0,C/~T=0,M1M2=01

TMOD寄存器的功能理解

位符号

取值

功能

GATE

0

仅受TCON寄存器控制

1

还受外部中断引脚(INT0/INT1)上电平影响

C/~T

0

定时器模式

1

计数器模式

M1M0

00

方式0,13位定时器/计数器。高8位,低5位。2^13=最高计数值8192

01

方式1,16位定时器/计数器。高8位,低8位。2^16=最高计数值65536

10

方式2,带初值自动重装的8位定时器/计数器

11

方式3,仅T0,且T0分成两个独立的8位寄存器,此时T1停止工作

注:

1、TMOD寄存器:特殊功能寄存器,用于控制定时器/计数器T0、T1的工作方式

2、TMOD寄存器的字节地址为89H,只能进行字节操作,即仅能对TMOD寄存器整体赋予初值

二、定时器/计数器控制寄存器(TCON)

定时器/计数器控制寄存器TCON的格式

位地址

8F

8E

8D

8C

8B

8A

89

88

位符号

TF1

TR1

TF0

TR0

TCON寄存器的功能理解

位符号

取值

功能

TF1/TF0

0

定时器/计数器的溢出标志位。溢出时TF*=1,则定时器/计数器中断请求

注:若查询该标志位,当检测到TF*=1时,需要软件清0(TF*=0)

例:while(TF0==0); TF=0;    //不断查询TF0是否为1,来判断时间的到达

1

TR1/TR0

0

定时器/计数器的启动/停止位

启动:TR*=1,若GATE=0,则直接启动;反之(GATE=1),则需要INT*为高电平才能启动

1

0x02 题目要求与解题

一、题目

  1. 选用定时/计数器T0,工作方式1,按键按三次加1。
  2. 选用定时/计数器T1,工作方式2,按键按五次加1。
  3. 仿真原理图:

二、解题

1、步骤理解

  • 请看上一篇文章:定时器控制数码管显示_柠鹿的轨迹-CSDN博客_定时器控制数码管显示

2、代码与成品图

1.选用定时/计数器T0,工作方式1,按键按三次加1

#include <reg51.h>
//要求:选用定时/计数器T0(只用寄存器TMOD的低四位),工作方式1(16位定时器),按键按三次加1
unsigned char num[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09}; //共阳极
unsigned char s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极
unsigned char count=0;
void main(){TMOD=0x05; //0000 0101TH0=(65536-3)/256; //按三下,即减去3,再右移八位作为最高位TL0=(65536-3)%256;TR0=1;P0=num[count]; P2=s[count];while(1){while(TF0==0);TF0=0; count++;P0=num[count%10];P2=s[count%10];TH0=(65536-3)/256;TL0=(65536-3)%256;}
}

2.选用定时/计数器T1,工作方式2,按键按五次加1

#include <reg51.h>
//要求:选用定时/计数器T1(只用寄存器TMOD的高四位),工作方式2(8位定时器,初值自动重装载),按键按五次加1
unsigned char num[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09}; //共阳极
unsigned char s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极
unsigned char count=0;
void main(){TMOD=0x60; //0110 0000TH1=256-5; //按五下,即减去5得初值TL1=256-5;TR1=1;P0=num[count]; P2=s[count];while(1){while(TF1==0);TF1=0; count++;P0=num[count%10];P2=s[count%10];}
}

0x03 反思与总结

  • 有些IO口的驱动电流不够大,建议接共阳极的数码管
  • 宁愿线路弯曲,也不建议旋转数码管,避免显示结果与预期相反(仅因旋转)
  • 亲手敲击相较于复制粘贴,是截然不同的,它能产生叩击记忆之门的声响。 --涂寐

计数器+按钮控制数码管显示相关推荐

  1. 应广单片机PFS123按键中断控制数码管显示例程

    目录 应广单片机PFS123按键中断控制数码管显示视频 led数码管图片 应广单片机PFS123按键中断控制数码管显示代码 应广科技网址,开发工具,PMS123规格书:http://www.padau ...

  2. 4*4矩阵按键控制数码管显示0-F

    4*4矩阵按键原理图如下: 根据原理图,汇编程序代码如下: 4*4矩阵按键控制数码管显示0-F.刚学单片机汇编,是根据单片机C语言思路来写的,写的不好,如果发现有错误或会导致程序跑飞的,麻烦帮我指出, ...

  3. 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...

  4. c语言控制数码管显示时间,单片机 控制 数码管显示

    常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...

  5. 单个按键控制数码管显示数字(2)

    一.主要功能 单个按键控制数码管显示数字 二.代码实现 代码如下: #include <reg52.h> sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit AD ...

  6. 零基础无实物一步一步学PLCS7-1200仿真(八)-按键控制数码管显示

    项目要求:按照项目的功能完成按键控制数码管的技术显示. 项目目的:学习比较指令.数学函数指令和加减计数指令和数码管的显示原理. 项目功能:数码管可以显示两位数00-99,然后可通过四个按键完成数码管的 ...

  7. Arduino(三)——按钮控制数码管

    本节,我们学习一下内容 1.用按键控制数码管从1~9显示,然后再清零 2.外部中断函数 1.我们先来看下面的图 我们需要根据我们按键是否连通来连接我们的电路,所以我们连接好后就会是这样的 看完了连接图 ...

  8. jquery-通过按钮控制模态的显示与隐藏

    起点素材: https://cloud.189.cn/t/VVZr2qqYriey (0817-蒙态框) 终点素材: https://cloud.189.cn/t/rIRBzeqMVn2m(访问码:6 ...

  9. multisim仿真D触发器设计的模六计数器并在数码管显示0-5

    D触发器设计的模6计数器 设计思路从000计数到101,并用卡诺图进行化简,没有输出为摩尔型 用quartus仿真看波形 BCD译码 选择74LS48芯片,将D触发器输出Q2Q1Q0对应接到输入管脚C ...

  10. 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示

    一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源.本例用移位寄存器74HC164作为数码管驱动进行控制. 74HC164特性   是一种8位串转并口的控制 ...

最新文章

  1. mysql 如何搜索自增列_mysql 如何搜索自增列
  2. 如何优雅的在 vue 中使用 非响应式对象_一篇文章上手Vue3中新增的API
  3. 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmKnowledge日积月累功能的实现...
  4. R数据导入导出(一): read.table()和read.csv()的区别
  5. 结对-贪吃蛇游戏-设计文档
  6. ReentrantLock学习
  7. IDEA :Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
  8. Java与Web前端发展前景及薪资对比
  9. python进程池win出错_解决windows下python3使用multiprocessing.Pool出现的问题
  10. 计算机学office有必要吗,计算机二级office要学多久
  11. elcipse 中利用maven创建web工程
  12. Linux sogou input method
  13. C4D 展UV的那些坑
  14. 小学计算机教师面试试题及答案,2019下半年小学信息技术教师资格证面试真题及答案汇总...
  15. 游戏开发的专业术语整理
  16. 《寒江独钓windows内核安全编程》学习笔记之一
  17. 电商数据抓取的几种方式分享-开发平台接口、网络爬虫数据、数据挖掘
  18. 炒好“AI+安防”这盘菜的同时,安防‘老大’海康威视也需保持警惕
  19. 【新书预告】《Adobe Flex大师之路》即将上市,敬请关注!
  20. 如何判断鼠标按下的是左键还是右键

热门文章

  1. DEV 报表设计分组
  2. 安卓手机格式化怎么弄_安卓手机怎么格式化?
  3. Java 线程池配置的常见误区
  4. 操作系统-程序执行时间分析
  5. 关于DDS文件格式的说明
  6. android webview 跳转系统浏览器,webview 调用系统浏览器怎么解决
  7. quorum-maker中遇到的问题
  8. 运维排查篇 | 访问nginx出现403错误
  9. 【go1.18】error obtaining VCS status: exit status
  10. 从网页中获取图片链接的方法。