电子琴实训报告
项目描述
电子琴是现代科技与音乐结合的产物,是一种新型的键盘乐器。电子琴在现代音乐中扮演着重要的角色。单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。本项目中的主要内容是以ATC51单片机为核心的控制元件,设计一个多音阶电子琴。它具有硬件电路简单,软件功能完善,控制系统可靠,性价比高等优点,具有一定的实用价值。 项目要求
基于ATC51单片机的多音阶电子琴设计要求如下: (1)由4*4组成16个按键矩阵,设计成16个音节。 (2)可随意弹奏想要表达的音乐。 系统设计 3.1框图设计
基于ATC51单片机的多音阶电子琴系统框图
硬件设计 4.1电路原理图
4.2元器件清单
序号元件名称规格数量用途 151单片机ATC511控制核心 2晶振12M立式1晶振电路 3三极管90121音频放大电路 4按键16按键电路
5电解电容10uF/10V1复位电路 6瓷片电容30PF瓷片电容2晶振电路 7电阻10K1音频放大电路 电阻4.7K1 电阻100欧1
8喇叭8欧/0.5W1扬声器 9电源5V/0.5A1提供+5V 软件设计 5.1程序流程图
5.2电子琴程序: ORG0000H LJMPMAIN ORG000BH LJMPTIMER0 ORG0100H MAIN:
DATABUFDATA30H MOVDPTR,#TAB
MOVTMOD,#01H;设置定时器0和定时器1工作方式1下 SETBEA;开中断
SETBET0;开定时器0中断 START:
MOVR7,#11110111B;R7暂存键扫描码,低4位作为键扫描输出
MOVR6,#00H;R6作为键值的暂存寄存器 MOVR5,#04H;R5作为行扫描的计数器 MOVP2,R7;扫描口送P2口 KEY_SCAN:
MOVR4,#04H;R4作为列扫描的计数器
ORLP2,#0F0H;设置P2.4—P2。7为读引脚模式 MOVA,P2;读P2口引脚的数据
MOVDATABUF,A;将读入的P2口数据存入DATABUF单元 SETBC;CY=1 LINE_DEC:
RLCA;A中数据循环左移
JNCKEY_VAL;若CY=0,表明某列某键被按下,转去执行取键值程序
INCR6;若CY=1,某列无按键被按下,R6递增
DJNZR4,LINE_DEC;判断每行的第4列是否扫描完毕,没有则继续
MOVA,R7;每行的4列都扫描完,无按键下,去扫描码 RRA;右移A中的数据 MOVR7,A;扫描码存回R7 MOVP2,A;扫描码送P2口
DJNZR5,KEY_SCAN;判断4行是否扫描完毕 LJMPSTART;扫描完的话,跳回START KEY_VAL:
LCALLDELAY20MS;延时20ms ORLP2,#0F0H;置P2口为读引脚 MOVA,P2;P2口数据送给A
CJNEA,DATABUF,START;新读入的数据和上次读入的数据比较,若相同表明是某键被按下
MOV31H,R6;R6中存的是对应的键值送31H单元保存 LCALLTABLE;调用查表程序,给定时器0赋初值 SETBTR0;启动T0 LOOP: MOVP2,#0F0H MOVA,P2
CJNEA,#0F0H,LOOP;判断按键是否释放 CLRTR0;已释放按键,关闭T0
LJMPSTART
;******定时器0中断服务程序****** TIMER0: PUSHACC PUSHPSW CLRTR0;关闭T0
MOVTH0,32H;TH0←(32H),计数器初值高8位赋值 MOVTL0,33H;TH0←(33H),计数器初值低8位 SETBTR0;启动T0 CPLP1.0;P1.0输入取反 POPPSW POPACC RETI
DELAY20MS:;延时20ms子程序 MOVR1,#20 LOOP2:MOVR0,#149 LOOP1:DJNZR0,LOOP1 DJNZR1,LOOP2 RET TABLE: MOVA,31H CLRC
RLCA MOVR2,A MOVCA,@A+DPTR MOV32H,A MOVTH0,A INCR2 MOVA,R2 MOVCA,@A+DPTR MOV33H,A MOVTL0,A RET
;每个音符对应的计数初值表 TAB:
DW021,103,260,400 DW524,580,684,777 DW820,8,968,65030 DW65058,65110,65157,65178 END
5.3AT98C51引脚图
ATS51单片机引脚介绍
ATS51有PDIP、PLCC、TQFP三种封装方式,其中最常
见的就是采用40Pin封装的双列直接PDIP封装,芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见右图)左边那列引脚逆时针数起,依次为1、2、3、4。。。40,其中芯片的1脚顶上有个凹点(见右图)。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。