【STC15单片机】定时器0+静态数码管显示0~9

简介: 【STC15单片机】定时器0+静态数码管显示0~9

15单片机定时器0配置

学会偷懒,直接在STC-ISP里计算好,复制粘贴即可

定时长度最大应该是5.925ms,就按最大定时时间是5ms来算

配置如下:

0be2236da1c2530d6d66ae38d4333aaf_52fffaed7f384336b19a7022e2a58353.png

如果选择16位自动重载模式,就可以不在中断里重新赋值 (重新赋值应该也没关系)


1秒精准定时程序

1s精准定时,用数码管显示不同数字来提现

定时器0初始化

新建一个Timer0.c和Timer0.h文件,将下面这段代码粘过去即可

1. void Timer0_Init(void)
2. {
3.  //5ms 定时器0 16位自动重载 1T
4.  AUXR |= 0x80;   //定时器时钟1T模式
5.  TMOD &= 0xF0;   //设置定时器模式
6.  TL0 = 0x00;   //设置定时初始值
7.  TH0 = 0x28;   //设置定时初始值
8.  TF0 = 0;    //清除TF0标志
9.  TR0 = 1;    //定时器0开始计
10.   ET0 = 1;
11.   EA = 1; 
12. }
13. 
14. /*定时器0中断服务函数模板
15. void Timer0_Rountine(void) interrupt 1
16. {
17.   static unsigned int Count0;
18. 
19. //自动重载模式就不需要加这两句
20. //  TL0 = 0x00;   //设置定时初始值
21. //  TH0 = 0x28;   //设置定时初始值
22. 
23.   Count0++;
24.   if(Count0 >= 200)
25.   {
26.     //执行操作
27.     Count0 = 0; //软件复位
28.   }
29. } 
30. */

与51单片机不同的是 15单片机要配置 AUXR|= 0x80;        //定时器时钟1T模式

15的运行速率就比51单片机提升12倍,但是51单片机最大定时时间比15长

定时器0中断服务子函数

1. void Timer0_Rountine(void) interrupt 1
2. {
3.  static unsigned int Count0;
4.  static unsigned char i = 0;
5. 
6. //  自动重载,不用加这两句了 
7. // TL0 = 0x00;   //设置定时初始值
8. // TH0 = 0x28;   //设置定时初始值
9. 
10.   Count0++;
11.   if(Count0 >= 200) //200*5ms = 1s
12.   {
13.     P0 = tab[i];
14.     i++;
15.     if(i>=18) i = 0;  //越界复位
16.     Count0 = 0; //软件复位
17.   }
18. }

在中断里进行控制,中断定时时间是5毫秒,想要定时1秒,就需要200个5ms

在中断服务函数里定义一个静态局部变量Count0,每5ms进一次中断,Count0就++

用if判断,直到Count0加到200,控制函数就写将数码管从0...9~A...F依次显示出来

主函数

1. #include <STC15F2K60S2.H>
2. #include "Timer0.h"
3. 
4. /*共阳极码表 ABCDEF都是大写*/
5. unsigned char tab[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x80, 0xC6, 0xC0, 0x86, 0x8E, 0xBF, 0xFF};
6.             //0     1     2     3     4     5     6     7     8     9     A     B     C     D     E     F     -    灭
7. 
8. 
9. void main()
10. {
11.   P2 = 0xA0; P0 = 0x00; P2 = 0xC0; P0 = 0xFF; P2 = 0xFF;  //初始化,P0控制数码管
12.   Timer0_Init();
13.   while(1)
14.   { }
15. }


相关文章
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
|
8天前
|
芯片 数据格式
【51单片机】要实现动静态数码管,你首先需要知道这些【数码管项目前置知识】
【51单片机】要实现动静态数码管,你首先需要知道这些【数码管项目前置知识】
|
8天前
|
芯片 数据格式
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
|
8天前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
22 1
|
8天前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
23 1
|
8天前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
64 0
|
8天前
|
物联网
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
47 0
|
7天前
|
芯片
AT89S52单片机的最小应用系统
AT89S52单片机的最小应用系统
6 0