时间计数,当达到一秒时,把秒加一,达到一分时,将分加一??同时调用数码管显示子程序,将时分秒分别拆分为个位、十位进行显示。利用外部中断1、2实现上一曲、下一曲以及暂停功能,设置一个计数变量,检测到上一曲或下一曲按下时,分别对计数变量加一或减一,检测到暂停被按下时,等待按键再一次按下后,继续播放,方案中歌曲的循环模式为列表循环
2.1.2 方案二
(1)硬件设计
电路以AT89C51为主控制器,74LS373和27512进行外部程序存储器的扩展,采用利用4X4组成的16个按钮矩阵键盘来实现对播放的控制,其中包括下一曲、上一曲、暂停按钮(分别为C、D、E键),当按下1~A其中的一个时,跳到相应的曲谱进行演奏,显示电路采用六个共阴极数码管进行显示,晶振采用12MHz,音乐信号由P3.0口输出,经喇叭发声而播放歌曲,如图2-2所示。
晶振电路
AT89C51单片机
存储器扩展电路
数码管 复位电路
4*4矩阵键盘
扬声器电路
(2)软件设计
图2-2方案二框架图
程序中音选取的是C调三个8度内的音符,共24个音阶。每个音符对应频率由定时器T0产生。为了程序调用方便,演奏时时每个音符都对应一个编码,占用一个字节。在程序中以查表的方式加载计数初值,为了编码简单,一般节拍高半字节表示整拍,低半字节表示分数,只要基本延时设定恰当即可,为了及时响应键盘操作,程序的编写以键盘扫描为主线编写(即主程序循环扫描按键,在按键模块中调用其他功能模块),按键每按下一次,按键扫描模块计算出键值,并储存键值,根据键值跳转至响应的标号执行程序,播放相应的歌曲,歌曲循环模式为单曲循环,其他功能的实现与方案一类同
4
2.1.2 方案三
(1)硬件设计
电路以AT89C51为主控制器,采用利用4X4组成的16个按钮矩阵键盘来上实现对播放的控制,其中C、D、E分别为功能键上一曲、下一曲以及暂停。F键为开机画面显示,1~A号按键中每按一个键,跳到相应的曲谱进行演奏,显示电路采用液晶显示器LM016L进行显示,晶振采用12MHz,音乐信号由P3.0口输出,经喇叭发声而播放歌曲,如图2-3所示。
AT89C51单片机
晶振电路
复位电路
存储器扩展电路 液晶显示屏
4*4矩阵键盘
扬声器电路
图2-3方案三框架图
(2)软件设计
程序中音选取的是C调一个8度内的音符,共7个音阶。根据十二平均律,(即将八度定义为1200音分,其中全因音符占200音分,半音占100音分,共十二个半音)每个音符对应频率由定时器T0产生。为了程序调用方便,将十二个半音的定时器初值放于表中,演奏时无需计算定时器初值,在程序中以查表的方式加载计数初值,每个音符都对应一个编码,占用一个字节。由于人耳的分辨力有限,为了编程简单,曲谱中的节拍码用延时来代替,每个音符发音30MS。由于采用的是矩阵式键盘,为了及时响应按键,程序的编写以键盘扫描为主线编写(即主程序循环扫描按键,在按键模块中调用其他功能模块)。按键每按下一次,按键扫描模块计算出键值,并储存键值,跳转至响应的标号执行程序,并调用液晶显示子程序,将键值在液晶显示器制定位置显示,如果检测到F键被按下,调用液晶显示模块,显英文字符欢迎,以及作者信息,本程序中,由于音符的长度是固定的30MS,T1用于更新剩余时间。剩余时间的显示同上。
5
2.1.3 方案比较
从以上三种方案,方案一采用的是独立式按键,按键太少,不能实现歌曲的快速选择,几乎没有拓展功能的可能,而方案二虽然采用的是矩阵式键盘,无论从扩展功能上将还是快速选择都优于方案一,但数码管显示不稳定,编程以及困难,占用CPU时序太多,方案三显然不存在方案一、方案二的缺点,使用了液晶显示屏,编程简单,显示稳定,占用CPU时序少,并且可以实现许多方案一、方案二无法实现的功能,无论是矩阵式键盘,还是液晶显示器,都有许多可扩展的功能,并且在播放音乐时简单实用,在使用上及其功能的实现上都优于前两种方案。更重要的是液晶显示器是当今电子设计的主流,通过这次设计,我能够学习到许多东西。通过方案对比,最终选择方案三,音乐发生器电路原理图见附录所示。
6
第3章 硬件设计
3.1 电路组成及工作原理
3.1.1 电路组成
音乐发生器的电路设计方框图如上图方案三所示,电路原理图见附录1所示,主要由单片机控制系统、行列式键盘、液晶显示屏、内存外部扩充电路、复位电路等组成。
单片机AT89C51是本系统的核心,它主要负责控制各个部分协调工作。在其外围接上:复位电路、数码管、按钮及扬声器。元件为:晶振X1、电容、电阻、扬声器、4*4行列式键盘、74LS373锁存器、27512外部程序存储器扩展、LM016L液晶显示屏。硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列,用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。用P0.0~P0.7作为LCD的D0~D7的控制信号。用P3.7口控制蜂鸣器,电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。将P0口作为74LS373锁存器的输入以及27C512的数据输入口,锁存器输出至27C512的低八位地址口,将P2口作为27C512高八位地址口,27C512的控制信号OE/VPP接至单片机的PSEN,实现片外ROM的读写控制。
3.1.2 电路工作原理
本音乐发生器是用单片机来设计制作完成,其功能的实现主要通过软件编程来完成, AT89C51单片机片内带有4KB和外部程序存储器扩展的256K的内存,并且允许在系统内改写或用编程器编程。该音乐发生器的效率较高,其误差主要由晶振自身的误差所造成。存储歌曲是采用的外部扩展,4*4行列式键盘来实现的,按键将单片机I/0 口的电平拉低,单片机检测到I/O口电平为0时,判断并存储键值。并自动跳转至相应曲号的标号处执行代码。显示采用的是液晶显示屏LM016L,显示稳定清晰,并且能显示多个信息,当片内4K的程序存储器存满后,自动跳转到片外256K程序存储器继续存储
7
3.2 AT89C51的简介
3.2.1 AT89C51功能概述
自从1971年微型计算机问世以来,随着大规模集成电路技术的进一步发展,导致微型计算机正向两个主要方向发展:一是高速度、高性能、大容量的高档微型机及其系列化向大、中型计算机的挑战;另一个是稳定可靠、小而廉、能适应各种控制领域需要的单片机。
MCS—51系列是Intel公司在1980年推出的高档8位单片机,具有性能价格比高、品种多、兼容性强、开发用的仿真机较完善等优点,所以在国际上和国内的占有率相当高。它拥有8位微处理器和控制器,内含一个一位布尔运算处理器,可直接对数据的位进行操作和运算,特别适用于逻辑控制。内部含有4KB的程序ROM并且在外部扩展了256K的存储空间,2个16位的计数/定时器。本次采用的是AT89C51单片机,其电路如3-1所示,它的中断功能比较强,有5个中断源,即外部中断2个,定时器中断2个,串行中断1个,有2个中断优先级。中断控制电路主要包括用于中断控制的四个寄存器:定时器控制寄存器TCON,串行口控制寄存器SCON,中断允许控制寄存器IE,中断优先级控制寄存器IP等。内部时钟振荡器,全双工方式的串行接口(UART),两极中断优先权的6个中断源/5个中断矢量的中断逻辑。哈佛结构的存储器组织,支持高达64K为单周期指令,支持六种寻址方式。最高时钟振荡频率可达12MHZ,大部分指令执行时间为1μs,乘、除指令为4μs。
3.2.2 AT89C51的管脚图
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/V PD P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1Vss12345678910111213141516171819204039383736353433323130292827262524232221803180518751P1.0VccP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6INT1P0.7INT0EA/V PPALE/PROGT1PSENT0P2.7EA/V PP P2.6P2.5XTAL1P2.4XTAL2P2.3RST/V PD P2.2P2.1RDP2.0WR803180518751P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7RXDTXDALE/PROGPSENa) b)
图3-1 AT89C51芯片引脚图
8