仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- /*************************************************************
- 八路抢答器系统
- 补充说明:
- ***************************************************************/
- #include< //头文件
- #include<SMG.h>
- #include<EEPROM.h>
- #include<INTERRUPT.h>
- #define uchar unsigned char//宏定义
- #define uint unsigned int
- /**********************引脚定义************************/
- sbit key_zhu=P2^2; //主持人键
- sbit key_jia=P2^1; //加键
- sbit key_jian=P2^0; //减键
- sbit key_1=P1^1; //八位选手按键定义
- sbit key_2=P1^3;
- sbit key_3=P1^5;
- sbit key_4=P1^7;
- sbit key_5=P3^1;
- sbit key_6=P3^3;
- sbit key_7=P3^5;
- sbit key_8=P3^7;
- sbit led_1=P1^0; //八位LED灯按键定义
- sbit led_2=P1^2;
- sbit led_3=P1^4;
- sbit led_4=P1^6;
- sbit led_5=P3^0;
- sbit led_6=P3^2;
- sbit led_7=P3^4;
- sbit led_8=P3^6;
- /**********************变量定义************************/
- uchar zhu_f=0; //比赛进行阶段标记位,=0表示没有按。=1表示在设置倒计时的时间。=2表示开始抢答
- uchar qiang_f=0; //抢答犯规标记,=0没有犯规。=1表示有人犯规
- uchar wan_f=0; //抢答完成标记,=0抢答没完成后还没有开始。=1表示抢答完成
- uchar time=30; //倒计时时间
- uchar T0_num; //定时器0计数
- uchar number; //抢答成功选手的编号,或犯规选手的编号。=0的时候表示没有
- /********************************************************
- 函数名称:void delayms(uint ms)
- 函数作用:毫秒延时函数
- 参数说明:
- ********************************************************/
- void delayms(uint ms)
- {
- unsigned char i=100,j;
- for(;ms;ms--)
- {
- while(--i)
- {
- j=10;
- while(--j);
- }
- }
- }
- /********************************************************
- 函数名称:void bajing()
- 函数作用:抢答犯规报警提示
- 参数说明:
- ********************************************************/
- void bajing()
- {
- buzz=0; //开蜂鸣器
- delayms(10);
- buzz=1; //关蜂鸣器
- delayms(10);
- }
- /****************