基于at89c52单片机的简易电子琴设计报告内容摘要:

晶振电路 图22 电子琴系统原理框图 简易电子琴的proteus总体仿真图 电子琴的proteus总体仿真图见图23。 按下MUSICKEY键,系统自动播放预存在内存中的曲子,按下RESKEY键,系统复位,停止播放。 按下矩阵键盘中的任意键,扬声器发出相应的音符。 图23 简易电子琴的proteus总体仿真图 单片机必须在时钟的驱动下才能工作。 在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。 外部振荡源电路一般选用石英晶体振荡器,此电路在加电大约延迟10mS后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。 电路中两个电容C1,C2,作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。 C1,C2的典型值为30PF。 单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。 起大小是时钟信号频率的倒数,常用fosc表示。 如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12181。 s。 晶振电路AT89C52单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。 本设计中采用内部时钟方式。 单片机内部有一个反相放大器XTALXTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。 时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。 一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图24所示。 加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中X1为晶振,震荡产生的时钟频率主要由Y1确定。 电容C1,C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。 图24 晶振电路在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘,如图25,图26所示。 图25 独立键盘图26 矩阵键盘它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。 本次课程设计,我采用矩阵式键盘电路,这样可以大大的节省单片机I/O的开销。 键盘电路见图27:图27 键盘电路在按键过程中常产生“毛刺” 现象,如图28所示,要消除“毛刺”现象,这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后,再延时一段时间(10ms~20ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。 图28 “毛刺”现象 发音电路 电子琴发音电路见图29。 图29 电子琴发音电路 供电及复位电路 电子琴的供电电路和复位电路见图210。 图210 电子琴供电及复位电路第3节 系统的软件设计 主程序 主程序的程序流程图见图31.按键是否按下开始去抖动,延时10ms扫描按键位置做一次按键处理,播放相应的音符或音乐按键是否按下图31程序流程图 主程序 KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H SPK EQU。 蜂鸣器所在端口 ORG 0000H LJMP START ORG 0BH LJMP INT_T0。 转定时器T0中断服务程序START:MOV TMOD,01H。 选择定时器T0工作于方式1 SETB ET0。 允许T0溢出中断 SETB EA WAIT: MOV P2,0FFH CLR。 从第四行开始扫描 MOV A,P2 ANL A,0FH。 屏蔽高四位,高四位为行,低四位为列 XRL A,0FH JZ NOKEY1。 判断是否有键按下,没有就跳转 LCALL DELY10MS MOV A,P2。 消除抖动和干扰 ANL A,0FH XRL A,0FH JZ NOKEY1 MOV A,P2。 确定有键按下以后的处理 ANL A,0FH CJNE A,0EH,NK1。 是否为第四行第一列的键被按下 MOV KEYBUF,0。 保存列号 LJMP DK1 NK1:CJNE A,0DH,NK2 MOV KEYBUF,1 LJMP DK1 NK2:CJNE A,0BH,NK3 MOV KEYBUF,2 LJMP DK1 NK3:CJNE A,07H,NK4 MOV KEYBUF,3 LJMP DK1 NK4:NOP DK1:。 第四行的处理 MOV A,KEYBUF MOV DPTR,TABLE MOVC A,@A+DPTR MOV P0,A MOV A,KEYBUF MOV B,2。 Table1以字保存,所以散转 MUL AB MOV TEMP,A MOV DPTR,TABLE1 MOVC A,@A+DPTR MOV STH0,A。 送入高字节 MOV TH0,A INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A。 送入低字节 MOV TL0,A SETB TR0 DK1A:MO。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。