微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于单片机AT89C2051的电子琴设计

基于单片机AT89C2051的电子琴设计

时间:11-05 来源:互联网 点击:
(二)定时器/计数器的定时/计数范围

工作方式O:13位定时/计数方式,因此,最多可以计到2^13,也就是8192次。对于12MHz的晶振,单片机的机器周期是1us。则工作方式0最大定时时间是8.192us。

工作方式1:16位定时/计数方式,因此,最多可以计到2^16,也就是65536次。对于12MHz晶振,工作方式1最大定时时间是65536μs。

工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2^8,也说是256次。对于12MHz晶振,工作方式1最大定时时间是256μs。

计数初值的计算方法:用最大计数量减去需要的计数次数即可。例:如果T0运行于定时状态,单片机的晶振是12MHz,要求定时lOOus,那么定时器要计100个机器周期,当TO工作在工作方式O时计数初值应该是8192—100=8092;工作在方式1时的计数初值应该是65536-100=65436;工作在方式2,3时的计数初值应该是256—100=156。

系统软件流程图如图所示



开机时。第一步是对定时器T0进行初始化,设定它的工作状态(对于本系统将T0设定为工作方式O);然后判断是否有键按下,如果没有按键按下,继续判断,如果有按键按下,则判断是哪个键按下;再根据按键的功能将计数初值装入定时器T0中中并启动T0,当T0定时完毕后,重新装入计数初值继续定时并将P3.6取反,再次定时完毕后再一次的装入计数初值继续定时并将P3.6取反,一直循环此操作直到按键释放为止,按键释放后停止T0工作并再次判断是否又有按键按下,并继续执行以前的过程。

定时器T0工作在方式0,13位计数方式所以最大的计数次数为2^13=8192次,由于单片机的晶振是12MHz则机器周期是1μs,即定时器最大可以定时8192μs。各个音符周期的一半即高电平或低电平持续的时间就是定时器需要定时的时间,所以对于各个音符的计数初值计算方法如下:
设音符的频率为f,则计数初值=8192一各个音符的周期=8192-

计数初值如表2所示:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top