用单片机做个计数器表白2019
1. 硬件原理
主控用的是一块STM32的最小系统板,所有的IO口都已引出,方便用杜邦线连接其他模块,核心板MCU采用的型号是STM32F103RCT6,用的晶振是8M的。计数的显示用的是8位数码管模块,数码管的驱动用美信的Max7219 LED驱动芯片.
最小系统板的硬件原理图也比较简单,USB5V输入,经过开关后通过3.3V的LDO稳压供给单片机,有LED1作为上电指示,LED2连接STM32的IO口PD2,外加一些排针引出所有的GPIO口,原理图如下:
下面是数码管模块的原理图,用MAX7219驱动数码管。MAX7219是串行接口 8 位 LED 显示驱动器,接口与SPI兼容,并且亮度可通过R1的大小调节,使用起来也比较方便。
2. 程序解读
算法描述
设需要的显示数字为num,num为长字节的无符号整型变量,在程序里设定num每10ms自加一次,即每10ms计数一次,然后通过数码管显示出来,注意num的计数满了之后需要清0。因为计数间隔设定是10ms,所以程序里的2个延时是5ms。
代码解读
详细解读见代码。
3. 实物效果
程序写好之后编译OK,通过J-LINK下载到STM32,下载完成后可以看到数码管在飞快的计数了,计数器制作成功,当计数到20191888时,刚好抓拍了一张,好意头啊,2019要发发发,提前祝大家2019发大财,行大运哈。
计数器计数中
2019要发发发
朋友们有没有觉得这个单片机创作很有趣,对即将到来的2019又有哪些期盼和目标呢?欢迎留言评论,点赞和转发,喜欢的记得关注本头条号哦。
长按图片识别二维码关注
单片机定时器计数器的结构以及工作原理
定时器/计数器的结构
定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
计数器输入的计数脉冲源
系统的时钟振荡器输出脉冲经12分频后产生;
T0或T1引脚输入的外部脉冲源。
计数过程
每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
定时应用
用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。
计数运用
用作计数器:此时设置为计数器模式,外部事件计数脉冲由T0或T1引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。
工作方式寄存器(TMOD)
GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时器/计数器工作;(即需要一个启动条件)
GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时器/计数器工作,即需要两个启动条件。
C/T :定时/计数模式选择位。
C/T =0为定时模式; C/T =1为计数模式。
M1M0:工作方式设置位。
计数器工作方式选择
M1 M0 工 作 方 式 功 能 说 明
0 0 方式0 13位计数器
0 1 方式1 16位计数器
1 0 方式2 自动重装8位计数器
1 1 方式3 定时器0:分成两个8位
定时器1:停止计数
定时器/计数器的控制
控制寄存器TCON
TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时器/计数器的启动和中断申请。其格式如下:
TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TR1(TCON.6):T1起/停控制位。1:启动 0:停止
TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
TR0(TCON.4):T0起/停控制位。1:启动 0:停止
定时器/计数器的工作方式
方式1
方式1为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
方式2
方式2的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器 。
方式3
方式3为自动重装初值的8位计数方式。
在方式3下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。
方式4
方式4只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。工作方式4将T0分成为两个独立的8位计数器TL0和TH0 。
本文转载自网络,如涉版权请联系我们删除
看完本文有收获?请分享给更多人
回复关键词有干货: 电路设计丨电容丨三极管丨PCB丨接地‧‧‧‧‧‧
长按二维码识别关注
阅读原文可一键关注+历史信息
相关问答
单片机的计数器 是干什么的 - 懂得以51单片机16位定时计数器1(T1)来讲,通俗解释:计数是T1是一个能盛65536(十六位时)滴水的水盆,在水龙头下水一滴滴地滴入盆中。如果盆是空的那水在滴...
单片机 C语言 计数器 程序?//timer0设定为计数器模式1TMOD&=0xf0;//清除原来的设定TMOD|=0x05;//T0为计数器模式1TH0=0;TL0=0;//从0开始计数TR0=...
单片机 定时 计数器 最大定时时间怎么算?单片机定时计数器最大定时时间取决于所用时钟周期T和定时器位长,比如T=10mS,定时器位长8位(也就是数字最大设置为255),每个时钟到来时,定时计数器采用减1操...
单片机 定时 计数器 应如何选用?在选择单片机定时计数器时,需要考虑以下几个因素。首先,根据实际需求确定计数器的精度和范围,例如需要计算毫秒级别的定时器还是微秒级别的定时器。其次,考...
单片机的 定时器资源是什么 计数器 ?单片机的定时器资源是脉冲计数器51单片机外部脉冲计数原理:51单片机外部脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1。51单...
单片机 计算题急利用定时/ 计数器 T0工作于方式0,1,2,3,产生1ms...[最佳回答]都是工作于工作方式10.5msORG0000HLJMPSTARTORG000BHLJMPTimer0InterruptSTART:MOVSP,#60HLCALLInitTimer0LOOP...
单片机 工作主频12MHz,定时器 计数器 T0工作方式1,计算定时10ms的初值是多少?(2^16—计数初值)╳晶振周期╳12=定时时间(2^16—计数初值)╳1/(12╳10^6)╳12=10Ms=10*10^(-3)S计数初值=2^16—10^4=55536=D8F0HTH0=...
STC11F60XE 单片机 定时器/ 计数器 2用于计数模式,计数P1.0口发出的脉冲,求C程序,高手帮帮忙?中断中你还需要把WAKE_CLKO寄存器配置一下,关闭P1.0的CLKOUT2功能,还原到正常的IO模式,才能保证P1=0XFF有效中断中你还需要把WAKE_CLKO寄存器配置一下,关闭P1...
单片机 定时/ 计数器 工作于定时和计数方式时有何异同点?定时工作模式和技术工作模式的工作原理相同,只是计数脉冲来源有所不同:处于计数工作模式时,加法计数器对芯片端子T0(P3.4)或T1(P3.5)上的输入脉冲计数;处于...
MCS-51 单片机计数器 (65536-50000)/256关于65536的疑惑2的15...[最佳回答]1、2的15次方是32768;2、0-65535,总共有65536个数.3、从0开始加,加到65535(也就是计数器全为1时,是65535),总共加了65535次.你理解的65535次是没错...