找回密码
 立即注册

QQ登录

只需一步,快速开始

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

抢答器程序

[复制链接]
跳转到指定楼层
楼主
ID:112142 发表于 2016-4-4 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>

#define uchar unsigned char

#define dula P0       
#define wela P2       
sbit beep=P2^3;
sbit k1 =P3^4;
sbit k2 =P3^5;
sbit k3 =P3^6;
sbit k4 =P3^7;
uchar key,j,k,daojishi=5,wei;
bit begin,end,clear,fangui;
uchar a0,b0=16;c0=16;d0=16;
unsigned int pp;
unsigned char code weitable[]={0x8f,0x4f,0x2f,0x1f};
                                                //数码管各位的码表
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

void delay(unsigned char i)
{
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

void display1(uchar wei,uchar shu)//在任意一位显示任意的数字
{
   wei=wei-1;
   wela|=0xf0;//给P2.4-P2.7置1
   P0=table[shu];
   wela=wela&weitable[wei];//给P2需要显示的那一位置1,其他置0
   delay(5);
}

void display(uchar a,uchar b,uchar c,uchar d)
{                                                  //一次显示4个数字,且每位显示数字可自定。
   display1(1,a);
   display1(2,b);
   display1(3,c);
   display1(4,d);
}
void keyscan()
{
        if(k1==0)
        {
                while(k1==0);
                key= 1;
        }
        if(k2==0)
        {
                while(k2==0);
                key=2;
        }
        if(k3==0)
        {
                while(k3==0);
                begin =1;
        }
        if(k4==0)
        {
                while(k4==0);
                clear = 1;
        }
}
void main()
{
        TMOD=0x01;
       
        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        ET0=1;
        EA=1;
        a0=table[16];
        beep =1;
        P1=0xff;
        begin=0;
        key=0;
        end = 0;
        fangui = 0;
        while(1)
        {
                keyscan();//按键扫描
                if(begin)
                {
                        if(!end)
                                TR0=1;//开始计时
                                if(pp==20)//定时1s
                                {
                                        pp=0;
                                        daojishi--;
                                }
                                if(key!=0)
                                {
                                        a0=key;
                                        end = 1;
                                        daojishi = 0;
                                }
                                if(!daojishi)
                                {
                                        TR0=0;
                                        pp=0;
                                }

                }
                else
                {       
                        if(key!=0)
                        {
                                fangui=1;
                                a0 = key;
                        }
                }
                if(clear)
                {
                        a0=0;key=0;begin=0;fangui=0;beep=1;daojishi=5;clear=0;
                        b0=16;c0=16;d0=16;P1=0xff;pp=0;end = 0;
                }
                d0 = daojishi;
                display(a0,b0,c0,d0);
                if(fangui)       
                {
                        beep=0;
                        P1=0x00;;
                }

        }
}

void time0() interrupt 1
{        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        pp++;
}


评分

参与人数 2黑币 +13 收起 理由
libicheng + 3 回帖助人的奖励!
admin + 10 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2016-4-4 14:29 来自触屏版 | 只看该作者
电路图能分享吗
回复

使用道具 举报

板凳
ID:124015 发表于 2016-5-30 15:26 | 只看该作者
好东西,谢谢
回复

使用道具 举报

地板
ID:107352 发表于 2016-6-20 11:18 | 只看该作者
东西非常不错
回复

使用道具 举报

5#
ID:135559 发表于 2016-7-30 22:21 | 只看该作者
学习了,谢谢啦
回复

使用道具 举报

6#
ID:257579 发表于 2017-12-5 11:02 | 只看该作者
很赞,学习到了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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