找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1132|回复: 5
打印 上一主题 下一主题
收起左侧

单片机抢答器相关 求帮助

[复制链接]
跳转到指定楼层
楼主
要求和仿真出现的问题如图 不知道是代码/电路问题还是仿真自身的不足

Proteus没有带dp的单管 就用了mpx4
代码如下
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. uchar code segtab[]=
  5. {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,
  6. 0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c,0xff,0xbf,0x8d};
  7. uchar dbuf[6]={0,0,0,0,0x12,0x11};
  8. sbit SPK=P1^0;
  9. sbit K1=P2^4;
  10. sbit K2=P2^5;
  11. sbit K3=P2^6;
  12. sbit K4=P2^7;
  13. bit start;

  14. void delay(void)
  15. {   uchar i;
  16.     for(i=0;i<200;i++);
  17. }

  18. void int0(void)interrupt 0
  19. {   start=1;
  20. }


  21. void disp(void)
  22. {  uchar n,bsel;
  23.    bsel=0x01;
  24.    for(n=0;n<6;n++)
  25.    {   P2=bsel;
  26.        P0=segtab[dbuf[n]];
  27.        bsel=_crol_(bsel,1);
  28.        delay();
  29.        P0=0xff;
  30.    }
  31. }


  32. void main(void)
  33. {
  34.     uchar i;
  35.     start=0;
  36.     EX0=1;
  37.     IT0=1;
  38.     EA=1;
  39.     while(1)
  40.     {   while(start==0)disp();
  41.        start=0;
  42.        dbuf[5]=0;
  43.        while((P2&0x0f)==0x0f)disp();
  44.        for(i=0;i<10;i++)disp();
  45.        if((P2&0x0f)!=0x0f)
  46.         {
  47.            if(K1==0)i=1;
  48.            else if(K2==0)i=2;
  49.            else if(K3==0)i=3;
  50.            else if(K4==0)i=4;
  51.            dbuf[5]=i;
  52.            dbuf[i-1]=dbuf[i-1]+1;
  53.            for(i=0;i<200;i++)
  54.             {   delay();
  55.                 SPK=~SPK;
  56.             }
  57.         }
  58.     }
  59. }
复制代码

1.jpg (2.29 MB, 下载次数: 18)

1.jpg

1.gif (288.34 KB, 下载次数: 25)

1.gif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:917199 发表于 2021-5-13 16:50 | 只看该作者
电路图都不对啊;P2-7经典组接到正极,数码管只用一位的话1234中接一个啊
回复

使用道具 举报

板凳
ID:893765 发表于 2021-5-13 18:49 | 只看该作者
timerzero 发表于 2021-5-13 16:50
电路图都不对啊;P2-7经典组接到正极,数码管只用一位的话1234中接一个啊

请问P2^7怎么接
回复

使用道具 举报

地板
ID:893765 发表于 2021-5-13 19:07 | 只看该作者
目前的情况

2.gif (264.46 KB, 下载次数: 11)

2.gif
回复

使用道具 举报

5#
ID:917199 发表于 2021-5-13 21:02 | 只看该作者
楼主你好,我是小白所以我这肯定没有答案,如果你有时间能否解释一下下面几句都是什么意思呢?
bsel=0x01;
dbuf[5]=0;

for(i=0;i<200;i++)
            {   delay();
                SPK=~SPK;
            }            谢谢啦/比心
回复

使用道具 举报

6#
ID:893765 发表于 2021-5-13 22:01 | 只看该作者
bsel=0x01;//首先点亮最低位
dbuf[5]=0;//按下PULSE键后,数码管显示0

for(i=0;i<200;i++)//产生100个周期为2ms左右的方波
            {   delay();//延时1ms
                SPK=~SPK;//产生方波
            }      
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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