单片机数码管动态显示代码00-99(单片机数码管动态扫描)

数码管动态显示介绍

数码管动态显示,指的是将数字按照一定的时间间隔依次在数码管上显示,有一种比较流畅的效果,而不是直接显示。这种显示方式可以使用单片机来实现,通过对单片机的编程,让其按照一定的规律控制数码管显示,达到要求的效果。

单片机数码管动态显示代码00-99(单片机数码管动态扫描)

00-99动态显示实现思路

00-99动态显示实现的基本思路是,将两个数码管分别显示十位和个位数,然后通过更改十位和个位数的值,来达到动态显示的效果。因为数码管只能显示0-9的数字,所以需要使用数码管的数码表来实现数字转换,将10-99的数字转换成两个数码管需要显示的数字。在编程实现时,需要确定每个数码管引脚的控制逻辑,以及时序控制,以保证显示的流畅性。

00-99动态显示代码实现

以下是一段基于STC89C52单片机的00-99动态显示代码实现的示例:

```
#include

#define uint unsigned int
#define uchar unsigned char

sbit LSA = P2 ^ 2;
sbit LSB = P2 ^ 3;
sbit LSC = P2 ^ 4;

uchar code tabel[] = {
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f, // 9
0x00, // 空格
};

uchar num = 0; // 数字
uchar shiwei, gewei; // 十位和个位数

void delay(uint y) {
uint x, z;
for (x = y; x > 0; x--) {
for (z = 110; z > 0; z--);
}
}

void display() {
LSA = 0;
LSB = 0;
LSC = 0;
P0 = tabel[shiwei];
delay(5);
LSA = 1;
LSB = 0;
LSC = 0;
P0 = tabel[gewei];
delay(5);
}

void main() {
TMOD = 0x01; // 模式1
TH0 = 77; // 1ms
TL0 = 0xd6;
EA = 1; // 开启中断
ET0 = 1; // 开启定时器0中断
TR0 = 1; // 启动定时器0
while (1);
}

void timer0() interrupt 1 {
TH0 = 77;
TL0 = 0xd6;
num++; // 数字自增
if (num == 100) {
num = 0;
}
shiwei = num / 10; // 计算十位数
gewei = num % 10; // 计算个位数
display(); // 显示数值
}
```

这段代码的主要逻辑是,使用了定时器,每隔一段时间自动增加数字的值,然后根据数字的值,计算出十位和个位数,最后通过显示函数显示出来。这样可以保证数字的动态显示,以及显示的流畅性。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcui31p.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月26日 上午4:21
下一篇 2023年4月26日 上午4:22

猜你喜欢