普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2545|回复: 3

为什么我的显示是反的?从七到一

[复制链接]

1

主题

1

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2020-11-17 21:08:34 | 显示全部楼层 |阅读模式
为什么我的显示是反的,从7到0,我在 P0=smgduan[i+1];  然后就写芯片超时了,写不进去了?
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
                      0x7c,0x39,0x5e,0x79,0x71};

void delay(u16 i)
{
   while(i--);
}
void DigDisplay()
{
   u8 i;
   for(i=0;i<8;i++)
   {
      switch(i)
          {
             case(0):
                     LSA=0;LSB=0;LSC=0; break;
             case(1):
                     LSA=1;LSB=0;LSC=0; break;
                 case(2):
                     LSA=0;LSB=1;LSC=0; break;
                 case(3):
                     LSA=1;LSB=1;LSC=0; break;
                 case(4):
                     LSA=0;LSB=0;LSC=1; break;
                 case(5):
                     LSA=1;LSB=0;LSC=1; break;
                 case(6):
                     LSA=0;LSB=1;LSC=1; break;
                 case(7):
                     LSA=1;LSB=1;LSC=1; break;
          }
          P0=smgduan[i];
          delay(200);
          P0=0x00;
   }
}

void main()
{
  
  while(1)
  {
           DigDisplay();
  }
  
}
回复

使用道具 举报

27

主题

337

帖子

3294

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3294
发表于 2020-11-18 08:31:37 | 显示全部楼层
显示正反,主要看你的位选信号是怎么控制的。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2020-11-18 21:39:04 | 显示全部楼层
显示是反的,你把 case(0)-- case(7)数字颠倒一下就行了, case(0)改成 case(7).   至于写芯片超时了,写不进去了,这个与程序无关,出在硬件上面,把电源关一下或者拔掉数据线在插上,就正常了。这种情况经常碰到!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-2 04:19 , Processed in 0.089473 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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