单片机课程设计(24秒篮球计数器)(共15页)_第1页
单片机课程设计(24秒篮球计数器)(共15页)_第2页
单片机课程设计(24秒篮球计数器)(共15页)_第3页
单片机课程设计(24秒篮球计数器)(共15页)_第4页
单片机课程设计(24秒篮球计数器)(共15页)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、1.引言(ynyn)目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着(xing zhe)CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此(ync)得到了广泛的使用。数字钟是采用数字电路实现对时,分,秒。数字显示的计时装置,广泛用于比赛,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的

2、数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。2 设计要求1、具有24s计时功能。2、设置外部操作开关,控制计时器的直接清零、 启动和暂停 /连续功能。3、计时器为24秒递减时,计时间隔为1秒。4、计时器递减到零时,数码显示器不能灭灯,同时发出光电报警信号。5、有直接清零然后恢复到24秒,准备重新开始计数。学生在教师指导下,综合运用所学知识完成基于单片

3、机的篮球比赛24秒计时器设计。要求设计一个24秒计时电路,并具有时间显示的功能。要求:1、设置外部操作开关,控制(kngzh)计数器的直接清零、启动和暂停/连续计时。2、要求(yoqi)计时电路递减计时,每隔1秒钟,计时器减1。3、当计时器减到0时,显示(xinsh)器上显示00,同时发出光电报警信号。3设计思路:选用AT89C51作为主控芯片,晶振是6KHz,机械周期为1ms,所以循环10次为1s。P0口作为段码输出,P2.0、P2.1作为位控,高电平有效。数码管是液晶显示,采用动态显示,两个串行口作为中断入口,高电平有效,启动T0定时器/计数器进行计数,低电平有效。图2.2.1是系统硬件设

4、计电路图一。时间设置完后,启动定时器T0开始定时计数。计时采用倒计时,比如:设置的时间为24秒钟,则在LED上显示24两位数。定时T0计数24秒后中断返回,继续定时计数下一个24秒;同时则在2位LED显示器上显示,表示时间已经过去1秒钟,即为23秒。这样一直持续下去。知道变为“00”时表示赛程结束。如果比赛中裁判叫停,则只要按下键,即可暂停计时。3.1总体设计框图(kungt)个位显示十位显示译码驱动译码驱动控制电路秒脉冲发生器计数器计数器报警电路图1 倒计时设计总体(zngt)框图 4基本原理24秒计时器的总体参考方案框图如图1所示。它包括秒脉冲发生器、计数器、译码显示(xinsh)电路、报

5、警电路和辅助时序控制电路(简称控制电路)等五个模块组成。其中计数器和控制电路是系统的主要模块。计数器完成24秒计时功能,而控制电路完成计数器的直接清零、启动计数、暂停/连续计数、译码显示电路的显示与灭灯、定时时间到报警等功能。 秒脉冲发生器产生的信号是电路的时钟脉冲和定时标准,但本设计对此信号要求并不太高,故电路可采用单片机定时器。 译码显示电路由共阴极七段LED显示器组成。报警电路在实验中用发光二极管和鸣蜂器。 主体电路: 24秒倒计时。24秒计数芯片的置数端清零端共用一个开关,比赛开始后,24秒的置数端无效,24秒的倒数计时器的倒数计时器开始进行倒计时,逐秒倒计到零。选取“00”这个状态,

6、通过组合逻辑电路给出截断信号,让该信号与时钟脉冲在与门中将时钟截断,使计时器在计数到零时停住。5硬件(yn jin)电路设计单片机STC89C51简介(jin ji)AT89C51是一种(y zhn)带4K HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=53426 t /_blank 字节FLASH HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CM

7、OS 8位 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=267881 t /_blank 微处理器,俗称 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=49073 t /_blank 单片机。AT89C2051是一种带2K HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=53426 t /_blank 字节闪存可 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=42599 t /_blank 编程可擦除 HYPERLINK /lemma/

8、ShowInnerLink.htm?lemmaId=45577 t /_blank 只读存储器的 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=49073 t /_blank 单片机。 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=49073 t /_blank 单片机的可擦除 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=45577 t /_blank 只读存储器可以反复擦除1000次。管脚说明VCC:供电电压。AT89C51GND:接地。P0口:P0口为一个8位漏级开路双

9、向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=7916092 t /_blank 高阻输入。P0能够用于外部程序数据 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器,它可以被定义为数据/地址的低八位。在FIASH HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=42599 t /_blank 编程时,P0 口作为 HYPERLINK /lemma/ShowInne

10、rLink.htm?lemmaId=3982703 t /_blank 原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=7596485 t /_blank 上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=567646 t /_blank 缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故

11、。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=10810406 t /_blank 程序存储器或16位地址 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=57181644 t /_blank 外部数据存储器进行存取时

12、,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器进行读写时,P2口输出其 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=63518783 t /_blank 特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=74270142 t /_blank 控制信号。P3口:P3口管脚是8个带内

13、部(nib)上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些(yxi)特殊功能口,如下表所示:口管脚 备选(bi xun)功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0( HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=7933578 t /_blank 外部中断0)P3.3 /INT1(外部中断1)P3.4 T0( HYPERLINK /lemm

14、a/ShowInnerLink.htm?lemmaId=1273926 t /_blank 计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR( HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=57181644 t /_blank 外部数据 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器写选通)P3.7 /RD( HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=57181644 t /_blank 外部数据 HYPERLI

15、NK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器读选通)P3口同时为闪烁编程和编程校验接收一些 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=74270142 t /_blank 控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=502820 t /_blank 机器周期的高电平时间。ALE/PROG:当访问外部 HYPERLINK /lemma/ShowInnerLink.htm?lem

16、maId=262218 t /_blank 存储器时, HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=70794195 t /_blank 地址锁存允许的 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=73883936 t /_blank 输出电平用于锁存地址的低位 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=53426 t /_blank 字节。在FLASH HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=42599 t /_blan

17、k 编程期间,此 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8092400 t /_blank 引脚用于输入 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=42599 t /_blank 编程脉冲。在平时,ALE端以不变的频率周期输出正 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=7630665 t /_blank 脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据 HYPERLINK /lemma/Sho

18、wInnerLink.htm?lemmaId=262218 t /_blank 存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8092400 t /_blank 引脚被略微拉高。如果 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=267881 t /_blank 微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部(wib) HYPERLINK /lemm

19、a/ShowInnerLink.htm?lemmaId=10810406 t /_blank 程序(chngx)存储器的选通信号。在由外部(wib)程序 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器取指期间,每个 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=502820 t /_blank 机器周期两次/PSEN有效。但在访问 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=57181644 t /_blank 外部数据存储器时,这两

20、次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=262218 t /_blank 存储器(0000H-FFFFH),不管是否有 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8996992 t /_blank 内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路

21、的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=64621823 t /_blank 石晶振荡和陶瓷振荡均可采用。如采用外部 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=198944 t /_blank 时钟源驱动器件,XTAL2应不接。有余输入至内部 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=534032 t /_blank 时钟

22、信号要通过一个二分频 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=449766 t /_blank 触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=41674105 t /_blank 高低电平要求的宽度。图 2 AT89S52单片机引脚图6硬件(yn jin)电路图6.1时钟(shzhng)电路模块时钟(shzhng)电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个(y )单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号

23、,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个22P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接图如图3所示: 图 3 晶振电路6.2 复位电路模块复位是单片微机的初始化操作,其主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行程序。除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。RST引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式

24、,具体连接电路如图4 图 4 复位(f wi)电路6.3 报警(bo jng)模块蜂鸣器通过一NPN三极管进行(jnxng)驱动,如图触发信号有基极引入。(图7) 图五 报警电路7源程序# include# include# define uint unsigned int# define uchar unsigned charsbit w1=P20; sbit w2=P21; sbit key1=P32; sbit key2=P33;sbit key3=P34;sbit BEEP=P11; uint num,num1,shi,ge;uchar code table =0 x3f,0 x06,

25、0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,;void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-) ;/*void delay1(uchar x) /x*0.14MS uchar i; while(x-) for(i=0;i13;i+) void beep(void) uchar i; for (i=0;i50;i+) delay1(4); BEEP=!BEEP; /*按键扫描(somio)函数*/ void keyscan() if(key1=0) delay(5); if

26、(key1=0) while(!key1); TR0=1; if(key2=0) delay(5); if(key2=0) while(!key2); TR0=0; while(!key3); num1=24; TR0=1; BEEP=1; void init() num1=24;TMOD=0 x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; void display(uchar shi,uchar ge) P0=tableshi; w1=1; w2=0; delay(2); P0=tablege; w1=0; w2=1; delay(2); if(num1=0) TR0=0; BEEP=0; void main() init(); while(1) keyscan( ); if(num=20) num=0; num1-; ge=num1%10; shi=num1/10; display(shi,ge); void time1( ) interrupt 1 TH1=(65536-50000)/256; TL1=(65536-50000)%256; num+; 8仿真(fn zhn)结果9心得体会通过了三个星期的动手操作,我已经非常熟悉(shx)

温馨提示

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

评论

0/150

提交评论