原创 第二十二课 51音乐之二 简单电子琴

2009-6-2 21:31 4208 9 11 分类: MCU/ 嵌入式

第二十二课  51音乐之二 简单电子琴


程序讲解:
/*--------------------------------------------------------------*/
#include <AT89X52.H>
#include "MIDI_1.H"           //蜂鸣器头文件(在 第二十一课 有详细讲解)
#include "Key_Board.H"      //矩阵按键头文件(在 第十九课 有详细讲解)



/*--------------------------------------------------------------*/
void main(void)
{
 unsigned char tone;


 timer0_INT();          //定时器0初始化 在  MIDI_1.H 里面


 while(1)
 {
  tone = key_scan();       //key_scan()键值扫描函数,在矩阵按键头文件里面
  if(key_INT)                 //判断是否有按键按下,key_INT按键按下标志位
  {
   key_INT = 0;              //清除按键按下标志位
   TR0 = 1;                     //允许定时器0工作 音乐响起
   STH0 = (unsigned char)(tab_fre[tone] >> 8);
   STL0 = (unsigned char)(tab_fre[tone] & 0xff);
   P1 = ~tone;              //将键值传到P1口LED显示(为什么要取反呢?和硬件电路有关前面讲过)
  }
  else
  {
   TR0 = 0;              //音乐关闭
   bp  = 1;                //关闭蜂鸣器(它由PNP型三极管驱动,此时三极管B极为高,即处于截止状态,蜂鸣器线圈不导通)
   P1  = 0xff;            //关闭P1口LED
  }
 }
}


本节重点:


1、基本就是对以前的课程的一个复习,在这个程序里面的Key_Board.H头文件里面加了个按键标志位key_INT  用来判断是否有按键按下。


演示视屏:


http://v.youku.com/v_show/id_XOTIzNjQ4NTY=.html


相关程序:https://static.assets-stash.eet-china.com/album/old-resources/2009/6/2/d3f75f34-ddc9-433b-abb4-6e5b62e6d252.rar



 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户209148 2009-6-6 12:24

不错!

用户1079740 2009-6-2 21:45

十分感谢,学习了
相关推荐阅读
用户222124 2010-12-08 22:18
台达PLC监控
台达PLC监控网上有很多例子,自己也照着弄了个,挺方便的,分享下串口数据格式:COM1,9600,8,N,1  ...
用户222124 2010-06-27 16:36
基于NIOS II和FPGA无线小车控制系统的设计
   主控制台以Cyclone II系列的EP2C8Q208C8为核心,通过nRF24L01进行无线通讯,来控制以ATmega8为微处理器的两轮小车,可以实现小车按控制平台发送的控制信息来准确运动。所...
用户222124 2009-11-13 15:58
51开发板已经销售完了,谢谢大家的支持!
51开发板已经销售完了,谢谢大家的支持!...
用户222124 2009-09-28 16:13
51开发板十一大放送!!!赶快行动吧!!!
  51开发板十一大放送!  赶快行动吧!!!   开发板硬件介绍: http://group.ednchina.com/2031/24972.aspx  开发板实物图片总汇: http://grou...
用户222124 2009-09-13 19:02
nios II 实验五 数码管显示数字钟(定时器实现 外部中断调节)
#include "system.h"                      //包含基本的硬件描述信息#include "altera_avalon_timer_regs.h"    //定义内...
用户222124 2009-09-13 18:57
nios II 实验四 PIO外部中断
#include "system.h"                      //包含基本的硬件描述信息#include "altera_avalon_timer_regs.h"    //定义内...
我要评论
2
9
关闭 站长推荐上一条 /3 下一条