51单片机单数码管0到99循环显示的程序
时间: 2023-11-24 16:10:17 浏览: 62
很高兴为您解答此问题。
以下是基于单片机51的单数码管0到99循环显示的程序:
```
#include<reg51.h>
unsigned char code LedChar[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char num=1,i;
void delay(unsigned int ms)
{
unsigned int i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
TMOD=0x01; //设置定时器0为模式1
TH0=(65536-1000)/256; //为定时器0设定初值
TL0=(65536-1000)%256; //为定时器0设定初值
TR0=1; //启动定时器0
while(1)
{
if(TF0==1)//到了1000ms
{
TF0=0;//用TF0置位表示定时器0计时溢出
TH0=(65536-1000)/256; //为定时器0重新设定初值,计时器0再次开始计时
TL0=(65536-1000)%256;
P2=0xFF; //消隐
P0=LedChar[num/10];
P2=0xFE;//选择一位数码管
delay(5);
P2=0xFF; //消隐
P0=LedChar[num%10];
P2=0xFD;//选择十位数码管
delay(5);
num++;
if(num>99) num=1;//循环显示0到99
}
}
}
```
本程序采用定时器方式,每1000ms 呈现一个数码管的数值。程序中初值采用定值,初值为1000,所以程序在启动时首先要对定时器的初值进行设定。在程序执行过程中,若定时器TF0的值为1,则表示定时器计时溢出,需要重新计时。然后依次输出数码管所需的控制字。最后,控制一个可以被看到的最小延迟量,以确保可以观察到数码管的变化。
希望这个回答能够帮到您,如有更多问题,请继续提问!
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)