avr单片机可演奏的电子琴仿真加源码

发布者:WanderlustGaze最新更新时间:2019-11-08 来源: 51hei关键字:avr单片机  电子琴  键盘矩阵 手机看文章 扫描二维码
随时随地手机看文章

单片机电子琴仿真原理图如下
0.png

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()




}



关键字:avr单片机  电子琴  键盘矩阵 引用地址:avr单片机可演奏的电子琴仿真加源码

上一篇:MEGA2560主控自行车骑行监测器
下一篇:atmega16与24l01按键主程序

推荐阅读最新更新时间:2024-11-19 22:08

#单片机#矩阵键盘-电子琴
#include reg52.h //包含51单片机寄存器定义的头文件 sbit sound=P0^4; //将sound位定义为P0.4 #define uchar unsigned char #define uint unsigned int uchar k,num,temp; uint code yinfu = {64580,64684,64777,64820,64898,64968,65030 }; //中1,中2,中3,中4,中5,中6,中7 void delay(uint z) { uint x,y; for(x=z;x 0;x--) for(y=1
[单片机]
AVR单片机(学习ing)—(九)、ATMEGA16的模数转换器—01
九、ATMEGA16的模数转换器 九—(01)、ATMEGA16的模数转换器的介绍 1、介绍 1)特点: • 10 位 精度 • 0.5 LSB 的非线性度 • ± 2 LSB 的绝对精度 • 65 - 260 μs 的转换时间 • 最高分辨率时采样率高达15 kSPS • 8 路复用的单端输入通道 • 7 路差分输入通道 • 2 路可选增益为10x 与200x 的差分输入通道 • 可选的左对齐ADC 读数 • 0 - VCC 的 ADC 输入电压范围 • 可选的2.56V ADC 参考电压 • 连续转换或单次转换模式 • 通过自动触发中断源启动ADC 转换 • ADC 转换结束中断 • 基于睡眠模式的噪声抑制器 Note: 1.
[单片机]
<font color='red'>AVR单片机</font>(学习ing)—(九)、ATMEGA16的模数转换器—01
矩阵键盘扫描原理详解——单片机
根据原理图 键盘扫描方法是:行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。现在我们以第二行的S5键为例,若按下S5后我们应该怎么得到这个键值呢?当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。首先,单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平
[单片机]
<font color='red'>矩阵</font><font color='red'>键盘</font>扫描原理详解——单片机
AVR单片机与上位机通信协议的制定
单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定! 上行协议,即由单片机向上位机发送数据。 下行协议,即由上位机向单片机发送数据。 而通信协议又要分固定长度和不定长度两种 本文所介绍的协议属于简单的固定字长的通信协议! 下行协议由四个字节构成 起始字PRE 命令字ORD 值VAL 结束字END 附注 1byte 1byte 1byte 1byte   BBH AAH(ORD_SATA)     单片机状态转换命令标识 01H EEH 模式1:空闲 02H EEH 模式2:温度采集 03H EEH 模式3:温度采集向上位机传送采集值 04H EEH 模式4:PWM测试 BBH DDH(ORD_P
[单片机]
51单片机4X4矩阵键盘驱动与应用程序(C语言)
1、keydrive.c #include reg52.h #include stdio.h /* 程序功能: 本程序用于测试4X4矩阵键盘驱动; 程序算法: 每2MS检测一次按键的状态,若连续8次检测都为相同, 说明现在是一个稳定的状态,否就是干扰不与理采 ; 按键有三种状态:1、按下 2、松开 3、干扰或抖动; 其中前两种都是稳态,后一种为抖动。 接着若判断按键的状态是否改变, 若改变--》判断原来的状态是否为松开---是--说明 现在按键为按下,那么就把键值算出来;---返回0; 若改变--》判断原来的状态是否为松开---否--说明 现在按键为松开,那么就把键值返
[单片机]
PIC单片机4X4矩阵键盘检测原理及实现C语言程序
#include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar key_num; void delay(uint x); void init(); void scan(); void didi(uchar num); void disp(); void mai
[单片机]
AVR单片机IC卡程序
AVR单片机IC卡程序 #include io8535v.h #include macros.h #define uchar unsigned char #define uint unsigned int //**********定义全局变量*******************// //查表0 1 2 3 4 5 6 7 8 9 E F P OFF uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x71,0x73,0x00}; uchar I CC ode ;//定义IC卡复位时读出的4字节代码; uc
[单片机]
<font color='red'>AVR单片机</font>IC卡程序
矩阵键盘扫描原理
  矩阵式键盘扫描原理   将键值显示在七节显示器上的单片机源码。把每个 键 都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,比对之后就可知道是哪个键被按下。   比如说扫描码送入01111111,前面的0111是代表扫描第一行P1.0列,而后面的1111是让读取的4行接脚先设為VDD,若第一行的第三列按键被按下,那读取的结果就会变成01111101(注意1111变成1101),其中LSB的第三个bit会由1变成0,这是因為这个按键被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉
[测试测量]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved