找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 6357 | 评论数: 21 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-5-27 17:57

正文摘要:

程序如下怎么修改下可以变成数字循环由0-9 9-0                         #include<reg51.h> #define uchar unsigned cha ...

回复

ID:760624 发表于 2020-6-1 09:53
zhang923 发表于 2020-5-28 16:42
我们也让设计0~9-9~0了

我们不会是一个学校的吧
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: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: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:754167 发表于 2020-5-28 16:42
我们也让设计0~9-9~0了
ID:94031 发表于 2020-5-28 14:54
味子橙的欢喜 发表于 2020-5-28 10:01
我试了试用公阳数码管直接就不会亮,你可以把共阴程序改下发给我吗

换共阳数码管,数码管公共端应该接电源+
ID:690363 发表于 2020-5-28 13:37
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

你这电路图确定没问题吗?怎么都不加限流电阻?数码管不会是烧了吧
ID:760624 发表于 2020-5-28 13:05

为什么keil软件会出现目标未创建是程序又问题吗
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 10:01
xuyaqi 发表于 2020-5-28 09:30
我的程序选用共阳数码管。共阴程序要改写。

我试了试用公阳数码管直接就不会亮,你可以把共阴程序改下发给我吗
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 09:51
xuyaqi 发表于 2020-5-28 09:25
把P1直接连到数码管不要经过芯片。

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

我的程序选用共阳数码管。共阴程序要改写。
ID:94031 发表于 2020-5-28 09:25
味子橙的欢喜 发表于 2020-5-28 08:12
程序输入进去数字管显示数字不完整是怎么回事

把P1直接连到数码管不要经过芯片。
ID:661787 发表于 2020-5-28 09:24
两个for循环一个改0-9 另一个改9-0就行了
ID:760624 发表于 2020-5-28 08:14
随风飘远 发表于 2020-5-28 00:07
可以再定义一个变量,控制i++ 和i-- ,这样从0-9  和9-0都可以实现了。

可以帮我写下吗我c语音差的很
ID:760624 发表于 2020-5-28 08:12
xuyaqi 发表于 2020-5-27 22:20
//数码管循环显示0-9 再到9-0的程序
#include
#define uchar unsigned char

程序输入进去数字管显示数字不完整是怎么回事
ID:319023 发表于 2020-5-28 00:07
可以再定义一个变量,控制i++ 和i-- ,这样从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:660091 发表于 2020-5-27 21:10
两个for循环,一个从0-9,一个从9-0就行了
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;
                        }
                }
        }
}

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

Powered by 单片机教程网

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