找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3272|回复: 21
收起左侧

求大神解决单片机数字管数字循环0-9 再到9-0的程序错误

  [复制链接]
ID:760624 发表于 2020-5-27 17:57 | 显示全部楼层 |阅读模式
5黑币
程序如下怎么修改下可以变成数字循环由0-9 9-0

                        #include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
void delay()
{
uchar i,j;
for(i=0;i<200;i++)
for(j=0;j<250;j++);
}
main()
{
uchar i;
    i=10;
    while(1)
    {
    if(i>10)i=10;
    P1=table;
    delay();
    i--;
    }
}
W$U5YCW(S@@Q7L`G26)WD4A.png

最佳答案

查看完整内容

//数码管(共阴)循环显示0-9 再到9-0的程序 #include #define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay() { uchar i,j; for(i=0;i
回复

使用道具 举报

ID:94031 发表于 2020-5-27 17:57 | 显示全部楼层
味子橙的欢喜 发表于 2020-5-28 10:01
我试了试用公阳数码管直接就不会亮,你可以把共阴程序改下发给我吗

//数码管(共阴)循环显示0-9 再到9-0的程序
#include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{
        uchar i,j;
        for(i=0;i<200;i++)
        for(j=0;j<250;j++);
}
main()
{
        while(1)
        {
                uchar i;
               
                for(i=0;i<18;i++)
                {
                        switch (i)//
                        {
                                case(0):P1=table[0];delay();break;
                          case(1):P1=table[1];delay();break;
                          case(2):P1=table[2];delay();break;
                          case(3):P1=table[3];delay();break;
                                case(4):P1=table[4];delay();break;
                          case(5):P1=table[5];delay();break;
                          case(6):P1=table[6];delay();break;
                          case(7):P1=table[7];delay();break;
                                case(8):P1=table[8];delay();break;
                          case(9):P1=table[9];delay();break;
                          case(10):P1=table[8];delay();break;
                          case(11):P1=table[7];delay();break;
                                case(12):P1=table[6];delay();break;
                          case(13):P1=table[5];delay();break;
                          case(14):P1=table[4];delay();break;
                          case(15):P1=table[3];delay();break;
                                case(16):P1=table[2];delay();break;
                          case(17):P1=table[1];delay();break;
                        }
                }
        }
}
回复

使用道具 举报

ID:660091 发表于 2020-5-27 21:10 | 显示全部楼层
两个for循环,一个从0-9,一个从9-0就行了
回复

使用道具 举报

ID:94031 发表于 2020-5-27 22:20 | 显示全部楼层
//数码管循环显示0-9 再到9-0的程序
#include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{
        uchar i,j;
        for(i=0;i<200;i++)
        for(j=0;j<250;j++);
}
main()
{
        while(1)
        {
                uchar i;
               
                for(i=0;i<20;i++)
                {
                        switch (i)//
                        {
                                case(0):P1=~table[0];delay();break;
                          case(1):P1=~table[1];delay();break;
                          case(2):P1=~table[2];delay();break;
                          case(3):P1=~table[3];delay();break;
                                case(4):P1=~table[4];delay();break;
                          case(5):P1=~table[5];delay();break;
                          case(6):P1=~table[6];delay();break;
                          case(7):P1=~table[7];delay();break;
                                case(8):P1=~table[8];delay();break;
                          case(9):P1=~table[9];delay();break;
                          case(10):P1=~table[8];delay();break;
                          case(11):P1=~table[7];delay();break;
                                case(12):P1=~table[6];delay();break;
                          case(13):P1=~table[5];delay();break;
                          case(14):P1=~table[4];delay();break;
                          case(15):P1=~table[3];delay();break;
                                case(16):P1=~table[2];delay();break;
                          case(17):P1=~table[1];delay();break;
                        }
                }
        }
}
回复

使用道具 举报

ID:319023 发表于 2020-5-28 00:07 | 显示全部楼层
可以再定义一个变量,控制i++ 和i-- ,这样从0-9  和9-0都可以实现了。
回复

使用道具 举报

ID:760624 发表于 2020-5-28 08:12 | 显示全部楼层
xuyaqi 发表于 2020-5-27 22:20
//数码管循环显示0-9 再到9-0的程序
#include
#define uchar unsigned char

程序输入进去数字管显示数字不完整是怎么回事
回复

使用道具 举报

ID:760624 发表于 2020-5-28 08:14 | 显示全部楼层
随风飘远 发表于 2020-5-28 00:07
可以再定义一个变量,控制i++ 和i-- ,这样从0-9  和9-0都可以实现了。

可以帮我写下吗我c语音差的很
回复

使用道具 举报

ID:661787 发表于 2020-5-28 09:24 | 显示全部楼层
两个for循环一个改0-9 另一个改9-0就行了
回复

使用道具 举报

ID:94031 发表于 2020-5-28 09:25 | 显示全部楼层
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

把P1直接连到数码管不要经过芯片。
回复

使用道具 举报

ID:94031 发表于 2020-5-28 09:30 | 显示全部楼层
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

我的程序选用共阳数码管。共阴程序要改写。
回复

使用道具 举报

ID:760624 发表于 2020-5-28 09:51 | 显示全部楼层
xuyaqi 发表于 2020-5-28 09:25
把P1直接连到数码管不要经过芯片。

不行呀  不管用
回复

使用道具 举报

ID:94031 发表于 2020-5-28 09:57 | 显示全部楼层
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

//数码管(共阴)循环显示0-9 再到9-0的程序
#include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{
        uchar i,j;
        for(i=0;i<200;i++)
        for(j=0;j<250;j++);
}
main()
{
        while(1)
        {
                uchar i;
               
                for(i=0;i<18;i++)
                {
                        switch (i)//
                        {
                                case(0):P1=table[0];delay();break;
                          case(1):P1=table[1];delay();break;
                          case(2):P1=table[2];delay();break;
                          case(3):P1=table[3];delay();break;
                                case(4):P1=table[4];delay();break;
                          case(5):P1=table[5];delay();break;
                          case(6):P1=table[6];delay();break;
                          case(7):P1=table[7];delay();break;
                                case(8):P1=table[8];delay();break;
                          case(9):P1=table[9];delay();break;
                          case(10):P1=table[8];delay();break;
                          case(11):P1=table[7];delay();break;
                                case(12):P1=table[6];delay();break;
                          case(13):P1=table[5];delay();break;
                          case(14):P1=table[4];delay();break;
                          case(15):P1=table[3];delay();break;
                                case(16):P1=table[2];delay();break;
                          case(17):P1=table[1];delay();break;
                        }
                }
        }
}
回复

使用道具 举报

ID:760624 发表于 2020-5-28 10:01 | 显示全部楼层
xuyaqi 发表于 2020-5-28 09:30
我的程序选用共阳数码管。共阴程序要改写。

我试了试用公阳数码管直接就不会亮,你可以把共阴程序改下发给我吗
回复

使用道具 举报

ID:332444 发表于 2020-5-28 11:57 | 显示全部楼层
  1. void main()
  2. {
  3.         unsigned char jz=0,zhi=0,wei=1;//键值 位
  4.         unsigned int Ys=47474;
  5.         while(1)
  6.         {
  7.                 if(!--Ys)
  8.                 {
  9.                         P3=0;
  10.                         P2=~smgduan[k?zhi++:zhi--];//数码管静态显示
  11.                         if(zhi>=9)k=~k;
  12.                         Ys=47474;
  13.                 }
  14.         }
  15. }
复制代码
回复

使用道具 举报

ID:760624 发表于 2020-5-28 13:05 | 显示全部楼层

为什么keil软件会出现目标未创建是程序又问题吗
回复

使用道具 举报

ID:690363 发表于 2020-5-28 13:37 | 显示全部楼层
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

你这电路图确定没问题吗?怎么都不加限流电阻?数码管不会是烧了吧
回复

使用道具 举报

ID:94031 发表于 2020-5-28 14:54 | 显示全部楼层
味子橙的欢喜 发表于 2020-5-28 10:01
我试了试用公阳数码管直接就不会亮,你可以把共阴程序改下发给我吗

换共阳数码管,数码管公共端应该接电源+
回复

使用道具 举报

ID:754167 发表于 2020-5-28 16:42 | 显示全部楼层
我们也让设计0~9-9~0了
回复

使用道具 举报

ID:160500 发表于 2020-5-28 19:56 | 显示全部楼层
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x??};//字模数据缺失一个,自己补全
void delay()
{
        uchar i,j;
        for(i=0;i<200;i++)
        for(j=0;j<250;j++);
}
main()
{
        uchar i,j;
        j = 0;
        i = 1;
        while(1)
        {
                P1=table[i - 1];
                delay();
                if (j == 0)
                {
                        i++;
                }
                else
                {
                        i--
                }
                if (i == 10)
                {
                        i = 9;
                        j = 1;
                }
                if (i == 0)
                {
                        i = 2;
                        j = 0;
                }
        }
}
回复

使用道具 举报

ID:160500 发表于 2020-5-28 20:03 | 显示全部楼层
上一个有点问题
#include<reg51.h>
#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x??};//字模数据缺失一个,自己补全
void delay()
{
        uchar i,j;
        for(i=0;i<200;i++)
        for(j=0;j<250;j++);
}
main()
{
        uchar i,j;
        j = 0;
        i = 1;
        while(1)
        {
                P1=table[i - 1];
                delay();
                if (i == 10)
                {
                        j = 1;
                }
                if (i == 1)
                {
                        j = 0;
                }
                if (j == 0)
                {
                        i++;
                }
                else
                {
                        i--
                }
        }
}
回复

使用道具 举报

ID:659888 发表于 2020-5-29 09:59 | 显示全部楼层
#include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{
        unsigned int i,j;
        for(i=0;i<300;i++)
        for(j=0;j<300;j++);
}
main()
{
        signed char i=0;
        bit dir=1;
    while(1)
    {
            P1=table[i];
            delay();
                if(dir)
                {
                        i++;
                        if(i>8)
                        {
                                dir = 0;
                        }                            
                }
            else
                {
                    i--;
                        if(i<0)
                        {
                                i = 1;
                                dir = 1;
                        }       
                }
    }
}
回复

使用道具 举报

ID:760624 发表于 2020-6-1 09:53 | 显示全部楼层
zhang923 发表于 2020-5-28 16:42
我们也让设计0~9-9~0了

我们不会是一个学校的吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表