找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3501|回复: 21
打印 上一主题 下一主题
收起左侧

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

  [复制链接]
跳转到指定楼层
楼主
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 (50.16 KB, 下载次数: 43)

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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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;
                        }
                }
        }
}
回复

使用道具 举报

5#
ID:319023 发表于 2020-5-28 00:07 | 只看该作者
可以再定义一个变量,控制i++ 和i-- ,这样从0-9  和9-0都可以实现了。
回复

使用道具 举报

6#
ID:760624 发表于 2020-5-28 08:12 | 只看该作者
xuyaqi 发表于 2020-5-27 22:20
//数码管循环显示0-9 再到9-0的程序
#include
#define uchar unsigned char

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

使用道具 举报

7#
ID:760624 发表于 2020-5-28 08:14 | 只看该作者
随风飘远 发表于 2020-5-28 00:07
可以再定义一个变量,控制i++ 和i-- ,这样从0-9  和9-0都可以实现了。

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

使用道具 举报

8#
ID:661787 发表于 2020-5-28 09:24 | 只看该作者
两个for循环一个改0-9 另一个改9-0就行了
回复

使用道具 举报

9#
ID:94031 发表于 2020-5-28 09:25 | 只看该作者
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

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

使用道具 举报

10#
ID:94031 发表于 2020-5-28 09:30 | 只看该作者
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

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

使用道具 举报

11#
ID:760624 发表于 2020-5-28 09:51 | 只看该作者
xuyaqi 发表于 2020-5-28 09:25
把P1直接连到数码管不要经过芯片。

不行呀  不管用
回复

使用道具 举报

12#
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;
                        }
                }
        }
}
回复

使用道具 举报

13#
ID:760624 发表于 2020-5-28 10:01 | 只看该作者
xuyaqi 发表于 2020-5-28 09:30
我的程序选用共阳数码管。共阴程序要改写。

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

使用道具 举报

14#
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. }
复制代码
回复

使用道具 举报

15#
ID:760624 发表于 2020-5-28 13:05 | 只看该作者

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

使用道具 举报

16#
ID:690363 发表于 2020-5-28 13:37 | 只看该作者
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

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

使用道具 举报

17#
ID:94031 发表于 2020-5-28 14:54 | 只看该作者
味子橙的欢喜 发表于 2020-5-28 10:01
我试了试用公阳数码管直接就不会亮,你可以把共阴程序改下发给我吗

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

使用道具 举报

18#
ID:754167 发表于 2020-5-28 16:42 | 只看该作者
我们也让设计0~9-9~0了
回复

使用道具 举报

19#
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;
                }
        }
}
回复

使用道具 举报

20#
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--
                }
        }
}
回复

使用道具 举报

21#
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;
                        }       
                }
    }
}
回复

使用道具 举报

22#
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 单片机教程网

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