基于单片机的音乐定时器设计(含任务书).doc_第1页
基于单片机的音乐定时器设计(含任务书).doc_第2页
基于单片机的音乐定时器设计(含任务书).doc_第3页
基于单片机的音乐定时器设计(含任务书).doc_第4页
基于单片机的音乐定时器设计(含任务书).doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

北华航天工业学院电子工程系 毕业设计(论文)任务书 姓姓 名:名:X专专 业业: :x班班 级级: :x学号:学号:x 指指导导教教师师: :x职职 称:称:x完成完成时间时间: :x 毕业设计毕业设计( (论论文)文)题题目:目: 基于单片机的音乐定时器 设计设计目目标标: : 利用单片机编程制作一个音乐倒计时器,我们可以输入需要倒计时的时间,然后系统开始倒 计时,倒计时完成后播放音乐提醒我们倒计时时间到。并且可以关联一个继电器设备用来实 行电源管理。 技技术术要求:要求: 1 工作环境温度:检测器 -50C-50C; 2 工作环境湿度:85%RH 3 用数码管显示倒计时时间,蜂鸣器提示计时结束。 4 定时器工作方式:应用于其他大型电子产品通电时间的控制。 所需所需仪仪器器设备设备: : 计算机一台、C51 试验箱、伟福仿真软件等 成果成果验验收形式:收形式: 原理图、仿真结果 参考文献:参考文献: MCS-51 单片机应用教程、 单片机应用技术教程、 51 系列单片机原理与实验教程 15 周-6 周立题论证39 周-13 周仿真调试 时间时间 安排安排 27 周-8 周方案设计414 周-16 周成果验收 指指导导教教师师: 教研室主任教研室主任: 系主任系主任: 摘 要 随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。本文介绍了一种 电子定时器,用户可以自由输入需要定时的时间,定时器开始计时,计时结束后会播放 音乐提醒用户,并可以做出相应的电源管理。使一些产品更接近电子智能化。 传统的定时器都是使用发条驱动式、电机传动式或电钟式等机械定时器。电子定时 器相对机械定时器来说,体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、 调整方便、适于频繁使用。本篇论文讨论了简单的倒计时器的设计与制作 ,对于倒计时 器中的四位 LED 数码显示器来说, 我为了简化线路、降低成本,采用以软件为主的接 口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。该电子定时器方便用 户操作,达到定时时间后会给出音乐提示,还可以对电器的电源进行控制,更适合需要 定时的电子产品使用。 关键词 定时器,单片机,AT89C2051,八段数码管,继电器 I 目 录 第第 1 1 章章 绪论绪论 1 1 1.1 电子定时器的应用 1 1.2 电子定时器的发展前景 1 第第 2 2 章章 硬件的选型及计数原理硬件的选型及计数原理 2 2 2.1 硬件的选型 3 2.1.1 单片机的选择.3 2.1.2 LED 显示器的选择 .3 2.1.3 继电器的选择.4 2.2 计数原理 4 2.3.1 定时器/计数器的结构: .4 2.3.2 定时计数器的原理: 4 第第 3 3 章章 硬件设计硬件设计 9 9 3.1 单片机 AT89C2051 资料及各部分设计9 3.1.1 AT89C2051 的结构 .9 3.1.2 AT89C2051 主要性能 .10 3.1.3 单片机的最小工作系统 .12 3.1.4 单片机的复位电路设计 .13 3.2 八段数码管显示设计 .13 3.2.1、八段数码管的结构13 3.2.2、八段数码管的驱动方式14 3.2.3. 八段数码管的接口方法与电路15 3.3 电磁继电器的连接设计 .16 3.3.1、电磁继电器的工作原理和特性16 3.3.2、电磁继电器连接图16 3.4 按键设计.17 第第 4 4 章章 软件设计软件设计 1818 4.1 整体程序说明及流程图.18 4.2 单片机音乐程序设计.20 II 4.2.1 发声原理.20 4.2.2 节拍.21 4.2.3 编码.22 4.3 系统调试工具 keil c51 23 第第 5 5 章章 结结 论论 2424 致致 谢谢 2525 参考文献参考文献 2626 附附 录录 2727 0 基于单片机的音乐定时器 第 1 章 绪论 我们在日常生活中,经常碰到一些需要定时的事情,例如:印相或放大照片,需要 定在零点几秒的时间,洗衣机洗涤衣物需要定在几分钟到几十分钟的时间,电风扇需要 定在数十分钟的时间。完成这种定时的定时器有多种多样,在家用电器中采用机械定时 器就是根据一般上弦钟表原理设计的,这种定时器虽然结构简单,成本低,维修也比较 方便,但是它的触头频繁接触和断开,大大的缩减了它的使用寿命,也不利于进一步全 自动化。在电子技术突飞猛进的今天,电子定时器一定会逐步取而代之,这是不言而喻 的。 本文是基于单片机设计的一种用于控制家用电器的定时器设计方案。 1.1 电子定时器的应用 电子定时器在家用电器中经常用于延时自动关机、定时。延时自动关机可用于:收 音机、电视机、录音机、催眠器、门灯、路灯、汽车头灯、转弯灯以及其他电器的延时 断电及延时自停电源等。定时可用于:照相定时曝光、定时闪光、定时放大、定时调速、 定时烘箱、冰箱门开定时报警、水位定时报警、延时催眠器、延时电铃、延时电子锁、 触摸定时开关等。例如:空调中的定时器,在工作一段时间之后便能自动切断电源停止 工作。夏季夜间使用,入睡前先定好时间,等睡熟后到了预定时间,空调自动关机。方 便节能。定时器除了应用于家用电器外,还广泛地用于工业农业生产和服务设施,达到 定时时间后会给出音乐提示,极大地方便了用户操作。 1.2 电子定时器的发展前景 传统的定时器绝大多数都是发条驱动式、电机传动式或电钟式等机械定时器,部分 电子器械钟也有试用时间继电器的。相对于传统的定时器,电子定时器的体积小、重量 轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。所以电子定 时器的发展必定大有前途。同时随着现代电子技术的发展,电子定时器也在不断的进步, 朝向着更多用途、更高精度、更小体积发展着。 1 第 2 章 硬件的选型及计数原理 实现本次设计的方案有多种,下面比较说明一下最佳方案的选择。 方案一:利用可编程控制器编程定时。 可编程器,是一种用数字简码控制的产品,它的特点是:自带一套用于输入数 码的按键和显示程序的数码管,只要我们输入一列 2 位数码,编制的程序即能完成,即 编,即用。每一种数字简码控制器,它都自带一套系统软件,每一套系统软件都有 一套相对应的指令表,配套的指令表表明,只要输入什么样的数,程序将去做什么事, 输入一列数,它就会按次序去完成你要求它做的所有的事。 但这种方法首先花钱要多;其次是程序过长;第三是受硬件本身功能的限制,因此 不适合本设计方案。 方案二:利用单片机、LED 显示器和扬声器。 单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等 突出优点。它在硬件结构、指令系统、I/O 端口、功率消耗及可靠性等方面均有其独特 之处,其最显著的特点之一就是具有非常有效的控制功能。而 LED 显示器具有体积小、 重量轻、工作电压低、功耗极低、稳定可靠、成本低、控制驱动方便、接口简单易用、 模块化结构紧凑等特点,同时外接的继电器可以完成对大电流的控制,功能更全面。 这个方案价格便宜,编程简单,专用性强,功能可随着单片机的选择而调整,比较 适合本设计。 方案三:555 定时器完成定时。 555 定时器是一种模拟和数字功能相结合的中规模集成器件。555 定时器的功能主 要由两个比较器决定。两个比较器的输出电压控制 RS 触发器和放电管的状态。在电源 与地之间加上电压,当 5 脚悬空时,则电压比较器 A1 的反相输入端的电压为 2VCC /3,A2 的同相输入端的电压为 VCC /3。若触发输入端 TR 的电压小于 VCC /3,则比较 器 A2 的输出为 1,可使 RS 触发器置 1,使输出端 OUT=1。如果阈值输入端 TH 的电 压大于 2VCC/3,同时 TR 端的电压大于 VCC /3,则 A1 的输出为 1,A2 的输出为 0, 可将 RS 触发器置 0,使输出为 0 电平。 本方案由于 555 定时器回差太小、且不能调整、功能上有所欠缺等缺点不宜选择。 综上所述,我们可以发现方案二的强大优势,那就是利用单片机和 LED 显示器来实 现定时倒数,通过扬声器来发出音乐,用继电器对其他交流大电流电源电路进行控制。 2 2.1 硬件的选型硬件的选型 2.1.1 单片机的选择 硬件电路要实现对交流大电流电源的控制、定时时间的设定显示和到点提醒等功能。 若采用 40 脚的 8051 单片机有利于设计,但会增大电路板的体积,设计成本。针对本设 计的功能和用途,采用 ATMEL 公司的 AT89C2051 单片机更好。AT89C2051 芯片位 20 脚, 体积小,工作电压范围宽(2.7V6V) ,实现功能完全,性价比较高,更适合本设计。 2.1.2 LED 显示器的选择 目前市场上的 LED 显示产品多种多样, ,本设计可以考虑的显示部分有 LED 点阵和数 码管两种,下面就对两种方法进行比较,从而选择出最佳方案。 LED 电子显示屏是由许多半导体发光二极管像素点均匀排列组成。它通过控制半导 体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号 等各种信息的显示屏幕。它的优点有亮度高、工作电压低、功耗小、小型化、寿命长、 耐冲击和性能稳定。LED 的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、 更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。 数码管是一种有 LED 发光二极管组合显示字符的显示器件。它使用 LED 发光二极 管,显示字符和小数点。数码管通过对其不同的管脚输入相对的电流会使其发亮,从而 显示出数字或简单字符,用于显示时间、日期、温度等所有可用数字表示的参数,由于 它价格便宜、使用简单,被广泛应用于小型家电。但是也有显示亮度不均匀等缺点。 鉴于本设计显示部分用来显示时间,因此数码管是最佳选择。另外数码管又按段数 分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一 个小数点显示) ;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数 码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在 应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就 点亮。当某一字段的阴极为高电平时,相应字段就不亮。 。共阴数码管是指将所有发光二 极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一 字段的阳极为低电平时,相应字段就不亮。由于本次设计需要显示分和秒,结合单片机 的控制结构所以选用四位八段共阳数码管更为适合设计需要。 3 2.1.3 继电器的选择 本设计的继电器需要对交流大电流电源进行控制,我们初步选择考虑了一下两种方 案:电磁式继电器和固态继电器。 对于电磁式继电器是一种电子控制器件,在电路中起着自动调节、安全保护、转换电 路等作用。一般是由铁芯、线圈、衔铁、触点簧片等组成的。 与电磁式继电器比拟,固态继电器(SSR)是一种没有机械运动,不含运动零件的继 电器,但它具有与电磁继电器本质上相同的功能。SSR 是一种全部由固态电子元件组成的 无触点开关元件,它利用电子元器件的电、磁和光特性来完成输入与输出的隔离,利用大 功率三极管,功率场效应管,单向可控硅或双向可控硅等器件的开关特性,来达到无触点, 无火花地接通和断开被控电路。 固态继电器敏捷度高,控制功率小,寿命比较高,可靠性好,切换速度可达到几毫 秒至几微妙。大多数交流输出固态继电器是一个零电压开关,在零电压处导通,零电流处 关断,减少了电流波形的溘然间断,从而减小了开关瞬态效应。因为管压降大,导通后的功 耗和发烧量也大,大功率固态继电器的体积远弘远于同容量的电磁继电器,本钱也较高。 对于本钱非常敏感的产品来说,选用廉价的普通电磁继电器去控制交流大电流电源电 路,从性能方面可以达到要求,从本钱方面也极大地节约,因此电磁继电器更加合理。 2.2 计数原理 80C51 单片机内部设有两个 16 位的可编程定时器/计数器。在定时器/计数器中除了 有两个 16 位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器) 。 2.3.1 定时器/计数器的结构: 16 位的定时/计数器分别由两个 8 位专用寄存器组成,即:T0 由 TH0 和 TL0 构成; T1 由 TH1 和 TL1 构成。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初 值的。此外,其内部还有一个 8 位的定时器方式寄存器 TMOD 和一个 8 位的定时控制寄存 器 TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。 2.3.2 定时计数器的原理: 当定时器/计数器为定时工作方式时,计数器的加 1 信号由振荡器的 12 分频信号产 生,显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于 12 个振荡周 期,所以计数频率 fcount=1/12osc。如果晶振为 12MHz,则计数周期为: 4 T=1/(12106)Hz1/12=1s 这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选 择定时器的长度(如 8 位、13 位、16 位等) 。 当定时器/计数器为计数工作方式时,通过引脚 T0 和 T1 对外部信号计数,外部脉冲 的下降沿将触发计数。计数器在每个机器周期的 S5P2 期间采样引脚输入电平。若一个机 器周期采样值为 1,下一个机器周期采样值为 0,则计数器加 1。此后的机器周期 S3P1 期间,新的计数值装入计数器。所以检测一个由 1 至 0 的跳变需要两个机器周期,故外 部事年的最高计数频率为振荡频率的 1/24。 当 CPU 用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独 立运行,不再占用 CPU 的操作时间,除非定时器计满溢出,才可能中断 CPU 当前操作。 CPU 也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片 机中效率高而且工作灵活的部件。 下面我们简单介绍一下控制字的格式及各位的主要功能 工作方式控制寄存器(工作方式控制寄存器(TMODTMOD) TMOD 寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。但 TMOD 寄存器不能位寻址,只能用字节传送指令设置其内容。 定时器定时器/ /计数器控制寄存器计数器控制寄存器 TCONTCON: TCON 在特殊功能寄存器中,字节地址为 88H,位地址(由低位到高位)为 88H 一 8FH,由于有位地址,十分便于进行位操作。 TCONTCON 的作用是控制定时器的启、停,标志定时器溢出和中断情况。的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON 的格式如下图所示。其中,TFl,TRl,TF0 和 TR0 位用于定时器计数器; IEl,ITl,IE0 和 IT0 位用于中断系 位地址8F8E8D8C8B8A8988 位符号TF1TR1TF0TR0IE1IT1IE0IT0 表 1-1 TCON 格式 各位定义如下: TF1:定时器 1 溢出标志位。 TR1:定时器 1 运行控制位。 TF0:定时器 0 溢出标志。 TR0:定时器 0 运行控制位。 IE1:外部中断 1 请求标志。 IT1:外部中断 1 触发方式选择位。 IE0:外部中断 0 请求标志。 IT0:外部中断 0 触发方式选择位。 5 TCON 中低 4 位与中断有关,我们将在下节课讲中断时再给予讲解。由于 TCON 是可 以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行 “CLR TF0”后则清定时器 0 的溢出;执行“SETB TR1”后可启动定时器 1 开始工作(当 然前面还要设置方式定) 。 定时器定时器/ /计数器的初始化:计数器的初始化: 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都 要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下: 1、确定工作方式(即对 TMOD 赋值) ; 2、预置定时或计数的初值(可直接将初值写入 TH0、TL0 或 TH1、TL1) ; 3、根据需要开放定时器/计数器的中断(直接对 IE 位赋值) ; 4、启动定时器/计数器(若已规定用软件启动,则可把 TR0 或 TR1 置“1” ;若已规 定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器 即按规定的工作方式和初值开始计数或定时) 。因为在不同工作方式下计数器位数不同, 因而最大计数值也不同。 现假设最大计数值为 M,那么各方式下的最大值 M 值如下: 方式 0:M=213=8 192 方式 1:M=216=65 536 方式 2:M=28=256 方式 3:定时器 0 分成两个 8 位计数器,所以两个 M 均为 256。 因为定时器/计数器是作“加 1”计数,并在计数满溢出时产生中断,因此初值 X 可 以这样计算: X=M-计数值 定时器/计数器的四种工作方式: 定时器 T0 或 T1 无论用作定时器或计数器都有 4 种工作方式:方式 0、方式 1、方式 2 和方式 3。除方式 3 外,T0 和 T1 有完全相同的工作状态。下面以 T1 为例,分述各种 工作方式的特点和用法。 工作方式工作方式 0 0:方式 0 是 13 位计数结构的工作方式,其计数器由 TH0 全部 8 位和 TL0 的低 5 位构成。当 TL0 的低 5 位计数溢出时,向 TH0 进位,而全部 13 位计数溢出时,则 向计数溢出标志位 TF0 进位。 CT 为定时计数选择:CT0,T1 为定时器,定时信号为振荡周期 12 分频后的 脉冲;CTl,T1 为计数器,计数信号来自引脚 T1 的外部信号。 定时器启动后,定时或计数脉冲加到 TLl 的低 5 位,从预先设置的初值(时间常数) 开始不断增 1。TL1 计满后,向 THl 进位。当 TL1 和 THl 都计满之后,置位 T1 的定时器 回零标志 TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下, 可向 CPU 请求中断。如需进一步定时/计数,需用指令重置时间常数。 6 TMOD 寄存器初始化 为把定时器/计数器 1 设定为方式 0,则 M1M000;为实现定时功能,应使 C/T0;为实现定时 器/计数器 1 的运行控制,则 GATE0。定时器/计数器 0 不用,有关位设定为 0。因 此 TMOD 寄存器应初始化为 00H。 由定时器控制寄存器 TCON 中的 TR1 位控制定时的启动和停止 TR11 启动, TR10 停止。 工作方式工作方式 1 1:1 是 16 位计数结构的工作方式,计数器由 TH0 全部 8 位和 TL0 全部 8 位构成。与工作方式 0 基本相同,区别仅在于工作方式 1 的计数器 TL1 和 TH1 组成 16 位计数器,从而比工作方式 0 有更宽的定时/计数范围。 工作方式工作方式 2:2: 8 位自动装入时间常数方式。由 TLl 构成 8 位计数器,THl 仅用来存放 时间常数。启动 T1 前,TLl 和 THl 装入相同的时间常数,当 TL1 计满后,除定时器回零 标志 TFl 置位,具有向 CPU 请求中断的条件外,THl 中的时间常数还会自动地装入 TLl, 并重新开始定时或计数。所以,工作方式 2 是一种自动装入时间常数的 8 位计数器方式。 由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用 这种工作方式。当然,这种方式的定时计数范围要小于方式 0 和方式 1。 当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器 TH 以 硬件方法自动给计数器 TL 重新加载。变软件加载为硬件加载。 初始化时,8 位计数初值同时装入 TL0 和 TH0 中。当 TL0 计数溢出时,置位 TF0,同 时把保存在预置寄存器 TH0 中的计数初值自动加载 TL0,然后 TL0 重新计数。如此重复 不止。这不但省去了用户程序中的 重装指令,而且也有利于提高定时精度。但这种工作方式下是 8 位计数结构,计数 值有限,最大只能到 255。 这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固 定脉宽的脉冲,此外还可以作串行数据通信的波特率发送器使用。 工作方式 3: 2 个 8 位方式。工作方式 3 只适用于定时器 0。如果使定时器 1 为工作 方式 3,则定时器 1 将处于关闭状态。 当 T0 为工作方式 3 时,TH0 和 TL0 分成 2 个独立的 8 位计数器。其中,TL0 既可用 作定时器,又可用作计数器,并使用原 T0 的所有控制位及其定时器回零标志和中断源。 TH0 只能用作定时器,并使用 T1 的控制位 TRl、回零标志 TFl 和中断源,通常情况下, T0 不运行于工作方式 3,只有在 T1 处于工作方式 2,并不要求中断的条件下才可能使用。 这时,T1 往往用作串行口波特率发生器(见 14),TH0 用作定时器,TL0 作为定时器或 计数器。所以,方式 3 是为了使单片机有 1 个独立的定时器计数器、1 个定时器以及 1 个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器 l 用于工作方式 2,把定时器 0 用于工作方式 3。下才可能使用。这时,T1 往往用作串行口波特率发生器, 7 TH0 用作定时器,TL0 作为定时器或计数器。所以,方式 3 是为了使单片机有 1 个独立的 定时器计数器、1 个定时器以及 1 个串行口波特率发生器的应用场合而特地提供的。 这时,可把定时器 l 用于工作方式 2,把定时器 0 用于工作方式 3。 8 第 3 章 硬件设计 本文所涉及的电子定时器要求能定时给电器供电或断电,操作使用方便,采用 AT89C2051 单片机控制,4 位共阳数码管显示时间,扬声器提示定时时间到,电磁继电器 做电器电源输出控制。 本系统的硬件连接方式:单片机的 P1 口用来动态扫描显示时间,P3 口的用来确定 数码管的位选,时间的调整计时,及继电器、扬声器的工作状态等。单片机的 CPU 时序 电路单片机的振荡器输入分别由引脚 XTAL1 和引脚 XTAL2 来完成。只要将这两个引脚外 接石英晶体和陶瓷电容,如下图所示, 就可与 CPU 内部组成完整的振荡电路。单片机 的一个机器周期含有 6 个状态周期,而每个状态周期为 2 个振荡器周期,因此一个机器 周期共有 12 个振荡周期,如振荡器的频率为 12MHz,一个振荡器周期为 1/12 微秒,而 一个机器周期为 1 微秒。下面对各部分电路进行详细介绍。 图 3-1 整体硬件连接图 3.1 单片机 AT89C2051 资料及各部分设计 3.1.1 AT89C2051 的结构 AT89C2051 是一带有 2K 字节闪速可编程可擦除只读存储体(EEPROM)的低电压,高性 能 8 位 CMOS 微型计算机。如图所示。它采用 ATMEL 的高密非易失存储技术制造并和工业 标准 MCS51 指令集和引脚结构兼容。通过在单块芯片上组合通用的 CPL1 和闪速存储器, AT89C205 是一强劲的微型计算机,它对许多嵌入式控制应用提供一高度灵活和成本低的 解决办法。 9 图 3-2 AT89C2051 的结构图 此外,从 AT89C2051 内部结构图也可看出,其内部结构与 8051 内部结构基本一致(除 模拟比较器外),引脚 RST、XTAL1、XTAL2 的特性和外部连接电路也完全与 51 系列单片 机相应引脚一致,但 P1 口、P3 口有其独特之处 程序保密 89C2051 设计有 2 个程序保密位,保密位 1 被编程之后,程序存储器不能再被编程 除非做一次擦除,保密位 2 被编程之后,程序不能被读出。 软硬件的开发 89C2051 可以采用下面 2 种方法开发应用系统。 (1) 由于 89C2051 内部程序存贮器为 Flash,所以修改它内部的程序十分方便快 捷,只要配备一个可以编程 89C2051 的编程器即可。调试人员可以采用程序编辑-编译- 固化-插到电路板中试验这样反复循环的方法,对于熟练的 MCS-51 程序员来说,这种调 试方法并不十分困难。当做这种调试不能够了解片内 RAM 的内容和程序的走向等有关信 息。 (2) 将普通 8031/80C31 仿真器的仿真插头中 P1.0P1.7 和 P3.0P3.6 引出来仿 真 205T,这种方法可以运用单步、断点的调试方法,但是仿真不够真实,比如,2051 的 内部模拟比较器功能,P1 口、P3 口的增强下拉能力等等。 10 3.1.2 AT89C2051 主要性能 AT89C2051 是 ATMEL 公司生产的带 2K 字节闪速可编程可擦除只读存储器(EEPROM)的 8 位单片机,它具有如下主要特性: 和 MCS-51 产品的兼容 2K 字节可重编程闪速存储器 耐久性:1,000 写擦除周期 2.7V6V 的操作范围 全静态操作:0Hz24MHz 两级加密程序存储器 1288 位内部 RAM 15 根可编程 I/O 引线 两个 16 位定时器/计数器 六个中断源 可编程串行 UART 通道 直接 LED 驱动输出 片内模拟比较器 低功耗空载和掉电方式 3.1.3 AT89C2051 的引脚说明 AT89C2051 是一个有 20 个引脚的芯片,引脚如图 1 所示,与 8051 内部结构进行对比 可发现,AT89C2051 减少了两个对外端口(即 P0、P2 口),使它最大可能地减少了对外引 脚,因而芯片尺寸有所减少。 图 3-3 AT89C2051 的引脚图 AT89C2051 芯片的 20 个引脚功能为: 11 1. P1 口:P1 口是一 8 位双向 I/O 口。口引脚 P1.2P1.7 提供内部上拉电阻。 P1.0 和 P1.1 要求外部上拉电阻。P1.0 和 P1.1 还分别作为片内精密模拟比较器的同 相输入(AIN0)和反相输入(AIN1)。P1 口输出缓冲器可吸收 20mA 电流并能直接驱动 LED 显示。当 P1 口引脚写入“1”时,其可用作输入端。当引脚 P1.2P1.7 用作输入并被外 部拉低时,它们将因内部的上拉电阻而流出电流(IIL)。 P1 口还在闪速编程和程序校验期间接收代码数据。 2. P3 口:P3 口的 P3.0P3.5、P3.7 是带有内部上拉电阻的七个双向 I/0 引脚。P3.6 用于固定输入片内比较器的输出信号并且它作为一通用 I/O 引脚而不可访问。P3 口缓冲 器可吸收 20mA 电流。当 P3 口引脚写入“1”时,它们被内部上拉电阻拉高并可用作输入 端。用作输入时,被外部拉低的 P3 口引脚将用上拉电阻而流出电流(IIL)。 P3 口还用于实现 AT89C2051 的各种功能,如下表 1 所示。 P3 口还接收一些用于闪速存储器编程和程序校验的控制信号。 P3 口引脚 功能 P3.0 RXD(串行输入端口) P3.1 TXD(串行输出端口) P3.2 INT0(外中断 0) P3.3 INT1(外中断 1) P3.4 TO(定时器 0 外部输入) P3.5 T1(定时器 1 外部输入) 表 3-1 P3 口的功能 从上述引脚说明可看出,AT89C2051 没有提供外部扩展存储器与 I/O 设备所需的地址、 数据、控制信号,因此利用 AT89C2051 构成的单片机应用系统不能在 AT89C2051 之外扩展 存储器或 I/O 设备,也即 AT89C2051 本身即构成了最小单片机系统。 3. RST:复位输入。RST 一旦变成高电平,所有的 I/O 引脚就复位到“1” 。当振荡器 正在运行时,持续给出 RST 引脚两个机器周期的高电平便可完成复位。每一个机器周期需 12 个振荡器或时钟周期。 4. XTAL1:作为振荡器反相放大器的输入和内部时钟发生器的输入。 5. XTAL2:作为振荡器反相放大器的输出。 6.Vcc:电源电压; 7.GND:地。 3.1.3 单片机的最小工作系统 最小系统就是单片机在发挥具体测控功能时所必须的组成部分。如下图所示为最小 12 系统方框图: 图 3-4 单片机的最小系统 3.1.4 单片机的复位电路设计 复位电路产生复位信号,复位信号送入 RST 后还要送至片内的施密特触发器,由片 内复位电路在每个机器周器的 S5P2 时刻对触发器输出采样信号,然后由内部复位电路 产生复位操作所要的信号。一般的复位电路可分为上电自动复位和按键复位,我们在此 选用的是上电复位。: 上电自动复位原理:RST 引脚是复位信号的输入端,只要高电平的复位信号持续两 个机器周期以上的有效时间,就可以使单片机 上电复位。上电自动复位是通过电容充电 实现的,上电瞬间,RST 端电位与 Vcc 相同,随充电电流的减少,RST 的电位逐渐下降, 直到复位信号无效。按键复位在此不在作过多的介绍,其原理和上电复位是相同的。但 其采用的是脉冲复位电路和电平复位电路两种。 3.2 八段数码管显示设计 通过讨论,我们选择了八段数码管来完成显示部分,下面详细介绍显示部分的设计. 3.2.1、八段数码管的结构 为了显示字符,要为 LED 显示器段码(或称字形代码) ,组成一 个 8 字形字符的 7 段,再加上 1 个小数点位,共计 8 段, 因此提供给 LED 显示器的显示段码为 1 个 字节。各段码位的对应关系如下表所示. 十六进制数及空白字符与 P 的显示段码,下图 分别为八段数码管的显示段的段码对照表(表 3-2)和八段数码管的字形阴阳极段码对 照表(表 3-3) 13 段码位 D7D6D5D4D6D2D1D0 显示段 pdgfedeba 表 3-2 八段数码管段码 字型共阳极段码共阴极段码字型共阳极段码 0C0H3FH990H 1F9H06HA88H 2A4H5BMB83H 3B0H4FHCC6H 499H66HDA1H 592H6DHE86H 682H7DHF84H 7F8H07H 空白 FFH 880H7FHP8CH 表 3-3 共阴共阳段码对照表 3.2.2、八段数码管的驱动方式 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要 的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码 都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二-十进制译码器译码进行驱动。 静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管 静态显示则需要 5840 根 I/O 端口来驱动,要知道一个 89S51 单片机可用的 I/O 端口 才 32 个呢:) ,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 14 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之 一,动态驱动是将所有数码管的 8 个显示笔划“a,b,c,d,e,f,g,dp“的同名端连在一起, 另外为每个数码管的公共极 COM 增加位选通控制电路,位选通由各自独立的 I/O 线控制, 当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显 示出字形,取决于单片机对位选通 COM 端电路的控制,所以我们只要将需要显示的数码 管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控 制各个数码管的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显 示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余 辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象 就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够 节省大量的 I/O 端口,而且功耗更低。 由于单片机的接口资源有限,设计采用动态显示。 3.2.3. 八段数码管的接口方法与电路 (1)LED 数码显示的接口方法。 单片机与 LED 数码显示器有以硬件为主和以软件为主的两种接口方法。 以硬件为主的接口方法,这种接口方法的电路如图所示: 图 3-5 八段数码管显示电路 LED 数码显示器有两种连接方法如下。 共阳极接法: 把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接 +5V,每个发光二极管的阴极通过电阻与输入端相连。 共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。 每个发光二极管的阳极通过电阻与输入端相连。 (2)LED 数码显示器的接口电路。 实际使用的 LED 数码显示器位数较多。为降低 成本,大部分以软件为主的接口方法对于多位 LED 数码管显示器,通常采用动态扫描显 示方法,即逐个循环点亮各位显示器。这样虽然在任一时期只有一位显示器被点亮,但 是由于人眼有视觉残留效应,看起来与全部显示持续点亮的效果基本一样(在亮度上要 有差别) 。 3. 驱动器 LED 显示是单片机控制产品中常见的应用。使用 LED 模块,这种模 15 块中带有 LED 显示管和 LED 驱动电路,用起来较方便。 一般用户直接采用单片机+LED 驱 动器+LED 显示管的方式, 现在我们向大家推荐一种经常使用的 LED 驱动器 8550,它作为 共阳数码管的驱动器,而共阴数码管的驱动器则是 A1015。它们都是三极管。 3.3 电磁继电器的连接设计 本设计采用电磁继电器,它是一种电子控制器件,它具有控制系统(又称输入回路) 和被控制系统(又称输出回路) ,通常应用于自动控制电路中,它实际上是用较小的电流 去控制较大电流的一种“自动开关” 。故在电路中起着自动调节、安全保护、转换电路等 作用。 3.3.1、电磁继电器的工作原理和特性 电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上 一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引 的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点) 吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的 位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电 路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电 器线圈未通电时处于断开状态的静触点,称为“常开触点” ;处于接通状态的静触点称为 “常闭触点” 3.3.2、电磁继电器连接图 本设计要求单片机通过电磁继电器进行对交流大电流电源进行控制,设计采用低成 本的长开触点电磁继电器实现,使断电状态或是单片机故障状态下,定时器所要控制的 交流大电流电源处于断电状态,增加了整个电路系统的安全性。单片机部分由 P1.7 口的 输出电位对电磁继电器的状态进行控制,具体连接电路如下图所示: 16 图 3-6 电磁继电器的连接电路 3.4 按键设计 按键是单片机系统中不可缺少的输入设备,是实现人机对话的纽带。按其结构形式, 键盘可分为非编码和编码键盘,前者用软件产生键码,后者用硬件方法产生键码。 非编码键盘分为独立式键盘和矩阵式键盘。本课题根据硬件限制要求使用 2 个按键, 所以采用独立是键盘。 独立是键盘是直接用 I/O 口线构成的单个按键电路。每个独立式按键单独占用一根 I/O 口线,每根 I/O 线的工作状态不会影响其他 I/O 口线的工作状态,这是一种简单、 易懂的键盘结构。 独立式键盘电路结构如下图,独立是键盘电路配置灵活,硬件结构简单,但每个按 键必须占用一个 I/O 口线,在按键数量较多时,I/O 口线浪费较大。故只在按键数量不 多时,采用这种按键电路。在此电路中,按键输入都设置为低电平有效,即判断 I/O 的 电位就可以判断什么键被按下。 图 3-7 独立式键盘结构图 17 第 4 章 软件设计 4.1 整体程序说明及流程图 程序采用模块化、结构化设计,软件的可靠性比较高,在主控程序中主要工作为扫 描 P3.6 口的键是否按键,若按键按下(P3.6 为低电平) ,则中断做相应的功能处理,同 时也检查所倒数的时间是否为 0,若为 0 表示倒数的时间终了,应该执行相应的工作。 倒计时程序是等过了 1S 后,则更新时间数据,将最新剩余倒数的分、秒的时间数据转换 为数字数据,并显示在八段数码管上,程序中设一秒变量,用来判断是否经过了 1S 钟的 时间,从而判断时间应不应该更新,当新、旧剩余时间不一样时,则表示已过了 1S 要显 示新的剩余时间了。当所剩余的时间为 0 时,单片机对发声部分和电源管理部分做出相 应控制。音乐是由定时器产生固定频率的信号推动扬声器产生的,发出预先储存好的音 乐。 程序采用模块化结构,下面介绍中断程序和主程序的流程图: 中断程序主要负责计时结束后的一系列动作的响应,如音乐发生,还有继电器的断 开等,剩余的时间为 0 时单片机的响应控制。(表 4-1) 图 4-1 定时中断程序流程图 主程序主要用来设置倒计时时间、倒计时时间刷新显示、还有计时结束后的中断工 作。 定时中断 音乐发声 继电器断电 重新装载初始值 主程序 Y 判断剩余 时间是否为零 时间是否 N 18 下表为主程序程序流程图。 (整体的单片机程序见附录) 主程序流程图 N Y N Y N 关中断,设置堆栈 有上电复位标志? 冷启动 全面初始化 热启动 恢复正常 调用显示程序 键被按下? 调用显示程序,设定时间 开始计时、工作 到点了吗? 停止计时, 调用中断程序 开始 结束 19 4.2 单片机音乐程序设计 4.2.1 发声原理 1. 要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以 2, 即得出半周期的时间。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 反相然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚上得到此频率的脉冲。 2. 利用 8051 的内部定时器,使用其工作在模式 1 下,改变定时值 TH0 及 TL0 可 以产生不同频率的音频脉冲。 3. 例如频率为 523Hz,其周期 T1/5231912us,因此只要令定时器计时 956us/1us956,在每次计数 956 次时将 I/O 反相,就可得到中音 DO(523Hz) 。 计数脉冲值与频率的关系公式如下: NFi2Fr ( N:计数次数;Fi:音频脉冲频率;Fr:单片机的机器周期) 4.C 调各音符频率与计数值 T 的对照表如表 1 所示。 音符频率/Hz 简谱码(T 值) 音符频率/Hz简谱码(T 值) 低 1 DO 26263628# 4 FA#74064860 # 1 DO#27763731 中 5 SO 78464898 低 2 RE 29463853# 5 SO#83164934 # 2 RE#31163928 中 6 LA 88064968 低 3 M 33064021# 693264994 低 4 FA 34964103 中 7 SI 98865030 # 4 FA#37064185 高 1 DO 104665058 低 5 SO 39264260# 1 DO#110965085 # 5 SO#41564331 高 2 RE 117565110 低 6 LA 44064400# 2 RE#124565134 # 646664463 高 3 M 131865157 低 7 SI 49464524 高 4 FA 139765178 中 1 DO 52364580# 4 FA#148065198 # 1 DO#55464633 高 5 SO 156865217 中 2 RE 58764684# 5 SO#166165235 # 2 RE#62264732 高 6 LA 176065252 中 3 M 65964777# 6186565268 中 4 FA 69864820 高 7 SI 196765283 表 4-1 调各音符频率与计数值 T 的对照表 5. 定时器初始值的求法如下: 20 T65536-N65536-Fi2Fr 例如:设 K65536,F1000000Fi1MHz,求低音 DO(261Hz)、中音 DO(523Hz) 、 高音的 DO(1046Hz)的定时器初始值。 T65536-N65536-Fi2Fr65536-10000002Fr65536-500000/Fr 低音 DO:T65536-500000/26263627 中音 DO:T65536-500000/52364580 高音 DO:T65536-500000/104765059 4.2.2 音乐节拍 节拍:每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符 的节拍,如表 2 为节拍与节拍码的对照。如果 1 拍为 0.4 秒,1/4 拍是 0.1 秒,只要 设定延迟时间就可求得节拍的时间。假设 1/4 拍为 1DELAY,则 1 拍应为 4DELAY,以此 类推.所以只要求得 1/4 拍的 DELAY 时间,其余的节拍就是它的倍数。表 3 为 1/4 和 1/8 节拍的时间设定。 节 拍 码节 拍 数节 拍 码节 拍 数 1 1/4拍 1 1/8拍 2 2/4拍 2 1/4拍 3 3/4拍 3 3/8拍 4 1拍 4 1/2拍 5 1又1/4拍 5 5/8拍 6 1又1/2拍 6 3/4拍 8 2拍 8 1拍 A 2又1/2拍 A 1又1/4拍 C 3拍 C 1又1/2拍 F 3又3/4拍 表 4-2 节拍与节拍码对 曲调值 DELAY 曲调值 DELAY 调4/4125毫秒调4/462毫秒 21 调3/4187毫秒调3/494毫秒 调2/4250毫秒调2/4125毫秒 表 4-3 各调 1/4 节拍的时间设定各调 1/8 节拍的时间设定 4.2.3 音乐编码 建立音乐的步骤: 1.先把乐谱的音符找出,然后由表 1 建立 T 值表的顺序. 2.把 T 值表建立在 TABLE1,构成发音符的计数值放在“TABLE“. 3.简谱码(音符)为高 4 位,节拍为(节拍数)为低 4 位,音符节拍码放在程序的 “TABLE“处。 简谱发音简谱码 T 值节拍码节拍数 5 低音 SO 1 64260 1 1/4 拍 6 低音 LA 2644002 2/4 拍 7 低音 TI 3645243 3/4 拍 1 中音 DO 4645804 1 拍 2 中音 RE 5646845 1 又1/4 拍 3 中音 MI 6647776 1 又1/2 拍 4 中音 FA 7648208 2 拍 5 中音 SO 864898A 2 又1/2 拍 6 中音 LA 964968C 3 拍 7 中音 TI A650

温馨提示

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

评论

0/150

提交评论