51单片机 让数码管自动显示0至9的C程序。有没有比这个更简单的????

#include<reg52.h>//包含51单片机的头文件#defineuintunsignedintuinti,j;voidmain(){while(1){P0=0x... #include <reg52.h> //包含51单片机的头文件
#define uint unsigned int

uint i,j;
void main()
{
while(1)
{

P0=0xff; //数码管不显示,消隐
for(i=100;i>0;i--)
for(j=1000;j>0;j--);

P0=0x3; //数码管显示0
for(i=100;i>0;i--)
for(j=1000;j>0;j--);

P0=0x9f; //数码管显示1
for(i=100;i>0;i--)
for(j=1000;j>0;j--);

P0=0x25; //数码管显示2
for(i=100;i>0;i--)
for(j=1000;j>0;j--);
P0=0xd; //数码管显示3
for(i=100;i>0;i--)
for(j=1000;j>0;j--);

P0=0x99; //数码管显示4
for(i=100;i>0;i--)
for(j=1000;j>0;j--);
P0=0x49;
for(i=100;i>0;i--) //数码管显示5
for(j=1000;j>0;j--);

P0=0x41; //数码管显示6
for(i=100;i>0;i--)
for(j=1000;j>0;j--);
P0=0x1f; //数码管显示7
for(i=100;i>0;i--)
for(j=1000;j>0;j--);

P0=0x1; //数码管显示8
for(i=100;i>0;i--)
for(j=1000;j>0;j--);
P0=0x9; //数码管显示9
for(i=100;i>0;i--)
for(j=1000;j>0;j--);

}
}
展开
 我来答
娱乐小憨憨
2020-03-23 · 一个正在编辑故事的小新手
娱乐小憨憨
采纳数:11 获赞数:1924

向TA提问 私信TA
展开全部

可以通过代码优化的方式来简化代码。

一、设置延时函数

延时函数在单片机中有着让现实延时的能力,本程序中可以通过采用for循环方式进行延时,具体代码如下:

void delay()

uinti,j;

    for(i=100;i>0;i--)           

        for(j=1000;j>0;j--);

二、设置数码管显示数组

数组定义简单,而且访问很方便。所有元素类型相同,在数码管显示程序中可以让程序代码减少。数组代码如下:

chara[10]={0xff,0x3,0x9f,0x25,0xd,0x99,0x49,0x41,0x1f,0x1,0x9};

三、设置数码管显示循环

数码管显示循环可以不用编写一次又一次的数码管显示代码,既方便又简洁。具体代码如下:

for(int i=0;i<10;i++)

P0=a[i];

delay();

扩展资料

单片机程序进行简化可以查看是否有反复出现的代码序列,整合成循环进行更改。同一类型且用法相同的变量可以整合成数组,方便对各个内容进行访问。有特定功能的代码段可以定义一个函数进行访问。

注意:用C51语言编辑的单片机程序与普通C语言不同,C51语言中的数据类型和标准c中的数据类型不同。

东莞市友贸实业有限公司_
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据... 点击进入详情页
本回答由东莞市友贸实业有限公司_提供
白羽沉
推荐于2018-02-25 · 超过10用户采纳过TA的回答
知道答主
回答量:16
采纳率:0%
帮助的人:15万
展开全部

就把你的改成调用函数了



#include <reg52.h>          //包含51单片机的头文件#define uint unsigned int
char a[10]={0xff,0x3,0x9f,0x25,0xd,0x99,0x49,0x41,0x1f,0x1,0x9};
void delay()
{
    uint i,j;
    for(i=100;i>0;i--)           for(j=1000;j>0;j--);
}
void main()
{
    while(1)
    {
        for(int i=0;i<10;i++)
        {
            P0=a[i];
            delay();
         }    
    }
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-10-08
展开全部
肯定有的,代码会简单很多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式