以单片机AT89S52为核心的乐曲编辑发生器的设计

发布者:耿高良最新更新时间:2012-11-12 来源: 21ic 关键字:AT89S52  乐曲编辑发生器  乐曲效果 手机看文章 扫描二维码
随时随地手机看文章

1引言

基于RTX51的乐曲编辑发生器以AT89S52单片机为控制核心,操作者可以通过4×4矩阵键盘输入约定格式的任意乐曲,按“播放”键后,系统便开始播放所编辑的乐曲,并且音调和节拍都可以由单片机精确控制。为了降低成本,在最小硬件设计的基础上,系统的功能尽可能用软件来实现,系统软件是在面向MCS-51系列单片机的嵌入式实时多任务操作系统RTX51Tiny平台上,用C51高级语言和MCS-51汇编语言混合编程而开发的。

2 系统硬件设计

为了今后能够在线升级用户应用程序,采用带ISP接口的单片机AT89S52为核心构成乐曲编辑发生器。AT89S52具有快速8051内核、8 KB FlashE2PROM、256 B IDATA RAM,完全符合运行RTX51Tiny的硬件要求。笔者已研制了AT89S51/52的目标程序PC机下载软件,无需编程器即可完成单片机应用系统的开发。

为了设计编辑任意乐曲的人机界面,采用4×4矩阵键盘作为系统的输入设备,采用点阵式液晶显示模块TC1602A作为系统的输出设备。为了存储和读出任意乐曲,采用带I2C串行接口的E2PROM存储器AT24C02。为了放大单片机AT89S52产生的乐曲声音,采用了功率放大器LM386。系统硬件电路原理图如图1所示。

3 乐曲编辑和播放的软件实现

3.1 单片机产生音频矩形脉冲的方法

利用单片机的内部定时器T1并使其工作在定时器工作方式1(16 bit定时),改变T1的计数初值,就可以在单片机的I/O引脚端产生不同频率的音频矩形脉冲。

例如,音频矩形脉冲信号的频率为523 Hz,则其周期T=1/523=1912μs,因此,只要让计数器定时1912μs÷2=956μs,当定时956μs到的时候,将AT89S52的乐曲输出引脚P3.7反相,就可得到中音DO(523 Hz)。

单片机定时器计数初值T与单片机内部机器周期信号频率Fi和音频矩形脉冲信号频率Fr的关系如下。

为了叙述方便,不妨把定时器计数初值T称为简谱码。

3.2 乐曲的音调表示方法

单片机播放乐曲的过程,主要是用单片机来识别所编辑的乐曲并播放出来。单片机需要识别乐曲中的音调和音长(音长亦称为节拍),本设计用字母A~Z来代表乐曲的各个音调。数字0作为音调的结束标志,如表1所示。

[page]

3.3 乐曲编辑的软件实现方法

在系统软件设计时,已将按键处理作为一个任务即“按键处理任务”,它的主要功能是编辑乐曲。“按键处理任务”的执行需要“键盘扫描任务”向它发送信号来触发执行。“按键处理任务”的C51源程序如下。



[page]

3.4 乐曲播放的软件实现方法

在设计“播放任务”程序时,利用AT89S52内部的定时器T1定时溢出中断来产生音调的频率,并利用RTX51操作系统的os_wait2(K_TMO,ticks)函数来产生音长。“播放任务”的C51源程序如下:


3.5 系统软件流程

根据对系统功能的分析,把系统软件分解为5个任务,具体如下:

任务0:系统初始化任务,包括TC1602A的初始化、定时器T1的初始化、中断初始化。在启动任务1~任务4后,自动删除任务0,使得任务0只在系统上电复位时执行一次。

任务1:键盘扫描任务。每隔50 ms执行1次,扫描所得的键值存于全局变量keycode,然后向“按键处理任务”发信号。

任务2:按键处理任务。等待信号,根据键值keycode完成相应处理,实现的功能包括乐曲的编辑、乐曲的保存和读取等。

任务3:播放任务。等待信号,按照音调和音长播放乐曲。

任务4:显示刷新任务。根据光标指针变量的值在液晶屏上显示乐曲数据(音调和音长)。

系统软件流程图如图2所示。

4 结束语

本文给出了以单片机AT89S52为核心构成的任意乐曲编辑发生器,具有硬件电路简单、操作界面友好、使用方便的特点。该系统已投入运行,播放出来的乐曲效果良好,音调和节拍都由单片机控制得相当准确。

关键字:AT89S52  乐曲编辑发生器  乐曲效果 引用地址:以单片机AT89S52为核心的乐曲编辑发生器的设计

上一篇:基于AT89S52某型直升机控制保护盒的数字化设计
下一篇:基于AT89C52控制的电池四参数检测系统设计

推荐阅读最新更新时间:2024-03-16 13:13

基于AT89S52的智能快速充电器控制系统的设计与实现
  1.引言   本控制系统是为120w智能快速稳压电源设计的。   该快速充电器是为部队在野战条件下工作而研制的,因此要求其具有体积小、重量轻、智能化程度高、操作简便等优点,同时对电源的可靠性和抗干扰性提出了很高的要求。有稳压供电和充电两种工作方式。稳压供电时输出恒定的24V;处于充电状态时有四种充电方式:常规充电、快速充电、电池浮冲、电池训练,可以为镉镍、氢镍蓄电池充电。   2. 控制系统总体设计要求   根据实际情况,本控制系统要完成以下功能:   (1) 能自动识别电池的类型(镍镉电池、镍氢电池、锂电池)。   (2) 有稳压供电和充电两种工作模式。   (3) 采用最高电压Vmax、最高温度Tmax、最长充电时间tma
[电源管理]
基于<font color='red'>AT89S52</font>的智能快速充电器控制系统的设计与实现
基于DTMF和CAN总线的家居安防系统设计方案
   摘要: 介绍了一种以AT89S52单片机为控制核心, 通过DTMF公用电话网和CAN 总线传递的多节点家居安防系统设计方案。本智能家居安防系统集防火、防盗、防燃气为一体, 可实现自动检测与自动语音拨号报警。详细介绍了DTMF收发电路、通话电路和CAN 总线传输等电路。实验结果表明, 本系统功能实用, 信息传递实时可靠,适用于家居安防或其他场所的安防系统。 1 引言   现在,人们对工作和生活环境不仅要求舒适健康、可靠便利, 而且更加看重安全性,并利用安防系统来提高家庭抵御各种意外情况的能力。现在的安防系统可借助计算机技术、IC 卡技术、通信技术等来实现,CAN总线应用于安防系统对家居智能化发展起到了良好的促进作用。CAN
[安防电子]
基于DTMF和CAN总线的家居安防系统设计方案
用单片机AT89S52实现DTMF信号译码
   引言   DTMF信号首先用于电话的拨号系统,在频率编码遥控系统及数据编码传输中的应用也很普遍。目前的DTMF译码器中,大多采用通用集成器件(单音译码电路和组合门电路)或专用DTMF信号译码集成电路(如MC145436等)组成译码电路。在很多情况下,DTMF译码器输出的数据仍需送入单片机进行相应的运算及处理,进而控制其它各种设备的动作。因此,如果能找到一种基于单片机的DTMF信号的译码算法,再辅之以简单的整形电路就可以,既可省去成套译码电路,又能达到简化电路降低成本的目的。本文所要介绍的,就是这种构想的初衷,结果通过计算机仿真计算数据论证认为完全能够达到设计要求。    1、DTMF信号频率组成及整形前DTMF信号的幅值
[单片机]
中央空调温湿度检测系统设计
随着人民生活水平的提高,人们对居住环境的要求不断提高,办公楼、商住楼、商场、酒店等建筑已必须配备舒适的中央空调系统。舒适的中央空调系统需要对房间内的温度、湿度、洁净度、空气质量等实行实时监视及准确控制。计算机和自动化技术的发展,新的高科技技术不断应用到各个方面中,使得智能化已成为一种发展的必然趋势。数字传感器的普及,及其直接输出的数字信号可适配于各种微处理器,使中央空调温湿度检测系统应该在系统稳定性、抗干扰性、实时性和经济性等方面有很高的要求。 1 系统的总体设计方案 1.1 系统的组成 因为本系统是以嵌入式微控制器为核心,它控制本系统的各模块功能,因此选择性能可靠、发展技术成熟的AT89S52单片机为本系统的控制器。本系统
[单片机]
中央空调温湿度检测系统设计
液晶显示屏与AT89S52单片机接口的设计方法
1 AT89S52 单片机简介 1. 1 芯片主要特性 AT89S52 单片机是Atmel 公司新近推出的高档、增强型产品。它是一个低功耗、高性能CMOS 8 位微控制器,片内含通用8 位中央处理器和ISP FLASH 存储单元,8 kB ISP( In-system pro grammable)的可反复擦写1 000 次的FLASH 只读程序存储器,片上FLASH 允许程序存储器在系统可编程,亦适于常规编程器。器件采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS-51 指令系统及80C51 引脚结构,在单芯片上,拥有灵巧的8 位CPU 和在系统可编程FLASH, 使得A T89S52 为众多嵌入式控制应用系统
[单片机]
液晶显示屏与<font color='red'>AT89S52</font>单片机接口的设计方法
AT89S52键盘程序
//返回键值 /********************************************************************/ //键盘扫描子程序 获取键值函数 /****************************************************************************/ uchar keyscan(void) { uchar temp; P0=0xfe; //第一行置低 temp=P0; temp&=0xf0; if(temp!=0xf0) { delay_nms(10); if(temp!=0xf0) {
[单片机]
基于AT89S52的单片机的LED点阵显示屏的设计
第一章 概述 LED点阵显示屏是通过PC机将要显示的汉字字模提取出来,并发送给单片机,然后显示在点阵屏上,主要适用于室内外汉字显示。 第二章 硬件设计 2.1 主要器件介绍 LED 点阵显示屏是由20 个8*8 的LED 点阵块组成,形成16*80 矩形点阵,以Atmel 公司的AT89S52单片机为控制核心。显示屏的其他主要硬件有:①带锁存输出的8位移位寄存器74HC595,作为LED的列线驱动输入;②三八译码器74LS138,作为LED行线的译码选择;③三极管C9012,连接两个三八译码器的十六个输出端,作为开关使用,驱动LED 的行线 2.2 主要器件详细连接说明 Atmel的AT89S52芯片相关器件连接的接脚如下:
[单片机]
基于<font color='red'>AT89S52</font>的单片机的LED点阵显示屏的设计
腹腔压力动态测量系统设计
  腹腔是一个封闭的腔隙,其中的任何器官体积增加超过一定限度均可导致腹内高压, 腹腔压力 监测旨在通过观察腹部手术后及重症病人的腹内压变化,为及时地给予干预性治疗、护理提供有效的依据。现在对腹腔压力的测量,人们通常采用测量膀胱压力的办法,这种方法是通过一根导尿管插入膀胱,并往膀胱缓慢灌注大约50ml生理盐水,然后测量液体从膀胱流出时的压力。这种方法简单实用,测量数值能够真实反映人体腹腔压力值。但是这种方法有一个非常致命的缺点:每测量一次膀胱压力就需要灌注一次,医务人员不可能不停的去灌注生理盐水,一般的重症监护是每隔4~12小时灌注测量一次,这种间断测量就有可能影响医务人员及时了解病人腹腔压力变化情况,甚至延误实施抢救的最佳时间。本
[单片机]
腹腔压力动态测量系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved