51单片机八路抢答器proteus仿真

51单片机八路抢答器proteus仿真51单片机八路抢答器由于51单片机小板,按键比较少,还有一些功能上的缺陷,所以说无法完成八路抢答器,所以我们用proteus仿真,代码与实验结果如下:/********************************Function: 八路抢答器Date: Sep20,2017By:Third GroupBolancheL************

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用




51单片机八路抢答器

由于51单片机小板,按键比较少,还有一些功能上的缺陷,所以说无法完成八路抢答器,所以我们用proteus仿真,代码与实验结果如下:

/********************************
Function:  八路抢答器
Date:  Sep 20,2017
By:Third  Group Bolanche L
**************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit Start=P3^7;
sbit Indecator=P3^6; //指示灯
sbit Interrupt=P3^3;  //中断1
sbit KEY1=P2^0;    //第一位LED
sbit KEY2=P2^1;
sbit KEY3=P2^2;
sbit KEY4=P2^3;
sbit KEY5=P2^4;
sbit KEY6=P2^5;
sbit KEY7=P2^6;
sbit KEY8=P2^7;
 uchar  n;   //声明全局无符号字符变量n
 //延时毫秒
void delayms(uint c)
{

     uchar a,b;
  for(;c>0;c–)
   for(a=142;a>0;a–)
      for(b=2;b>0;b–);
}
//数码管显示
void SMG_dis(uchar m)
{

   P0=table[m] ;
 //delayms(20);
}
//LED亮
void LED_DIS(uchar i)
{

   P1 |=(1<<(i-1));   //将第i个LED点亮
}
//按键扫描,返回值为被按下的那个按键,每按下一个按键触发一次中断
char KEY_Scan(void)
{

   if(KEY1==0)
   {

     delayms(20); //消抖
  if(KEY1==0)
  {

     Interrupt=1; //中断1口赋高电平
  delayms(20);
     Interrupt=0;
     n=1;
  }
   }
   if(KEY2==0)
   {

      delayms(20);
   if(KEY2==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n=2;
   }
 }
  if(KEY3==0)
    {

      delayms(20);
   if(KEY3==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n=3;
   }
  }
   if(KEY4==0)
   {

      delayms(20);
   if(KEY4==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n = 4;
   }
 }
    if(KEY5==0)
    {

      delayms(20);
   if(KEY5==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n = 5;
   }
 }
 if(KEY6==0)
   {

      delayms(20);
   if(KEY6==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n = 6;
   }
 }
   if(KEY7==0)
   {

      delayms(20);
   if(KEY7==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n = 7;
   }
    
 }
 if(KEY8==0)
    {

      delayms(20);
   if(KEY8==0)
   {

     Interrupt=1;
  delayms(20);
     Interrupt=0;
     n = 8;
   }   
 }
    return n;
}
void INT_1() interrupt  2
{

   EX1=0;
   delayms(20);    //消抖
   EX1=1;
   LED_DIS(n);
   SMG_dis(n);
   Indecator=0;
   delayms(20);
   P1=0x00;  //关闭抢答人指示灯
  
 }
 void main()
{

    EX1=1; //开启外部中断1   
 IT1=1;  //开启下降沿触发 
 EA=1;  //开启总中断  
 P1=0x00; // 点亮第一位小灯  
 P0=0x00;  //  关闭数码管
 Indecator=0;  //关闭指示灯
 Interrupt=1;
 while(1)
 {

    if(Start==0)
    {

       delayms(20);
    if(Start==0)
      Indecator=1;   //主持人按下开始按键,指示灯亮
    }
    n=KEY_Scan();//扫描哪一个按键被按下,并触发中断
 }  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179828.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • js 取模 取余

    var i=10;var j=3;var mo=Math.floor(i/j);var yu=i%j;

  • 分子模拟软件amber_薛定谔 autodock 分子动力学模拟GROMACS软件「建议收藏」

    分子模拟软件amber_薛定谔 autodock 分子动力学模拟GROMACS软件「建议收藏」生物分子互作基础1.生物分子互作用研究方法1.1蛋白-小分子、蛋白-蛋白相互作用原理1.2分子对接研究生物分子相互作用1.3蛋白蛋白对接研究分子相互作用蛋白数据库1.PDB数据库介绍1.1PDB蛋白数据库功能1.2PDB蛋白数据可获取资源1.3PDB蛋白数据库对药物研发的重要性2.PDB数据库的使用2.1靶点蛋白结构类型、数据解读及下载2.2靶点蛋白结构序列下载2.3靶点…

  • python开发mbus程序_关于MBUS MSG指令

    python开发mbus程序_关于MBUS MSG指令在MBUSMSG指令里有一个错误位,我看了手册上说1-8的低位,其中0是无错误,那Q0.0有输出到底是对还是不对,还有Q0.2是不用的意思,它是一直为1的吗?我现在程序测试过程中,发现Q0.1和Q0.2都有输出,不知道是什么错误啊图片说明:1,佳答案1、有关MBUS_MSG指令错误代码:Error错误代码:只有在Done位为1时,错误代码才有效0=无错误1=响应校验错误2…

    2022年10月16日
  • 独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

    独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」1.前言参考资料:https://www.zhihu.com/question/28845451书上写的是:1.主成分分析假设源信号间彼此非相关,独立成分分析假设源信号间彼此独立。2.主成分分析认为主元之间彼此正交,样本呈高斯分布;独立成分分析则不要求样本呈高斯分布。在利用最大化信息熵的方法进行独立成分分析的时候,需要为源信号假定一个概率密度分布函数g’,进而找出使得g(Y)=g…

  • 免费WiFi,仅仅为好久没联系的你们

    免费WiFi,仅仅为好久没联系的你们

    2021年11月29日
  • nginx自动重启_nginx无法启动

    nginx自动重启_nginx无法启动http://blog.csdn.net/zqinghai/article/details/71125045ps-ef|grepnginx平滑重启命令:kill-HUP住进称号或进程号文件路径或者使用/usr/nginx/sbin/nginx-sreload注意,修改了配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号