单片机应用技术 课件 项目5、6 篮球计分器设计与实现、呼叫器设计与实现_第1页
单片机应用技术 课件 项目5、6 篮球计分器设计与实现、呼叫器设计与实现_第2页
单片机应用技术 课件 项目5、6 篮球计分器设计与实现、呼叫器设计与实现_第3页
单片机应用技术 课件 项目5、6 篮球计分器设计与实现、呼叫器设计与实现_第4页
单片机应用技术 课件 项目5、6 篮球计分器设计与实现、呼叫器设计与实现_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目5篮球计分器设计与实现素质目标1.通过调研显示装置的应用现状,树立科技创新和民族品牌意识。2.培养学生自主学习及团队协作意识,提高学生合作探究解决问题的能力。3.培养学生的代码编写规范、勇于实践的劳动精神和精益求精的工匠精神。知识目标1.能说出数码管动态显示方式。2.能提供数码管动态电路设计。3.能说出全局变量的使用。能力目标1.能分析电路原理图和能使用常用元器件设计数码管电路模块;2.能够基于C语言,熟练运用数组和全局变量,学会数码管动态显示的程序编写调试。设计要求:设计一个篮球比赛计分器的单片机应用系统,即单片机的某个I/O口作输入口,接5个独立按键为功能按钮;单片机的某些I/O口作输出口,接两个4位数码管,通过编程实现A、B两队的比分显示效果;单片机的某些I/O口作输出口,接两个LED发光二极管,作为A、B两队的加分指示灯。(1)用数码管显示A、B两队的分值;能显示A、B两个字母,这两个字母后面显示两队的得分;(2)有5个按键,按下1键是A、B两队加减分的切换键,按下2键数码管显示加1分,按下3键数码管显示加2分,按下4键数码管显示加3分,按下5键数码管显示复位0分;(3)用两个LED发光二极管作为两个队的加分指示信号灯。基于单片机的篮球计分器篮球计分器的作用及原理一、计分器的作用计分器是一种可以用在不同工作、生活场合,在任意比赛中进行计时、记分,比赛队伍信息、犯规等的信息显示装置,对各项比赛的顺利进行和准确记录十分重要,对于提高比赛质量有着非常至关重要的作用。计分器的功能完善、操作简单、维护方便,不仅应用在篮球比赛中,也可以运用在任何形式的比赛。二、篮球计分器的原理篮球比赛计分器利用单片机技术和按键、显示器等组成系统,通过按键系统完成计分操作;通过显示装置如数码管、LED显示屏等将比赛内容显示出来,特别有的大型LED显示屏根据球类比赛的特点精心设计,采用高亮度LED制作,可以保证其长时间运作,也具备了高亮度、可视性、小功耗、使用寿命长等优点。数码管动态显示工作原理连接

数码管动态显示的连接方式是将所有数码管的段码“a、b、c、d、e、f、g、dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制特点节约I/O资源功耗低动态显示电路LED数码管显示驱动技术位码用三极管控制

三极管是日常应用电路中经常会用到的器件。它分为PNP型和NPN型。三极管的规格可以根据LED所需的驱动电流大小进行选择,电流比较小的可以用9013、8550等小功率晶体管,电流比较大的则可以BU208等大功率三极管。三极管驱动LED数码管显示驱动技术三极管是我们的日常应用电路中经常会用到的一个器件。分为PNP和NPN型。三极管常用功能:1、开关控制2、信号放大3、电平转换共阴数码管共阳数码管

8050(9014)8550(9015)LED数码管显示驱动技术PNP型三极管NPN型三极管三极管的型号记忆方式:箭头朝哪腿朝哪,导通电压顺箭头过,电压导通,电流控制b:基极e:发射极c:集电极LED数码管显示驱动技术LED驱动控制专用电路TM1618

TM1618是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,如图所示。内部集成有MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。主要应用于VCR、VCD、DVD及家庭影院等产品的显示屏驱动。TM1618驱动共阳数码屏接LED数码管显示驱动技术段码驱动采用总线驱动集成电路74HC244/74HC24574HC245是一个集成缓冲、驱动于一体的集成电路,可应用于时钟驱动、地址驱动、PC机板的总线收发总线。74LS245是8路同相三态双向数据总线驱动芯片,具有双向三态功能,既可以输出,也可以输入数据。/G为低电平有效;DIR=“1”,信号由A向B传输。引出端符号:A

总线端B

总线端/G

三态允许端(低电平有效)DIR

方向控制端74HC245LED数码管显示驱动技术移位寄存器74HC59574HC595具有8位串入并出的移位寄存器和一个8位输出锁存器,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在输出的同时,传送下一组移位数据,而不影响以前的输出状态。74HC595局部变量和全局变量变量可以在程序中函数内部或所有的函数外部两个地方说明。根据所定义变量值位置(作用域)的不同,

变量可分为局部变量和全局变量。从变量值存在的时间(生存期)来分的

可以有静态存储变量和动态存储变量之分。具体包括自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)4种C语言中的变量存储分类指定auto变量

auto变量动态分配存储空间,用完后释放。auto称为自动变量

如果函数不做其他说明的话均为自动变量。static变量

static变量,存储单元固定,用完后不释放extern变量

extern全局变量(在函数外部定义)的作用域为从变量的声明处开始,到本程序文件的结尾。有时还需要用extern来声明外部变量,以扩展外部变量的作用范围。

如:一个文件中定义:intnum;另一个文件中声明引用:externintnum;//注意,声明时类型要与定义一致局部变量在函数内部定义的变量称为局部变量。局部变量仅由被定义的函数内部的语句所访问。函数以“{”开始,以“}”结束,也就是说局部定义的变量只在{}内有效,即只有在程序执行到定义它的模块时才能生成,一旦执行退出该模块则起变量消失。

例:func

(){

int

x;

//等价于autointx,局部变量x的作用域很明确

......}全局变量全局变量与局部变量不同,能贯穿整个程序,并且可被任何一个模块使用。它们在整个程序执行期间保持有效。全局变量定义在所有函数之外,它可以被函数内的任何表达式访问,在程序执行的过程中一直有效。全局变量通常在程序顶部定义。全局变量一旦定义后就在程序的任何地方可知。可以在程序中间的任何地方定义全局变量,但要在任何函数之外。全局变量例如:/******************************************************/……

unsignedcharh,m;

//定义全局变量/******************显示函数************************/voiddisplay(ucharh,ucharm){dat[0]=h/10; //1位dat[1]=h%10;

//2位dat[2]=m/10; //3位dat[3]=m%10; //4位……}/******************主函数***************************/voidmain(){

h=12,m=30;display(h,m); //初始时间位12:30}

本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制。本系统的硬件采用模块化设计,以AT89C52单片机为核心,与时钟电路、复位电路及数码管显示组成控制系统。该系统硬件主要包括以下几个模块:AT89C52主控模块、数码管显示模块、按键电路模块、加分LED显示电路等。本系统软件主要实现篮球计数器加分、减分等显示功能。篮球计分器方案设计单片机数码管显示电路复位电路时钟电路电源电路按键电路加分LED显示电路硬件方案确定最小系统单片机两队加分显示设计硬件方案按键电路设计数码管显示设计硬件电路设计动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留(20ms)作用,使人的感觉好像各位数码管同时都在显示。数码管的动态显示要点提示1.若干个数码管的段端接一起,通过单片机的I/O口控制数码管的位选端,实现若干个数码管轮流显示2.单片机的1个I/O口带着若干个数码管,电流小,所以数码管亮度低。所以要加驱动(加三极管、驱动器),增加亮度。共阳数码管:需要高电平,加PNP三极管(8550)共阴数码管:需要低电平,加NPN三极管(8050)3.延时时间合理设置;过长或过慢都不行。硬件电路设计篮球比赛计分器包括最小系统、得分按键电路及数码管显示电路。篮球比赛计分器的得分由按键电路完成,利用P1口的P1.0~P1.4端口分别实现AB队切换、加1分、加2分、加3分、AB两队比分清零的功能。采用两个4位共阳极数码管为显示器。它们的段选端连接到P0口,位选端分别连接到P2口,P0口的上拉电阻可以使用8个1K电阻。两队的加分指示灯连接到P3口的P3.0和P3.1端口篮球计分器的硬件原理图算法分析

4位数码管的8个显示笔划"a,b,c,d,e,f,g,Dp"的同名端是连在一起的,当程序从P0口输出字形码时,在同一个时间所有数码管都会接收到相同的字形码。

如何显示出4个不同的字符呢?因此,就要使用动态扫描了,在程序中,首先显示一个数,然后关掉;然后显示第二个数,又关掉,显示第三个数,又关掉……直到所有要显示的4个数完成,再从头开始扫描。轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。篮球计分器系统程序设计篮球计分器系统程序设计开始数码管1置位查表取数显示延时熄灭(关断显示)数码管2置位查表取数显示延时熄灭(关断显示)数码管3置位查表取数显示延时熄灭(关断显示)动态显示算法分析绘制程序流程图

(1)主程序流程图绘制

主程序包括键盘扫描与键位功能处理子程序、十进制数分离子程序和数码管动态扫描显示子程序的调用。键盘扫描与键位功能处理子程序是查询判断哪个功能键被按下,确认某个键被按下后再转到该键的功能处理程序。十进制数分离子程序是将A、B两队积分数据的百位、十位和个位上的数字分离出来并送数码管显示。数码管动态扫描显示子程序是在数码管上动态显示A、B队和它们的比分情况。篮球计分器系统程序设计绘制程序流程图

(2)数据分离子程序设计

十进制数分离子程序的编写思路是:表示A队在数码管的最高位显示“A”,则引用数组中字符A的编码位置下标10,接着将积分对100取整即得到百位数字送数码管,然后将积分对100求余数运算,用余数对10取整即得到十位数字,最后将积分对10求余运算,得到的余数即个位数字。篮球计分器系统程序设计绘制程序流程图

(3)数码管动态扫描显示子程序

数码管动态显示的具体编程思路是:第一位数码管显示“A”→延时1ms→关闭所有数码管显示→第二位数码管显示“百位数”→延时1ms→关闭所有数码管显示→第三位数码管显示“十位数”→延时1ms→关闭所有数码管显示→第四位数码管显示“个位数”→延时1ms→关闭所有数码管显示→返回到第一步重新进行新一轮扫描过程。篮球计分器系统程序设计送段码送位码延时关数码最后一位?移位N动态显示扫描流程图开始结束绘制程序流程图

(3)数码管动态扫描显示子程序

voiddisplay(){

unsignedchartmp,i;//定义局部变量tmp=0x01;for(i=0;i<4;i++){

P3=tmp;//送位码P2=tab[i];//送段码delay(2);//延时P2=0XFF;//关断数码管

tmp=tmp<<1;//左移到下一位数码管}}

程序说明:延时时间合理设置;过长或过慢都不行。篮球计分器系统程序设计1.LED数码管按显示方式有静态显示和动态(扫描)显示。

动态显示扫描是一种轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端”有效,并送出相应的字型显示编码。此时,其它位的数码管因“位选端”无效而都处于熄灭状态,下一时段按顺序选通数码管的另一位“位选端”有效,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。2.全局变量与局部变量1.在本项目篮球计分器现有功能的基础上,增加具有比赛时间显示的功能。2.设计能调整时分秒(加1、减1)的6位数码管显示时钟。项目6呼叫器设计与实现素质目标1.通过对呼叫器的深入了解,培养学生利用科学技术改造生活、服务社会的意识。2.通过矩阵键盘功能的实现,培养学生严谨、求实的科学态度和思维方式。知识目标1.掌握矩阵式键盘的工作原理与接口连接。2.掌握C语言开关语句switchcase的使用。3.掌握单片机矩阵键盘接口的程序设计方法。能力目标1.能够根据设计要求,选择参数、性能合理的电子元器件,使用Proteus进行硬件电路仿真设计。2.熟练使用C语言开关语句switchcase。3.熟悉单片机矩阵键盘接口的程序设计方法。设计要求:

设计制作以MCS-51单片机为主控芯片,外接矩阵键盘、数码管显示电路,通过编程实现按键识别和状态信息显示等功能的呼叫器控制系统。

基于单片机的呼叫器控制系统矩阵键盘的结构与原理矩阵式键盘单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。由图可知,一个4×4的行、列结构,可以构成一个含有16个按键的键盘,节省了很多I/O口。控制方式:先判断是否有键按下。如有,再判断哪一键按下,并得到

键码值,然后根据键码值转向不同的功能程序。最常用的识别方法是键盘扫描法。

矩阵键盘接口电路

电路中单片机的P1口用作键盘I/O口,矩阵键盘的列线接到P1口的低4位,矩阵键盘的行线接到P1口的高4位。列线P1.0~P1.3设置为输入线,行线P1.4~P1.7设置为输出线。4根行线和4根列线形成16个相交点。

本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的输入与输出;软件主要完成信号的处理及控制功能等。本系统的硬件采用模块化设计,以AT89C52单片机为核心,与数码管接口电路、键盘电路组成控制系统。该系统硬件主要包括以下几个模块:AT89C52主控模块、数码管显示模块、矩阵键盘模块等。其中AT89C52主要完成外围硬件的控制以及一些运算功能,数码管显示模块完成字符、数字的显示功能;键盘模块主要完成按键处理功能。呼叫器系统方案设计数码管显示按键输入电路复位电路时钟电路电源电路单片机硬件方案确定最小系统电路单片机硬件方案矩阵键盘接口电路数码管接口电路

硬件电路设计呼叫器参考仿真电路图switchcase多分支选择语句

switchcase选择语句switch语句的一般形式如下:switch(表达式){case常量表达式1:{语句1;break;}case常量表达式2:{语句2;break;}case常量表达式3:{语句3;break;}case常量表达式4:{语句4;break;}default:{语句N;}}呼叫器系统软件设计return语句

return表达式;或return(表达式);

编写函数时,若求函数值,就要用return,若函数类型为void,则不用return语句。return从当前的方法中退出,返回到该调用的方法的语句处,继续执行;return返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致,可以使用强制类型转换来是数据类型一致;return当方法说明中用void声明返回类型为空时,应使用这种格式,不返回任何值。格式:1.return语句只能返回一个结果,若有多个处理结果需返回调用函数,要采用其他方法。2.若没有return语句,就一直执行到函数体的末尾},然后返回调用函数。3.流程从调用函数中的哪条语句转移到被调函数,返回时仍回到该语句。即从哪来哪回。哪

特点:1.只能在循环体内和switch语句体内使用break语句。2.当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。3.当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环体。4.在循环结构中,应用break语句使流程跳出本层循环体,从而提前结束本层循环。break语句

1.

continue语句的一般形式为:continue;2.其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。3.注意:执行continue语句并没有使整个循环终止。在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。4.在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,然后进行“表达式2”的条件测试,最后根据“表达式2”的值来决定for循环是否执行。在循环体内,不论continue是作为何种语句中的语句成分,都将按上述功能执行,这点与break有所不同。Continue语句矩阵式键盘软件设计与实现4X4小键盘,16个键分别对应1~16;有键按下,数码管显示;无键按下,数码管显示00;通过输出的列码和读取的行码来判断按下什么键;有键按下,要有一定的延时,防止由于键盘抖动而引起误操作。

主程序算法及流程图判断有无键按下去除按键的抖动确定键位并求键值判断闭合键是否释放

全键盘扫描判断按键按下的方法

1.初始化初始化键盘连接的I/O:将行对应I/O为1,列对应I/O口为0,即P1=0xf0,2.键盘扫描读取键盘P1端口状态,判断P1口的值,若不等于0xf0,则表示有键被按下;否则表示无键被按下。3.若有键按下,按键消除抖动后再次判断,若P1不等于0xf0,则说明有键按下,转键位确定函数执行,否则继续扫描键盘。

全键盘扫描参考程序/****************************************函数名称:Key_Scan()*函数功能:查询键盘是否有键按下?*输入/输出参数:无*返回值:无******************************************/voidKey_Scan(){unsignedcharx;P1=0x0f;x=P1;//读键盘状态if(x==0x0f)continue;//如果无键按下则认为是按键抖动,重新查询键盘delay(10);//延时去抖动x=P1;//再次读键盘状态if(x==0x0f)continue;//如果无键按下则认为是按键抖动,重新查询键盘}键位确定1.置第1行为低电平,其余N-1行和N列为高电平,即P1=0xef,保存当前行号row=1。2.依次读取列线端口(P1.0~P1.3)状态,若某列端口(P1.0~P1.3)为0,表示此列有按键按下,比如P1.0=0,则表示第1行与第1列交叉键按下,保存列号col=0;若列检测信号全为“1”,则表示闭合键不在第1行。3.置第2行为低电平,其余N-1行和N列为高电平,即P1=0xdf,行号row=0,依次再读取列线IO口(P1.0~P1.3)状态,列线有低电平表示此列有按键按下。以此类推,直到找到闭合键所在的位置,并将该位置对应的行号与列号保存。如果扫描完所有的行后仍没有找到闭合键,则结束行扫描,等待下一次键盘扫描。4.将得到的行号和列号用计算法或查表法得到键值。

键值=列号×4+行号。例:若第1行与第1列键按下,对应行号为1,列号为0,键值=0*4+1=1。键位确定程序流程图键位确定参考程序unsignedcharKey_Value()//键盘扫描功能函数{unsignedcharn,scan,col,row;bitflag=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论