《单片机》记分器课程设计.docx
《《单片机》记分器课程设计.docx》由会员分享,可在线阅读,更多相关《《单片机》记分器课程设计.docx(37页珍藏版)》请在冰豆网上搜索。
《单片机》记分器课程设计
湖南工程学院
课程设计任务书
课程名称单片机原理与应用
课题比赛计分器设计
专业班级
学生姓名
学号
指导老师汪超
审批李晓秀
任务下达日期2011年6月13日
任务完成日期2011年6月24日
设计内容与设计要求
设计内容:
设计一个甲,乙两队用的比赛计分器,要求实现以下功能:
1、给甲,乙两队分别设置1个加分按钮,按一下能分别实现加一分。
2、给甲,乙两队分别设置1个减分按钮,按一下能分别实现减一分。
3、设置一个清零按钮,按一下能实现清零
4、设置预置分按钮。
5、设置一个加减一分、两分和三分的切换按钮。
设计要求:
1、设计方案要合理、正确;
2、系统硬件设计;
3、系统软件设计及调试;
4、系统联调;
5、写出设计报告。
主要设计条件
1.MCS-51单片机实验操作台1台;
2.PC机及单片机调试软件;
3.单片机应用系统板1套;
4.制作工具1套;
5.系统设计所需的元器件
说明书格式
6.封面
7.课程设计任务书
8.目录
9.系统总体方案设计
10.系统硬件设计
11.软件设计(包括流程图)
12.系统的安装调试说明
8、总结
9、参考文献
10、附录(源程序清单及硬件原理图等);
11、课程设计成绩评分表。
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、确定总体设计方案
星期三、硬件模块方案设计
星期四、软件模块方案设计
星期五、设计及调试
第二周
星期一、设计及调试
星期二、设计及调试
星期三、总调
星期四、写说明书
星期五、上午:
写说明书,整理资料
下午:
交设计资料,答辩
参考文献
[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002
[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000
[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000
[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社2000
[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001
[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001
[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001
[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社2002
[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002
前言
单片机原理及应用主要是以MCS—51单片机为主线,从实用角度出发,通过此次课程设计来了解单片机的硬件结构与功能;了解MCS—5l单片机的指令系统和汇编语言程序设计方法;掌握中断和定时器/计数器、串行通信等,并以实训的形式对各种通信进行了应用举例;熟练掌握MCS—51单片机的扩展与接口技术,包括存储器的扩展,可编程并行I/O接口的扩展,键盘和显示接口电路,数模、模数的转换及接口设计;会利用MCS—5l单片机进行机电系统的应用举例,包括单片机系统设计概要、步骤和方法等。
随着信息技术的飞速发展,嵌入式智能电子技术已渗透到社会生产、工业控制以及人们日常生活的各个方面。
单片机又称为嵌入式微控制器,在智能仪表、工业控制、智能终端、通信设备、医疗器械、汽车电器、导航系统和家用电器等很多领域都有着广泛的应用,已成为当今电子信息领域应用最广泛的技术之一。
“单片机原理及应用”也成为各层次高校机电、电子、自动化、通信等专业学生必须掌握的基本技能。
本次课程设计主要是比赛计分器为对象,通过系统总体设计、硬件模块方案设计、软件模块方案设计、设计和调试。
以MCS-51单片机实验操作台1台、PC机及单片机调试软件、单片机应用系统板1套、制作工具1套为工具。
让同学们系统的掌握单片机原理及应用。
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
第1章系统概述-------------------------------------------------1
1.1系统功能---------------------------------------------------1
1.2设计内容及要求------------------------------------------1
1.2.1设计内容---------------------------------------------1
1.2.2设计要求---------------------------------------------2
1.3按钮设置--------------------------------------------------2
第2章系统总体方案设计-----------------------------------------3
2.1系统硬件方案设计--------------------------------------3
2.2系统软件方案设计--------------------------------------4
第3章硬件设计----------------------------------------------------5
3.1输入电路设计----------------------------------------------5
3.2显示输出电路设计----------------------------------------5
3.3蜂鸣器发声电路设计-------------------------------------6
第4章软件设计-----------------------------------------------------7
4.1主程序设计-------------------------------------------------7
4.1.1重要模块分析------------------------------------------7
4.1.2其它模块概述-----------------------------------------10
4.2加减分子程序设计---------------------------------------10
4.2.1加分子程序-------------------------------------------10
4.2.2减分子程序-------------------------------------------11
4.3显示子程序------------------------------------------------12
4.4延时子程序------------------------------------------------13
4.5发声子程序------------------------------------------------13
第5章仿真与调试-------------------------------------------------14
5.1软件调试---------------------------------------------------14
5.2硬件连接及软硬件联调---------------------------------14
5.2.1仿真硬件电路连接及软硬件联调---------------------14
5.2.2实验板硬件电路连接及软硬件联调------------------15
总结-------------------------------------------------------------------16
参考文献-------------------------------------------------------------18
附录一系统硬件电路图----------------------------------------19
附录二实物展示图----------------------------------------------20
附录三源程序清单----------------------------------------------21
第1章系统概述
1.1系统功能
设计一个甲、乙两队比赛计分器,主要用于各种体育比赛记录分数。
采用按钮按键作为输入。
基于以上思路,本次设计使用AT89C52实现基于单片机的比赛计分器的设计,其主要具有如下功能:
(1)用户可通过四个加减分按钮分别对两队比分进行加1、加2、加3和减1、减2、减3操作。
(2)每次按键蜂鸣器会响一声。
(3)比分通过6个8段数码管显示器进行显示,每队比分显示三位,可以通过分数交换按钮交换两队比分显示的位置。
加减分按钮是与位置对应的,不与参赛队对应。
(4)清零功能,按下清零按钮实现分数清零,加减分数默认为2分。
(5)预置分功能,可通过按下预置分按钮可将两队分数都预置为30分,也可以通过加减分按钮来预置分数。
(6)加减分数选择功能,通过按下加减分数选择按钮,可以选择加减的分数为1分、2分和3分。
并且当前加减的分数会在一个数码管显示器上显示出来。
1.2设计内容及要求
1.2.1设计内容:
1、给甲,乙两队分别设计一个加分按钮,按一下能分别实现加分。
2、给甲,乙两队分别设计一个减分按钮,按一下能分别实现减分。
3、设计一个清零按钮,按一下能实现分数清零,并且当前加减分数默认为2分。
4、设计预置分按钮,给两队预置某一分数。
5、设计一个加减1分、2分和3分的切换按钮。
6、设计一个比分交换按钮,可以交换两队比分显示的位置。
7、设计一个发声子程序,每次按下任何键,都会调用该子程序发出“滴”的一声。
8、设计由六个数码管显示器分别显示两队三位数比分和由一个数码管显示当前加减分数的显示子程序。
1.2.2设计要求:
(1)方案合理、正确,系统稳定、可靠。
(2)软件设计要求尽可能精练、简短和运行可靠。
(3)硬件电路要求简单明了,以节约成本。
1.3按钮设置
本设计一共有8个按钮,从左到右依次为:
交换比分按钮、左边队加分按钮、左边队减分按钮、右边队加分按钮、右边队减分按钮、加减分数选择按钮、预置分按钮和分数清零按钮。
每个按钮的功能如下:
交换比分按钮:
交换左右显示屏的比分。
左边队加分按钮:
显示屏左边队伍加当前加减分数。
左边队减分按钮:
显示屏左边队伍减当前加减分数。
右边队加分按钮:
显示屏右边队伍加当前加减分数。
右边队减分按钮:
显示屏右边队伍减当前加减分数。
加减分数选择按钮:
选择当前加减的分数为1分、2分或3分。
预置分按钮:
预置两队的分数都为30分。
分数清零按钮:
将两队分数清零,并且当前加减分数默认为2分。
第2章系统总体方案设计
2.1系统硬件设计方案
此次设计AT89C52单片机为核心,配以一定的外围电路和软件,以实现比赛计分器的功能。
利用七个八段数码管显示器,采用动态显示输出比分和当前加减分数;用户控制信息输入则采用八个按钮开关;声音输出用蜂鸣器来实现。
采用七个8段数码管显示器进行动态显示需要占用8+3根I/O线,分别为P0口八根用于数码输出,P2.0、P2.1、P2.2三根用于连接74HC138的输入作七个数码管显示器的选通译码;八个按钮开关占用8根I/O线,分别为P1.0交换比分按钮、P1.3左边队加分按钮、P1.4左边队减分按钮、P1.5右边队加分按钮、P1.6右边队减分按钮、P3.2加减分数选择按钮、P3.3预置分按钮、P3.4分数清零按钮;蜂鸣器占用1根I/O线,为P1.2;译码器74HC138的使能端占用1根I/O线,为P3.0。
一共占用21根I/O线,AT89C52单片机有32根I/O线,所以不用扩展I/O口。
用一片单片机可满足本设计的要求。
系统设计方案的硬件设计框图如图2-1所示。
图2-1系统硬件方案框图
2.2系统软件设计方案
本系统软件部分由主程序(包括系统初始化段(兼作系统清零模块QINGLING)、按钮扫描模块START、两队加分模块AJIA和BJIA、两队减分模块AXIA和BXIA、比分交换模块JIAOHUAN、加减分数选择模块JFS和预置分模块YUZHI)、左边队加分子程序AJIA1、左边队减分子程序AXIA1、右边队加分子程序BJIA1、右边队减分子程序BXIA1、显示子程序XIANSHI、延时子程序DELAY1和DELAY10、蜂鸣器发声子程序DISHENG和八段数码管显示器字形代码表TAB组成。
软件设计主要分为四个部分:
信息读入、信息处理、显示输出和声音输出。
信息读入通过按钮扫描模块不断地扫描连接按钮的管脚的状态来实现;信息处理需要对用户通过按钮输入的不同信息进行辨别并执行相应的处理;由于有七个数码管显示器,显示输出采用动态输出以节省I/O口;声音输出是通过输出一串矩形波使蜂鸣器发出一声“滴”声。
第3章硬件设计
3.1输入电路设计
如图3-1所示,P1.0连接交换比分按钮、P1.3连接左边队加分按钮、P1.4连接左边队减分按钮、P1.5连接右边队加分按钮、P1.6连接右边队减分按钮、P3.2连接加减分数选择按钮、P3.3连接预置分按钮、P3.4连接分数清零按钮。
每个按钮所连接的管脚都通过上拉电阻与高电平相连,以保证当按钮没有按下时管脚的状态为“1”。
当按钮按下时,对应的管脚通过按钮与“地”相连,此时该管脚的状态为“0”。
因此,可以通过读取管脚的状态为“1”或者“0”来获得按钮是否被按下。
图3-1系统输入按键电路
3.2显示输出电路设计
如图3-2所示,七个共阴极的八段数码管显示器的八个数据输入管脚分别与AT89C52的P0.0~P0.7相连。
片选信号则是来自与三-八译码器74HC138对P2口的P2.0、P2.1、P2.2的数据进行译码来一次点亮每一个数码管显示器。
当P2口输出的数据为0、1、2、3、4、5、7时分别点亮从左到右第1、2、3、4、5、6、7个数码管显示器。
由于是共阴极数码管显示器,应该是当片选信号为“0”的那个数码管显示器点亮。
P0作为数据输出端,要通过上拉电阻连接高电平以使其有足够大的驱动能力来驱动数码管显示器点亮。
译码器74HC138的使能端E1要接高电平,可以连在P3.0管脚,另外E2和E3应直接接地,以使译码器能正常工作。
图3-2系统显示输出电路
3.3蜂鸣器发声电路设计
如图3-3所示,为使计分器人性化,实现简单的人机对话,本设计增加发声元件,考虑蜂鸣器成本低,采用一个蜂鸣器来发声,在用户按下任何一个键时,蜂鸣器会“滴”的响一声,用户输入操作得到响应。
本设计采用一个PNP型三极管来驱动三极管响应来自P1.2管脚的一串发声矩形波信号。
图3-3系统蜂鸣器发声电路
第4章软件设计
4.1主程序设计
主程序由系统初始化段(兼作系统清零模块QINGLING)、按钮扫描模块START、两队加分模块AJIA和BJIA、两队减分模块AXIA和BXIA、比分交换模块JIAOHUAN、加减分数选择模块JFS和预置分模块YUZHI等组成。
主程序的功能包括:
系统初始化、按钮扫描以及系统控制功能的实现。
如下图4-1所示为本系统主程序流程图。
图4-1主程序流程图
4.1.1重要模块分析
(一)系统清零模块QINGLING
该模块即作为系统初始化段,也可调用其对系统进行清零。
QINGLING:
CALLXIANSHI;调用显示子程序,避免按钮按下时显示器灭
JNBP3.2,QINGLING;等待按钮断开,按键一次
CALLDISHENG;调用发声子程序,发出“滴”的一声
MOV32H,#00H
MOV31H,#00H32H单元存左队分数个位,31H单元存左
MOV30H,#00H队分数十位,30H单元存左队分数百位
MOV35H,#00H35H单元存右队分数个位,34H单元存右
MOV34H,#00H队分数十位,33H单元存右队分数百位
MOV33H,#00H本段将两队分数各位都清零。
MOVR0,#02H;默认当前加减分数为2分
(二)按钮扫描模块START
该模块通过不断的循环读取指定管脚的状态,当读到某个管脚的状态为“0”时,则跳转去执行对应的模块,执行完后又跳转到START重新扫描按钮。
START:
CALLXIANSHI;调用显示子程序
JNBP3.2,QINGLING;当P3.2为“0“时转到QINGLING
JNBP3.4,JFS1;当P3.4为“0“时转到JFS1
JNBP3.3,YUZHI1;当P3.3为“0“时转到YUZHI1
JNBP1.0,JIAOHUAN1;当P1.0为“0“时转到JIAOHUAN1
JNBP1.3,AJIA;当P1.3为“0“时转到AJIA
JNBP1.4,AXIA;当P1.4为“0“时转到AXIA
JNBP1.5,BJIA;当P1.5为“0“时转到BJIA
JNBP1.6,BXIA;当P1.6为“0“时转到BXIA
JMPSTART;跳转回START继续扫描按钮
值得注意的是,JNB指令的跳转范围有限,所以需要添加一些无条件转移指令来扩大跳转的范围。
例如本系统中的:
JIAOHUAN1:
SJMPJIAOHUAN
JFS1:
SJMPJFS
YUZHI1:
SJMPYUZHI
(三)加减分模块AJIA和AXIA
该模块实现的是待处理数据的转存,以便调用子程序来处理以及处理完后的数据返回到原来的存储单元。
另外就是因为按钮扫描模块中调用子程序比较麻烦,所以需要利用该模块来调用分数处理子程序来处理分数。
在此以左边队的加减分模块为例来分析该模块。
左边队加分:
AJIA:
CALLXIANSHI
JNBP1.3,AJIA
CALLDISHENG
MOV36H,32H;分数个位存到36H单元
MOV37H,31H;分数十位存到37H单元
MOV38H,30H;分数百位存到38H单元
CALLJIA;调用加分处理子程序
MOV32H,36H;处理后的个位送回32H单元
MOV31H,37H;处理后的十位送回31H单元
MOV30H,38H;处理后的百位送回30H单元
JMPSTART;跳转回START继续扫描按钮
左边队减分:
AXIA:
CALLXIANSHI
JNBP1.4,AXIA
CALLDISHENG
MOV36H,32H
MOV37H,31H
MOV38H,30H
CALLJIAN;调用减分处理子程序
MOV32H,36H
MOV31H,37H
MOV30H,38H
JMPSTART
(四)加减分数选择模块JFS
该模块实现通过每次按下“加减分数选择按钮”可以循环的选择当前加减的分数为1分、2分、3分。
该当前加减的分数被寄存在寄存器R0中。
JFS:
CALLXIANSHI
JNBP3.4,JFS
CALLDISHENG
INCR0;R0中的数加1(R0的初始值为2)
MOVA,R0;将R0中的数送到累加器A
CJNEA,#4,JFS2;如果R0中的数等于4了,则继续往
MOVR0,#01H;下执行,使R0中的数变为1。
当R0
JFS2:
JMPSTART;中的数加1后不为4,则跳回START。
通过上述算法可以实现R0中的数循环的为1、2、3。
需注意的是:
CJNEA,#4,JFS2;由于CJNE的跳转长度不够,所以采用先
JFS2:
JMPSTART;跳到JFS2,再用无条件转移指令跳回START
4.1.2其他模块概述
比分交换模块JIAOHUAN和预置分模块YUZHI都是利用数据传送指令和数据交换指令来实现存储单元中数据的互换和预置数。
比分交换模块实质是利用“XCH”指令将32H、31H、30H单元中的数据分别对应与35H、34H、33H单元中的数据进行互换。
预置分模块实质就是利用“MOV”指令将需要预置的数据传送到对应的单元和寄存器,相当于初始化。
4.2加减分子程序设计
4.2.1加分子程序
JIA:
MOVA,36H
ADDA,R0;将分数的个位与当前加减分数相加,结果存入A中
CJNEA,#10,ZHUAN1;当A中的数不等于10则转到ZHUAN1
MOVA,#00H;当A中的数等于10,
MOV36H,A;则分数个位变成0
INC37H;分数十位则加1
JMPZAIJIA1;跳去ZAIJIA1判断分数十位是否大于10
ZHUAN1:
JNCBIG1;若A中的数大于10则转去BIG1
JCSMALL1;若A中的数小于10则转去SMALL1
BIG1:
CLRC;SUBB是带进位运算的,所以要清进位标志
SUBBA,#10;A中的数大于10,则将其减去10
MOV36H,A;所得结果为分数个位16进制转10进制
INC37H;分数十位数要加1
ZAIJIA1:
MOVA,37H
CJNEA,#10,ZHUAN10
MOVA,#00H
MOV37H,A
INC38H
RET
ZHUAN10:
JNCBIG10
JCSMALL10;对分数十位的处理类同于个位的处理,
BIG10:
CLRC;算法上可以说是完全相同。
SUBBA,#10;由于比赛分数一般不会出现上千分的情
MOV37H,A;况,所以对于分