找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

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

正文摘要:

#include <reg51.h> typedef unsigned char u8; u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(u8 t) {    while(t--); } ...

回复

ID:413157 发表于 2020-3-10 15:07
不好意思,刚刚又看了看那个位码,是我看错了
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);
                        }
         }
}

ID:234355 发表于 2020-3-10 14:19
delay函数参数送数不对,按你定义最大能到255,而你送的数是50000
ID:234355 发表于 2020-3-10 14:15
delay函数的参数是u8最大只能送255,而你送了50000.
ID:704545 发表于 2020-3-10 13:36
不同字码显示间隔的延时的时间太短了,延时定义的变量t是字符型,怎么能装下50000这个数值呢

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

Powered by 单片机教程网

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