新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机课程设计(篮球记分器)

单片机课程设计(篮球记分器)

作者: 时间:2016-11-29 来源:网络 收藏
电路图:


本程序已经通过软件仿真与硬件制作,
首发于:www.51hei.com,代码可任意修改,但不可用于商业目的.
单片机型号是:stc89c52,晶振12兆赫.用了3个4为一体化的数码管.
完整代码下载地址:http://www.51hei.com/f/lqwwe.rar
#include
#define uchar unsigned char
#define uint unsigned int
void delay(uchar x); //延时(时间较短)
void delay1(uchar x); //延时(时间较长)
void Js_Jf_Scan(void); //数码管动态扫描显示函数
void Key_if(void); //A、B两队分值处理函数
void Js_50ms(void); //定时50ms中断函数
void Key_Y(void); //预置时间函数
void Ptime(uchar); //时间处理函数
void sound(void); //鸣笛警示函数
void jiaohuan(void); //场地交换
sbit CL1=P2^0; //B队4位计分数码管位控线
sbit CL2=P2^1;
sbit CL3=P2^2;
sbit CL4=P2^3;
sbit KL1=P2^4; // A队4位计分数码管位控线
sbit KL2=P2^5;
sbit KL3=P2^6;
sbit KL4=P2^7;
sbit S1=P1^3; //驱动4位计时数码管位控线
sbit S2=P1^2;
sbit S3=P1^1;
sbit S4=P1^0;
sbit YK1=P1^6; //预置分钟的十位
sbit YK2=P1^7; //预置分钟的个位
sbit music=P1^4; //P1.4接喇叭,发声,鸣笛
sbit Key1=P3^0; //B队加分键
sbit Key2=P3^1; //B队减分键
sbit Key3=P3^4; //A队加分键
sbit Key4=P3^5; //A队减分键
sbit JH=P1^5;
sbit Int_Key=P3^2; //鸣笛键
sbit Star=P3^6; //开始按钮
sbit Puse=P3^7; //停止按钮
int m=0,ms=0,mg=0; //秒钟的十位、个位以及秒钟的变量说明
int fs=0,fg=0,f,fy,num=0; //分钟的十位、个位以及分钟的变量说明
int g,s,b,q,sum=0; //B队定义个十百位
int g1,s1,b1,q1,sum1=0; // A队定义个十百位
int LED_Num[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00,}; //段码

void main(void)
{
TMOD=0x01; //设置T0为工作方式1,作为16位计数器
TH0=(65535-50000)/256; //设置T0的高8位,并且T0的计数值为50ms
TL0=(65535-50000)%256; //设置T0的低8位
music=0; //初值喇叭不响
EA=1; //开放所有中断
ET0=1; //允许定时/计数器T0溢出中断
EX0=1; //允许外部中断0
IT0=1; //设置外部中断0为边沿触发方式(下降沿)
while(1) //无穷循环,程序一直运行
{
Key_Y(); //预置场次比赛时间
if(Star==0&&f!=0&&Puse!=0) //按下“开始键”,设置好比赛时间,并且未按“停止”键时,比赛正式开始
{
TR0=1; //启动定时器T0,开始计时
Key_if(); //开始计分
}
else
{
TR0=0; //比赛还未开始或比赛结束时间到,停止计时
}
Js_Jf_Scan(); //将相应的分数、时间同步进行显示
}
}


上一页 1 2 下一页

评论


技术专区

关闭