《简易电子琴.ppt》由会员分享,可在线阅读,更多相关《简易电子琴.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、任务四任务四任务四任务四 简易电子琴(定时器)简易电子琴(定时器)简易电子琴(定时器)简易电子琴(定时器)任务要求任务要求利用定时器编程,实现蜂鸣器发出利用定时器编程,实现蜂鸣器发出“1”音音调。调。分别发出分别发出“1-7”七种音调。七种音调。编制程序,使按键编制程序,使按键A按下后蜂鸣器依次发出按下后蜂鸣器依次发出1-7的音阶,并循环。再按下按键的音阶,并循环。再按下按键A后声音后声音停止。停止。增加数码管显示音调。增加数码管显示音调。实现定时常用的三种方法:实现定时常用的三种方法:软件定时:占用软件定时:占用CPU时间,效率低。时间,效率低。用用555电路:不可编程。电路:不可编程。可编
2、程芯片:功能强,需要另外扩展。可编程芯片:功能强,需要另外扩展。单片机内部有单片机内部有2个个16位的定时位的定时/计数器:计数器:T0、T1。使用灵活,编程方便。优先选用使用灵活,编程方便。优先选用符号符号 名名 称称 中中 断断 引引 起起 原原 因因 C C编程编程中断号中断号INT0INT0 外部外部中断中断0 0 P3.2P3.2引脚的低电平或引脚的低电平或下降沿信号下降沿信号 0 0INT1INT1 外部外部中断中断1 1P3.3P3.3引脚的低电平或下引脚的低电平或下降沿信号降沿信号 2 2T0T0定时器定时器0 0中断中断 定时计数器定时计数器0 0计数回零计数回零溢出溢出 1
3、 1T1T1定时器定时器1 1中断中断 定时计数器定时计数器1 1计数回零计数回零溢出溢出 3 3TI/RI TI/RI 串行口串行口中断中断 串行通信完成一帧数据串行通信完成一帧数据发送或接收引起中断发送或接收引起中断 4 4 加加1计数器(高计数器(高8位、低位、低8位)位)TMOD,工作方式设置;,工作方式设置;TCON,启动、停止及设置溢出标志,启动、停止及设置溢出标志。定时定时/计数器的结构计数器的结构 定时定时/计数器的工作原理计数器的工作原理计数器脉冲来源:计数器脉冲来源:振荡器脉冲经过振荡器脉冲经过12分频分频T0或或T1引脚的外部脉冲引脚的外部脉冲定时定时/计数器的核心:加计
4、数器的核心:加1计数器。计数器。n 定时模式:对内部机器周期计数定时模式:对内部机器周期计数 定时时间定时时间 t=计数值计数值N x Tcyn 计数模式:对外部事件脉冲计数计数模式:对外部事件脉冲计数 计数脉冲周期要大于计数脉冲周期要大于2Tcy 计数器全计数器全1时,再输入时,再输入1个脉冲就回零,并发生个脉冲就回零,并发生溢出(溢出(TCON中中TF0或或TF1置置1),),发中断请求。发中断请求。计数值:溢出时计数器值计数值:溢出时计数器值-计数初值。计数初值。TMOD:工作方式。:工作方式。TCON:控制启动和中断申请。:控制启动和中断申请。方式控制寄存器方式控制寄存器TMOD GA
5、TE C/T M1 M0 GATE C/T M1 M0TMOD TMOD(89H)(89H)T0T0T1T1GATE:门控位:门控位 =0,启动,启动/停止仅由软件对停止仅由软件对TRx位写位写“1/0”控制控制 =1,启动,启动/停止由软件对停止由软件对TRx位写位写“1/0”和在外中断和在外中断INTx引脚出现信号的高引脚出现信号的高/低共同控制低共同控制 C/T:计数器计数器/定时器选择位定时器选择位 =0,片内时钟定时器片内时钟定时器 =1,外部事件计数器外部事件计数器 M1、M0:工作方式设置位工作方式设置位 0 0:13位计数器位计数器 0 1:16位计数器位计数器 1 0:可自动
6、重装的:可自动重装的8位计数器位计数器 1 1:T0分为分为2个个8位计数器,位计数器,T1此时停止工作此时停止工作 启启/停控制寄存器停控制寄存器TCON TCON TCON(88H)(88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TFx:溢出标志位溢出标志位=0,计数未满计数未满=1,计数溢出计数溢出 在进入中断服务程序时会自动清零;但在查询方式时必在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。须软件清零。TRx:运行控制位运行控制位 =0,停止计数,停止计数=1,启动计数;,启动计数;方式方式0 13位计数。由位计数。由TL0的低的低5位和位和TH0
7、的的8位组成。位组成。TH0溢溢出时,置位出时,置位TF0标志,向标志,向CPU发出中断请求。发出中断请求。方式方式1 16位计数,由位计数,由TL0作为低作为低8位、位、TH0作为高作为高8位位。初值:初值:X216N 方式方式2 自动重装初值的自动重装初值的8位计数方式位计数方式,适合于用作较精确,适合于用作较精确的脉冲信号发生器。的脉冲信号发生器。初值:初值:X28N 方式方式3 T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0,T1处于方式处于方式3时停止计数。时停止计数。确定工作方式(对确定工作方式(对TMOD赋值)赋值)TMOD=方式字;方式字;预置定时预置定
8、时/计数初值(写入计数初值(写入TH0、TL0或或TH1、TL1)TH0=高高8位初始值;位初始值;TL0=低低8位初始值;位初始值;TH1=高高8位初始值;位初始值;TL1=低低8位初始值;位初始值;开中断(对开中断(对IE赋值)赋值)ET0=1;ET1=1;EA=1;启动定时启动定时/计数器(计数器(TR0或或TR1置位)置位)TR0=1;TR1=1;每个机器周期包括每个机器周期包括12个振个振荡荡周期,周期,若晶振若晶振频频率率为为12MHz,一个机器周期,一个机器周期:若晶振若晶振频频率率为为6MHz,一个机器周期,一个机器周期:计计数个数数个数为为:则应则应装入的装入的计计数初数初值
9、为值为:方式方式0:n=13方式方式1:n=16方式方式2:n=8方式方式3:n=8定时器的四种工作方式定时器的四种工作方式 方式方式1 当当TMOD中中M1M0=01时,定时计数器工作在方式时,定时计数器工作在方式1。该模式是一个该模式是一个16位定时计数方式。位定时计数方式。寄存器寄存器TH0和和TL0是以全是以全16位参与操作,位参与操作,计数方式时最大计数计数方式时最大计数 21665536(个外部脉冲个外部脉冲)用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为:t(216一一T0初值初值)时钟周期时钟周期12 16寄存器寄存器(THX和和TLX)中中THX提供高提供高8
10、位、位、TLX提供低提供低 8位计数初值位计数初值 方式方式2 2 当当TMODTMOD中中M1M0=10M1M0=10时,定时器工作在方式时,定时器工作在方式2 2。方式方式2 2是是8 8位的可自动重装载的定时计数方式。位的可自动重装载的定时计数方式。1616位的计数器被拆成两个位的计数器被拆成两个8 8位,其中位,其中TL0TL0用作用作8 8位计数器,位计数器,TH0TH0用以保持计数初值。当用以保持计数初值。当TL0TL0计数溢出,置位计数溢出,置位TF0TF0,TH0TH0中的初值自中的初值自动装入动装入TL0TL0,继续计数,循环重复计数。继续计数,循环重复计数。用于计数工作方式
11、时,最大计数值为:用于计数工作方式时,最大计数值为:2 28 8256(256(个外部脉冲个外部脉冲)。用于定时工作方式时,其定时时间为;用于定时工作方式时,其定时时间为;t t(2(28 8TH0TH0初值初值)振荡周期振荡周期1212这种工作方式可省去用户重装常数的程序,并可产生精确的这种工作方式可省去用户重装常数的程序,并可产生精确的 定时时间,特别适用作串行口波待率发生器定时时间,特别适用作串行口波待率发生器。u设系统时钟频率为设系统时钟频率为12MHz,编程实现从,编程实现从P1.1输出周期为输出周期为1s的方波。的方波。解:方式解:方式1的最大计数值的最大计数值216=65536T
12、=12/12MHz=1s最大定时时间最大定时时间t=655361s=65.536ms方式方式1:采用硬件定时:采用硬件定时+软件计数软件计数方式方式2:采用硬件定时:采用硬件定时+硬件计数硬件计数定时定时0.5s=硬件定时硬件定时10ms软件计数软件计数50次次选择定时选择定时/计数器计数器0工作于方式工作于方式1,定时方式。,定时方式。x=10ms/1s=10000X=216-10000=65536-10000TH0=(65536-10000)/256;TL0=(65536-10000)%256;采用全局变量作软件计数,中断处理方式:采用全局变量作软件计数,中断处理方式:GATE C/T M
13、1 M0 GATE C/T M1 M0TMOD TMOD(89H)(89H)EA ES ET1 EX1 ET0 EX0 IE IE(A8H)(A8H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON TCON(88H)(88H)#include sbit P1_1=P11;unsigned char i;void main(void)TMOD=0 x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1;ET0=1;i=0;TR0=1;while(1);void time0_int(void)interrupt 1 TH0=(65536-10000)/256;TL0=(65536-10000)%256;i+;if(i=50)P1_1=!P1_1;i=0;任务布置任务布置利用定时器编程,实现蜂鸣器发出利用定时器编程,实现蜂鸣器发出“1”音调。音调。分别发出分别发出“1-7”七种音调。七种音调。编制程序,使按键编制程序,使按键A按下后蜂鸣器依次发出按下后蜂鸣器依次发出1-7的音阶,的音阶,并循环。按下按键并循环。按下按键B后声音停止。后声音停止。增加数码管显示音调。增加数码管显示音调。
限制150内