点击这里给我发消息

点击这里给我发消息

点击这里给我发消息

首页 | 教学管理 | 校园生活 | 学校制度 | 教学模式 | 招生培训 | 阳光概况 | 成功学子 | 就业导航 | 技术园地 | 王牌专业 | 函授教学
  您当前的位置:湖南阳光电子技术学校 -> 技术园地 -> 综合维修园地 -> 文章内容
单片机如何在电子琴起到改变音调的作用
发布时间:2011-10-12 15:43:33  发布人:cswok
 

  声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线不断的输出“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制“高”“低”电平的持续时间,就能改变输出波形的频率,从而改变音调。

  乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率。如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音符的声音。

  本系统就是根据此原理设计,对于AT89C2051单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的时间就可以改变输出方波的频率,而单片机延时主要有两种方法:

  第一种方法是使用循环语句来实现延时,让单片机循环的执行某条指令然后根据单片机每条指令运行的时间以及循环的次数来计算延时时间。如下所示:

  在上面的延时程序中可以看出:DJNZ指令执行时间为2个机器周期,MOV指令执行时间为1个机器周期,对于单片机的晶振频率为12MHz时机器周期为1 μ s。因此可以根据这些指令的执行时间和每条指令的循环次.数计算出以上的延时程序延时时间大约为50ms。但这种方法的计算的延时时间不是很准确并且为达到一定的延时时间先必须进行很复杂的运算。所以在延时时间要求不严格的时候才采用这种方法。但对于电子琴电路由于每个音符的频率值要求比较严格,变化范围不能太大,因此产生方波的频率也要求比较严格,不能采用延时程序来产生此方波。

  第二种方法是使用单片机的定时/计数器延时。AT89C2051单片机内部有两个16位的定时/计数器T0和T1,单片机的定时/计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数,对内部晶振计数时称为定时器,对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时/计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU;对外部输入的时钟信号计数时,外部时钟的每个时钟上升沿定时/计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU。因此,如果知道单片机的机器周期或者外部输入时钟信号的周期,单片机就可以根据定时器的计数值计算出定时的时间。用此方法定时十分准确,想得到多大的延时时间就可以给定时器赋一定的计数初值,定时器从预先设置的计数初值开始不断增1当增加到计数最大值时计数完毕,调整计数初值的大小就可以调整定时器定时的时间,从而达到准确的延时。本系统中就采用第二种方法通过定时/计数器延时。

  本系统的具体电路如右图所示。图中P1.1-P1.7分别接7个按键对应着乐曲中的1、2、3、4、5、6、7七个音符。P3.6口通过功率放大芯片 LM386与喇叭相连。当P1.1~P1.7中有一个按键按下时单片机便执行相应的子程序对定时器赋一个计数初值同时使P3.6口输出高电平。当定时器定时结束时将P3.6口的值取反并重新赋计数初值继续计数,再次计完时再将P3.6口的值取反再赋初值计数,如此循环便在P3.6口产生一定频率的方波, LM386将此方波经过功率放大后通过喇叭输出便产生对应音符的声音。按不同的按键单片机便执行不同的子程序给定时器赋不同的初值得到不同频率的方波从而输出不同的声音,因此按一个按键输出一种音符。

  在单片机的特殊功能寄存器中有6个寄存器(TH1、TH0、TL1、TL0、TMOD、TCON)是用来控制单片机的定时器的,通过编程对这些特殊功能寄存器的读写就可以控制单片机的两个定时器T0、T1。当单片机复位时这6个寄存器默认值都是00H。

  (一)定时/计数器的工作方式及控制字

  特殊功能寄存器中TMOD和TCON是定时器的方式控制寄存器。图2为TMOD寄存器的内部结构,图3为TCON寄存器的内部结构。TMOD和TCON是寄存器的名称,我们在写程序时就可以直接用这个名称来指定它们,当然也可以直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。

  从图2中可以看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0。

  从图3中可以看出,TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断。

  单片机定时/计数器有四种工作方式,方式0、方式1、方式2、方式3,除方式3外,T0和T1有完全相同的工作状态,下面以T1为例,分述各种方式的特点和用法。图4为定时/计数器T1在工作方式0下的内部结构图。

  从图4中可以看出计数脉冲要进入计数器TR1(或TR0)要为1,开关才能合上,脉冲才能过来。因此,TR1(O)称之为运行控制位,可用指令SErB来置位以启动计数器,定时器运行,用指令CLR来关闭定时/计数器的工作。当计数脉冲进入计数器后,计数脉冲加到TL1的低5位,从预先设置的计数初值开始不断增1。TL1计满后,向THl进位。当TL1和TH1都计满后,置位T1的定时器回零标志TF1,从此表明定时时间或计数次数已到,单片机可以根据标志位判断定时器的状态,从而执行相应的程序。

  1.工作方式0

  定时器,计数器的工作方式O称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。

  对于定时器的工作模式可以根据定时器的寄存器TMOD来设置:

  ①M1M0:定时/计数器共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。

  ②C/T:定时/计数器即可作定时用也可用计数用,如果C/T为O就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的。

  ③GATE:当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢? 有两种情况

  GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。

  GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1引脚的控制,只有TRl为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性可以用来测量一个信号的高电平的宽度。

  2.工作方式1

  工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。

  3:工作方式2

  8位自动装入时间常数方式。由TL1构成8位计数器,TH1仅用来存放时间常数。看图5所示,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。通常这种式作方式用于波特率发生器,用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最妙不过了。

  4.工作方式3

  2个8位的计数器,只适合于定时器0。这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而THO则只能作为定时器来用。我们知道作定时、计数器来用需要控制位TR0,计满后溢出需要有溢出标记TF0。T0被分成两个来用,那就要两套控制及溢出标记,TLO还是用原来的T0的标记,而TH0则借用T1的标记。如此T1就无标记、控制可用因此一般只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。

  (二)定时器/计数器的定时/计数范围

  工作方式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所示:

[] [返回上一页] [打 印] [收 藏]

 相关网站搜索:

百度中找“单片机如何在电子琴起到改变音调的作用”的内容

GOOGLE中找“单片机如何在电子琴起到改变音调的作用”的内容

栏目导航

· 维修资料 · 综合维修园地
· 电脑维修天地 · 电子基础知识
· 音响维修园地 · 数码产品维修园地
· 笔记本园地 · 显示器维修园地
· 液晶电视维修 · 冰箱维修园地
· 空调维修园地 · 手机维修园地
· 电视维修园地 · 电工焊工园地
· 网络工程园地

 王 牌 专 业
· 电脑维修|液晶电视维修班(朝..
· 中级电工家电维修培训班
· 电工培训|中级电工培训
· 焊工培训|中级焊工培训
· 中级电工培训 + 中级焊工培训..
· 手机维修培训|湖南手机维修培..
· 家电维修培训|全能家电维修培..
· 电脑维修培训|电脑硬件维修培..
· IT通讯维修专业|电脑手机维修..
· 电脑电器维修专业|湖南电脑电..
· 家电通讯维修专业|湖南家电手..
· 精锐电子维修专业|全能电子维..
· 液晶电视维修培训|平板电视维..
· 制冷维修培训|空调冰箱维修培..
 

热门文章

· 电脑维修培训|电脑硬..
· 入学须知
· 2011年收费标准
· 家电维修培训|全能家..
· [图文] 电动车48V充电..
· [图文] 电工培训|中级..
· [组图] 学生生活安排..
· 电脑电器维修专业|湖..
· [图文] 就业安置流程..
· 精锐电子维修专业|全..

推荐图文

首页 阳光概况 王牌专业 教学管理 就业导航 成功学子 技术园地 招生资讯 精锐师资 综合讯息
  友情链接               ;    申请友情链接
电工培训网,电工培训,电工培训学校,维修电工培训,中级电工培训,电工证书培训,低压电工培训,电工培训机构,维修电工培训班,维修电工培训学校,电工培 训考证,高级维修电工培训,短期电工培训,电子电工培训,电工特种作业培训,初级电工培训班,中级电工培训学校,中级电工培训班,专业电工培训,水电工培 训,电工培训教材,电工培训视频,电工短期培训班,电工培训资料,电工技师培训,高级电工培训, 电工学校,维修电工学校,高级电工学校,,贵州电工学校,广西 电工学校,电工学校哪里好,江西电工学校,电工技术培训学校,维修电工培训学校,电工维修培训学校,电工技师培训学校,中级电工培训学校,电工焊工培训 学校,电工职业学校,电工考证培训学校,电工焊工学校,电工技术学校,高压电工培训学校,水电工培训学校,电工中级培训学校,电工技能培训学校,低压电工 培训学校,电工专业学校,江西电工培训学校,学电工技术,电工学习班,中级电工培训学校,中级电工培训班,专业电工培训, ,高级焊工学校,湖南焊工学校,焊 工专业学校,电工焊工培训学校,电焊工考证培训学校,湖南焊工培训学校,焊接学校,高级焊工培训,焊工技术培训,焊接培训中心, 电工焊工培训,电气焊工培 训,气焊工培训,焊工培训班,焊工培训考证,高级电焊工培训,专业焊工培训,焊工培训机构,焊工培训多少钱,高压焊工培训,电焊工培训内容,特种焊工培训 , 焊工培训取证,电焊工培训机构,焊工培训,电焊工培训教学大纲,焊工培训计划,焊工培训总结,电焊工培训资料,电焊工培训方案,电焊工培训课程,初级电焊 工培训大纲,电焊工培训课件,焊工培训资料,电焊工培训教材,电焊工培训计划,电焊工培训视频_面向全国招生!主要招生区域是:北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 安庆 鞍山 安阳 安康 澳门 安顺 阿克苏 北京 包头 保定 白山 白城 本溪 滨州 保山 巴彦淖尔 百色 蚌埠 宝鸡 亳州 北海 白银 巴中 重庆 长沙 赤峰 长春 朝阳市 滁州 巢湖 池州 长治 常州 常德 沧州 崇左 承德 成都 潮州 郴州 大连 东莞 达州 丹东 大庆 大同 定西 德阳 德州 东营 鄂尔多斯 鄂州 佛山 福州 防城港 抚顺 抚州 阜阳 阜新 广州 桂林 广元 广安 固原 贵港 贵阳 赣州 哈尔滨 杭州 合肥 呼和浩特 海口 菏泽 邯郸 黄山 衡水 香港 呼伦贝尔 贺州 葫芦岛 淮北 淮南 淮安 湖州 鹤岗 黑河 河源 惠州 汉中 河池 怀化 黄冈 鹤壁 黄石 衡阳 海拉尔 济南 锦州 吉林 江门 济宁 佳木斯 鸡西 嘉兴 九江 揭阳 焦作 晋城 金华 荆门 吉安 景德镇 晋中 酒泉 嘉峪关 金昌 荆州 昆明 开封 克拉玛依 临沂 拉萨 廊坊 兰州 六安 洛阳 泸州 乐山 辽源 聊城 吕梁 龙岩 临汾 临夏 来宾 辽阳 丽水 六盘水 连云港 柳州 临沧 陇南 丽江 莱芜 娄底 漯河 凉山州 马鞍山 牡丹江 眉山 茂名 绵阳 梅州 南京 宁波 宁德 南充 南通 南宁 南昌 南平 南阳 平顶山 盘锦 莆田 萍乡 濮阳 攀枝花 普洱 平凉 齐齐哈尔 钦州 七台河 泉州 清远 衢州 秦皇岛 曲靖 庆阳 青岛 日照 荣成 上海 深圳 商丘 沈阳 内江 随州 三门峡 三明 十堰 绍兴 韶关 邵阳 石嘴山 遂宁 汕头 双鸭山 四平 松原 石家庄 苏州 绥化 宿迁 商洛 宿州 汕尾 上饶 朔州 石河子 太原 天津 唐山 泰安 台州 通化 铁岭 台湾 通辽 泰州 铜陵 铜川 天水 武汉 威海 芜湖 梧州 渭南 吴忠 乌海 乌兰察布 潍坊 温州 乌鲁木齐 无锡 武威 文山 西安 厦门 襄樊 信阳 邢台 新乡 孝感 湘潭 宣城 许昌 咸宁 徐州 忻州 新余 兴安盟 咸阳 西宁 益阳 银川 烟台 宜昌 扬州 永州 伊春 宜宾 延边 运城 玉林 盐城 阳江 雅安 阳泉 延安 义乌 云浮 玉溪 岳阳 宜春 营口 榆林 鹰潭 郑州 漳州 株洲 驻马店 张家界 中卫 舟山 肇庆 淄博 湛江 中山 自贡 资阳 镇江 珠海 张家口 周口 枣庄 张掖 遵义 昭通

全国报名电话:0731-85579057

家电维修学校 | 家电维修培训 | 电脑维修培训学校 | 湖南手机维修培训学校 | 电子技术学校 | 电子学校 | 电子维修学校 | 湖南电工焊工培训学校 | 笔记本电脑维修培训 | 显示器维修培训 | 手机维修培训 | 手机维修学校 | 电脑电器维修学校 | 电子技术学校 | 电子维修学校 | 湖南电脑培训学校 | 湖南计算机培训 | 湖南计算机维修学校 | 电脑组装与维护培训 | 网络工程师培训 | 主板维修培训 | 硬盘维修培训 | 电工培训 | 焊工培训 | 液晶电视维修培训 | 彩电维修培训 | 冰箱空调维修培训 | 制冷维修培训

友情连接 - 网站地图 关于收录
      报名电话:0731-85579057    0731-85569651    24小时值班电话:13807313137(杨老师)   咨询QQ: 361928696,  873219118 
校址:湖南省 长沙市 雨花区 车站南路 红花坡路口    网站:
http://www.cswok.com    报名信箱: 879330360@qq.com
 

高级会员:73254人
普通会员:598622人