基于单片机的电子琴设计(完整).doc

上传人:laozhun 文档编号:4148671 上传时间:2023-04-07 格式:DOC 页数:28 大小:570KB
返回 下载 相关 举报
基于单片机的电子琴设计(完整).doc_第1页
第1页 / 共28页
基于单片机的电子琴设计(完整).doc_第2页
第2页 / 共28页
基于单片机的电子琴设计(完整).doc_第3页
第3页 / 共28页
基于单片机的电子琴设计(完整).doc_第4页
第4页 / 共28页
基于单片机的电子琴设计(完整).doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《基于单片机的电子琴设计(完整).doc》由会员分享,可在线阅读,更多相关《基于单片机的电子琴设计(完整).doc(28页珍藏版)》请在三一办公上搜索。

1、前言11 方案论证21.1 控制模块选择方案21.2 按键选择方案22 系统硬件设计32.1 系统组成及总体框图32.2 元件介绍32.2.1 AT89S5232.2.2 LM38652.2.3 LED数码管82.3 显示电路92.4 各功能模块原理图92.4.1 AT89S52模块电路原理图92.4.2 键盘扫描模块电路原理图102.4.3 数码管显示模块电路原理图112.4.4 音频处理模块电路原理图122.4.5 电源模块电路原理图123 系统软件设计133.1 音乐相关知识133.2 如何用单片机实现音乐的节拍133.3 如何用单片机产生音频脉冲143.4 系统总体功能流程图154 电

2、路仿真184.1 ISIS软件介绍184.2 仿真图介绍184.3仿真图195 PCB印制板制作205.1 印制板制作的要求205.2 印制电路板图206 系统调试226.1 软件仿真调试226.2 软件调试227 调试结论22附录1:元器件清单23附录2:主要电路原理图24附录3:主要程序25参考文献:28基于单片机的电子琴设计前言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与

3、音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而

4、每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。1 方案论证1.1 控制模块选择方案方案一:用可控硅制作电子琴。将220V交流电经变压器降压,再经过整流、滤波,获得+13.5V直流电压。将单向可控硅SCR和电阻、电容组成驰张振荡器电路。但该设计方案制作成本高且复杂。方案二: 采用AT89C51单片机进行控制,由于AT89C51不具备ISP功能,因此Atmel公司已经停产在市面上已经不常见,况且其ROM

5、只有4K在系统将来升级方面没有潜力。方案三:采用AT89S52单片机进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的内部程序存储空间达到8K,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。鉴于上述对比与分析,本设计采用方案三。1.2 按键选择方案方案一 利用I/O口直接连接的独立式键盘,每键都有相应的I/O口对应,编程容易控制,实现方便;但拒于IO口有限,能接的按键不能太多,而本系统需用户根据需要调整的参数较多,用独立按键会使操作变得复杂。方案二 利用PA口接成4*4键盘。优点:利用8个IO口得到16个按键,可使操作介界变得简单,操作也方便;缺点:软

6、件处理比独立按键复杂。 通过比较,方案二为最佳方案。2 系统硬件设计2.1 系统组成及总体框图硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。该设计要实现一种由单片机控制的电子琴,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。该设计具有11个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。用单片机产生的音频

7、脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。本例使用国家半导体公司的低压音频功率放大器LM386来实现音频功放电路。键盘扫描AT89S52数码管显示扬声器播放音乐电源部分图2.1-1 系统结构图2.2 元件介绍2.2.1 AT89S52功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使

8、得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止1。主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Fla

9、sh存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符2。管脚说明:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个

10、内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当

11、对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:表2.2.1-1 管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1

12、(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只

13、有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电

14、路的输入。XTAL2:来自反向振荡器的输出3。2.2.2 LM386LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地为参考同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中4。LM386的封装形式有塑封8引线双列直插式和贴片式。

15、增益增益负端输入正端输入地旁路输出LM386电源图2.2.2-1 LM386的封装形式特性(Features):(1)静态功耗低,约为4mA,可用于电池供电; (2)工作电压范围宽,4-12V or 5-18V;(3)外围元件少; (4)电压增益可调,20-200; (5)低失真度。其典型电路如下图:图2.2.2-2 放大器增益=20(最少器件)图2.2.2-3 放大器增益=50图2.2.2-4 低频提升放大器2.2.3 LED数码管本次毕业设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而流过电流并发出可见光的器件。LED是属于电流控制器

16、件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便5。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来。 (a)外形 (b)共阳极 (C)共阴极图2.2.3-1

17、 数码管引脚2.3 显示电路本次毕业设计的显示电路采用LED数码管显示,由于 LED是属于电流控制器件,使用时必须加限流电阻。通过单片机查表得出数码管显示编码,传送给数码管显示,以此来实现按键与显示程序的一致性。2.4 各功能模块原理图2.4.1 AT89S52模块电路原理图单片机主程序模块通过对键盘扫描程序信号的读取,在通过对应的表,取出数码管显示编码和定时器初始值以产生不同的声音信号。在这一过程中,对数码管编码是直接赋值,对声音信号则是通过中断程序进行控制。图2.4.1-1 AT89S52模块电路原理图2.4.2 键盘扫描模块电路原理图对键盘扫描电路的扫描方式有行扫描法和线反转法,在此次程

18、序编写中,采用行扫描法,通过在p20p23上循环送出0扫描信号,p24p27输入按键上的高低电平信息给单片机,经处理程序,判断出是哪个开关按下,并送主程序以实现不同功能。图2.4.2-1 键盘扫描模块电路原理图2.4.3 数码管显示模块电路原理图数码管显示模块核心是共阳级数码管,通过来自单片机I/O口的电平高低来点亮和熄灭数码管上的发光二极管,通过单片机送来的数码管显示编码可以在数码管上显示数字和字符,使应用人员可以很容易的理解按键按下所对应的音符。图2.4.3-1 数码管显示模块电路原理图2.4.4 音频处理模块电路原理图由于单片机驱动能力不够,在处理音符信号时,需加功率放大装置,因LM38

19、6芯片具有低功耗、高增益的特点,这合适单片机低功耗输出,所以加装LM386音频信号放大器对信号进行放大。图2.4.4-1 音频处理模块电路原理图2.4.5 电源模块电路原理图由于本次设计的芯片的工作电压都为5V,为了排除因为电压不稳定或者不准确影响电路的工作和软件的调试,本次设计单独用LM7805设计了一个输出5V的电压的电路,如图3-11所示,其中J0为一变压器插排接口,输出电压在7.5V,为交流电压,经过整流桥进行整流,电容滤波,再经过LM7805稳压后,得到本次设计所需的5V直流电源。图2.4.5-1 电源模块电路原理图3 系统软件设计本软件设计关键是要实现一种由单片机控制的简单音乐发生

20、器,它由16个音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。3.1 音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音

21、乐6。3.2 如何用单片机实现音乐的节拍除了音符以外,节拍也是音乐的关键组成部分。节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成7。音乐的音拍,一个节拍为单位(C调)具体如下表:表2.3.2-1 音乐节拍表曲调值DELAY曲调值DELAY调4/4125m

22、s调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms3.3 如何用单片机产生音频脉冲了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表:表3.3.3-1 音符频率与计数值T的对照表音符频率(HZ)计数值

23、(T值)音符频率(HZ)计数值(T值)低1DO26263628#4FA#74064860#1DO#27763737中5SO78464898低2RE29463835#5SO#83194934#2RE#31163928中6LA88064968低3MI33064021#6LA#93264994低4FA34964103中7SI96865030#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7S

24、I49464524高4FA139765178中1DO52364580#4FA#149065198#1DO#55464633高5SO156865217中2RE58764633#5SO#166165235#2RE#62264884高6LA176065252中3MI65964732#6LA#186565268中4FA69864820高7SI196765283T的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%25683.4 系统总体功能流程图N定时器初始化数码管显示0主程序开始循环检测按键Y数码管显示扬声器出声图3.4-1 主程序框图K1键按下K2键按下K3键按下K4键按下K5

25、键按下K6键按下K7键按下数码管显示3.,并播放mi的低音数码管显示4.,并播放fa的低音数码管显示5.,并播放so的低音K8键按下数码管显示6.,并播放la的低音数码管显示7.,并播放si的低音数码管显示1,并播放do的中音数码管显示2,并播放re的中音数码管显示3,并播放mi的高阶中音K9键按下K10键按下K11键按下K12键按下K13键按下K14键按下K15键按下数码管显示4并播放fa的中音数码管显示5并播放so的中音数码管显示6,并播放la的中音K16键按下数码管显示7,并播放si的中音数码管显示A,并播放do的高音数码管显示B,并播放re的高音数码管显示C,并播放mi的高音数码管显示

26、D,并播放fa的高阶高音图3.4-2 按键子程序流程图4 电路仿真4.1 ISIS软件介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的特点是:(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051

27、系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。(4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作9。4.2 仿真图介绍单片机:P0 口对应数码管编码输出端; P10 口做音乐信号输

28、出端; P2 口做键盘扫描部分输入输出端。键盘扫描:将16位开关通过矩阵连接,接出来四端接输入口(P0.4P0.7)用于键盘情况的输入,另外四端接输出口(P0.0P0.3)用于给键盘扫描信号。数码管显示:在使用时一要接上拉电阻(这是有单片机P0口的物理特性决定的),二是要加限流电阻以使流进单片机的小于单片机所能承受的电流。音乐处理:LM386将单片机P1.0口送过来的信号进行20倍的功率放大并送扬声器进行音乐的播出。4.3 仿真图图4.3-1 仿真图5 PCB印制板制作5.1 印制板制作的要求(1)电源线、地线应各设置一条总线;(2)线宽尽可能的宽;(3)应减少软线跳线的使用;(4)元器件排版

29、要均匀,按模块排版,防止各模块信号干扰;(5)铜箔线不可以产生锐角。5.2 印制电路板图图5.2-1 主控电路PCB板图图5.2-2输入按键PCB板图6 系统调试电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。6.1 软件仿真调试软件仿真调试主要是针对单片机部分进行调试。在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘

30、控制部分、数码管点亮部分、和音频功放电路调试。A、数码管LED电路调试:软件运行,随机按下按钮可以看到数码管显示数字;B、单片机键盘控制部分调试:软件运行,随机按动键盘可以发现各个按键对应的音正确。6.2 软件调试调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试10。7 调试结论通过各方面努力,本次毕业设计任务完成,系统部分功能已实现。可以随意演奏一首喜欢的曲子,并可以显示

31、在数码管上。基本达到预定的效果。毕业设计是专科学习阶段一次非常难得的理论与实践相结合的机会,通过这次系统的项目设计提高了我运用所学的专业基础知识来解决面临实际问题的能力,同时也提高了我查阅各种文献资料、设计手册、设计规范以及软件编程排版的水平。附录1:元器件清单名称参数数量备注排阻8*4702RP1,RP2插排SIP23J0,J1,J3SIP82J4,J5键盘直键开关16K1-K16电容CC1-3V-30pf2C21,C22CL10-3V-0.0047u1C33CC1-3V-0.1u3C12,C13,C31CD11-6.3V-10u1C32CD11-25V-470u3C11,C14,C23电阻

32、RT-0.125-b-4701R32RT-0.125-b-1K2R11,R21RT-0.125-b-10K1R31晶振11.05926MHz1Y21扬声器驻极体电容式1数码管DIP101DPY附录2:主要电路原理图附录3:主要程序ORG 0000H ;初始位置00H JMP STARET ;跳到主程序 ORG 000BH ;定时器0中断起始单元 JMP TIME0 ;跳到中断程序 STARET: MOV TMOD,#00000001B;设定工作方式为1 MOV IE, #10000010B ;开中断允许 SETB TR0L1: CALL KEY ;调用键盘扫描程序 CLR EA ;关中断总允许

33、 JB F0,L1 ;查询键盘按下标志 MOV A,22H ;将键盘码送单元A MOV DPTR,#TABLE1 MOVC A,A+DPTR ;将查询的数码管显示码送A MOV P0,A ;将数码管显示码送数码管 MOV A,22H ;将键盘码送单元A RL A ;数据倍乘 MOV DPTR,#TABLE MOVC A,A+DPTR;将声音编码送A MOV TH0,A;将声音编码高位给TH0 MOV 21H,A;送声音编码给21H单元储存 MOV A,22H RL A INC A MOVC A,A+DPTR;取声音编码地位给A MOV TL0,A;将声音编码送TL0 MOV 20H,A;将声音

34、编码低位送20H储存L2: CALL KEY;调用江畔扫描程序 SETB EA;开断总允许 JB F0,L1;查询键盘按下标志 JMP L2 ;没有转L2循环/*键盘扫描程序*/KEY: SETB F0 ;键盘按下标志至1 MOV R3,#0F7H;R3送扫描码 MOV R1,#00H;R1初始为0L3: MOV A,R3;将扫描码送A MOV P2,A将扫描码送P2扫描 MOV A,P2;读取键盘状态 SETB C;进位至1 MOV R5,#04H;将4给R5单元,用于行扫描L4: RLC A JNC KEYIN;有键按下跳到KEYIN INC R1;无键按下R1加1 DJNZ R5,L4;

35、判断一行有没有判断完毕 MOV A,R3;扫描完毕后,再次送扫描码给A SETB C;进位置1 RRC A;对A进行右移 MOV R3 ,A ;送新的扫描码给R3 JC L3 ;判断是否扫描完毕,是则循环 RET;返回主程序KEYIN: MOV 22H,R1;将键盘码送22H储存 CLR F0;对键盘按下标志清0 RET;返回主程序TIME0: PUSH ACC;将A压入堆栈 PUSH PSW;将PSW压入堆栈 MOV TL0,20H;将声音编码低位送TL0 MOV TH0,21H;将声音编码高位送TH0 CPL P1.0;对输出口声音信号取反 POP PSW;.从堆栈还原PSW POP AC

36、C;从堆栈还原ACC RETI;中断返回/*音符编码*/TABLE: DW 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178/*共阳极数码编码*/TABLE1: DB 0CH,98H,48H,40H,1EH DB 9FH,25H,0DH,99H,49H,41H,1FH DB 11H,01H0,63H,3H END 参考文献:1 胡汉才:单片机原理及其接口技术,北京清华大学出版社,2004,P142-P1452 苏家健、曹柏荣、汪志锋:单

37、片机原理及应用技术,高等教育出版社,2004.9,P3-P73 陈明荧:单片机课程设计实训教材,北京清华大学出版社,2003.9,P231-P2354 刘永明、贺民译:美Ashish Wilfred Meeta Gupta Kartik Bhatnagar, php专业项目实例开发,水利水电出版社,2003,P79-P835 赵鑫、蒋亮、齐兆群:数字电路设计,北京机械工业出版社,2005.6,P27-P316 龚妮丽:音乐美学论纲,中国社会科学出版社,2002.12,P47-P517 杨恢先、黄辉先:单片机原理及应用,人民邮电出版社,2006,P114-P1178 徐新艳:单片机原理应用与实践,北京高等教育出版社,2005.3,P64-P679 张靖武、周灵彬:单片机原理、应用与PROTEUS仿真,2008.8,P71-P7410 谢自美:电子线路设计实验测试,华中理工大学出版社,1992,P131-P137

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号