找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机静态数码管循环显示 写的程序烧进去之后数码管显示的一直是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, 下载次数: 36)

单片机连线

单片机连线

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

程序编译无错误无警告

程序编译无错误无警告
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:704545 发表于 2020-3-10 13:36 | 只看该作者
不同字码显示间隔的延时的时间太短了,延时定义的变量t是字符型,怎么能装下50000这个数值呢
回复

使用道具 举报

板凳
ID:234355 发表于 2020-3-10 14:15 | 只看该作者
delay函数的参数是u8最大只能送255,而你送了50000.
回复

使用道具 举报

地板
ID:234355 发表于 2020-3-10 14:19 | 只看该作者
delay函数参数送数不对,按你定义最大能到255,而你送的数是50000
回复

使用道具 举报

5#
ID:413157 发表于 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);
                        }
         }
}

回复

使用道具 举报

6#
ID:413157 发表于 2020-3-10 15:07 | 只看该作者
不好意思,刚刚又看了看那个位码,是我看错了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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