




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
知识归纳,练习题,项目导读,任务二、音乐演奏器的设计与实现,项目小结,任务一、音乐门铃的分析与仿真,项目四音乐演奏器设计,项目目标导读,学习目标,熟练掌握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、T1TMOD-定时/计数器方式寄存器,工作方式设置;TCON-定时/计数器控制寄存器,启动、停止及设置溢出标志。,任务一音乐门铃的分析与仿真,(2)定时/计数器的工作原理,由TMOD中的控制位(CT)来决定T0和T1是工作在定时器方式还是计数器方式。,1.定时功能-计数脉冲信号:内部振荡电路经12分频后输出的脉冲进行加1计数。计数频率是振荡频率的1/12fc=1/12*fosc。,2.计数功能-计数脉冲信号:来自外部输入引脚-(T0为P3.4,T1为P3.5)的负跳变信号进行加1计数fc=1/24*fosc。,任务一音乐门铃的分析与仿真,(3)定时/计数器的方式寄存器和控制寄存器,1)定时/计数器控制寄存器TCON(88H),中断请求标志,触发方式选择,启动定时/计数器,0低电平1下降沿,0停止1启动,任务一音乐门铃的分析与仿真,2)工作方式控制寄存器TMOD(89H),T1控制,T0控制,GATE门控位。GATE=0启动由TR0(或TR1)一位控制;GATE=1启动受TR0和/INT0(或TR1和/INT1)两位控制。,C/T外部计数器/定时器方式选择位C/T=0定时方式;C/T=1计数方式。,M1M0工作模式选择位(编程可决定四种工作模式)。,任务一音乐门铃的分析与仿真,任务一音乐门铃的分析与仿真,表4-1定时器方式选择,计数脉冲输入,(1)方式013位方式,13位计数器,定时器,计数器,中断,TCON,0,1,1,1,0,定时时间:t=(213-定时器初值)12/fosc(s),2、定时器计数器的工作方式,任务一音乐门铃的分析与仿真,任务一音乐门铃的分析与仿真,例4-1假设晶振频率是12MHz,用定时器1方式0实现1s的延时。解:因方式0采用13位计数器,其最大定时时间为:2131s=81921s=8.192ms,因此,可选择定时时间为5ms,再循环200次。定时时间选定后,再确定计数值为5000,则定时器1的初值为:X=M计数值=81925000=3192=C78H=0110001111000B因13位计数器中TL1的高3位未用,应填写0,TH1占高8位,所以,X的实际填写值应为:X=0110001100011000B=6318H即:TH1=63H,TL1=18H,又因采用方式0定时,故TMOD=00H。,任务一音乐门铃的分析与仿真,可编得1s延时子程序如下:,DELAY:MOVR3,#200;置5ms计数循环初值MOVTMOD,#00H;设定时器1为方式0MOVTH1,#63H;置定时器初值MOVTL1,#18HSETBTR1;启动T1LP1:JBCTF1,LP2;查询计数溢出SJMPLP1;未到5ms继续计数LP2:MOVTH1,#63H;重新置定时器初值MOVTL1,#18HDJNZR3,LP1;未到1s继续循环RET,(2)方式116位方式,定时时间:t=(216-定时器初值)12/fosc(s),任务一音乐门铃的分析与仿真,(3)方式28位自动装入时间常数方式,中断,定时时间:t=(28-定时器初值)12/fosc(s),任务一音乐门铃的分析与仿真,任务一音乐门铃的分析与仿真,例4-2假设晶振频率是12MHz,试用定时器1方式2实现1s的延时。解:因为方式2是8位计数器,其最大定时时间为:2561s=256s,为实现1s延时,可选择定时时间为250s,再循环4000次。定时时间选定后,可确定计数值为250,则定时器1的初值为:X=M计数值=256250=6=6H。采用定时器1方式2工作,因此,TMOD=20H。,任务一音乐门铃的分析与仿真,可编得1s延时子程序如下:,DELAY:MOVR5,#28H;置25ms计数循环初值MOVR6,#64H;置250s计数循环初值MOVTMOD,#20H;置定时器1为方式2MOVTH1,#06H;置定时器初值MOVTL1,#06HSETBTR1;启动定时器LP1:JBCTF1,LP2;查询计数溢出SJMPLP1;无溢出则继续计数LP2:DJNZR6,LP1;未到25ms继续循环MOVR6,#64HDJNZR5,LP1;未到1s继续循环RET,(4)方式32个8位计数器方式,仅T0可以工作在方式3此时T0分成2个独立的计数器TL0和TH0:前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。,P3.4,P3.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只能为定时器,定时时间可设为250s;TL0设置为计数器,计数值可设为200。TH0计满溢出后,用软件复位的方法使T0(P3.4)引脚产生负跳变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延时时间应为50ms,循环20次便可得到1s的延时。由上述分析可知,TH0计数初值为:X=(256250)=6=06HTL0计数初值为:X=(256200)=56=38HTMOD=00000111B=07H,任务一音乐门铃的分析与仿真,可编得1s延时子程序如下:,DELAY:MOVR3,#14H;置100ms计数循环初值MOVTMOD,#07H;置定时器0为方式3计数MOVTH0,#06H;置TH0初值MOVTL0,#38H;置TL0初值SETBTR0;启动TL0SETBTR1;启动TH0LP1:JBCTF1,LP2;查询TH0计数溢出SJMPLP1;未到500s继续计数LP2:MOVTH0,#06H;重置TH0初值CLRP3.4;T0引脚产生负跳变NOP;负跳变持续NOPSETBP3.4;T0引脚恢复高电平JBCTF0,LP3;查询TH0计数溢出SJMPLP1;100ms未到继续计数LP3:MOVTL0,#38H;重置TL0初值DJNZR3,LP1;未到1s继续循环RET,3、定时器计数器的编程和应用,任务一音乐门铃的分析与仿真,例4-4用单片机定时器/计数器设计方波发生器,方波周期为10ms,有P3.0引脚输出。解:取晶振频率为12MHz。方波周期为10ms,则半周期为5ms。定时器T1工作于定时方式1,产生5ms的定时。按上述设计思路可知:方式寄存器TMOD的控制字应为:10H定时器T1的初值应为:655365000=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:CLRFLAG;标志位清零MOVTCOUNT,#00H;计时计数值清零MOVTMOD,#01H;置T0工作于方式1MOVTH0,#(65536-1000)/256;装入计数初值MOVTL0,#(65536-1000)MOD256MOVIE,#82H;开中断SETBTR0;启动T0定时器SJMP$;等待中断,任务一音乐门铃的分析与仿真,步骤3:源程序编写,;-T0中断服务程序-INT_T0:MOVTH0,#(65536-1000)/256;重新装入计数值MOVTL0,#(65536-1000)MOD256INCTCOUNT;计时计数值+1MOVA,TCOUNTCJNEA,#250,I1;是否计满0.25秒CPLFLAG;计时计数值取反MOVTCOUNT,#00H;计时计数值清零I1:JBFLAG,I2;检查标志位CPLP1.7;声音输出SJMPRETUNEI2:CLRP1.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:CLRFLAG;标志位清零MOVTCOUNT,#00H;计时计数值清零MOVTMOD,#01H;置T0工作于方式1MOVTH0,#(65536-1000)/256;装入计数初值MOVTL0,#(65536-1000)MOD256MOVIE,#82H;开中断LOOP:JBP1.0,STOP;判断P1.0是否按下SETBTR0;启动T0定时器ACALLDELAY;等中断约3.2sSTOP:CLRP1.7;关声音CLRTR0;关闭T0定时器SJMPLOOP;反复,任务一音乐门铃的分析与仿真,;-T0中断服务程序-INT_T0:MOVTH0,#(65536-1000)/256;重新装入计数值MOVTL0,#(65536-1000)MOD256INCTCOUNT;计时计数值+1MOVA,TCOUNTCJNEA,#250,I1;是否计满0.25秒CPLFLAG;计时计数值取反MOVTCOUNT,#00H;计时计数值清零I1:JBFLAG,I2;检查标志位CPLP1.7;声音输出SJMPRETUNEI2:CLRP1.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,NEXTMOVT05SA,#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,TDINGCJNEA,#03H,RETURN;若“叮”计时没到3,返回MOVTDING,#00H;“叮”计时清零CPLSPEAKER;声音输出LJMPRETURN;发咚声DONG:INCTDONG;“咚”计时+1MOVA,TDONGCJNEA,#04H,RETURN;若“咚”计时没到3,返回MOVTDONG,#00H;“咚”计时清零CPLSPEAKER;声音输出RETURN:RETIEND,任务一音乐门铃的分析与仿真,4、实物制作,任务一音乐门铃的分析与仿真,待在Proteus中仿真调试结果正常后,用实际硬件搭建电路。,表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十二平均律各音的频率,任务一音乐门铃的分析与仿真,2、音调与节拍,在音乐中所谓“音调”,其实就是我们常说的“音高”。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。知道了一个音符的频率后,要产生相应频率的声音信号,只要计算出该音频的半周期(1/(2频率)),常采用的方法就是通过单片机的定时器定时中断,来得到这个半周期时间。为了让单片机发出不同频率的声音,我们只需将定时器预置不同的定时值就可实现。,任务一音乐门铃的分析与仿真,表4-5C调各音符、频率和定时初值的关系,任务一音乐门铃的分析与仿真,表4-6各节拍与时间的设定,返回,任务二音乐演奏器的设计与实现,上一节中,应用定时器的工作原理,实现了固定乐曲的播放。那么,这一节再加上键盘来实现音乐演奏。,在音乐门铃电路基础上,修改增加硬件(独立式或矩阵式键盘)和软件程序,利用定时器,完成音乐演奏器(简易电子琴)的设计和实现:首先采用独立式键盘,完成简易电子琴的设计和实现;在采用矩阵式键盘,完成简易电子琴的设计和实现。,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)独立式按键的软件结构,独立式按键的软件可采用中断方式和查询方式,本项目中按键程序的编写采用的就是中断方式。,ORG0000HLJMPSTARTORG0100HSTART:MOVP1,#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对应的键按下,转KEY0JNBACC.7,KEY7;ACC.7=0?若为0则P1.7对应的键按下,转KEY7SJMPSTARTKEY0:;0#键功能程序LJMPSTART;返回主程序开始,继续查询按键状态KEY1:;1#键功能程序LJMPSTARTKEY7:;7#键功能程序LJMPSTART,任务二音乐演奏器的设计与实现,(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,$;等待键松开LJMPSTART;返回,继续查询按键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中仿真调试结果正常后,用实际硬件搭建电路。,表4-8元器件清单,自己动手:扩展到44矩阵式键盘,采用编程扫描或定时中断方式编程,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有三种工作方式:捕获方式、自动重载(向下或向上计数)方式和波特率发生器方式。对于定时器/计数器的编程包括设置方式寄存器、初值及控制寄存器(可位寻址)。初值由定时时间及定时器/计数器的位数决定。按键按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年线下演出市场复苏与城市文旅产业融合发展报告
- 2025年工业互联网平台边缘计算硬件架构在人工智能领域的创新应用报告
- 2025年新媒体环境下新闻传播真实性评估与分析报告
- 2025年快时尚在时尚零售市场中的时尚跨界合作案例研究分析报告
- 私人雇佣送货合同范本
- 自家农田开垦合同范本
- 贴砖工具转让合同范本
- 活动物料公司合同范本
- 门面无偿出租合同范本
- 民间债券转让合同范本
- 2025年甘肃省定西市辅警考试真题及答案
- 2025年下半年全国教师资格证考试中学《综合素质》真题及答案
- 2025年乡镇综合执法队员职业素养要求及考试要点
- 弱视治疗设备(光源不直接照射眼底)注册审查指导原则2025
- 2025年村级后备干部考试题库(含答案)
- 2025-2026学年教科版(2024)小学体育与健康三年级全一册《情绪会调控》教学设计
- 银行情绪与压力管理课件
- 脚手架施工方案
- 高速服务区安全知识培训课件
- 2025贵州毕节黔西市面向社会招聘城市社区工作者33人2025-08-笔试模拟试题及答案解析
- 幼儿园学前教育法测试题及答案2025
评论
0/150
提交评论