廉的方案。外形及引脚排列如图3.2所示。
图3 AT89C51引脚分布图
主要引脚功能:
1、RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;
2、XTAL1(19):反向振荡器放大器的输入及内部时钟工作电路的输入; 3、XTAL2(18):来自反向振荡器的输出;
4、P1口(1-8):P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流; 5、 EA/
__VPP:当EA保持低电平时,单片机只访问外部程序存储器。EA为高
____电平时,单片机只访问内部程序存储器。 2)芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM、定时器、计数器、串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁
止所用其他芯片功能,直到下一个硬件复位为止。 3.1.3 矩阵式键盘的结构与工作原理
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,本系统中的矩阵键盘中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
图4 矩阵式键盘
3.1.4按键显示模块 1)数码管的分类
本设计用的是七段码。可显示0-F。
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
1.共阳数码管:是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就
不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
2.共阴数码管:在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
2)数码管的驱动方式
数码管的驱动方式分为:静态式和动态式两类。
1.静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
优点是:编程简单,显示亮度高,缺点是占用I/O端口多。
2.动态显示驱动:动态驱动是将所有数码管的8个显示笔划\的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 显示模块如图所示。
图5 显示模块
3.1.5功能显示灯模块
当按下弹奏/播放功能键时,LED0灯亮(P2^0)表示弹奏模式,再次按下LED0熄灭表示播放模式;当独立开关控制LED1亮时表示弹奏保存录音或者播放录音歌曲,不亮时则表示弹奏不会保存录音或者播放内置音乐。
图6 功能显示灯模块
3.1.6音乐播放装置
本次设计很简陋,没有MP3那样优美的音乐,但此次设计分成“音调”和“节拍”两部分,听起来还是不错的。 音调:表示一个音符唱多高的频率 节拍:表示一个音符唱多长的时间。
由于本课程设计是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。因此,我们只需弄清楚音乐中的音符和对应的频率,利用单片机
的定时/计数器来产生方波频率信号即可。
要产生相应的音频脉冲,只需要计算出某音频的周期,再除以2。利用计数器计时半周期,计满时使P2.0反向,然后重复计时再反向。本例中,单片机工作在12MHz时钟,使用定时器/计数器T0,工作模式为1,改变计数初值TH0、TL0就可产生不同频率的脉冲信号。
例如低3MI音,频率为330Hz,其周期T=1/f=1/330=3030us,计数值N=3030/2=1515,所以每计数1515次P2.0反向。计数初值T=65536-N=64021。C调的各音符频率与计数值T的对照表如下图所示。
表1 C调各音符频率与计数值T对照表
音符 低 1 DO # 1 DO# 低 2 RE # 2 RE# 低 3 M 低 4 FA # 4 FA# 低 5 SO # 5 SO# 低 6 LA # 6 低 7 SI 中1 DO # 1 DO# 中 2 RE # 2 RE# 中 3 M 中 4 FA
频率(HZ) 简谱码(T值) 262 277 294 311 330 349 370 392 415 440 466 494 523 554 587 622 659 698 63628 63731 63853 63928 64021 64103 64185 64260 64331 64400 64463 64524 64580 64633 64684 64732 64777 64820 音符 # 4 FA# 中 5 SO # 5 SO# 中 6 LA # 6 中 7 SI 高 1 DO # 1 DO# 高 2 RE # 2 RE# 高 3 M 高 4 FA # 4 FA# 高 5 SO # 5 SO# 高 6 LA # 6 高 7 SI 频率(HZ) 简谱码(T值) 740 784 831 880 932 988 1046 1109 1175 1245 1318 1397 1480 1568 1661 1760 1865 1967 64860 64898 64934 64968 64994 65030 65058 65085 65110 65134 65157 65178 65198 65217 65235 65252 65268 65283