登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 用定时器控制数码管

[复制链接]
发表于 2023-1-28 17:25:46 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51单片机
学习安排: 用定时器控制数码管
开始时间: 2023-01-28
结束时间: 2023-01-28
从零开始的单片机学习(51单片机)

用定时器控制数码管





2023-01-26 (7).png 我们点亮第一个数码管,需要让LEDS0输出低电平, 1674891857660.jpg 结合可得,

                                                  让p2.0=0; p2.1=0; p2.2=0即可。



若想让数码管显示数字的话,我们可以给DB0~7不同位置上加上电压就可以显示出相应的数字,如:从DB0~7依次附上11111100电平,就可显示为“0”。但是这样太麻烦,所以可以把二进制转换成十六进制的数来表示,如图所示:

2023-01-26.png 为达到数字跳动的效果,我们可以把从0到9对应的十六进制依次放入一个数组中来
2023-01-28 (6).png 然后启动单片机的定时器功能:



2023-01-28 (4).png 第一:设置特殊功能寄存器TMOD,配置好工作模式。

       2023-01-27 (7)(1).png TMOD=0x01(工作模式1)



第二:设置寄存器TH0和TL0的初值

TL0=0x00(进行复位)

TH0=0xB800: 设机器周期为x,x*12/11059200=0.02(秒) x=18432   

                       TH0+x=65536   所以 TH0=0xB800(十六进制)



这样就可以让定时器从B800开始计数,直到溢出,也就是TF0=1,然后再次循环,一共

                            循环50次,每次0.02秒,这样就可以达到一秒的时长了



第三,设置TCON,通过TR0置1来让定时器开始计数。

TR0=1(打开定时器)



第四:判断TCON寄存器的TF0位,监测定时器溢出情况。

2023-01-28 (8).png 在这里P0代表着P0.0~P0.7的引脚,把数组中的值赋值给各个引脚


数组名 【0~9】对应着数组中第1到10的元素。

                                 


这样我们就可以有规定间隔地点亮数码管



2023-01-26 (8).png
2023-01-26 (9).png
2023-01-26 (11).png
2023-01-26 (1).png
2023-01-28 (5).png
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表