版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
知识归纳练习题任务二、音乐演奏器的设计与实现任务一、音乐门铃的分析与仿真项目四音乐演奏器设计
项目目标导读学习目标技能目标熟练掌握51单片机的定时/计数器的内部结构、工作原理。掌握延时程序、发音程序的编写。掌握独立式键盘和矩阵式键盘的使用方法,按键的识别方法。通过学习定时器的过程,诱导学生思考快速掌握新知识点的方法。会运用定时器的几种工作方式编写延时程序,能用定时器查询方式和中断两种方式编写控制程序。能利用定时器的定时功能产生不同频率的音符和音调。会按照歌谱编写演奏程序。会用独立式键盘和矩阵式键盘。能采用查询或中断方式编写键盘程序
。1.单片机定时器/计数器的概念,定时器/计数器工作方式的设置方法。2.独立式键盘和矩阵式键盘的使用方法(采用查询或中断方式)。知识教学点
项目目标导读方法切入点
通过音乐门铃和音乐演奏器的分析与设计,从简到繁实现学习目标,了解单片机定时/计数器和键盘的实际应用。
参考学时:10学时~12学时
任务一音乐门铃的分析与仿真任务导入声音是由物体振动产生的,振动的频率不同,发出的声音也就不同,有规律的振动发出的声音叫“乐音”。如何用单片机技术来实现音乐门铃呢?任务分析门铃按键从P1.0端口输入,声音信号从P1.7端口输出到放大电路,经过放大后送入扬声器发声;首先实现“滴、滴”报警声,要求产生频率为500Hz,扬声器响0.25s,停0.25s,反复循环;实现“滴、滴”报警门铃;再实现“叮咚”门铃,产生“叮咚”声;最后实现音乐门铃,要求由单片机演奏任意一首乐曲。任务一音乐门铃的分析与仿真相关知识:定时/计数器1、定时器0和定时器1(1)定时/计数器的组成框图图4-18051定时器/计数器逻辑结构图任务一音乐门铃的分析与仿真由图4-1可知,8051单片机定时器/计数器由定时器0(T0)、定时器1(T1)、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。
16位的加1计数器(高8位、低8位)T0、T1
TMOD-定时/计数器方式寄存器,工作方式设置;
TCON-定时/计数器控制寄存器,启动、停止及设置溢出标志。任务一音乐门铃的分析与仿真(2)定时/计数器的工作原理由TMOD中的控制位(C/T)来决定T0和T1是工作在定时器方式还是计数器方式。1.定时功能----计数脉冲信号:内部振荡电路经12分频后输出的脉冲进行加1计数。∴计数频率是振荡频率的1/12—fc=1/12*fosc。2.计数功能----计数脉冲信号:来自外部输入引脚-(T0为P3.4,T1为P3.5)的负跳变信号进行加1计数—fc=1/24*fosc。任务一音乐门铃的分析与仿真(3)定时/计数器的方式寄存器和控制寄存器1)定时/计数器控制寄存器TCON(88H)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中断请求标志触发方式选择启动定时/计数器0低电平1下降沿0停止1启动任务一音乐门铃的分析与仿真2)工作方式控制寄存器TMOD(89H)T1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE——门控位。
GATE=0启动由TR0(或TR1)一位控制;
GATE=1启动受
TR0和/INT0(或TR1和/INT1)两位控制。
C/T——外部计数器/定时器方式选择位
C/T=0定时方式;
C/T=1计数方式。
M1M0——
工作模式选择位(编程可决定四种工作模式)。
任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真M1M0工作方式功能说明
00方式013位计数器
01方式116位计数器
10方式2自动再装入8位计数器
11方式3定时器0:分成两个8位计数器定时器1:停止计数表4-1定时器方式选择计数脉冲输入(1)方式0—13位方式
TF0T0TR0GATEINT01≥1&C/T=1振荡器1/12C/T=0TL0TH08位低5位13位计数器定时器计数器中断TCON01110定时时间:t=(213-定时器初值)×12/fosc(μs)2、定时器/计数器的工作方式任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真例4-1假设晶振频率是12MHz,用定时器1方式0实现1s的延时。解:因方式0采用13位计数器,其最大定时时间为:213×1
s=8192×1
s=8.192ms,因此,可选择定时时间为5ms,再循环200次。定时时间选定后,再确定计数值为5000,则定时器1的初值为:X=M
计数值=8192
5000=3192=C78H=0110001111000B
因13位计数器中TL1的高3位未用,应填写0,TH1占高8位,所以,X的实际填写值应为:X=0110001100011000B=6318H即:TH1=63H,TL1=18H,又因采用方式0定时,故TMOD=00H。任务一音乐门铃的分析与仿真可编得1s延时子程序如下:DELAY:MOV R3,#200 ;置5ms计数循环初值MOV TMOD,#00H ;设定时器1为方式0MOV TH1,#63H ;置定时器初值
MOV TL1,#18HSETB TR1 ;启动T1LP1:JBC TF1,LP2 ;查询计数溢出SJMP LP1 ;未到5ms继续计数LP2:MOV TH1,#63H ;重新置定时器初值MOV TL1,#18HDJNZ R3,LP1 ;未到1s继续循环RET
(2)方式1—16位方式
定时时间:t=(216-定时器初值)×12/fosc(μs)振荡器1/12TL0TH0TF01≥1&T0TR0GATEINT0C/T=0C/T=18位8位16位计数器中断任务一音乐门铃的分析与仿真(3)方式2—8位自动装入时间常数方式TF0振荡器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TH0中断定时时间:t=(28-定时器初值)×12/fosc(μs)任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真例4-2假设晶振频率是12MHz,试用定时器1方式2实现1s的延时。解:因为方式2是8位计数器,其最大定时时间为:256×1
s=256
s,为实现1s延时,可选择定时时间为250
s,再循环4000次。定时时间选定后,可确定计数值为250,则定时器1的初值为:X=M
计数值=256
250=6=6H。采用定时器1方式2工作,因此,TMOD=20H。任务一音乐门铃的分析与仿真可编得1s延时子程序如下:DELAY:MOV R5,#28H ;置25ms计数循环初值MOV R6,#64H ;置250
s计数循环初值MOV TMOD,#20H ;置定时器1为方式2MOV TH1,#06H ;置定时器初值MOV TL1,#06HSETB TR1 ;启动定时器LP1: JBC TF1,LP2 ;查询计数溢出SJMP LP1 ;无溢出则继续计数LP2: DJNZ R6,LP1 ;未到25ms继续循环MOV R6,#64HDJNZ R5,LP1 ;未到1s继续循环RET
(4)方式3—2个8位计数器方式仅T0可以工作在方式3—此时T0分成2个独立的计数器—TL0和TH0:前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。INT0TF0T0TR0GATE1≥1&C/T=1振荡器1/12C/T=0TL0中断振荡器1/12TF1TH0中断TR1P3.4P3.2定时/计数器固定为定时器任务一音乐门铃的分析与仿真二者的定时时间分别是:TL0:t=(28-TL0初值)×12/fosc(μs)TL1:t=(28-TL1初值)×12/fosc(μs)此时定时器T1仍然可设置成方式0、1或2,但TR1和TF1被定时器T0占用,一般用作串行口波特率发生器或不需要中断的场合。任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真例4-3假设晶振频率是12MHz,用定时器T0方式3实现1s的延时。解:根据题意,定时器T0中的TH0只能为定时器,定时时间可设为250
s;TL0设置为计数器,计数值可设为200。TH0计满溢出后,用软件复位的方法使T0(P3.4)引脚产生负跳变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延时时间应为50ms,循环20次便可得到1s的延时。由上述分析可知,TH0计数初值为:X=(256
250)=6=06HTL0计数初值为:X=(256
200)=56=38HTMOD=00000111B=07H任务一音乐门铃的分析与仿真可编得1s延时子程序如下:DELAY:MOV R3,#14H ;置100ms计数循环初值MOV TMOD,#07H ;置定时器0为方式3计数MOV TH0,#06H ;置TH0初值MOV TL0,#38H ;置TL0初值SETB TR0 ;启动TL0SETB TR1 ;启动TH0LP1:JBC TF1,LP2 ;查询TH0计数溢出SJMP LP1 ;未到500
s继续计数LP2: MOV TH0,#06H ;重置TH0初值CLR P3.4 ;T0引脚产生负跳变NOP ;负跳变持续NOPSETB P3.4 ;T0引脚恢复高电平JBC TF0,LP3 ;查询TH0计数溢出SJMP LP1 ;100ms未到继续计数LP3: MOV TL0,#38H ;重置TL0初值DJNZ R3,LP1 ;未到1s继续循环RET
3、定时器/计数器的编程和应用任务一音乐门铃的分析与仿真例4-4用单片机定时器/计数器设计方波发生器,方波周期为10ms,有P3.0引脚输出。解:取晶振频率为12MHz。方波周期为10ms,则半周期为5ms。定时器T1工作于定时方式1,产生5ms的定时。按上述设计思路可知:方式寄存器TMOD的控制字应为:10H定时器T1的初值应为:65536
5000=60536=EC78H分别采用查询方式和中断方式实现。任务一音乐门铃的分析与仿真1)采用查询方式,其源程序可设计如下:;程序功能:在P3.0引脚上产生周期为10ms的方波---T1方式1,查询方式ORG0000HMOVTMOD,#10H;采用T1方式1MOVTH1,#0ECH;装入初值MOVTL1,#78HSETBTR1;启动定时器WAIT:JBCTF1,NX;查询TF1,是否计满溢出SJMPWAITNX:CPLP3.0;P3.0引脚电平取反MOVTH1,#0ECH;重装初值MOVTL1,#78HSJMPWAITEND 任务一音乐门铃的分析与仿真2)采用采用中断方式,其源程序可设计如下
:;程序功能:在P3.0引脚上产生周期为10ms的方波---T1方式1,中断方式ORG0000HMOVTMOD,#10H;采用T1方式1MOVTH1,#0ECH;装入初值MOVTL1,#78HMOVIE,#88H;设定ET1=1,EA=1SETBTR1;启动定时器SJMP$ORG001BH;中断服务程序CPLP3.0;P3.0引脚电平取反MOVTH1,#0ECH;重装初值MOVTL1,#78HRETIEND 1、确定设计方案
选用AT89C51单片机芯片、时钟电路、复位电路、电源和按键和一个扬声器构成门铃电路控制的最小系统
。任务实施并行接口AT89C51单片机电源时钟电路复位电路扬声器图4-7系统方案设计框图
任务一音乐门铃的分析与仿真按键2、硬件电路设计
任务实施图4-8门铃电路原理图电路所用仿真元器件:AT89C51:单片机RES:电阻CRYSTAL:晶振CAP:电容CAP-ELEC:电解电容BUTTON:按钮SPEAKER:扬声器任务一音乐门铃的分析与仿真2、硬件电路设计
任务实施图4-9实用门铃电路原理图
任务一音乐门铃的分析与仿真3、源程序设计任务实施任务一音乐门铃的分析与仿真(1)实现“滴、滴”报警声要求:产生频率为500Hz,扬声器响0.25s,停0.25s,反复循环。1)步骤1:定时参数的计算
①要产生频率为500Hz的方波信号,方波信号的周期为2ms。电路采用12MHz的晶振,利用定时器T0的方式1,产生1ms的定时,在P1.7上输出周期为2ms的方波。a)T0的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字为01Hb)计算计数初值X由于晶振为12MHz,机器周期T=,要产生产生1ms的定时,计数初值为将FCH、18H分别预置给TH0、TL0。或如下计算:
TH0=(65536-1000)/256=0FCH(整数取商)TL0=(65536-1000)MOD256=18H(取模)②扬声器响0.25s,停0.25s。
1次定时中断时间为1ms,0.25s为250次中断时间。因此0.25s计时计数值为250。
3、源程序设计任务实施图4-10实现“滴、滴”报警声流程图
任务一音乐门铃的分析与仿真步骤2:流程图设计3、源程序设计;******************报警声控制程序**************;程序名:报警声控制程序xm4_1.asm;程序功能:实现“滴、滴”报警声TCOUNTEQU30HFLAGBIT00HORG0000HSJMPSTART;跳转到主程序
ORG000BH;T0的中断入口地址
LJMPINT_T0;转向中断服务程序;------------------------------主程序-------------------------------------------START:CLR FLAG ;标志位清零
MOV TCOUNT,#00H ;计时计数值清零
MOV TMOD,#01H;置T0工作于方式1MOV TH0,#(65536-1000)/256;装入计数初值
MOV TL0,#(65536-1000)MOD256MOV IE,#82H ;开中断
SETB TR0 ;启动T0定时器
SJMP $;;等待中断任务一音乐门铃的分析与仿真步骤3:源程序编写;-------------------------------T0中断服务程序---------------------------------INT_T0:MOV TH0,#(65536-1000)/256;重新装入计数值
MOV TL0,#(65536-1000)MOD256INC TCOUNT ;计时计数值+1MOV A,TCOUNTCJNE A,#250,I1 ;是否计满0.25秒
CPL FLAG ;计时计数值取反
MOV TCOUNT,#00H ;计时计数值清零I1:JB FLAG,I2 ;检查标志位
CPL P1.7 ;声音输出
SJMP RETUNEI2:CLR P1.7 ;关声音RETUNE:RETI ;中断返回END 任务一音乐门铃的分析与仿真3、源程序设计任务一音乐门铃的分析与仿真(2)实现“滴、滴”报警门铃要求:在(1)的基础上增加按钮动作。按钮按下一次,“滴、滴”声持续约3秒。1)步骤1:定时参数的计算同前面相同。
2)步骤2:流程图设计3)步骤3:源程序编写图4-11实现“滴、滴”报警门铃主程序流程图;******************报警门铃控制程序**************;程序名:报警门铃控制程序xm4_2.asm;程序功能:按下门铃按键,发出“滴、滴”报警声TCOUNTEQU30HFLAGBIT00HORG0000HSJMPSTART;跳转到主程序
ORG000BH;T0的中断入口地址
LJMPINT_T0;转向中断服务程序;------------------------------主程序-------------------------------------------START:CLR FLAG ;标志位清零
MOV TCOUNT,#00H ;计时计数值清零
MOV TMOD,#01H;置T0工作于方式1MOV TH0,#(65536-1000)/256;装入计数初值
MOV TL0,#(65536-1000)MOD256MOV IE,#82H ;开中断LOOP:JBP1.0,STOP ;判断P1.0是否按下
SETB TR0 ;启动T0定时器ACALLDELAY ;等中断约3.2sSTOP:CLRP1.7;关声音
CLRTR0 ;关闭T0定时器
SJMP LOOP;反复任务一音乐门铃的分析与仿真;-------------------------------T0中断服务程序---------------------------------INT_T0:MOV TH0,#(65536-1000)/256;重新装入计数值
MOV TL0,#(65536-1000)MOD256INC TCOUNT ;计时计数值+1MOV A,TCOUNTCJNE A,#250,I1 ;是否计满0.25秒
CPL FLAG ;计时计数值取反
MOV TCOUNT,#00H ;计时计数值清零I1:JB FLAG,I2 ;检查标志位
CPL P1.7 ;声音输出
SJMP RETUNEI2:CLR P1.7 ;关声音RETUNE:RETI ;中断返回DELAY:MOVR1,#0FFH ;延时约3.2秒DEL1:MOVR2,#0FFHDEL2:MOVR3,#09HDEL3:NOPNOPNOPDJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1RETEND 任务一音乐门铃的分析与仿真3、源程序设计任务一音乐门铃的分析与仿真要求:按下一次按钮,产生一次“叮咚”声。“叮”和“咚”声音各占用0.5秒1)步骤1:定时参数的计算①“叮”和“咚”声分别为667HZ和500HZ的频率,即声音信号周期为1.5ms和2.0ms,P1.7脚输出信号的高或低电平的宽度为0.75ms(1.5ms/2)和1.0ms(2.0ms/2)。电路采用12MHz的晶振,利用定时器T0的方式2,产生250us的定时。因此,“叮”声667HZ的频率要经过3次250us的定时,而“咚”声500HZ的频率要经过4次250us的定时。a)T0的方式控制字TMOD:M1M0=10,GATE=0,C/T=0,可取方式控制字为02H(定时器T0为工作方式2)b)计算计数初值X由于晶振为12MHz,机器周期T=,要产生产生250的定时,计数初值为②只有当按下按钮KEY之后,才启动T0开始工作,当T0工作完毕,回到最初状态。③“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。
(3)实现“叮咚”门铃
任务一音乐门铃的分析与仿真
2)步骤2:流程图设计图4-12实现“叮咚”门铃主程序流程图图4-13实现“叮咚”门铃中断服务程序流程图;******************门铃控制程序**************;程序名:门铃控制程序xm4_3.asm;程序功能:实现“叮咚”门铃声TDONGDATA30H ;“咚”计时(0-4) 4*250us=1msTDINGDATA31H ;“叮”计时(0-3) 4*250us=0.75msT05SADATA32H ;0.5s计数1:0-100T05SBDATA33H ;0.5s计数2:0-20100*20*250us=0.5sFLAGBIT00H ;声音标志,0:发“叮”声;1:发“咚”声STOPBIT01H ;完成标志,1:一次“叮咚”完成KEYBITP1.0 ;按键SPEAKERBITP1.7;喇叭;------------------------------主程序-------------------------------------------ORG0000HLJMPSTARTORG000BH ;T0中断矢量
LJMPINT_T0START:MOVTMOD,#02H ;置T0工作于方式2MOVTH0,#06H ;装入计数初值(250us定时)MOVTL0,#06HSETBET0SETBEA ;开中断任务一音乐门铃的分析与仿真3)步骤3:源程序编写NSP:CLRSPEAKER ;静音
JBKEY,NSP ;如果按钮没按下,等待
LCALLDELY10MS ;10ms延时(防抖处理)JBKEY,NSP ;如果按钮没按下,等待
SETBTR0 ;启动T0MOVTDONG,#00H ;咚计时清零
MOVTDING,#00H ;叮计时清零
MOVT05SA,#00H ;0.5s计数1清零
MOVT05SB,#00H ;0.5s计数2清零
CLRFLAG ;声音标志清零
CLRSTOP ;停止标志清零JNBSTOP,$ ;若一次“叮咚”没完成,等待中断
LJMPNSP ;;------------------------------延时子程序--------------------------------------DELY10MS:MOVR6,#20;延时10msD1:MOVR7,#248DJNZR7,$DJNZR6,D1RET;-------------------------------T0中断服务程序---------------------------------INT_T0:INCT05SAMOVA,T05SA ;0.5s计数1+1CJNEA,#100,NEXT MOVT05SA,#00H任务一音乐门铃的分析与仿真
INCT05SB ;0.5s计数2+1MOVA,T05SBCJNEA,#20,NEXT ;0.5s没到,到NEXTMOVT05SB,#00H ;0.5s计数2清零JBFLAG,STP ;若FLAG=1,到STPCPLFLAG ;否则FLAG翻转
LJMPNEXTSTP:SETBSTOP ;STOP=1CLRTR0 ;T0停止
LJMPRETURNNEXT:JBFLAG,DONG;发"叮"声
INCTDING ;“叮”计时+1MOVA,TDING CJNEA,#03H,RETURN ;若“叮”计时没到3,返回
MOVTDING,#00H ;“叮”计时清零
CPLSPEAKER ;声音输出
LJMPRETURN;发"咚"声DONG:INCTDONG ;“咚”计时+1MOVA,TDONG CJNEA,#04H,RETURN ;若“咚”计时没到3,返回
MOVTDONG,#00H ;“咚”计时清零
CPLSPEAKER ;声音输出RETURN:RETIEND任务一音乐门铃的分析与仿真4、实物制作任务实施任务一音乐门铃的分析与仿真待在Proteus中仿真调试结果正常后,用实际硬件搭建电路。元器件名称参数数量元器件名称参数数量单片机AT89S511电阻10kΩ3晶体振荡器12MHz1电解电容47μF2功率放大器LM3861电容30pF2扬声器SPEAKER1IC插座DIP401电源+5v1表4-3元器件清单控制要求:实现音乐门铃,由单片机演奏任意一首乐曲要求:采用单片机,演奏《军港之夜》乐曲,如图4-14所示。1)步骤1:定时参数的计算①T0的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H(定时器T0为工作方式1)②计算计数初值X晶振为12MHz,《军港之夜》为C调,按表4-4各音符确定定时器T0初值。③节拍时间计算《军港之夜》为C调2/4,最小为1/4拍,最小延时为250ms。采用延时子程序来完成节拍延时。延时子程序延时25ms,则:1/8拍:125ms,5次延时;1/4拍:250ms,10次延时;1/2拍:500ms,20次延时;3/4拍:725ms,30次延时;1拍:1000ms,40次延时;1又1/2拍:1500ms,60次延时;2拍:2000ms,80次延时;4拍:4000ms,160次延时。④只有当按下按钮KEY之后,才启动演奏。
技能提高任务一音乐门铃的分析与仿真图4-14“军港之夜”乐谱任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真
2)步骤2:流程图设计图4-15实现音乐门铃主程序流程图图4-16实现音乐门铃中断服务程序流程图知识拓展:乐音的生成任务一音乐门铃的分析与仿真1、调号
音乐上指用以确定乐曲主音高度的符号。用CDEFGAB这些字母来表示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周,十二平均律各音的频率见表4-4。表4-4十二平均律各音的频率
调号(音名)CDEFGAB频率(Hz)262294330349392440494调号(音名)#C(升C调)#D(升D调)#F(升F调)#G(升G调)#A(升A调)频率(Hz)277311369415466任务一音乐门铃的分析与仿真2、音调与节拍
在音乐中所谓“音调”,其实就是我们常说的“音高”。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。知道了一个音符的频率后,要产生相应频率的声音信号,只要计算出该音频的半周期(1/(2×频率)),常采用的方法就是通过单片机的定时器定时中断,来得到这个半周期时间。为了让单片机发出不同频率的声音,我们只需将定时器预置不同的定时值就可实现。任务一音乐门铃的分析与仿真表4-5C调各音符、频率和定时初值的关系音符(低音)频率/Hz定时初值音符(中音)频率/Hz定时初值音符(高音)频率/Hz定时初值1DO262F88C1DO523FC441DO1046FE22#1DO#277F8F3#1DO#554FC79#1DO#1109FE3D2RUI294F95B2RUI587FCAC2RUI1175FE56#2RUI#311F9B8#2RUI#622FCDC#2RUI#1245FE6E3MI330FA153MI659FD093MI1318FE854FA349FA674FA698FD344FA1397FE9A#4FA#370FAB9#4FA#740FD5C#4FA#1480FEAE5SO392FB045SO784FD825SO1568FEC1#5SO#415FB4B#5SO#831FDA6#5SO#1661FED36LA440FB906LA880FDC86LA1760FEE4#6LA#466FBCF#6LA#932FDE8#6LA#1865FEF47XI494FC0C7XI988FE067XI1976FF03任务一音乐门铃的分析与仿真表4-6各节拍与时间的设定
曲调值1/4拍时间(ms)1/8拍时间(ms)调4/412562.5调3/4187.593.75调2/4250125返回任务导入任务二
音乐演奏器的设计与实现上一节中,应用定时器的工作原理,实现了固定乐曲的播放。那么,这一节再加上键盘来实现音乐演奏。任务分析在音乐门铃电路基础上,修改增加硬件(独立式或矩阵式键盘)和软件程序,利用定时器,完成音乐演奏器(简易电子琴)的设计和实现:首先采用独立式键盘,完成简易电子琴的设计和实现;在采用矩阵式键盘,完成简易电子琴的设计和实现。相关知识:单片机键盘接口1、键盘工作原理
任务二
音乐演奏器的设计与实现(1)按键的分类1)按键按照结构原理可分为两类:①触点式开关按键,如机械式开关、导电橡胶式开关等;②无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,单片机系统中最常见的是触点式开关按键。2)按键按照接口原理可分为:①编码键盘。编码键盘主要是用硬件来实现对键的识别。②非编码键盘。非编码键盘主要是由软件来实现键盘的定义与识别。任务二
音乐演奏器的设计与实现(2)键输入原理1)键盘接口的基本功能①键扫描:监测有无键按下。判别是否有键按下的方式有中断方式和查询方式两种:中断方式:当键按下时,就向CPU发出中断请求。CPU响应后,对键盘扫描,进行识别,取出键值,作相应处理。查询方式:每隔一定时间,CPU扫描键盘一次,查询有无键按下。若有键按下,则再查键值,作相应处理。②去抖动:一个电压信号通过机械触点的开/关过程中,由于机械触点的弹性作用,在开关瞬间均有抖动过程,会出现一系列的负脉冲,图4-18机械触点的开/关过程
任务二
音乐演奏器的设计与实现a)硬件去抖硬件消抖可以采用R-S触发器或单稳电路构成去抖电路,分别如图4-18所示。硬件消抖因为要增加硬件开销,造成电路复杂,除了在数字电路里使用外,在单片机系统中不太采用。b)软件去抖在检测到有键按下时,执行一个10ms的延时程序后,再确认该键是否保持闭合状态。另外一种方法是连续判断按键所在线路的电平,如果连续100次(甚至更多)都出现低电平(一般按键都是低电平表示按下),就认为按键已经稳定,可以进行识别,这是企业实际开发产品中常用的方法。图4-19硬件去抖电路
任务二
音乐演奏器的设计与实现③键识别:确定是哪一个键按下,取出键值。每一个按键都要确定一个键值,以便实现按键功能的转移。散转指令就是要根据这个键值来转移。④其它可靠的逻辑处理办法:一次锁定:不管一次按键的时间有多长,仅作一次处理。2)键输入操作的基本框图图4-20键输入框图
任务二
音乐演奏器的设计与实现(1)独立式按键结构图4-21独立式按键电路2、独立式键盘特点:一线一键,按键识别(编程)简单;但占用较多口线,适合8键以下使用。任务二
音乐演奏器的设计与实现(2)独立式按键的软件结构独立式按键的软件可采用中断方式和查询方式,本项目中按键程序的编写采用的就是中断方式。ORG0000HLJMPSTARTORG 0100HSTART:MOV P1,#0FFH ;设置P1为输入口LOOP1: MOVA,P1;读入P1口的状态CJNEA,#0FFH,LOOP2;没有键按下的话,等待SJMPLOOP1LOOP2: LCALLDELY10MS ;延时,防抖MOVB,P1 ;读入P1口的状态CJNEA,B,LOOP1;两次检测P1口不同的话,重新检测JNBACC.0,KEY0;ACC.0=0?若为0则P1.0对应的键按下,转KEY0┇JNBACC.7,KEY7;ACC.7=0?若为0则P1.7对应的键按下,转KEY7SJMP STARTKEY0: ┇ ;0#键功能程序LJMP START ;返回主程序开始,继续查询按键状态KEY1: ┇ ;1#键功能程序LJMP START┇KEY7: ┇ ;7#键功能程序LJMP START任务二
音乐演奏器的设计与实现(1)矩阵式键盘的结构及原理
图4-22矩阵键盘电路图
3、矩阵式按键特点:按键识别应采用扫描法或线路反转法编程较为复杂,节省口资源,8键以上使用任务二
音乐演奏器的设计与实现(2)
矩阵式键盘按键的识别识别按键的方法很多,其中,最常见的方法是扫描法,其中一种是“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是最常用的按键识别方法。(3)
键盘的编码
对于矩阵式键盘,按键的位置由行号和列号唯一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。键盘编码可采用依次排列键号的方式对安排进行编码。(4)
键盘的工作方式在单片机应用系统中,键盘扫描只是CPU的工作内容之一。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。1、确定设计方案
选用AT89C51单片机芯片、时钟电路、复位电路、电源和8个按键,按键采用独立式键盘,8个按键代表do,rui,mi,fa,so,la,xi,do8个音阶,采用查询方式,可弹奏不同声音。任务实施并行接口AT89C51单片机电源时钟电路复位电路8键查询式键盘图4-25系统方案设计框图扬声器任务二
音乐演奏器的设计与实现2、硬件电路设计
任务实施图4-26
独立式键盘简易电子琴电路原理图电路所用仿真元器件:AT89C51:单片机RES:电阻CRYSTAL:晶振CAP:电容CAP-ELEC:电解电容BUTTON:按键SPEAKER:扬声器OSCILLOSCOPE:示波器任务二
音乐演奏器的设计与实现任务实施图4-27独立式键盘简易电子琴主程序流程图步骤1:流程图设计3、源程序设计任务二
音乐演奏器的设计与实现图4-28简易电子琴演奏子程序流程图步骤1:流程图设计图4-29简易电子琴中断服务程序流程图
任务二
音乐演奏器的设计与实现3、源程序设计;********* 独立式键盘建议电子琴*********************;程序名:电子琴控制程序xm4_5.asm;程序功能:采用查询式键盘,8个按键代表do(中音),rui,mi,fa,so,la,xi,;do(高音)8个音阶,可弹奏不同声音;采用定时器T0工作方式1TUNEDATA22H;22H:暂存音调的定时初值表的地址偏移值KEY_1BITP1.0 ;按键1do,0:按下KEY_2BITP1.1 ;按键2rui,0:按下KEY_3BITP1.2 ;按键3mi,0:按下KEY_4BITP1.3 ;按键4fa,0:按下KEY_5BITP1.4 ;按键5so,0:按下KEY_6BITP1.5 ;按键6la,0:按下KEY_7BITP1.6 ;按键7xi,0:按下KEY_8BITP1.7 ;按键8do(高),0:按下SPEAKERBITP3.4;喇叭;---------------------------------主程序---------------------------------------ORG0000HLJMPMAINORG000BH ;T0中断矢量
LJMPINT_T0ORG0030HMAIN:MOVSP,#50HMOVTMOD,#01H ;置T0工作于方式1SETBET0SETBEA ;开中断
MOVP1,#0FFH;设置P1为输入口任务实施步骤2:源程序编写任务二
音乐演奏器的设计与实现START:CLRSPEAKER ;静音
CLRTR0;定时器T0停止LOOP1:MOVA,P1;读入P1口的状态
CJNEA,#0FFH,LOOP2;没有键按下的话,等待SJMPLOOP1LOOP2:LCALLDELY2MS ;延时,防抖MOVB,P1 ;读入P1口的状态CJNEA,B,LOOP1;两次检测P1口不同的话,重新检测
JNBACC.0,KEY1;ACC.0=0?若为0则P1.0对应的键按下,转KEY1JNBACC.1,KEY2;ACC.1=0?若为0则P1.1对应的键按下,转KEY2JNBACC.2,KEY3;ACC.2=0?若为0则P1.2对应的键按下,转KEY3JNBACC.3,KEY4;ACC.3=0?若为0则P1.3对应的键按下,转KEY4JNBACC.4,KEY5;ACC.4=0?若为0则P1.4对应的键按下,转KEY5JNBACC.5,KEY6;ACC.5=0?若为0则P1.5对应的键按下,转KEY6JNBACC.6,KEY7;ACC.6=0?若为0则P1.6对应的键按下,转KEY7JNBACC.7,KEY8;ACC.7=0?若为0则P1.7对应的键按下,转KEY8SJMPSTARTKEY1:MOVTUNE,#0 ;do(1)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_1,$;等待键松开LJMP START;返回,继续查询按键KEY2:MOVTUNE,#2 ;rui(2)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_2,$;等待键松开LJMPSTART;返回,继续查询按键任务二
汽车转向灯控制KEY3:MOVTUNE,#4 ;mi(3)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_3,$;等待键松开LJMPSTART;返回,继续查询按键KEY4:MOVTUNE,#6 ;fa(4)音调的定时初值表的地址偏移值
LCALLSONG ;演奏
JNBKEY_4,$;等待键松开LJMPSTART;返回,继续查询按键KEY5:MOVTUNE,#8 ;so(5)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_5,$;等待键松开LJMPSTART;返回,继续查询按键KEY6:MOVTUNE,#10 ;la(6)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_6,$;等待键松开LJMPSTART;返回,继续查询按键KEY7:MOVTUNE,#12 ;xi(7)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_7,$;等待键松开
LJMPSTART;返回,继续查询按键KEY8:MOVTUNE,#14 ;do高(1)音调的定时初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_8,$;等待键松开LJMPSTART;返回,继续查询按键任务二
音乐演奏器的设计与实现;------------------------------演奏子程序-------------------------------------SONG:MOVA,TUNE;音调的定时初值表的地址偏移值
MOVDPTR,#TABLE ;音调的定时初值表
MOVCA,@A+DPTRMOVR1,A;音符定时值高位INCDPTRMOVA,TUNEMOVCA,@A+DPTRMOVR0,A;音符定时值低位
MOVTH0,R1;定时器初值
MOVTL0,R0SETBTR0 ;启动定时器T0RET;返回;------------------------------延时子程序--------------------------------------DELY2MS:MOVR6,#4;延时2msD1:MOVR7,#248DJNZR7,$DJNZR6,D1RET任务二
音乐演奏器的设计与实现;------------------------------T0中断服务程序---------------------------------INT_T0:PUSHACC;保护现场
PUSHPSWMOVTH0,R1;定时器初值
MOVTL0,R0CPLSPEAKER ;声音输出POPPSW ;恢复现场
POPACCRETI ;中断返回
;决定音调的定时初值TABLE:DW0FC44H,0FCACH,0FD09H,0FD34H;中音1,2,3,4DW0FD82H,0FDC8H,0FE06H,0FE22H;中音5,6,7,高音1END任务二
音乐演奏器的设计与实现4、实物制作任务实施任务一音乐门铃的分析与仿真待在Proteus中仿真调试结果正常后,用实际硬件搭建电路。元器件名称参数数量元器件名称参数数量单片机AT89S511电阻10kΩ3晶体振荡器12MHz1电解电容47μF2扬声器BUTTON8电容30pF2扬声器SPEAKER1IC插座DIP401电源+5v1表4-8元器件清单自己动手:扩展到4×4矩阵式键盘,采用编程扫描或定时中断方式编程,16个按键按下分别演奏C调的低音的3,4,5,6,7,中音的1,2,3,4,5,6,7,高音的1,2,3,4;并用数码管显示按下的键值。技能提高:矩阵式键盘简易电子琴的设计与实现
图4-30矩阵式键盘简易电子琴电路原理图返回任务二
音乐演奏器的设计与实现知识归纳返回项目四
音乐演奏器设计MCS-51单片机内部有两个可编程定时器/计数器T0和T1,每个定时器/计数器有四种工作方式:方式0~方式3。方式0是13位的定时器/计数器,方式1是16位的定时器/计数器,方式2是初值重载的8位定时器/计数器,方式3只适用于T0,将T0分为两个独立的定时器/计数器,同时T1可以作为串行接口波特率发生器。不同位数的定时器/计数器其最大计数值也不同。
52系列单片机内部还有程定时器/计数器T2,定时器2有三种工作方式:捕获方式、自动重载(向下或向上计数)方式和波特率发生器方式。对于定时器/计数器的编程包括设置方式寄存器、初值及控制寄存器(可位寻址)。初值由定时时间及定时器/计数器的位数决定。按键按结构原理可分为触点式开关按键(如机械式按键)和无触点开关按键(如电气式按键),其中,机械式开关按键使用最为频繁,使用机械式按键时,应注意去抖。多个按键组合在一起可构成键盘,键盘可分为独立式按键和矩阵式(也叫行列式)按键两种,MCS-51可方便地与这两种键盘接口。独立式键盘配置灵活,软件结构简单,但占用I/O口线多,不适合较多按键的键盘。矩阵式键盘占用I/O口线少,节省资源,软件相对复杂。矩阵键盘一般采用扫描方式识别按键,键盘扫描工作方式有三种,即编程扫描、定时扫描和中断扫描。项目小结返回项目四
音乐演奏器设计一、选择题(1) 8031单片机的定时器T1用作定时方式时是
。
A.由内部时钟频率定时,一个时钟周期加1
B.由内部时钟频率定时,一个机器周期加1
C.由外部时钟频率定时,一个时钟周期加1
D.由外部时钟频率定时,一个机器周期加1(2) 8031单片机的定时器T1用作计数方式时计数脉冲是
。
A.外部计数脉冲,由T1(P3.5)输入
B.外部计数脉冲,由内部时钟频率提供
C.外部计数脉冲,由T0(P3.4)输入
D.由外部计数脉冲计数(3)若8031的定时器T1用作定时方式,模式1,则工作方式控制字为
。
A.01H B.05H C.10H D.50H(4)若8031的定时器T1用作计数方式,模式2,则工作方式控制字为
。
A.60H B.02H C.06HD.20H(5)若8031的定时器T1用作定时方式,模式1,则初始化编程为
。
A.MOVTMOD,#01H
B.MOVTMOD,#50H
C.MOVTMOD,#10H
D.MOVTCON,#02H(6)启动定时器0开始计数的指令是使TCON的
。
A.TF0位置1B.TR0位置1 C.TR0位置0
D.TR1位置0
练习题项目四
音乐演奏器设计(7)使8031的定时器T0停止计数的指令是
。
A.CLRTR0 B.CLRTR1 C.SETBTR0D.SETBTR1(8)下列指令中,判断若定时器T0计满数就转LP的是
。
A.JBT0,LP B.JNBTF0,LP C.JNBTR0,LPD.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齿轮套课程设计
- 齿形垫圈课程设计
- 铣槽专用夹具课程设计
- 通风空调课程设计步骤
- 运动加速度课程设计
- 高中爱国主义课程设计
- 核桃仁罐头课程设计
- 课程设计中参数确定
- 静态网站课程设计
- 青少年心智成长课程设计
- 2025寒假散学典礼(休业式)上校长精彩讲话:以董宇辉的创新、罗振宇的坚持、马龙的热爱启迪未来
- 2025年浙江中外运有限公司招聘笔试参考题库含答案解析
- 建筑公司2025年度工作总结和2025年工作安排计划
- 糖尿病眼病患者血糖管理
- 电压损失计算表
- 福建省福州市2023-2024学年高二上学期期末测试英语试卷(含答案)
- 脑疝病人的观察与护理
- 抖音音乐推广代运营合同样本
- 人民医院建设项目背景分析
- 初级会计实务题库(613道)
- 教育促进会会长总结发言稿
评论
0/150
提交评论