找回密码
 立即注册

QQ登录

只需一步,快速开始

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

六路抢答器完整的单片机源程序

[复制链接]
跳转到指定楼层
楼主
ID:189450 发表于 2017-4-14 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整的源程序:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit D6=P2^5;
sbit D5=P2^4;
sbit D4=P2^3;
sbit D3=P2^2;
sbit D2=P2^1;           
sbit D1=P2^0;
sbit speak=P2^7; //        蜂鸣器引脚定义
unsigned int table_seg[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82};  
uchar a;
void delay_1ms(unsigned int ms);
void key();
void display();
void main(void)
{
unsigned char key_value=0;
uint i=5;
P0=0xff;           
delay_1ms(500);
do
{
        P0=table_seg[i--];
        delay_1ms(1000);
}while(i>0);
speak=0;
delay_1ms(300);
speak=1;
        while(1)
  {                                         
                  key();
                  display();
  }
}
void delay_1ms(unsigned int ms)
        {
                unsigned char ns;
                while( ms -- )
                for(ns = 0;ns < 116;ns ++);
        }
void display()
{
    P0=table_seg[a];
    delay_1ms(5);
}
void key()
{
   if(K1==0)
   {
      delay_1ms(10);
      if(K1==0)
      {
              D1=0;
                  a=1;
                  P0=table_seg[a];
                  speak=0;
                  while(!K1);
                  while(1);
                  }
           }
    if(K2==0)
    {
       delay_1ms(10);
          if(K2==0)
          {
              D2=0;
                  a=2;
                  P0=table_seg[a];
                  speak=0;
                  while(!K2);
                  while(1);
            }
        }
     if(K3==0)
     {
            delay_1ms(10);         
          if(K3==0)
          {
                          D3=0;
                         a=3;
                          P0=table_seg[a];
                          speak=0;
                          while(!K3);
                          while(1);
                  }
                }
              if(K4==0)
               {
                  delay_1ms(10);         
                  if(K4==0)
                  {
                          D4=0;
                          a=4;
                          P0=table_seg[a];
                         speak=0;
                          while(!K4);
                          while(1);
          }
        }
        if(K5==0)
               {
                  delay_1ms(10);         
                  if(K5==0)
                  {
                          D5=0;
                          a=5;
                          P0=table_seg[a];
                          speak=0;
                          while(!K5);
                          while(1);
          }
        }
   if(K6==0)
               {
                  delay_1ms(10);         
                  if(K6==0)
                  {
  D6=0;
                          a=6;
                          P0=table_seg[a];
                          speak=0;
                          while(!K6);
                          while(1);
          }}}


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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