单片机的课程设计_第1页
单片机的课程设计_第2页
单片机的课程设计_第3页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

1、目录一、篮球计时器作用.错误 !未定义书签。二、设计的具体实现.错误 !未定义书签。1. 系统概述 .错误 !未定义书签。总体设计思路及方案.未定义书签。流程图 . .错误 !错误 !未定义书签。计数原理.3定时器工作方式.错误!未定义书签。2. 单元电路设计.错误 !未定义书签。8051单片机 .错误 !未定义书签。两个基本电路.错误 !未定义书签。八段数码管的驱动方式.错误 !未定义书签。3. 软件程序设计 .错误!未定义书签。单片机的定时器设计一、篮球计时器的作用在篮球比赛中,规定了球员的持球时间不能超过24 秒,否则就视为犯规。本课程设计的“篮球竞赛24 秒定时器”,可用于篮球比赛中对

2、球员持球时间作24 秒时间限制。一旦球员的持球时间超过了24 秒,它自动报警,从而判定此球员犯规。二、设计的具体实现1. 系统概述总体设计思路及方案图 总设计图流程图:最小系统,就是最简单的输出/ 输入构成,并且能实现最基本的运行条件,如应有供电、 时钟附属电路等。 单片机的最小系统包括晶振电路复位电路和电源 , 这时最小系统基本组成当然还可以添加矩阵键盘数码管等。此实验的原理是,利用单片机的最小系统, 通过锁存器 74HC573控制数码管,来实现 30 秒定时器的功能。图最小系统计数原理80C51 单片机内部设有两个16 位的可编程定时器 / 计数器。在定时器 / 计数器中除了有两个16 位

3、的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。定时器 / 计数器的结构16 位的定时 / 计数器分别由两个8 位专用寄存器组成,即: T0 由 TH0和 TL0构成; T1 由 TH1和 TL1 构成。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8 位的定时器方式寄存器TMOD和一个 8 位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。定时计数器的原理当定时器 / 计数器为定时工作方式时, 计数器的加 1 信号由振荡器的12 分频信号产生,显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于 1

4、2 个振荡周期,所以计数频率 fcount=1/12osc 。如果晶振为 12MHz,则计数周期为:T=1/ (12×106)Hz×1/12=1s 这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8 位、 13位、 16 位等)。当定时器 / 计数器为计数工作方式时,通过引脚 T0 和 T1 对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的 S5P2期间采样引脚输入电平。若一个机器周期采样值为 1,下一个机器周期采样值为 0,则计数器加 1。此后的机器周期 S3P1 期间,新的计数值装入计数器。所以检测一个由 1

5、至 0 的跳变需要两个机器周期, 故外部事年的最高计数频率为振荡频率的 1/24 。当 CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用 CPU的操作时间,除非定时器计满溢出,才可能中断 CPU当前操作。CPU也可以重新设置定时器工作方式, 以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。定时器工作方式8051 的两个定时器 / 计数器都有 4 种工作方式是, 即工作方式 03。由于本次课程设计主要涉及定时器 / 计数器 0 的工作方式 2,所以以下将重点介绍定时器 / 计数器 0 的工作方式 2。本次课程设计使用定时器工作方式

6、2,是由于其相对定时器工作方式 0 和工作方式 1 有一定的长处。 工作方式 0 和工作方式 1 有一个共同点, 就是计数溢出后计数器全为 0,因此循环定时应用时就需要反复设置计数初值。这不但影响定时精度,而且也给程序设计带来麻烦。工作方式 2 就是针对此问题而设置的,它具有自动重新加载计数初值的功能,免去了反复设置计数初值的麻烦。定时器 / 计数器 0 的工作方式 0 和工作方式 2 所对应的电路逻辑结构图分别如图和图所示。图定时器 / 计数器 0 的工作方式0 逻辑结构图 定时器 / 计数器 0 的工作方式2 逻辑结构对比上述两图,可以发现工作方式 0 和工作方式 2 对应的逻辑结构还是有

7、许多部分相同的,如两图的右半部分,而两图左半部分则有所差异。下面将对其相同点和不同点作简要分析,这也是为什么这次课程设计选择工作方式2 的原因。相同点:两种工作方式,计数脉冲既可以来自芯片内部,也可以来自外部。来自内部的是机器周期脉冲,图中OSC是英文 Oscillator(振荡器 ) 的缩写,表示芯片的晶振脉冲,经12 分频后,即为单片机的机器周期脉冲。来自外部的计数脉冲由 T0 引脚输入,计数脉冲由控制寄存器TMOD的 C / T 位进行控制。当 C / T =0时,接通机器周期脉冲,计数器每个机器周期进行一次加1,这就是定时器工作方式;当 C /T =1 时,接通外部计数引脚T0,从 T

8、0 引入计数脉冲输入,这就是计数工作方式。不同点:如图 3-1 所示的左半部分,工作方式0 条件下, TL0 使用了 5 位,当 TL0 的低 5 位计数溢出时,向 TH0进位;而全部 13 位计数溢出时,向计数溢出标志位 TF0进位,将其置 1。如图 3-2 所示的左半部分,工作方式 2 条件下,16 位计数器被分成两部分, TL 作为计数器使用, TH作为预置寄存器使用,初始化时把计数初值分别装入 TL 和 TH中。当计数溢出后,由预置寄存器 TH 以硬件方法自动给计数器 TL 重新加载。变软件加载为硬件加载。更详细点,初始化时,8 位计数初值同时装入TL0 和 TH0。当 TL0 计数溢

9、出时,置位TF0,并用保存在预置寄存器 TH0中的计数初值自动加载TL0,然后开始重新计数。如此重复,这样不但省去了用户程序中的重装指令,而且也有利于提高定时精度。2. 单元电路设计8051 单片机图电源电路图 8051 电路图(1) P1 口: P1 口是一 8 位双向 I/O 口。口引脚提供内部上拉电阻。和要求外部上拉电阻。 和还分别作为片内精密模拟比较器的同相输入 (AIN0) 和反相输入( AIN1) 。 P1口输出缓冲器可吸收 20mA电流并能直接驱动 LED显示。当 P1 口引脚写入“ 1”时 , 其可用作输入端。当引脚用作输入并被外部拉低时 , 它们将因内部的上拉电阻而流出电流

10、(IIL) 。P1 口还在闪速编程和程序校验期间接收代码数据。(2)P3口: P3 口的、是带有内部上拉电阻的七个双向I/0引脚。用于固定输入片内比较器的输出信号并且它作为一通用I/O 引脚而不可访问。 P3 口缓冲器可吸收 20mA电流。当 P3 口引脚写入“ 1”时 , 它们被内部上拉电阻拉高并可用作输入端。用作输入时 , 被外部拉低的 P3 口引脚将用上拉电阻而流出电流(IIL)。P3 口还用于实现 AT89C2051的各种功能 , 如下表 1 所示。P3 口还接收一些用于闪速存储器编程和程序校验的控制信号。P3 口引脚功能RXD(串行输入端口 )TXD(串行输出端口 )INT0( 外中

11、断 0)INT1( 外中断 1)TO(定时器 0 外部输入 )T1( 定时器 1 外部输入 )表 2-1-1 P3 口的功能(3) RST :复位输入。 RST一旦变成高电平 , 所有的 I/O 引脚就复位到“ 1”。当振荡器正在运行时 , 持续给出 RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需 12 个振荡器或时钟周期。(4) XTAL1 :作为振荡器反相放大器的输入和内部时钟发生器的输入。(5) XTAL2 :作为振荡器反相放大器的输出。(6)Vcc :电源电压;(7)GND :地。两个基本电路图复位电路图晶振电路复位电路:一般需要送4 个时钟周期的高电平。按键后:电容器被

12、短路放电、RST直接和 VCC相连,就是高电平,此时进入“复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到 RST,仍然是“复位状态”;稍后,充电结束,电流降为 0,电阻上的电压也将为 0, RST降为低电平,开始正常工作。晶振电路:产生一个固定频率的脉充,驱动芯片等元件工作。晶振也叫晶体振荡器,能产生振荡,其特点是固有频率十分稳定,而且震动具有多谐性,除了奇频震动外还有奇次谐波泛音震动。性能上,晶振的品质因素 Q和特性阻抗都非常高,而且接入系数很小,因此具有很高的频率稳定度。两个小的瓷片电容叫负载电容, 可以用来微调晶体震荡频率, 这个电容要根据所用晶体来选择

13、,晶体规格书里面会有其负载电容的值 大致为 2035PF。一般单片机的晶振工作于并联谐振状态, 也可以理解为谐振电容的一部分。 它是根据晶振厂家提供的晶振要求负载电容选值的, 换句话说,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差。 也能保证温漂等误差。两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。程序清单ORG 0000HSJMP MAINORG 000BHLJMP T0_ISRORG 0030HMAIN: MOV P0,#3FH;初始化赋值MOV P1,#0FFHMOV P2,#3FHMOV R0,#00

14、HMOV R1,#24MOV DPTR,#TABKEY: JB ,$;判断启动键是否按下ACALL DELAY30MSJNB ,$ACALL STARTSJMP KEYSTART: MOV TMOD,#01H;启动程序MOV TH0,#0D8HMOV TL0,#0EFHSETB ET0SETB EASETB TR0STOP: JB ,ZTJX;判断复位键是否程序ACALL DELAY30MSJNB ,$SJMP MAIN ZTJX : JB ,XS;复位程序判断暂停键是否按下ACALL DELAY30MSJNB ,$ZT:CLR TR0;K2按下后暂停计数,并关中断CLR ET0CLR EAJ

15、B ,$;K2ACALL DELAY30MSJNB ,$再次按下继续计数JX:SETB ET0;第二次按下暂停键后继续倒计时(继续启动)SETB EASETB TR0XS:MOV A,R1;显示子程序MOV B,#10DIV ABMOVC A, A+DPTRMOV P0,A;显示秒十位MOV A,BMOVC A, A+DPTRMOV P2,ACJNE R0,#100,STOPMOV R0,#00HMOV A,R1;1S;R1;1S显示秒个位时间到否,未到直接转数码管显示时间到, R0重赋初值减 1,不为 0 转数码管显示,为0 则重新开始CLR CSUBB A,#1MOV R1,AJNC STOPMOV R1,#24;计数未到计数到0 继续判断暂停键和停止键0 停止计数并关中断,CLR ET0CLR EACLR TR0SJMP SNDSJMP KEY;跳到报警程序跳回开始检测启动键RETDELAY30MS: MOV R6,#150;延时程序子程序AAA; MOV R7,#100DJNZ R7,$DJNZ R6,AAA;RETT0_ISR: CLR TR0;中断程序子程序MOV TH0,#0D8HMOV TL0,#0EFHINC R0SETB TR0RETISND: CLR;报警程序子程序(红色发光二极管亮一下就灭)MOV R7,#0FFHDL: MOV R6,#0FFHDL1

温馨提示

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

评论

0/150

提交评论