在stm32中如何通过定时器显示数码管?需要把测量的数据实时显示到数码管上。
数码管就是有分段的LED组合显示数字的模块,对于共阴极数码管,给相应的段高电平,该段LED被点亮,默认状态输出全0,关闭所有段;对于共阳极的数码管,给相应的段低电平,该段LED被点亮,默认状态输出全高电平,关闭所有的段。要让数码管显示数字,需要将要显示的数字转换成八段数码管(带小数点)对应的码值,码值不复杂,一般可以自己进行变换。
点亮数码管常用的有两种方式,静态、动态,静态的显示数码管就是给对应GPIO一直输出电平(高或者低),这样显示的亮度较大,比较费电;动态的数码管显示是以给定的频率不断地去给相应的GPIO输出电平,频率越高,约近似于一直输出的状态,频率越低,亮度也会降低,过低时人的肉眼就能看出闪烁变化,但是动态的输出比较省电,还比较省GPIO,可以通过片选信号控制多个数码管同时显示一个组合的数据,即通过片选轮流让数码管点亮、熄灭,造成视觉上多个数码管同时点亮的错觉。
通过定时器控制时,在定时器中断处理函数中关闭当前数码管的显示,设置下一个要显示的数码管使能,并输出显示的数据,逐个数码管显示。
不好意思,不是n的值赋值给自动装载寄存器,n的值通过取余赋值给数码管,自动装载寄存器的值是自己设定的,比如自己设为250,那频率为250khz的时钟定时器就是一ms溢出一次,这个可以自己设定。
希望对你有帮助。
首先定义一个整型变量n,用这个变量来储存实时数据。再把这个数据赋值给定时器的自动装载寄存器,通过定时器计数,当达到该数据时就发生更新中断(即溢出),在中断函数中把这个值赋值给数码管的千位百位等等。数码管用动态显示即刻实时显示测回的数据。
ps:还可以通过调节定时器的预分频寄存器来调节中断更新的时间,比如大约一秒数码管的数值更新一次等等。具体可以自己去调下定时器时钟的频率。
希望对你有帮助。。
数码管显示用动态扫描的方式。和定时器有关的部分代码,也就是定时扫描。保证每个数码管的刷新率60HZ 以上就没问题,看不出闪烁。
比如定时器中断间隔20ms,在中断服务程序里刷新数码管显示。
1、你可以驱动数码管显示出数值来
2、可以自己用定时器进行中断,读取你要的数值
3、将两部分程序加在一起,对于你想显示的数据进行划分,那几位显示哪个数值,就可以了
建议好好去学51,再学STM32,学51不是用来以后使用的,是用来学习其他芯片打基础的,如果你51学的好,这个问题你就可以很快地进行解决了
定时器与显示并没有直接关系,最多就是个刷屏的时间控制。
而测量 的数据,可以使用定时进行触发AD转换