数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1479|回复: 17

[C51] 刚学 问下数码管0到9 的问题

[复制链接]
发表于 2022-6-15 21:23:07 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
看下  我写的0到 9  跳动显示   实际是  0  2  4   6   8    1   3  5   7     这样循环的      哪里出问题了








#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,  //数码管0-9的十六进制数组
                        0xf8,0x80,0x90};
void delay(uint);
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
void main()
{
   uchar i=0;
while(1)
{
     
    P0 =smg[i];
wei1=~wei1;
   
    P0 =smg[i];
wei2=~wei2;
   
    P0 =smg[i];
wei3=~wei3;
   
    P0 =smg[i];
wei4=~wei4;
   
   
     delay(300);
  i++;
     if(i>=9)
       {
         i=0;
        }
  }

}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
    for(j=113;j>0;j--);
}

发表于 2022-7-1 09:19:20 | 显示全部楼层
温力口 发表于 2022-6-15 22:20
你这个消隐有问题。当i=0时,wei=1,显示数码“0”;当i=1时,即使P0 =smg[1] ,但wie取反了,wei=0,不显 ...

是的,位码这样写实在奇葩。
一般用直接赋值整个端口:u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码


(295)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2022-6-25 08:56:16 | 显示全部楼层
这个有点复杂了.软件这一块是我的软肋.
回复 支持 反对

使用道具 举报

发表于 2022-6-19 18:10:49 | 显示全部楼层
lunerlee 发表于 2022-6-19 17:06
已搜索理解,是软件延时。
那么这个循环运行了300*113次?

是的,让MCU空跑,让显示的内容有足够长的时间显示出来被人眼观察 到。

打赏

参与人数 1家元 +10 收起 理由
kyhwhb + 10

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2022-6-19 17:06:37 来自手机浏览器 | 显示全部楼层
lunerlee 发表于 2022-6-19 16:41
下面一段什么意思,初学者不理解,请指教。
void delay(uint z)
{

已搜索理解,是软件延时。
那么这个循环运行了300*113次?
回复 支持 反对

使用道具 举报

发表于 2022-6-19 16:41:37 来自手机浏览器 | 显示全部楼层
温力口 发表于 2022-6-15 22:26
#include
#define uint unsigned int
#define uchar unsigned char

下面一段什么意思,初学者不理解,请指教。
void delay(uint z)
{
        uint i,j;
        for(i=z;i>0;i--)
                        for(j=113;j>0;j--);
}
回复 支持 反对

使用道具 举报

发表于 2022-6-16 22:32:23 | 显示全部楼层
Proteus 是个很好学习 测试工具 当然和实物还是有一定的差距

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-16 11:45:30 来自手机浏览器 | 显示全部楼层
温力口 发表于 2022-6-15 22:26
#include
#define uint unsigned int
#define uchar unsigned char

非常感谢
回复 支持 反对

使用道具 举报

发表于 2022-6-16 01:11:12 | 显示全部楼层
没搞过学习基本原理
回复 支持 反对

使用道具 举报

发表于 2022-6-15 23:50:04 | 显示全部楼层
P0 =smg[i];
wei1=~wei1;
   
P0 =smg[i];
wei2=~wei2;
   
    P0 =smg[i];
wei3=~wei3;
   
    P0 =smg[i];
wei4=~wei4;

这不是等效于:
P0=smg[i];
wei1=~wei1;
wei2=~wei2;
wei3=~wei3;
wei4=~wei4;
为啥要给P0口一直赋相同的值?
回复 支持 反对

使用道具 举报

发表于 2022-6-15 23:28:02 | 显示全部楼层
温力口 发表于 2022-6-15 22:26
#include
#define uint unsigned int
#define uchar unsigned char

温总软硬通吃呀。。。
回复 支持 反对

使用道具 举报

发表于 2022-6-15 22:26:54 | 显示全部楼层
本帖最后由 温力口 于 2022-6-16 07:08 编辑

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,  //???0-9???????
                        0xf8,0x80,0x90};
void delay(uint);
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
void main()
{
        uchar i=0;
        while(1)
        {
                P2=0x00;   //刷新太低,不要这个也不影响实际显示效果。
                P0=smg;  //怎么打不出smg?
                P2=0x0f;
                i++;
                if(i>=10)
                i=0;
                delay(300);
        }
}

void delay(uint z)
{
        uint i,j;
        for(i=z;i>0;i--)
                        for(j=113;j>0;j--);
}
回复 支持 反对

使用道具 举报

发表于 2022-6-15 22:20:20 | 显示全部楼层
你这个消隐有问题。当i=0时,wei=1,显示数码“0”;当i=1时,即使P0 =smg[1] ,但wie取反了,wei=0,不显示“1”;当i=2时,wei再取反,wei=1,显示“2”;当i=3时,wei=1,wei取反,wei=0,不能显示3。。。。。。。当i=9时,wei取反过程是i为奇数,wei=1,所以显示13579。

打赏

参与人数 1家元 +10 收起 理由
慕名而来 + 10 精彩回帖

查看全部打赏

回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2022-6-15 21:43:45 | 显示全部楼层
nb267213667 发表于 2022-6-15 21:38
不懂C,感觉像i数据类型不对

不到十个数  char  足够了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-15 21:41:38 | 显示全部楼层
家睦 发表于 2022-6-15 21:39
之前的视频是正常的,为什么又删掉了?

我这里显示 不支持 此类文件
回复 支持 反对

使用道具 举报

发表于 2022-6-15 21:39:09 | 显示全部楼层
tank161 发表于 2022-6-15 21:25
不知道怎么上传视频

之前的视频是正常的,为什么又删掉了?
回复 支持 反对

使用道具 举报

发表于 2022-6-15 21:38:44 | 显示全部楼层
不懂C,感觉像i数据类型不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-15 21:25:21 | 显示全部楼层
不知道怎么上传视频


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-26 12:24 , Processed in 0.171601 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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