当前位置:文档之家› 单片机课程设计计分器设计

单片机课程设计计分器设计

湖南工程学院课程设计任务书课程名称单片机原理与应用课题比赛计分器设计专业班级电子科学与技术学生姓名学号指导老师审批任务书下达日期20年月 2 日任务完成日期201年7月日目录第1章系统概述 (1)1.1系统功能 (1)1.2设计内容及要求 (1)1.2.1 设计内容: (1)1.2.2 设计要求: (1)1.3按钮设置 (2)第2章总体方案设计 (3)2.1总体系统框图 (3)2.2系统组成 (3)第3章系统硬件设计 (5)3.1控制电路设计 (5)3.1.1 复位电路 (5)3.1.2 矩阵按钮电路 (5)3.2数码管显示电路设计 (6)第4章软件设计 (8)4.1主程序设计 (8)4.2各子程序设计 (8)4.2.1 延时子程序 (8)4.2.2 初始化子程序 (9)4.2.3 交换按钮程序 (9)4.2.4 状态部分程序 (10)4.2.5 加减部分程序 (11)第5章实物连接图 (12)5.1交换分值 (12)5.2发光二极管指示 (13)5.3清零 (13)5.3软件调试结果 (13)设计总结 (14)参考文献 (15)附录A:源程序清单 (16)附录B:总体硬件实物图 (21)电气信息学院课程设计评分表 (22)第1章系统概述1.1系统功能设计一个甲、乙两队比赛计分器,主要用于各种体育比赛记录分数。

采用矩阵式键盘作为输入。

基于以上思路,本次设计使用80C51实现一基于单片机的电子计分器的设计,其主要具有如下功能:(1)用户可分别对两队比分进行加1、加2、加3和减1,减2,减3操作。

(2)比分通过6个8段共阴极数码管显示器进行显示,每队比分显示三位,可以交换两队的比分。

(4)具有复位功能,通过复位键实现。

(5)预置分可通过加或减分按钮实现。

1.2设计内容及要求1.2.1 设计内容:(1)给甲乙两队分别设置一个分数控制按钮,此按钮有7种状态,分别为+1、+2、+3、-1、-2、-3,+10(置数)。

(2)设置一个切换状态按钮,可以分别切换每一种状态,然后每一种状态会有相应的发光二极管点亮以区别是哪种状态。

(3)设置一个复位按钮,按下实现甲、乙队总分回到初试分及显示(4)设置一个交换分按钮,用于交换甲乙比分。

1.2.2 设计要求:方案合理、正确,系统稳定、可靠。

软件设计要求尽可能精练、简短和运行可靠。

硬件电路要求简单明了,以节约成本。

1.3 按钮设置本设计的宗旨是用最少的按键实现最多的功能。

设计中一共用到了5个按钮,分别为:清零按钮、甲的加分减分按钮,乙的加分减分按钮,切换状态按钮和交换比分按钮。

每个按钮的功能如下:控制甲的按钮:实现+1、+2、+3、-1、-2、-3,+10(置数)功能;控制乙的按钮:实现+1、+2、+3、-1、-2、-3,+10(置数)功能;切换按钮:实现甲乙的各种状态的切换;减缓比分按钮:交换甲乙的比分;清零按钮:实现甲乙比分清零;第2章总体方案设计2.1 总体系统框图此次设计80C51单片机为核心,配以一定的外围电路和软件,以实现比赛计分器的功能。

利用6个8段共阴级数码管显示器.采用动态显示输出比分,用户信息输入则采用4×4矩阵式键盘,起状态切换用发光二极管的状态表示。

用一片单片机可满足本设计的输入输出。

系统设计方案的硬件电路设计框图如图2-1所示。

图2-1 硬件电路设计2.2 系统组成系统由硬件部分和软件部分组成。

硬件电路由复位按钮、80C51单片机、矩阵键盘和7个发光二极管,6个数码管等组成。

软件部分主程序主要由系统初始化段、键盘识别、键值处理、8段共阴极LED显示器扫描显示子程序组成。

软件设计主要分为四个部分:信息输入、信息处理、显示输出。

信息输入时采用矩阵式键盘来实现,所以需要检测键盘有无按键的子程序;信息处理需要对用户通过键盘输入的不同信息进行辨别并执行相应的处理;显示输出考虑到成本和电路体积,决定采用动态输出,从而达到设计的目的。

第3章系统硬件设计3.1控制电路设计3.1.1 复位电路如图3-1所示,按钮与单片机的RST引脚相连,当每次按下该按钮后,系统将通过软件实现对计分回到初始值功能。

后,它所在的行列线就导通了,所以如果一条线上是低电平,那么按键的另一条线也是低电平。

先给第一行送一个低电平,读取列值,就可以判定第一行上是否有按键按下,如果有按键,那么列线里面就有一条线为低电平。

如果都为高电平,说明第一行上没有按键被按下,接着给第二行送低电平,重复上述步骤,就可以读取按键了。

也可以用另外一种方法:先给行线全部写“0”,然后看列线是否有为低电平的,如果有说明那一列上有键被按下,让后要确定按键所在的行的,给所有列线写“0”,读取行线的值就可以确定按键的具体位置了,让后将两次读取的值,组成一个值j就得到了键值。

图3-2 矩阵键盘的接口电路3.2数码管显示电路设计显示器采用8段共阴极数码管显示器,来实现显示器的动态扫描,八个二极管连接一个阴极的结构,只要另一段为高电平,二极管就会发光,从而形成一段。

将八段顺序排列后就成为具有一定编码的共阴显示器了。

动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。

如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。

显示电路如图4所示。

图3-3 数码管显示电路数码管显示采用8个8段数码管显示器,来实现显示器的动态扫描显示采用动态扫描显示方法,即由显示器扫描显示子程序控制显示器逐个循环从左至右依次点亮各个显示器。

由单片机的P0口控制显示。

第4章软件设计4.1主程序设计主程序主要由系统初始化段、键盘识别、键值处理、6个8段共阴极LED显示器扫描显示子程序组成。

通过对以上各段和子程序的结合,以实现系统功能。

该系统主程序流程图如下图所示。

图4-1 系统主程序流程图4.2各子程序设计4.2.1 延时子程序void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}此段程序是根据实验板各硬件的参数具体设置的。

4.2.2 初始化子程序void init(){cnt=0;num=0;wela=0;dula=0;temp=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}初始化程序是用来对各定义的变量初始化的,每一次主程序执行之前都要先执行初始化程序以保证变量的值为初值。

4.2.3 交换按钮程序if(key4==0) //当交换键按下{delay(10);if(key4==0){m=bai;bai=aa;aa=m;n=shi;shi=bb;bb=n;p=ge;ge=cc;cc=p;while(!key4); //去抖delay(10);while(!key4);}}此程序就是当交换按键按下时,利用中间变量改变甲乙的每一位的数值,这样就能实现交换甲乙两队的比分,然后再给电路去抖动,就不会出现问题了。

4.2.4 状态部分程序for(i=0;i<4;i++){ if(key3==0){ if(key3==0){ num++;if(num==7)num=0;delay(5);switch(num){ case 0: cnt=-3;d7=0;d6=1;break;case 1: cnt=10;d1=0;d7=1;break;case 2: cnt=1;d2=0;d1=1;break;case 3: cnt=2;d3=0;d2=1;break;case 4: cnt=3;d4=0;d3=1;break;case 5: cnt=-1;d5=0;d4=1;break;case 6: cnt=-2;d6=0;d5=1;break; }}while(!key3);delay(10);while(!key3);}}该程序是主函数里面的部分程序,当切换分按钮按下时利用switch case 语句来实现甲乙各种状态之间的切换,并且同时控制了7个发光二极管的显示来表明当前处于什么状态。

切换到相应的状态时在执行显示扫描程序将实现切换功能。

4.2.5 加减部分程序if(key1==0) //甲控制按钮按下{ delay(10); //延时if(key1==0){ temp=temp+cnt; //实现加减运算if(temp==256)temp=0; }while(!key1); //去抖delay(10);while(!key1);bai=temp/100; //分离处百位shi=temp%100/10;ge=temp%10;}该程序是通过前段调用一个变量cnt来作为本次运算的加数,然后通过切换状态来做不同的运算。

这样就免去了很多不必要的程序,直接调用实现,简化了程序。

第5章实物连接图单片机语言程序是基于Keil uVision2编程软件编写的。

在keil内建立工程后建立汇编文件,编写MCS-51程序。

然后进行单步和断点调试,将运行结果和实验现象与预定值进行比较,再适当修改程序以达到要求。

最后通过软件下载到单片机即可看到相关的实验结果。

5.1 交换分值图5.1比赛分值图5.2 交换分值当按下交换分值按钮过后甲乙两队的比分将交换,如上面实物图所示。

5.2 发光二极管指示图5.3 切换按钮指示灯5.3 清零图5.4 比分清零5.3 软件调试结果调试结果记录如下:按照键盘分布说明按键,可以给甲、乙加或者减1分,2分,3分,显示器跟踪显示出总分,然后模拟比赛细节,均达到预期效果。

在甲、乙均有一定总分的情况下,按复位按钮,显示结果复位。

重复进行上面操作,结果均符合设计要求。

可以通过切换按钮选择不同的状态,将会实现不同的功能。

还可以通过比分交换按钮交换双方的比分,这点是非常实际化的,在现实比赛中也有这样的功能,完全实现了比赛的要求。

设计总结这次的课程设计是做一个计分器,主要是以MCS-51单片机为出发点,结合Keil uVision2编程软件和Proteus调试软件的一门计算机语言,通过指令来控制相应硬件的运行状态,虽然这次设计只有短短的两周时间,但我深刻体会到了其中的苦与乐,感悟甚是深切,总觉得从书本上接受的东西不如操作和实践来的那么深刻。

在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次课程设计发现自己的看法有点太片面,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质,并将理论与实际相结合,学以致用,不再是纸上谈兵,。

相关主题