avr单片机可演奏的电子琴仿真加源码
2019-11-08 来源:51hei
单片机电子琴仿真原理图如下
avr单片机源程序如下:
//-----------------------------------------------------------------
// 名称: 电子琴仿真
//-----------------------------------------------------------------
// 说明: 本例在键盘矩阵上模拟演奏电子琴,数码管显示键号.
// 按下不同按键时将输出不同频率音符,按键长按时发出长音,
// 短按时发出短音.
//
//-----------------------------------------------------------------
#define F_CPU 1000000UL //1M晶振
#include #include #define INT8U unsigned char #define INT16U unsigned int //蜂鸣器定义 #define SPK() (PORTD ^= _BV(PD7)) //定时器比较中断启停定义 //C调音符频率表(部分) //共阳数码管段码表(0~F) const INT8U SEG_CODE[]= { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //0 1 2 3 4 5 6 7 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E //8 9 A B C D E F }; //键盘矩阵相关变量与程序 //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- int main() { } //----------------------------------------------------------------- // T1定时器比较匹配中断程序,控制音符频率输出 //----------------------------------------------------------------- ISR (TIMER1_COMPA_vect) { } 复制代码 //----------------------------------------------------------------- // 名称: 键盘矩阵扫描程序 //----------------------------------------------------------------- #include #include #define INT8U unsigned char #define INT16U unsigned int //键盘端口定义 //19:45 2017/12/19 INT8U KeyNo = 16 ; //----------------------------------------------------------------- // 判断键盘矩阵是否有键按下 //----------------------------------------------------------------- INT8U KeyMatrix_Down() { } //----------------------------------------------------------------- // 键盘矩阵扫描子程序 //----------------------------------------------------------------- void Keys_Scan() { }