计数器+按钮控制数码管显示
目录
0x00 前言
0x01 定时器/计数器的控制
一、定时器/计数器的方式控制寄存器(TMOD)
二、定时器/计数器控制寄存器(TCON)
0x02 题目要求与解题
一、题目
二、解题
1、步骤理解
2、代码与成品图
0x03 反思与总结
0x00 前言
- 抄袭可以得到公之于众的结果,理解过程则可销毁最后的证据。 --涂寐
0x01 定时器/计数器的控制
一、定时器/计数器的方式控制寄存器(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 |
位符号 |
取值 |
功能 |
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)
位地址 |
8F |
8E |
8D |
8C |
8B |
8A |
89 |
88 |
位符号 |
TF1 |
TR1 |
TF0 |
TR0 |
位符号 |
取值 |
功能 |
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 题目要求与解题
一、题目
- 选用定时/计数器T0,工作方式1,按键按三次加1。
- 选用定时/计数器T1,工作方式2,按键按五次加1。
- 仿真原理图:
二、解题
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口的驱动电流不够大,建议接共阳极的数码管
- 宁愿线路弯曲,也不建议旋转数码管,避免显示结果与预期相反(仅因旋转)
- 亲手敲击相较于复制粘贴,是截然不同的,它能产生叩击记忆之门的声响。 --涂寐
计数器+按钮控制数码管显示相关推荐
- 应广单片机PFS123按键中断控制数码管显示例程
目录 应广单片机PFS123按键中断控制数码管显示视频 led数码管图片 应广单片机PFS123按键中断控制数码管显示代码 应广科技网址,开发工具,PMS123规格书:http://www.padau ...
- 4*4矩阵按键控制数码管显示0-F
4*4矩阵按键原理图如下: 根据原理图,汇编程序代码如下: 4*4矩阵按键控制数码管显示0-F.刚学单片机汇编,是根据单片机C语言思路来写的,写的不好,如果发现有错误或会导致程序跑飞的,麻烦帮我指出, ...
- 51单片机按键控制数码管显示0-9
实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...
- c语言控制数码管显示时间,单片机 控制 数码管显示
常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...
- 单个按键控制数码管显示数字(2)
一.主要功能 单个按键控制数码管显示数字 二.代码实现 代码如下: #include <reg52.h> sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit AD ...
- 零基础无实物一步一步学PLCS7-1200仿真(八)-按键控制数码管显示
项目要求:按照项目的功能完成按键控制数码管的技术显示. 项目目的:学习比较指令.数学函数指令和加减计数指令和数码管的显示原理. 项目功能:数码管可以显示两位数00-99,然后可通过四个按键完成数码管的 ...
- Arduino(三)——按钮控制数码管
本节,我们学习一下内容 1.用按键控制数码管从1~9显示,然后再清零 2.外部中断函数 1.我们先来看下面的图 我们需要根据我们按键是否连通来连接我们的电路,所以我们连接好后就会是这样的 看完了连接图 ...
- jquery-通过按钮控制模态的显示与隐藏
起点素材: https://cloud.189.cn/t/VVZr2qqYriey (0817-蒙态框) 终点素材: https://cloud.189.cn/t/rIRBzeqMVn2m(访问码:6 ...
- multisim仿真D触发器设计的模六计数器并在数码管显示0-5
D触发器设计的模6计数器 设计思路从000计数到101,并用卡诺图进行化简,没有输出为摩尔型 用quartus仿真看波形 BCD译码 选择74LS48芯片,将D触发器输出Q2Q1Q0对应接到输入管脚C ...
- 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示
一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源.本例用移位寄存器74HC164作为数码管驱动进行控制. 74HC164特性 是一种8位串转并口的控制 ...
最新文章
- mysql 如何搜索自增列_mysql 如何搜索自增列
- 如何优雅的在 vue 中使用 非响应式对象_一篇文章上手Vue3中新增的API
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmKnowledge日积月累功能的实现...
- R数据导入导出(一): read.table()和read.csv()的区别
- 结对-贪吃蛇游戏-设计文档
- ReentrantLock学习
- IDEA :Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
- Java与Web前端发展前景及薪资对比
- python进程池win出错_解决windows下python3使用multiprocessing.Pool出现的问题
- 计算机学office有必要吗,计算机二级office要学多久
- elcipse 中利用maven创建web工程
- Linux sogou input method
- C4D 展UV的那些坑
- 小学计算机教师面试试题及答案,2019下半年小学信息技术教师资格证面试真题及答案汇总...
- 游戏开发的专业术语整理
- 《寒江独钓windows内核安全编程》学习笔记之一
- 电商数据抓取的几种方式分享-开发平台接口、网络爬虫数据、数据挖掘
- 炒好“AI+安防”这盘菜的同时,安防‘老大’海康威视也需保持警惕
- 【新书预告】《Adobe Flex大师之路》即将上市,敬请关注!
- 如何判断鼠标按下的是左键还是右键