湖南工程学院单片机计分器设计.docx
《湖南工程学院单片机计分器设计.docx》由会员分享,可在线阅读,更多相关《湖南工程学院单片机计分器设计.docx(31页珍藏版)》请在冰豆网上搜索。
![湖南工程学院单片机计分器设计.docx](https://file1.bdocx.com/fileroot1/2022-10/28/2b049324-88e0-401d-be9a-557fc7c73bbb/2b049324-88e0-401d-be9a-557fc7c73bbb1.gif)
湖南工程学院单片机计分器设计
等级:
湖南工程学院应用技术学院
课程设计
课程名称单片机原理及应用
课题名称比赛计分器设计
专业电气工程及其自动化
班级电气1181班
学号20**********
姓名彭重磊
指导教师汪超、赵葵银、周向红等
2014年5月23日
湖南工程学院应用技术学院
课程设计任务书
课程名称:
单片机原理与应用
题目:
比赛计分器设计
专业班级:
电气1181
*******
学号:
************
******
审批:
任务书下达日期2014年5月12日
设计完成日期2014年5月23日
设计内容与设计要求
设计内容:
设计一个甲,乙两队用的比赛计分器,要求实现以下功能:
1、给甲,乙两队分别设置1个加分按钮,按一下能分别实现加一分。
2、给甲,乙两队分别设置1个减分按钮,按一下能分别实现减一分。
3、设置一个清零按钮,按一下能实现清零
4、设置预置分按钮。
5、设置一个加减一分、两分和三分的切换按钮。
设计要求:
1、设计方案要合理、正确;
2、系统硬件设计及焊接制作;
3、系统软件设计及调试;
4、系统联调;
5、写出设计报告。
主要设计条件
1、MCS-51单片机实验操作台1台;
2、PC机及单片机调试软件;
3、单片机应用系统板1套;
4、制作工具1套;
5、系统设计所需的元器件。
说明书格式
1.封面
2.课程设计任务书
3.目录
4.系统总体方案设计
5.系统硬件设计
6.软件设计(包括流程图)
7.系统的安装调试说明
8、总结
9、参考文献
10、附录
11、课程设计成绩评分表。
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、确定总体设计方案
星期三、硬件模块方案设计
星期四、软件模块方案设计
星期五、设计及调试
第二周
星期一、设计及调试
星期二、设计及调试
星期三、总调
星期四、写说明书
星期五、上午:
写说明书,整理资料下午:
交设计资料,答辩
参考文献
[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002
[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000
[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000
[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社2000
[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001
[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001
[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001
[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社2002
[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002
第1章系统概述
1.1系统功能
设计一个甲、乙两队比赛计分器,主要用于各种体育比赛记录分数。
采用键盘作为输入,使用LED数码管进行显示。
基于以上思路,本次设计使用80C51实现一基于单片机的电子计分器的设计,其主要具有如下功能:
(1)用户两个按钮对各队的分数加减操作,本系统中可分别对两队比分进行加1、加2、加3和减1,减2,减3操作,并且可以同步显示对应的LED灯亮。
(2)比分通过8个8段共阴极数码管显示器进行显示,每队比分显示三位,中间使用了两位显示分隔符,实际只使用数码的了8段中7段。
(4)具有复位功能,通过复位键实现。
(5)预置分按钮可以实现直接置入一个相同分数,然后通过加减可以达到置入想要显示的两队的初始分数。
1.2设计要求
(1)方案合理、正确,系统稳定、可靠。
(2)软件设计要求尽可能精练、简短和运行可靠。
(3)硬件电路要求简单明了,以节约成本。
1.3设计内容
1、分别给甲乙队设置一个分数控制按钮,此按钮有6种状态,分别为-3,-2,-1,+1,+2,+3。
2、设置一个切换状态按钮,可以分别切换每一种状态,然后每一种状态会有相对应的发光二极管点亮以区别是哪种状态。
3、设置一个复位按钮,按下实现甲、乙队总分清零显示
4、设置一个预置分按钮,用于直接赋给给甲乙比分,这里直接赋值50:
50,再可以通过加减按键实现所要赋给的分值。
1.4按键设置
本系统设计中一共用到了5个按钮,分别为:
清零按钮、甲队分数控制按键,乙队分数控制按键,切换状态按钮和预置比分值按键。
每个按钮的功能如下:
控制甲的按键:
实现-3、-2、-1、+1、+2、+3功能;
控制乙的按键:
实现-3、-2、-1、+1、+2、+3功能;
分值切换按键:
实现甲乙的各种状态的切换;
预置比分按键:
预置甲乙的比分,这里是50比50;
复位清零按键:
实现甲乙比分清零;
第2章系统方案设计
2.1系统组成框图
本系统的设计是以80C51单片机为核心,配以一定的外围电路和软件,实现比赛计分器的功能。
利用了8个8段共阴级数码管显示器.其中甲乙两个分值各用3个数码管显示分值,另外两个显示分隔符。
采用动态显示输出比分,用户信息输入则采用5个独立键盘,本系统中使用的是独立的键盘。
状态切换时候用不同的发光二极管的对应显示切换到了不同的分值。
系统设计方案的硬件电路设计框图如图2-1所示。
图2-1硬件电路设计
2.2软件设计流程
图2-2软件设计的流程图
第3章系统硬件设计
3.1单片机选型及确定
图3-1单片机的仿真图
3.2单片机与键盘接口电路
图3-2单片机与键盘接口电路图
3.3单片机与显示接口电路
图3-3单片机与显示接口电路图
第4章系统软件设计
4.1主程序设计
本系统软件设计采用单片机汇编语言设计,主要的语言模块有:
初始化模块、按键判断模块、数码管显示模块、延时模块组成。
程序设计的流程图如下图4-1所示。
图4-1软件设计的流程图
4.2各子程序设计
4.2.1初始化子程序
voidinit()//初始化函数
{
//初始化变量
dula=0;
wela=0;
temp_jia=0;
temp_yi=0;
}
初始化程序是用来对各定义的变量初始化的,每一次主程序执行之前都要先执行初始化程序以保证变量的值为初值。
4.2.2延时子程序
voiddelay(uintz)//延时函数1ms
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
这个延时程序设计是在硬件调试过程中更改数据得来的,不同的硬件延时应选择适合的延时时间。
延时程序延时时间计算式:
1T+1T+((2T*300+2T)*10+2T。
4.2.3按键判断程序
voidkey1_scan()//初值的判断
{
if(key1==0)//按下了key1
{
delay(5);//延时去抖
while(key1==0)//确实按下了key1
{
while(key1!
=1)//等待松手,松手有效
;
delay(5);//延时去抖
if(key1==1)//确实松了key1
{
temp_jia=temp_yi=50;
}
}
}
}
voidfengzhi_keyscan()//分值按键扫描
{
if(key2==0)
{
delay(5);
while(key2==0)
{
while(key2!
=1);
delay(5);
if(key2==1)
{
num++;//计数
if(num==7)
num=1;
}
switch(num)
{
case1:
cnt=-3;d1=0;d6=1;break;
case2:
cnt=-2;d2=0;d1=1;break;
case3:
cnt=-1;d3=0;d2=1;break;
case4:
cnt=+1;d4=0;d3=1;break;
case5:
cnt=+2;d5=0;d4=1;break;
case6:
cnt=+3;d6=0;d5=1;break;
}
}
}
}
voidjia_keyscan()//甲加减分按键
{
if(key3==0)
{
delay(5);
while(key3==0)
{
while(key3!
=1);
delay(5);
if(key3==1)
{
temp_jia=cnt+temp_jia;//分数的加减
if(temp_jia==1000)
temp_jia=0;
if(temp_jia==-1)
temp_jia=999;
}
}
}
}
voidyi_keyscan()//乙加减分按键
{
if(key4==0)
{
delay(5);
while(key4==0)
{
while(key4!
=1);
delay(5);
if(key4==1)
{
temp_yi=cnt+temp_yi;//分数的加减
if(temp_yi==1000)
temp_yi=0;
if(temp_yi==-1)
temp_yi=999;
}
}
}
}
voidfuwu_keyscan()//复位按键
{
if(key5==0)//按下了key1
{
delay(5);//延时去抖
while(key5==0)//确实按下了key1
{
while(key5!
=1)//等待松手,松手有效
;
delay(5);//延时去抖
if(key5==1)//确实松了key1
{
temp_jia=temp_yi=0;
}
}
}
}
这里只是按键选择程序,实际上转移到各自的处理程序中就有按键的消抖处理和对应按键信号所要执行的处理程序。
4.2.4数码管显示之程序
voidjifeng_display(ucharbai,ucharshi,ucharge,ucharbai_1,ucharshi_1,ucharge_1)//计分显示
{
wela=1;
P0=0xff;
wela=0;
P0=0x00;
dula=1;
P0=tabledu[bai];//显示甲的分数的百位数
dula=0;
P0=0xff;
wela=1;
P0=0xfe;//把甲的分数的百位数显示在第1个数码管
wela=0;
delay
(1);
wela=1;
P0=0xff;
wela=0;
P0=0x00;
dula=1;