标题: Proteus仿真 led光标闪烁相关问题 [打印本页]

作者: 田所浩二单推人    时间: 2021-6-18 10:33
标题: Proteus仿真 led光标闪烁相关问题
用89C51单片机及8位共阳数码管构成一个动态LED显示器,能够实现光标闪烁功能,按下L键,光标左移,按下R键,光标右移。
自己做的仿真情况乱七八糟 不知道问题在哪 麻烦大佬们了
代码如下
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit L=P3^0;
sbit R=P3^1;
uchar flash;
uchar disp_on;
uchar code segtab[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c};
uchar dbuf[8]={1,1,1,1,1,1,1,1};


void delay(void)
{   uchar i;
    for(i=0;i<200;i++);
}
void disp(void)
{  static uchar cn=0;
   uchar n,bsel;
   bsel=0x01;
   for(n=0;n<8;n++)
   {   P2=bsel&disp_on;
       P0=segtab[dbuf[n]&0x7f];
                   if((dbuf[n]&0x80)!=0)
                   P0=P0&0x7f;
       bsel=_crol_(bsel,1);
       delay();
       P0=0xff;
   }
         cn++;
         if(cn==100)
         { disp_on=disp_on^flash;
                 cn=0;
         }
                         if(L==0)
                {flash=_crol_(flash,1);
                 disp_on=_cror_(disp_on,1);
                }
                if(R==0)
                {flash=_cror_(flash,1);
                 disp_on=_crol_(disp_on,1);
                }
}
void main(void)
{ flash=0x01;
        disp_on=0xff;
    while(1)
        disp();
}

仿真.gif (445.26 KB, 下载次数: 70)

仿真.gif

作者: taotie    时间: 2021-6-18 20:16
p0端口加上拉电阻




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1