找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1230|回复: 1
收起左侧

Proteus仿真 led光标闪烁相关问题

[复制链接]
ID:893765 发表于 2021-6-18 10:33 | 显示全部楼层 |阅读模式
用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
回复

使用道具 举报

ID:342822 发表于 2021-6-18 20:16 | 显示全部楼层
p0端口加上拉电阻
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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