标题: 单片机静态数码管循环显示 写的程序烧进去之后数码管显示的一直是8找不出问题在哪里 [打印本页]

作者: _three    时间: 2020-3-10 12:59
标题: 单片机静态数码管循环显示 写的程序烧进去之后数码管显示的一直是8找不出问题在哪里
  1. #include <reg51.h>

  2. typedef unsigned char u8;

  3. u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  4. void delay(u8 t)
  5. {
  6.    while(t--);
  7. }

  8. void main()
  9. {
  10.    u8 i;
  11.    while(1)
  12.          {
  13.             P0=0xff;
  14.                         delay(50000);
  15.       for(i=0;i<16;i++)
  16.                         {
  17.                            P0=~smgduan[i];
  18.                                  delay(50000);
  19.                         }
  20.          }
  21. }
复制代码

IMG_0888.JPG (2.64 MB, 下载次数: 50)

单片机连线

单片机连线

捕获.PNG (103.37 KB, 下载次数: 48)

程序编译无错误无警告

程序编译无错误无警告

作者: YYB_123456    时间: 2020-3-10 13:36
不同字码显示间隔的延时的时间太短了,延时定义的变量t是字符型,怎么能装下50000这个数值呢
作者: wanghz12    时间: 2020-3-10 14:15
delay函数的参数是u8最大只能送255,而你送了50000.
作者: wanghz12    时间: 2020-3-10 14:19
delay函数参数送数不对,按你定义最大能到255,而你送的数是50000
作者: 付浩东    时间: 2020-3-10 15:04
你的程序延时的数据类型选错了,我给你改过来了,而且你在仔细看看你的段码也有错误。
#include <reg51.h>

typedef unsigned char u8;
typedef unsigned int u16;

u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(u16 t)
{
   while(t--);
}

void main()
{
   u8 i;
   while(1)
         {
            P0=0xff;
                        delay(50000);
      for(i=0;i<16;i++)
                        {
                           P0=~smgduan[i];
                                 delay(50000);
                        }
         }
}


作者: 付浩东    时间: 2020-3-10 15:07
不好意思,刚刚又看了看那个位码,是我看错了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1