51单片机0到99循环显示
时间: 2024-01-05 22:02:42 浏览: 40
您好,我明白您的要求和限制。针对您的问题,以下是一个简单的51单片机程序,用来实现从0到99循环显示:
```C
#include<reg52.h> //头文件
void delay(unsigned int); //延时函数
void main()
{
unsigned char i,j;
while(1)
{
for(i=0;i<=9;i++) //先循环0-9
{
for(j=0;j<=9;j++) //再循环0-9
{
P0=i*16+j; //通过公式将两个数字合并后显示在数码管上
delay(10); //延时
}
}
}
}
void delay(unsigned int xms) //延时函数
{
unsigned char i,j;
for(i=xms;i>0;i--)
{
for(j=110;j>0;j--);
}
}
```
希望这个程序可以帮到您。如果您有其他问题或需求,可以随时向我提出。
相关问题
51单片机数码管显示0到99
以下是基于51单片机的数码管显示0到99的代码:
```c
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar shi,ge,i;
while(1)
{
for(i=0;i<100;i++)
{
shi=i/10;
ge=i%10;
LSA=0;LSB=0;LSC=0;P0=table[shi];delay(100);
LSA=1;LSB=0;LSC=0;P0=table[ge];delay(100);
}
}
}
```
在这个代码中,我们使用了一个表(table)数组来存储每个数字对应的数码管段码,然后使用循环来依次显示0到99的数字。在循环中,我们首先将数字分解成十位数(shi)和个位数(ge),然后使用三个控制引脚(LSA, LSB, LSC)来控制数码管的选择,最后将相应的段码输出到P0口即可。
需要注意的是,在这个代码中,我们使用了一个delay()函数来实现延时,这个函数的实现方式比较简单,就是通过两个for循环来进行延时。在实际应用中,可能需要根据具体的情况进行调整。
51单片机单数码管0到99循环显示的程序
很高兴为您解答此问题。
以下是基于单片机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,则表示定时器计时溢出,需要重新计时。然后依次输出数码管所需的控制字。最后,控制一个可以被看到的最小延迟量,以确保可以观察到数码管的变化。
希望这个回答能够帮到您,如有更多问题,请继续提问!