单片机课程设计--篮球记分牌
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告
题目篮球记分牌
学院自动化与电气工程学院专业自动化
班级自动化103
学号
学生姓名
指导教师
完成日期2012年12月15日
篮球记分牌
一.设计要求:
1、比赛开始,比分能够全部清零,数码管前2位、末2位做记分用,当中2位做24秒倒计时用。
2、24秒倒计时时间到,蜂鸣器响、指示灯亮,重新开始倒计时,蜂鸣器停止鸣叫、指示灯灭。
3、比分进行增加后,倒计时从24秒重新开始倒计时。任意时刻24秒可以重新开始倒计时。必要时候能够关闭倒计时。
4、利用AT24C02或者单片机内部资源保存比分,支持复位保存,掉电保存功能。
5、其他附加功能。
二.原理图:
三.实验流程图:
四.实验程序:
Main.c文件:
/****************************************************************************** ***************
函数名:篮球记分牌
说明:比赛开始,比分能够全部清零,数码管前2位、末2位做记分用,当中2位做24秒倒计时用。
24秒倒计时时间到,蜂鸣器响、指示灯亮,重新开始倒计时,蜂鸣器停止鸣叫、
指示灯灭。
比分进行增加后,倒计时从24秒重新开始倒计时。任意时刻24秒可以重新开始倒计时。必要时候能够关闭倒计时。
作者:
完成日期:2012.12.2
/****************************************************************************** ****************/
#include
#include
#include"eeprom.h"
#define uchar unsigned char
#define uint unsigned int
/***********端口定义*************/
/*数码管段选用P0口,位选用P2口*/
/******指示灯******/
sbit LED=P3^4;
/********蜂鸣器*********/
sbit FMQ=P3^5;
/******数组定义*******/
uchar code
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x07f,0x6f};//0,1,2,3,4,5,6,7, 8,9
uchar password[6]; //掉电保存6位数组
/***********变量定义*************/
uchar fen1; //甲队初始得分
uchar fen2; //乙队初始得分
uchar fen3; //甲乙两队上下半场换分
uchar SJ; //时间变量值
uchar cxjs=1; //重新计时标志位
uchar key; //矩阵键盘按键值
uchar temp; //矩阵键盘P1口寄存变量
uchar time; //中断计数器
/***********************************************************
函数名称:delay
函数功能:基本延时程序
入口参数:无
出口参数:无
备注:无
***********************************************************/
void delay(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
{;}
}
}
/*********************************************************** 函数名称:display
函数功能:数码管显示程序
入口参数:fen1,fen2,SJ
出口参数:无
备注:无
***********************************************************/ void display(void)
{
uchar m;
for(m=6;m>0;m--)
{
delay(2);
if(m==6)
{P2 = 0XFE;
P0 = table[fen1/10];}
if(m==5)
{P2 = 0XFD;
P0 = table[fen1%10];}
if(m==4)
{P2 = 0XFB;
P0 = table[SJ/10];}
if(m==3)
{P2 = 0XF7;
P0 = table[SJ%10];}
if(m==2)
{P2 = 0XEF;
P0 = table[fen2/10];}
if(m==1)
{P2 = 0XDF;
P0 = table[fen2%10];}
}
}
/*********************************************************** 函数名称:keyscan
函数功能:4X4矩阵键盘扫描程序
入口参数:无
出口参数:无
备注:读取的键值赋给了key