单片机电子琴仿真原理图如下
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()
{
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』