sjh499606819 2020-02-09 17:36 采纳率: 0%
浏览 534

标题:proteus数码管动态显示不了,而且图中的P0^6 I/O口也没有给出值

图片说明

它没有六个数码管一起显示,是轮流显示,而且有残影,P0^6也没有值

是代码问题吗,还是proteus仿真软件本身的问题,还是我连线连错,就算我连错了,P0^0口也不会没有输出啊

#include<reg52.h>
sbit ADDR0=P1^4;
sbit ADDR1=P1^3;
sbit ADDR2=P1^2;
sbit ADDR3=P1^1;
sbit ENLED=P1^0;
unsigned char code LedChar[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};
unsigned char LedBuff[6]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};

void main()
{
  unsigned char i =0;
  unsigned int cnt =0;
  unsigned long sec =0;
  ENLED=0;
  ADDR3=1;
  TMOD=0x01;
  TH0=0xFC;
  TL0=0x67;
  TR0=1;
  while(1)
  {
    if(TF0==1)
    {
      TF0=0;
      TH0=0xFC;
      TL0=0x67;
      cnt++;
      if(cnt>=1000)
      {
        cnt=0;
        sec++;
        LedBuff[0]=LedChar[sec%10];
        LedBuff[1]=LedChar[sec/10%10];
        LedBuff[2]=LedChar[sec/100%10];
        LedBuff[3]=LedChar[sec/1000%10];
        LedBuff[4]=LedChar[sec/10000%10];
        LedBuff[5]=LedChar[sec/100000%10];
      }
    P0=0xFF;
    switch(i)
    {
     case 0:ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];break;
     case 1:ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];break;
     case 2:ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];break;
     case 3:ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];break;
     case 4:ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];break;
     case 5:ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];break;
     default:break;
    }
  }
}
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 shape_predictor_68_face_landmarks.dat
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 对于相关问题的求解与代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料
    • ¥15 使用R语言marginaleffects包进行边际效应图绘制