单片机课程设计(比赛记分牌设计)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书
学生姓名:专业班级:
指导教师:工作单位:
题目:比赛记分牌设计
一、设计要求:
1.启动时显示为0分,几分范围为0~99分。

2.得分时加上相应的分数,失分时减去相应的分数。

3.刷新分数的按钮按下时,伴随提示音。

二、主要功能模块:
比赛记分牌系统主要功能模块包括单片机主控模块、显示模块、按键模块、电源模块等部分组成。

根据具体情况选择合适型号的单片机、蜂鸣器、数码管等硬件设备进行设计。

三、要求完成的主要任务:
1. 根据功能要求完成硬件电路设计,提供硬件电路图。

2. 使用汇编或者C语言完成软件部分设计,实现相应功能。

要求程序加注释并
提供软件流程图。

3. 使用Proteus软件进行系统仿真,并提供仿真截图,测试数据,误差分析。

四、时间安排:
2019.10.15~2019.10.21 收集资料,确定设计方案
2019.10.22~2019.11.26 系统设计
2019.11.27~2019.12.13 撰写课程设计论文及提交
指导教师签名:年月日
摘要
本设计是根据我们所学习的单片机课程,按照大纲要求对我们进行的一次课程检验,是进行单片机课程训练的必要任务,也对我们掌握单片机应用有很大的帮助。

掌握单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。

近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。

本单片机系统采用STC89C51(仿真中用AT89C51)控制,整个硬件系统由A/D、D/A转换、LED显示、键盘、串行通信等模块组成。

本设计只完成了单片机部分的开发设计,没有设计外部的采集和控制电路。

因为没有外部采集电路,所以不能完成具体的测量功能,要完成具体的测量功能(如测量压力、温度、湿度)还要配上外部的各种传感器采集电路和相应的软件。

若配上采集电路和相应的软件就能将测量结果用LED数码管十进制显示出来,其中包括了A/D、D/A转换,还可以用按键来控制,进行人机对话;系统中设置了6个按键,其中1个是复位键,1个是刷新键,其余的4个键,用程序来控制实现不同的功能。

之所以没有设计外部采集电路是因为设计了外部采集电路系统的功能就比较单一,不方便系统功能的外部扩展。

该系统还能实现单片机与PC机的串行通信和编程的下载、软件设计的时钟显示。

关键词:单片机AT89C51,串行通信,A/D转换,D/A转换,LED数码管显示。

目录
一、课程设计说明 (2)
1.1课程设计目的 (2)
1.2本次课程设计任务的主要内容和要求 (2)
1.3总体方案设计 (2)
二、实验设备 (3)
2.1 Proteus (3)
2.1.1 Proteus软件简介 (3)
2.1.2 Proteus软件仿真 (4)
2.2 汇编软件keil c51 (4)
2.2.1 汇编软件 (4)
2.2.2汇编编程 (4)
三、硬件说明 (4)
3.1MCS-51 (4)
3.2单片机的时钟电路 (5)
3.3单片机复位电路工作原理 (5)
3.4 单片机晶振电路工作原理 (6)
3.5 按键电路的设计 (6)
3.6蜂鸣器驱动电路设计 (7)
3.7 数码管特性及使用 (7)
四、硬件原理 (8)
4.1 电路原理图 (8)
4.2硬件原理图 (9)
五、软件设计 (9)
5.1软件流程图 (10)
5.2软件程序 (11)
六、小结 (14)
七、结束语 (15)
设计资料及参考文献 (15)
一、课程设计说明
1.1课程设计目的
本次课程设计是运用《单片机原理及接口技术》专业基础课程进行的一次综合训练,其主要目的是加深学生对单片机软件技术和相关理论知识的理解,进一步熟悉51单片机系统设计的基本理论、方法和技能;掌握工程应用的基础和要求,力争做到理论与实际的统一;同时培养学生分析问题、解决问题的能力和独立完成系统设计的能力,并按要求编写相关的技术文档和设计报告等。

1.2本次课程设计任务的主要内容和要求
1、设计内容:
(1)启动时显示为0分,几分范围为0~99分。

(2)得分时加上相应的分数,失分时减去相应的分数。

(3)刷新分数的按钮按下时,伴随提示音。

2、主要功能模块:
比赛记分牌系统主要功能模块包括单片机主控模块、显示模块、按键模块、电源模块等部分组成。

根据具体情况选择合适型号的单片机、蜂鸣器、数码管等硬件设备进行设计。

1.3总体方案设计
基于AT89C51单片机比赛计分牌由显示模块、按键模块、单片机主控模块、电源模块等组成,系统框图如图 1-1所示:
图1-1
二、实验设备
Proteus 8.0 Professional 软件及汇编软件keil c51
2.1 Proteus
2.1.1 Proteus 软件简介
Proteus 不仅具有其它EDA 工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

Proteus 是世界上著名的EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、
PIC10/12/16/18/24/30/DsPIC33、AVR 、ARM 、8086和MSP430等,2010年又增加了Cortex 和DSP 系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR 、Keil 和MPLAB 等多种编译器。

Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。

因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。

对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

电源
晶振电路
STC89C51单片机 按键电路 显示电路 扬声器电路
复位电路
2.1.2 Proteus软件仿真
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

2.2 汇编软件keil c51
2.2.1 汇编软件
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。

C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。

C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。

uVision2 IDE可为它们提供单一而灵活的开发环境。

2.2.2汇编编程
(1)新建工程→保存工程
(2)新建文件→保存文件(按格式保存)
(3)为source group增加文件
(4)调整目标属性
(5)生成HEX文件以备proteus仿真
三、硬件说明
3.1 MCS-51
STC89C51RC是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含4K Bytes的可反复擦写1000次的Flash 只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。

STC89C51RC系列单片机是单时钟/机器周期(1T)
的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/精简指令集结构,内部集成MAX810 专用复位电路。

3.2单片机的时钟电路
单片机本身是一个复杂的同步时序系统,为保证同步工作方式的实现,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。

单片机的时钟电路由振荡电路和分频电路组成。

其中震荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。

而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。

如图3-1
图 3-1 单片机的晶振电路
3.3单片机复位电路工作原理
复位是单片机的初始化操作,其作用是使CPU中的各个部件都处于一个确定的初始状态,并从这个状态开始工作。

当单片机的ALE及两脚输出高电平,RST 引脚高电平时,单片机复位。

单片机的复位电路有上电复位和手动按钮复位两种形式,RST/VPD端的高电平直接由上电瞬间产生高电平则为上电复位;若通过按钮产生高电平复位信号称为手动按钮复位。

在实际应用系统中,有些外围芯片也需要复位,如果这些复位端的复位电平要求与单片机的要求一致,则可以与之相连。

复位后,P0—P3四个并行接口全为高电平,其它寄存器全部清零,只有SBUF 寄存器状态不确定。

图3-2复位原理电路
3.4 单片机晶振电路工作原理
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。

高级的精度更高。

有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器。

晶振的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

3.5 按键电路的设计
图3-3按键电路
本次实验用了四个按键电路:复位电路、刷新电路、加减分电路和清零电路。

四个按键电路都是通过手动按下按键拉低电平来分别实现相应的清零及加减分功能。

按下刷新按钮分数闪烁且蜂鸣器发出声音。

3.6蜂鸣器驱动电路设计
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。

(注:硬件这里采用的是有源蜂鸣器)
如图3-4蜂鸣器驱动电路
3.7 数码管特性及使用
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,
位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。

下图3-6分别为共阳极和共阴极数码管引脚图:
图3-5
作为共阳极右为共阴极引脚结构
四、硬件原理
4.1 电路原理图
根据上述分析,设计出基于AT89C51单片机的比赛计分牌电路原理图如图4-1所示。

电源电路为单片机以及其他模块提供标准5V电源。

晶振模块为单片机提供时钟标准,使系统各部分能协调工作。

复位电路为单片机提供复位功能。

单片机作为主控制器,根据输入信号对系统进行相应的控制。

数码管显示选手当前的得分。

按键设置模块用来刷新选手的得分,当选手得分或者失分时可以通过
这两个按钮对选手分数重新设置。

蜂鸣器用作按键提示,当有按键按下时蜂鸣器发出声音,按键释放时停止发声
4.2硬件原理图
图4-1 仿真连线图
系统板硬件连线如图4-1所示:
(1) 单片机的P0口和P1口依次接到数码管的a~g端,并加有驱动;
(2) 18和19引脚接外部晶振的时钟电路;
(3) P3口接按键电路;
(4) 28引脚接蜂鸣器电路。

五、软件设计
检测低电平
延时去抖动
检测低电平
返回键盘
图5-1 按键扫描流程图
开始
初始化
判断是否有按键按下
再次判断
判断是否加分
加分减分
判断清零
输出分数
图5-2 主流程图
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit S1=P3^0;
sbit S2=P3^1;
sbit S3=P3^2;
sbit S4=P3^3;
sbit S5=P3^4;
sbit S6=P3^5;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
sbit p27=P2^7;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar key;
uchar a,b;
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<200;y++);
}
display1()
{
P0=tab[a%10];
p21=1;
delay(10);
p21=0;
P0=tab[a/10];
p20=1;
delay(10);
p20=0;
return a;
}
display2()
{
P1=tab[b%10];
p23=1;
delay(10);
p23=0;
P1=tab[b/10];
p22=1;
delay(10);
p22=0;
return b;
}
void key_scan()
{
P3=0xff;
if((P3&0x3f)!=0x3f) {
delay(50);
if((P3&0x3f)!=0x3f) {
if(S1==0)
key=1;
if(S2==0)
key=2;
if(S3==0)
key=3;
if(S4==0)
key=4;
if(S5==0)
key=5;
if(S6==0)
key=6;
}
}
}
void one()
{
a++;
if(a==100)
{a=99;}
display1();
display2();
}
void two() {
if(a!=0)
{a--;}
display1(); display2(); }
void three() {
b++;
if(b==100) {b=99;}
display2(); display1(); }
void four() {
if(b!=0)
{b--;}
display2(); display1(); }
void five() {
a=0;
display1(); b=0;
display2(); }
void six() {
if(S6==1)
{display1(); display2();} else
{
p27=0;
P0=~P0;
P1=~P1;}
}
void main()
{
display1();
display2();
key=0;
while(P3!=0x3f)
{
if(P3!=0x3f)
{
if(S1==0)
S1=1;
else
S1=0;
}
key_scan();
switch(key)
{
case 0:display1();display2();break;
case 1:if(S1==0)one();while(!S1);display1();display2();break;
case 2:if(S2==0)two();while(!S2);display1();display2();break;
case 3:if(S3==0)three();while(!S3);display1();display2();break; case 4:if(S4==0)four();while(!S4);display1();display2();break;
case 5:if(S5==0)five();while(!S5);display1();display2();break;
default:if(S6==0)six();while(!S6);display1();display2();break;
}
}
}
六、小结
通过本次课程设计,通过我们的努力使我有对51单片机有了更进一步的了解,对51单片机的更能结构更记得熟悉了。

课程设计是在原有的学科基础上所进行的更深层次的综合性较强的学习。

在本次课程设计中,我们2个人分为一组,彼此合作,经过几天的努力,终于完成了本次课程设计。

这次我们课程设计的题目;是比赛记分牌。

刚接触这个课题我们通过网络对课题惊醒了解与分析,但在网上查阅的资料都是与篮球等比赛记分牌的设计方法与我们所做的课题有所偏离,针对这个问题我与另一位小组成员通过分工在图书馆里找到相关的书籍进行查阅,进行总结设计分析,再结合网络中其他记分牌的
设计原理进行比较完成了我们的课程设计。

但由于我们所学的《单片机原理及接口技术》时间不长,外加书本上的内容相对简单,我不太清楚如何去利用从中所学的知识,很难将书本上的基本理论与实际的问题结合起来。

所以我们做了一个比较简单的功能应用。

七、设计心得
这次课程程设计是我们学到了很多从中明白一些道理会让我们在以后的学习和生活中受益。

首先,理论课的重要性。

平时上理论课的时候总觉得理论课上的知识与实践总有很远的距离,不知道上理论课的重要性,所以在学的时候兴致缺乏,但在课程设计时,才发现根修房子最重要是打好地基一样,没有理论课所学知识的支撑设计根本无法完成。

其次,不刚愎自用。

在做该课程设计过程中遇到困难的时候,不要忘记学习除了一个人独自琢磨外还应多与同学切磋,一个人学习容易走进死胡同,而且进入死胡同后会大大的打击做设计的积极性,这时候应与同学多交流,从一个新的角度去看待问题、分析问题、解决问题,会有耳目一新的感觉。

再做起设计来事倍功半,最主要的是,从课程设计中学会了把课本上的理论知识实践化,还有良好的编程风格,注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。

如果注释和代码不一致,那就更加糟糕。

参考文献
[1]张毅刚.单片机原理及接口技术.人民邮电出版社. 2009.6.
[2]贺哲荣、黄金波. AT89S51单片机硬件设计与编程实例.中国电力出版社. 2012.7.
[3]陈忠平.基于Proteus的51系列单片机设计与仿真.电子工业出版社. 2001.9.。

相关文档
最新文档