版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南铁路科技职业技术学院湖南铁路科技职业技术学院 单片机课程设计单片机课程设计 题题 目:基于单片机的数字音乐盒设目:基于单片机的数字音乐盒设 计计 专专 业:机电一体化业:机电一体化 系系 部:机械工程系部:机械工程系 姓姓 名:名: 班班 级:级:309-2309-2 班班 基于单片机的数字音乐盒设计 任 务 书 一、任务 设计一款基于 at89c51 单片机的数字音乐盒。 二、设计要求 (1)利用单片机的 i/o 口产生一定频率的方波,驱动蜂鸣器,发出不 同的音调,从而演奏乐曲。 (2)共有10首音乐,每首乐曲都由相应的按键控制,并有开关键、暂 停键、上一曲及下一曲控制键; (3)利用
2、lcd 液晶显示歌曲的序号、播放时间,开机时显示英文欢迎 提示字符。 目 录 任任 务务 书书 .1 1 目目 录录 .2 2 1 概述 .5 5 1.1 单片机数字音乐盒有关介绍.5 5 1.2 led 显示屏控制技术状况.9 1.3 本设计任务 .10 2 总体方案论证与设计.1212 2.1 单片机的选取 .12 2.2 led 显示方式.13 2.3 led 驱动模块.13 2.4 系统总体结构框图 .14 3 系统硬件设计 .1515 3.1 at89c51 芯片功能和硬件连接.15 3.2 led 显示器.18 3.3 键盘 .19 3.4 系统复位电路的设计 .20 3.5 时钟
3、电路模块 .20 3.6 输出显示电路 .21 3.7 音频输出部分 .21 3.8 整体硬件电路 .23 4 系统软件设计.25 4.1 主模块的设计 .25 4.2 外部中断源系统设计 .26 4.3 基本显示模块设计 .27 4.4 系统初始化程序 .28 4.5 音调、节拍以及编码的确定方法.28 4.6 程序流程图.33 4.7 文档顶端程序清单 .35 5 调试结果 .46 5.1 系统总电路图 .46 5.2 运行结果及分析 .46 总 结 .48 参考文参考文献献 .4949 1 概述 传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有 铁钉的铁桶转动,铁桶上的铁钉撞
4、击铁片制成的琴键,从而发出声音。但是, 机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因 素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒 放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批 量生产。基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相 比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池, 制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子 式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏 可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。 另外,可以设计彩灯外观效果
5、,增设放歌时间、序号显示灯功能,使音乐 盒的功能更加丰富。 1.1 单片机数字音乐盒有关介绍 电子音乐已广泛地应用于社会生活的各个领域。其类型从音乐卡片到 cd、mp3 等多种多样,制作原理也各不相同。声音是通过振动产生的。单 片机对某一 i/o 引脚以一定的频率循环置 1 和清 0,这一引脚便产生一定频 率的方波,该方波通过放大后作用于扬声器便产生一定频率的声音。若改 变输出方波的频率,产生的声音也就改变了。通过控制输出方波的时间长 短,声音的长短也就得到控制。因此,根据乐谱,单片机就可产生电子音乐。 音乐中最关键的两个要素是音符和节拍。单片机控制的音乐发生器系统由 硬件电路和软件两部分构成
6、。利用单片机控制的电子音乐发生器软硬件上 具有独特的优点,系统的开发周期短,成本低,电路制作容易。更换歌曲 时,硬件电路无需作任何修改,只需修改软件即可实现。软件编程时,可 用 51 系列单片机的汇编语言或 c51 语言实现。同时还可根据个人的习好通 过软件改变节拍的延时时间,增加电子音乐的趣味性。 1.1.1 发音原理介绍 发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是 音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声 音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率 的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增 加而上升。另
7、外,音符的频率有所不同。基于上面的内容,这样就对发音 的原理有了一些初步的了解。 音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器 0,使其工作在模式 1,定时中断,然后控制 p3.7 引脚的输出音乐。只要算 出某一音频的周期(1/频率),然后将此周期除以 2,即为半周期的时间, 利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 i/o 反相, 然后重复计时此半周期时间再对 i/o 反相,就可在 i/o 脚上得到此频率的脉 冲。 1.1.2 音符频率的产生 音符及定时器初始值: 例如:中音 1(do)的音频=523hz,周期 t=1/523s=1912 s 定时器/计数器
8、 0 的定时时间为:t/2=1912/2 s =956 s 定时器 956 s 的计数值=定时时间/机器周期=956 s /1 s =956(时钟频 率=12mhz) 装入 t0 计数器初值为 65536-956=64580 将 64580 装入 t0 寄存器中,启动 t0 工作后,每计数 956 次时将产生 溢出中断,进入中断服务时,每次对 p3.0 引脚的输出值进行取反,就可得 到中音 do(523hz)的音符音频。将 51 单片机内部定时器工作在计数器 模式 1 下,改变计数初值 th0,tl0 以产生不同的频率。下表 1.1 是 c 调各 音符频率与计数初值 t 的对照表: 表 1.1
9、 c 调各音符频率与计数初值 t 的对照表 音符频率(hz)/初值( s )音符频率(hz)/初值( s ) 低 1do262/63627中 1do 523/64580 高 1do1042/65056低 2re 294/63835 中 2re589/64687高 2re 1245/65134 低 3m330/64021中 3m 661/64780 高 3m1318/65157低 4fa 350/64107 中 4fa700/64822高 4fa 1397/65178 低 5so393/64264中 5so 786/64900 高 5so1568/65217低 6la 441/64402 中 6
10、la 882/64969高 6la 1760/65252 低 7si 495/64526中 7si 990/65031 高 7si 1967/65282 音符、音符编码及定时器初始值: 为了产生音符,必须求出音符低音 5高音 5 的计数初值。例如 c 调的 低 1do 的 thtl=65536-50000/262=63627,中音 do 的 thtl=65536- 500000/523=64580,高音 do 的 thtl=65536-500000/1042=65056。为了方便 写谱,对其进行简单的编码,在编程时,根据音符编码(表 1.2)查找对应 的计数初值。比如说音乐是 c 调的,那么出
11、现低音的 5so,直接将代码写为 1;出现低音 6la,直接写一个 2 的代码;出现低音 7si,直接写一个 3 代码。 表 1.2 音符编码表 1.1.3 节拍频率的产生 节拍的产生与编码: 音乐中的节拍用延时时间产生。例如,1 拍=0.4s,1/4 拍=0.1s,以此 类推。假设 1/4 拍执行一次延时程序,则 1/2 拍就执行两次延时程序,所 以只要求出 1/4 拍的延时时间,其余节拍就是它的倍数。为了方便,将节 音符音符编码 音符音符编码 不发音0低 5so1 低 6la2 低 7si3 中 1do4中 2re5 中 3m6中 4fa7 中 5so8 中 6la9 中 7sia高 1d
12、ob 高 2rec高 3md 高 4fae 高 5sof 高 6lag 拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表 1.3 和 表 1.4 所示。 表 1.3 节拍数编码表 按 1/4 拍为一个延时时间的节拍编码与节 拍对应的表 按 1/8 拍为一个延时时间的节拍编码与节 拍对应的表 节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍 11/466/411/866/8 22/488/422/888/8 33/4a10/433/8a10/8 44/4c12/444/8c12/8 55/4f15/455/8 表 1.4 乐谱节拍编程时的时间延时表 乐谱节拍1/4 拍的延时时间乐谱节拍
13、1/8 拍的延时时间 4/4125 ms4/462 ms 3/4187 ms3/494 ms 2/4250 ms2/4125 ms 音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是 音符编码,低四位是节拍编码。 1.2 led 显示屏控制技术状况 显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理 电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输 与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。 1.2.1 串行传输与并行传输技术 led 显示屏的数据传输方式主要有串行和并行两种。日前普遍采用串行 控制技术,显示屏每个单元内部的不同驱
14、动电路和各级联单元之间,每个 时钟仅传送一位数据。采用这种方式的驱动 ic 种类较多,不同显示单元之 间的联线较少,可减少显示单元的数据传输驱动元件,从而提高整个系统 的可靠性和性价比,具体工程实现也较为容易。 1.2.2 动态扫描与静态锁存技术 led 显示屏控制系统实现显示信息的刷新技术有动态扫描和静态锁存两 种方式。一般室内显示屏多采用动态扫描技术,即一行发光二极管共用一 行驱动寄存器,根据共用一行驱动寄存器的发光二极管像素数目,分为 1/4、1/16 扫描等。室外显示屏基本上采用静态锁存技术,即每一个发光一 极管都对应有一个驱动寄存器,无需时分工作,从而保证了每一个发光一 极管的亮度占
15、空比为 100%。动态扫描法可以大大减少控制器的 i/o 口,因 此应用较广。 1.2.3 自动检测及远程控制技术 led 显示屏的构成复杂,特别是室外显示屏,供电、环境亮度、环境温 度条件等都直接影响显示屏的正常运行。在 led 显示屏的控制系统中,因 根据需要对温度、亮度、电源等进行自动检测控制,也可根据需要,远程 实现对显示屏的亮度、色度调节、图像水平和垂直位置的调节以及工作方 式的转换等。 1.3 本设计任务 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高 的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化 享受。传统的音乐盒多是机械型的,体积笨重,发音单调
16、,不能实现批量 生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小, 重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定 的商业价值。 本设计是基于单片机控制的数字音乐盒的设计,由单片机 at89c51 芯片 和 led 数码管为核心,辅以必要的电路,构成的一个单片机数字音乐盒。 若该设计使用数字电路完成,所设计的电路相当复杂,大概需要十几片 数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊 接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功 能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且 其成本也有所降低,所以
17、在该设计中采用单片机利用 at89c51,它是低功耗、 高性能的 cmos 型 8 位单片机。片内带有 4kb 的 flash 存储器,且允许在系 统内改写或用编程器编程。另外, at89c51 的指令系统和引脚与 8051 完全 兼容,片内有 128b 的 ram、32 条 i/o 口线、2 个 16 位定时计数器、5 个中 断源、一个全双工串行口等。 在该设计中利用单片机 i/o 口产生一定频率的方波,驱动蜂鸣器,发 出各种不同的音调,从而演奏乐曲,并能够由 lcd 显示信息。键盘在单片 机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单 片机的主要手段。本设计采用 4*4
18、键盘,16*2 lcd,七段显示数码管 led。 在开机按钮按下时有英文欢迎提示字符,播放时显示歌曲序号(或名 称)。在演奏过程中可通过功能键选择乐曲,暂停,播放。 2 总体方案论证与设计 本设计是基于单片机的数字音乐盒设计,由单片机 at89c51 芯片和 led 数码管为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。要 求利用 i/o 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用 lcd 显示信息,从而演奏乐曲,开机时有英文欢迎提示字符,播放时显示歌 曲序号(或名称),可通过功能键选择乐曲,暂停,播放。本设计采用 4*4 键盘,16*2 lcd,七段显示数码管 led。下
19、面对各模块的设计逐一进行论证 比较。 2.1 单片机的选取 首先选择单片机中最为普遍的 mcs51 系列。其中 at89c2051 是美国 atmel 公司生产的低电压、高性能 cmos 8 位单片机,片内含 2k bytes 的可 反复擦写的只读程序存储器(perom)和 128bytes 的随机数据存储器 (ram),器件采用 atmel 公司的高密度、非易失性存储技术生产,兼容标 准 mcs-51 指令系统,片内置通用 8 位中央处理器和 flash 存储单元,功能 强大的 at89c2051 单片机可应用于许多高性价比的应用场合。 主要性能: 和 mcs-51 产品兼容; 2kb 可重
20、编程 flash 存储器(1000 次); 2.7-6v 电压范围; 全静态工作:0hz-24khz 2 级程序存储器保密锁定 128*8 位内部 ram 15 条可编程 i/o 线 两个 16 位定时器/计数器 6 个中断源 可编程串行通道 高精度电压比较器(p1.0,p1.1,p3.6) 直接驱动 led 的输出端口 由于完成核心功能音频输出只需一个 i/o 口,并且额外功能 led 移位显示可根据所选单片机的剩余 i/o 口进行设计,因此 at89c2051 足以 满足基本要求。其 20 个引脚体积小巧,内部 2k 字节的程序存储器容量适 中,低压低频工作条件,并且价格低廉容易购得。 综
21、上,本次设计选择 at89c2051 单片机。 2.2 led 显示方式 方案一:静态显示。将一帧图像中的每一个二极管的状态分别用 0 和 1 表示,若为 0,则表示 led 无电流,即暗状态;若为 1 则表示二极管被点 亮。若给每一个发光二极管一个驱动电路,一幅画面输入以后,所有 led 的状态保持到下一幅画。对于静态显示方式,所需的译码驱动装置很多, 引线多而复杂,成本高,且可靠性也较低。 方案二:动态显示。对一幅画面进行分割,对组成画面的各部分分别 显示,是动态显示方式。动态显示方式,可以避免静态显示的问题。但设 计上如果处理不当易造成亮度低,闪烁问题。因此合理的设计既应保证驱动 电路易
22、实现,又要保证图像稳定、无闪烁。动态显示采用多路复用技术的 动态扫描显示方式,复用的程度不是无限增加的,因为利用动态扫描显示 使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发 光时间的长短,发光的亮度等因素。通过实验发现,当扫描刷新频率(发 光二极管的停闪频率)为 50hz,发光二极管导通时间1ms 时显示亮度较 好,无闪烁感。 鉴于上述原因,采用方案二。 2.3 led 驱动模块 方案一:采用静态锁存方式,将每一个 led 发光管的一端接至单片机 的一个 i/o 口,另一端通过电阻接电源。这种方法可以直接驱动 led,原理 简单,驱动能力强,led 的亮度也可以通过限流电阻调
23、节,非常方便,但此 种方法太浪费单片机的 i/o 口,只适合于较小的系统。 方案二:采用动态扫描方式,通过三极管驱动并联在一起的 led 发光 管的一端(共阴或共 2 端),led 发光管的另一脚接通用 i/o 口,控制其亮灭。 该方法能驱动较多的 led,控制方式较灵活,而且节省单片机的资源。 比较以上两种方案,系统设计中采用方案二。 2.4 系统总体结构框图 3 系统硬件设计 本设计中用到了 at89c51 单片机,4*4 键盘,蜂鸣器,2 lcd 等硬件电 路常用元器件。 3.1 at89c51 芯片功能和硬件连接 at89c51 是一种带 4k 字节闪烁可编程可擦除只读存储器的低电压,
24、高 性能 cmos8 位微处理器,俗称单片机。该器件采用 atmel 高密度非易失存 储器制造技术制造,与工业标准的 mcs-51 指令集和输出管脚相兼容。由于 将多功能 8 位 cpu 和闪烁存储器组合在单个芯片中,atmel 的 at89c51 是一 种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方 案。 3.1.1 主要特性: 与 mcs-51 兼容 4k 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间:10 年 全静态工作:0hz-24hz 三级程序存储器锁定 128*8 位内部 ram 32 可编程 i/o 线 两个 16 位定时器/计数器 5 个中断
25、源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 3.1.2 管脚说明(如图 3.1): 图 3.1 vcc:供电电压。 gnd:接地。 p0 口:p0 口为一个 8 位漏级开路双向 i/o 口,每脚可吸收 8ttl 门电 流。当 p1 口的管脚第一次写 1 时,被定义为高阻输入。p0 能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在 fiash 编程时,p0 口作为原码输入口,当 fiash 进行校验时,p0 输出原码,此时 p0 外部必须 被拉高。 p1 口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器 能接收输出 4ttl 门
26、电流。p1 口管脚写入 1 后,被内部上拉为高,可用作输 入,p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 在 flash 编程和校验时,p1 口作为第八位地址接收。 p2 口:p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可 接收,输出 4 个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上拉电 阻拉高,且作为输入。并因此作为输入时,p2 口的管脚被外部拉低,将输 出电流。这是由于内部上拉的缘故。p2 口当用于外部程序存储器或 16 位地 址外部数据存储器进行存取时,p2 口输出地址的高八位。在给出地址“1” 时,它利用内部上拉优势,当对
27、外部八位地址数据存储器进行读写时,p2 口输出其特殊功能寄存器的内容。p2 口在 flash 编程和校验时接收高八位 地址信号和控制信号。 p3 口:p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作 输入。作为输入,由于外部下拉为低电平,p3 口将输出电流(ill)这是由 于上拉的缘故。p3 口也可作为 at89c51 的一些特殊功能口,如下表所示: 管口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断 0) p3.3 /int1(外
28、部中断 1) p3.4 t0(记时器 0 外部输入) p3.5 t1(记时器 1 外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3 口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的 高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存 地址的地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时, ale 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因 此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当
29、用 作外部数据存储器时,将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才起作 用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ale 禁止, 置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间, 每个机器周期两次/psen 有效。但在访问外部数据存储器时,这两次有效的 /psen 信号将不出现。 /ea/vpp:/ea 保持低电平时,在此期间外部程序存储器(0000h- ffffh),不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁 定为 re
30、set;当/ea 端保持高电平时,此间内部程序存储器。在 flash 编程 期间,此引脚也用于施加 12v 编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 3.1.3 振荡器特性: xtal1 和 xtal2 分别为反向放大器的输入和输出。该反向放大器可以配 置为 片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动 器件,xtal2 应不接。有余输入至内部时钟信号要通过一个二分频触发器, 因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求 的宽度。 3.1.4 芯片擦除: 整个 perom 阵列和三个
31、锁定位的电擦除可通过正确的控制信号组合, 并保持 ale 管脚处于低电平 10ms 来完成。在芯片擦操作中,代码阵列全被写 “1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外, at89c51 设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软 件可选的掉电模式。在闲置模式下,cpu 停止工作。但 ram,定时器,计数 器,串口和中断系统仍在工作。在掉电模式下,保存 ram 的内容并且冻结 振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 3.2 led 显示器 led(light emitting diode)是发光二极管英文名称的缩写。led 显示器是由发光二极
32、管构成的,所以在显示器前面冠以“led”。led 显示 器在单片机系统中的应用非常普遍。 3.23.2.1.1 led 显示器的结构 常用的 led 显示器为 8 段。每一个段对应 1 个发光二极管,这种显示 器有共阳极和共阴极两种:共阴极 led 显示器的发光二极管的阴极连接在 一起,通常此公共阴极接地。当某个发光二极管的阳极为高电平时,发光 二极管点亮,相应的段被显示。同样,共阳极 led 显示器的发光二极管的 阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极接 低电平时,发光二极管被点亮,相应的段被显示。为了使 led 显示器显示 不同的符号或数字,就要把不同段的发光二极管
33、点亮,这样就要为 led 提 供代码,因为这些代码可使 led 相应的段发光,从而显示不同字型,因此 该代码称为段码。 7 段发光二极管,再加上 1 个小数点位,共计 8 位。因此提供给 led 显 示器的段码正好是 1b。各段与字节中各位对应关系如下表 3.1: 表 3.1 8 段 led 结构及外形 代码位d7d6d5d4d3d2d1d0 显示位dpgfedcba 3.23.2.2.2 led 显示器工作原理 由 n 个 led 显示块可以拼接成 n 位的 led 显示器。 如图是 led 显示器的结构原理图 3.2。 n 个 led 显示器有 n 个位选线和 8*n 位 根段码线。 段码
34、线控制显示字符的字型,而位选线为各个 led 显示块中 各段的公共端,它控制该 led 显示位的亮或暗。led 显示器 有静态显示和动态显示两种。 3.3 键盘 键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功能, 是人工干预单片机的主要手段。 3.33.3.1.1 键盘输入的特点 键盘实质上是一级按键开关的集合。通常,键盘开关利用了机械触点 的合、断作用。 3.33.3.2.2 按键的确认 键的闭合与否,反映在行线输出电压上就呈现高电平或低电平,如果 高电平表示键断开,低电平则表示键闭合,通过对行线电平高低状态的检 测,便可确认按键按下与否。为了确保 cpu 对一次按键动作只确认一
35、次按 键有效,必须消除抖动的影响。按键输入电路由 4*4 矩阵键盘组成, p1 口 作为输入控制按键,其中 p1.0p1.3 扫描行,p1.4p1.7 扫描列。 3.33.3.3.3 如何消除按键的抖动 采用软件来消除按键抖动的基本思想是:在一次检测到有键按下时, 该键所对应的行线为低电平,执行一段延时 10ms 的子程序后,确认该行线 电平是不否仍为低电平,如果仍为低电平,则确认为该行确实有键按下。 当按键松开时,行线的低电平变为高电平,执行一段延时 10ms 的子程序后, 检测该行线为高电平,说明按键确实已经松开。 3.4 系统复位电路的设计 智能系统一般应有手动或上电复位电路。复位电路的
36、实现通常有两种 方式:rc 复位电路和专用 监控电路。前者实现简单,成本低,但复位 可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复 位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。 本次课程设计采用了上电按钮电平复位电路,如图 3.2 图 3.2 3.5 时钟电路模块 时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作 的基础。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡 定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系 统工作的快慢。为达到振荡周期是 12mhz 的要求,这里要采用 12mhz 的晶 振,另外有两个 2
37、2p 的独石电容,两晶振引脚分别连到 xtal1 和 xtal2 振 荡脉冲输入引脚。具体连接图如图 3.3 所示: 图 3.3 3.6 输出显示电路 用 p2.0p2.2 作为 lcd 的 rs、r/w、e 的控制信号;用 p0.0p0.7 作为 lcd 的 d0d7 的控制信号。由于 p0 口作为输出,应加上拉电阻。 3.7 音频输出部分 整个输出部分由一个 100uf 电容、两个 s9013 npn 三极管和一个蜂鸣 器/喇叭组成,原理图如右图所示: 100uf 电容是用来滤波的,两个 npn 三极管起到放大信号的作用,最后 由蜂鸣器/喇叭表现出信号。用 p3.7 口控制蜂鸣器。输出显示
38、电路如图 3.4 所示: xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1
39、 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 ls1 speaker q1 pnp r1 1k d7 14 d6 13 d5 12 d4 11 d3 10 d2 9 d1 8 d0 7 e 6 rw 5 rs 4 vss 1 vdd 2 vee 3 lcd1 lm016l 2 3 4 5 6 7 8 9 1 rp1 respack-8 图 3.4 输出显示电路 3.8 整体硬件电路 如图 3.5 所示: 图 3.5 音乐盒硬
40、件电路原理图 3.8.1 原理说明: 当键盘有键按下时,判断键值,启动计数器 t0,产生一定频率的脉冲, 驱动蜂鸣器,放出乐曲。同时启动定时器 t1,显示乐曲播放的时间,并驱 动 lcd,显示歌曲号及播放时间。 1) 硬件电路中用 p1.0p1.7 控制按键,其中 p1.0p1.3 扫描行, p1.4p1.7 扫描列; 2)用 p2.0p2.2 作为 lcd 的 rs、r/w、e 的控制信号; 3)用 p0.0p0.7 作为 lcd 的 d0d7 的控制信号; 4)用 p3.7 口控制蜂鸣器; 5)电路为 12mhz 晶振频率工作,起振电路中 c1,c2 均为 30pf。 3.8.2 键盘按键
41、 键盘按键分布如下: 012 3 45 6 7 89ab cde f 按键功能说明: 1a十首歌曲 c下一首歌曲 d上一首歌曲 e暂停 f开机画面 4 系统软件设计 4.1 主模块的设计 主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和 “自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的 合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块的 程序框图如下图 6 所示: 图 6 4.2 外部中断源系统设计 在本设计中中断源是采用外部中断 0 方式,其入口地址是 0003h。其中 断响应级别最高。 (1)定时器/计数器 工作方式寄存器 tmod 用于选择定时器
42、/计数器的工作方式和工作模式。 其格式如下表 4.1: d7d6d5d4d3d2d1d0 gatem1m0gatem1m0 tmod t1 方式字段t0 方式字段 表 4.1 下面表 4.2 对 tmod 各位进行说明: 门控位gate 工作方式选择位m1、m0 m1m0 工作方式 00 方式 0,为 13 位定时器/计数器 01 方式 1,为 16 位定时器/计数器 10 方式 2,8 位的常数自动重新装载的定时器/计数器 11 方式 3,仅适用于 t0 表 4.2 其中,在本设计中采用方式 1 的 16 位定时器/计数器。 计数器模式和定时器模式选择位 =0,为定时器模式。 =1,为计数模
43、式。 定时器/计数器控制寄存器 tcon,其格式如下表 4.3: d7d6d5d4d3d2d1d0tcon tf1tr1tf0tr0ie1it1ie0ito 表 4.3 其各位的功能如下: tf1、tf0计数溢出标志位当计数器溢出时,该位置 1。 tr1、tr0计数运行控制位 4.3 基本显示模块设计 基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数 据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于 电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好, 使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替 机械式传动,用 led 显示器代替
44、显示器代替指针显示进而显示时间,减小 了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分 的校对,片选的灵活性好。 程序流程如图 4.4 所示。 图 4.4 4.4 系统初始化程序 rs bit p2.0;定义液晶显示端 口标 rw bit p2.1 e bit p2.2 l50ms equ 60h l1ms equ 61h l250ms equ 62h sec equ 65h min equ 64h hou equ 63h org 0000h ljmp main ljmp tt0 org 001bh ljmp t1int org 1000h main: 液晶初始化 mov sp
45、,#70h mov p0,#01h ;清屏 call enable mov p0,#38h ;8 位,2 行显示 lcall enable org 000bh 4.5 音调、节拍以及编码的确定方法 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的 谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片 机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱 多长的时间。 4.5.1 音调的确定 不同音高的乐音是用 c、d、e、f、g、a、b 来表示,这 7 个字母就是 音乐的音名,它们一般依次唱成 do、re、mi、fa、so、la、si,即唱成简谱 的 1、2
46、、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱 曲时乐音的发音,所以叫“音调”,即 tone。把 c、d、e、f、g、a、b 这 一组音的距离分成 12 个等份,每一个等份叫一个“半音”。两个音之间的 距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,cd、d e、fg、ga、ab 两音之间隔着一个黑键,他们之间的距离就是全音; ef、bc 两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成 1、2、3、4、5、6、7 的音叫自然音,那些在它们的左上角加上号或者 b 号的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b 叫降记 音,表示在原来的基础上降低半音。例
47、如高音 do 的频率(1046hz)刚好是 中音 do 的频率(523hz)的一倍,中音 do 的频率(523hz)刚好是低音 do 频率(266 hz)的一倍;同样的,高音 re 的频率(1175hz)刚好是中音 re 的频率(587hz)的一倍,中音 re 的频率(587hz)刚好是低音 re 频率 (294 hz)的一倍。 1)要产生音频脉冲,只要算出某一音频的周期(1/频率),然后 将此周期除以 2,即为半周期的时间。利用定时器计时这半个周期时间,每 当计时到后就将输出脉冲的 i/o 反相,然后重复计时此半周期时间再对 i/o 反相,就可在 i/o 脚上得到此频率的脉冲。 2)利用 a
48、t89c51 的内部定时器使其工作在计数器模式 mode1 下, 改变计数值 th0 及 tl0 以产生不同频率的方法。 此外结束符和休止符可以分别用代码 00h 和 ffh 来表示,若查表结 果为 00h,则表示曲子终了;若查表结果为 ffh,则产生相应的停顿效果。 3)例如频率为 523hz,其周期 t=1/523=1912us,因此只要令计数 器计时 956us/1us=956,在每次技术 956 次时将 i/o 反相,就可得到中音 do(523hz)。 计数脉冲值与频率的关系公式如下: n=fi2fr n:计算值;fi:内部计时一次为 1us,故其频率为 1mhz; 其计数值的求法如下
49、: t=65536-n=65536-fi2fr 例如:设 k=65536,f=1000000=fi=1mhz,球低音 do(261hz)。中音 do(523hz)。高音的 do(1046hz)的计算值 t=65536-n=65536-fi2fr=65536-10000002fr=65536-500000/fr 低音 do 的 t=65536-500000/262=63627 低音 do 的 t=65536-500000/523=64580 低音 do 的 t=65536-500000/1047=65059 c 调各音符频率与计数值 t 的对照表如表 4.4 所示。 表 4.4 c 调各音符频率
50、与计数值 t 的对照表 低音频率t参数中音频率t参数高音频率t参数 do2621908229do523956115do10465757 do2771805217do554903108do11095454 re2941701204re587852102re11755151 re3111608193re62280497re12454848 mi3301515182mi65975991mi13184545 fa3491433172fa69871686fa13974343 fa3701351162fa74067681fa14804141 so3921276153so78463877so15683838
51、 so4151205145so83160272so16613636 la4401136136la88056868la17603434 la4641078129la93253664la18653232 si4941012121si98850661si19763030 4.5.2 节拍的确定 若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律 (固定的律动),而且可以调节各个音的快满度。“节拍”,即 beat,简单 说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若 1 拍实 0.5s,则 1/4 拍为 0.125s。至于 1 拍多少 s,并没有严格规定,就像人的 心跳一样,大部分人的
52、心跳是每分钟 72 下,有些人快一点,有些人慢一点, 只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符 表示暂停发音。 一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率, 这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。 了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音 乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的 定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符 和对应的频率,以及单片机定时计数的关系。 表 4.5 节拍与节拍码对照 节拍码节拍数节拍码节拍数 11/4 拍11/8 拍 22/4 拍
53、21/4 拍 33/4 拍33/8 拍 41 拍42/1 拍 51 又 1/4 拍55/8 拍 61 又 1/2 拍63/4 拍 82 拍81 拍 a2 又 1/2 拍a1 又 1/4 拍 c3 拍c1 又 1/2 拍 f3 又 3/4 拍 每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表 音符的节拍,图 4.5 为节拍码的对照。如果 1 拍为 0.4 秒,1/4 拍实 0.1 秒, 只要设定延迟时间就可求得节拍的时间。假设 1/4 拍为 1delay,则 1 拍应 为 4delay,以此类推。所以只要求得 1/4 拍的 delay 时间,其余的节拍就 是它的倍数,如表
54、 4.5 为 1/4 和 1/8 节拍的时间设定。 表 4.5 1/4 和 1/8 节拍的时间设定 曲调值delay曲调值delay 调 4/4125 毫秒调 4/462 毫秒 调 3/4187 毫秒调 3/494 毫秒 调 2/4250 毫秒调 2/4125 毫秒 4.5.3 编码 do re mi fa so la si 分别编码为 17,重音 do 编为 8,重音 re 编为 9,停顿编为 0。播放长度以十六分音符为单位(在本程序中为 165ms), 一拍即四分音符等于 4 个十六分音符,编为 4,其它的播放时间以此类推。 音调作为编码的高 4 位,而播放时间作为低 4 位,如此音调和节
55、拍就构成 了一个编码。以 0 xff 作为曲谱的结束标志。 举例 1:音调 do,发音长度为两拍,即二分音符,将其编码为 0 x18。 举例 2:音调 re,发音长度为半拍,即八分音符,将其编码为 0 x22 歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为 unsigned char 的数组中。程序从数组中取出一个数,然后分离出高 4 位 得到音调,接着找出相应的值赋给定时器 0,使之定时操作蜂鸣器,得出相 应的音调;接着分离出该数的低 4 位,得到延时时间,接着调用软件延时。 表 4.6 简谱对应的简谱码、t 值、节拍数 简谱发音简谱码t 值节拍码节拍数 5低音 so16426
56、011/4 拍 6低音 la26440022/4 拍 7低音 ti36452433/4 拍 1中音 do46458041 拍 2中音 re56468451 又 1/4 拍 3中音 mi66477761 又 1/2 拍 4中音 fa76482082 拍 5中音 so864898a2 又 1/2 拍 6中音 la964968c3 拍 7中音 tia65030f3 又 3/4 拍 1高音 dob65058 2高音 rec65110 3高音 mid65157 4高音 fae65178 5高音 sof65217 4.6 程序流程图 本设计的程序流程如下: 先从主程序开始,接着初始化变量及 lcd 接口,
57、然后初始化方波 发生器、晶振管,使 lcd 显示信息,就进入了开机状态,等待动作选 择按键,包括播放键,暂停键,停止键,当然也可以选择返回;加入选择 的是播放键,lcd 上就会 -7-现实歌曲编号,与此同时演奏相应的乐曲, 此时,你可以按上一曲或下一曲键,使其演奏上一个或者先一个乐曲。 其 流程图如下: 主程序流程图 lcd 显示流程图 4.7 文档顶端程序清单 rs bit p2.0;引脚定义,定义液晶显 示端口标号 rw bit p2.1 e bit p2.2 l50ms equ 60h ;工作内存定义 l1ms equ 61h l250ms equ 62h sec equ 65h min
58、 equ 64h hou equ 63h org 0000h ljmp main org 000bh ;定时器 t0 溢出中断入口地 址 ljmp tt0 org 001bh ; 定时器 t1 溢出中断入口地 址 ljmp t1int org 1000h main: ;液晶初始化 mov sp,#70h mov p0,#01h ;清屏 call display mov p0,#38h ;8 位,2 行显示 lcall display mov p0,#0fh ;屏显 on,光标 on, 闪烁 on lcall display mov p0,#06h ;计数地址加 1,显 示幕 on lcall
59、display lcall initil ;内存初始化 wait: lcall key ;键盘扫描,是否有键按 下,否则等待 lcall modd ljmp wait key: nop nop lcall ks jnz k1 ;有按键转到 k1 lcall kaiji lcall sop xn: ljmp key k1: lcall modd lcall modd lcall ks jnz k2 ljmp key k2: mov r2,#0feh ;读键盘 mov r4,#00h k3: mov a,r2 mov p1,a mov a,p1 jb acc.4,l1 ;为 1 跳转,第一行无 按
60、键 mov a,#00h ljmp lk l1: jb acc.5,l2 mov a,#04h ljmp lk l2: jb acc.6,l3 mov a,#08h ljmp lk l3: jb acc.7,next1 mov a,#0ch lk: add a,r4 push acc k4: lcall delay1 ;若同时有其他 按键,则等待 lcall ks jnz k4 mov r3,#07h clr a mov r0,#30h mov r1,#31h mm1: mov a,r1 mov r0,a inc r0 inc r1 djnz r3,mm1 pop acc mov r0,a r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙教版五年级上册数学第一单元 小数的意义与加减法 测试卷及参考答案【培优a卷】
- 户外灯箱制作安装合同(3篇)
- 计量服务合同签订
- 设备故障排查与维修
- 设备采购合同续签
- 详解招标联合体投标文件要点
- 语文学习成功秘诀与方法
- 课件物理奇妙的秘密
- 财务报告保证书格式
- 质量环保双重保证
- 2023版小学科学课程标准
- 湖北省饲料企业名录
- 五年级上册美术课件-第4课 未来的交通工具丨赣美版
- 2021-2022学年五年级下学期数学课后服务数学思维类游戏课4 流水行船问题 课件(共12张PPT)
- 碳酸饮料对人体危害
- 火情侦察工作中最应注意的五大问题
- 荒漠区生态治理(麦草沙障、植物固沙)施工方案
- 农业机械化发展现状和趋势-PPT课件
- 大学生职业生涯规划大赛参赛作品ppt课件
- 《手卫生》学生七步洗手法课件(PPT 25页)
- 《影视声音艺术与制作》教学课件(全)
评论
0/150
提交评论