博主福利:100G+电子设计学习资源包!

http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect
--------------------------------------------------------------------------------------------------------------------------

基于51单片机设计的简易电子琴下面直接给出proteus仿真

电路代码如下:


#include <reg51.h> #define uint unsigned int #define uchar unsigned char#define output P1#define input P1//方便移植在其他电路板上,我的电路使用P1口做键盘输入接口//定义16个按键enum KEY{key0,key1,key2,key3,key4,key5,key6,key7,key8,key9,key10,key11,key12,key13,key14,key15};uchar code table[]={                //数组定义,显示数码管0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned int code Freqtab[] = {    //定时半周期的初始值64021,64103,64260,64400,      //低音3 4 5 664524,64580,64684,64777,      //低音7,中音1 2 364820,64898,64968,65030,      //中音4 5 6 765058,65110,65157,65178};     //高音1 2 3 4uint FreqTemp;//蜂鸣器声音不怎么样,我们使用扬声器,接P3.7口sbit SPEAK = P3^7;void delay1ms(uint n)   //误差 0us ,延时n毫秒{uint a,b,c;for(c=n;c>0;c--)for(b=199;b>0;b--)for(a=1;a>0;a--);}uint key_input(void){uchar temp1,temp2;            //临时保存读取的行或者列uchar num = 16;               //返回按键的值output = 0x0f;     temp1 = input;             //先读取行if(0x0f != temp1)        //按键按下{                 delay1ms(5);            //延时,消除抖动temp1 = input;         //再次读取行if(0x0f != temp1)       //说明按键确实按下  {temp1 = temp1 & 0x0f; //保留低4位output = 0xf0;          //准备读取列delay1ms(1);         //延时一下,防止下一句读不到temp2 = input;           //直接读取列temp2 = temp2 & 0xf0;   //保留高4位temp1 = temp1 | temp2;  //将temp1和temp2的值合并}}switch(temp1){case 0xee:num=0;break;  case 0xde:num=1;break;  case 0xbe:num=2;break;   case 0x7e:num=3;break; case 0xed:num=4;break;               case 0xdd:num=5;break;           case 0xbd:num=6;break;             case 0x7d:num=7;break;   case 0xeb:num=8;break;    case 0xdb:num=9;break;    case 0xbb:num=10;break;   case 0x7b:num=11;break;    case 0xe7:num=12;break;   case 0xd7:num=13;break;   case 0xb7:num=14;break;    case 0x77:num=15;break;      default:break;}return num;}void T0_INT(void) interrupt 1{TL0 = FreqTemp;                //载入定时半周期的初始值TH0 = FreqTemp >> 8;SPEAK = ~SPEAK;                    //发音} int main(){TMOD = 0X01;        //定时器T0设置为方式1EA = 1;ET0 = 1;TR0 = 0;while(1){uint num,temp;num = key_input();temp = num;P0 = table[num];if(16 != num){FreqTemp = Freqtab[num];TR0 = 1;while(0xf0 != output);      //检测按键松开TR0 = 0;SPEAK = 1;    }       }return 0;}

基于单片机的简易电子琴设计(电路+程序)相关推荐

  1. 简易电子琴c语言程序,基于单片机的简易电子琴设计(C语言编程).docx

    单片机课程设计报告 基于单片机的简易电子琴设计 摘 要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.它在现代音乐 扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经 ...

  2. 单片机多功能电子琴课设_基于单片机的简易电子琴课程设计.doc

    基于单片机的简易电子琴课程设计.doc 还剩 16页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 15 14可在实际的应用时这些是不能被忽略的,我们不 ...

  3. 单片机c语言数字频率计的课程设计,基于单片机的简易数字频率计设计报告(最终版)最新版...

    <基于单片机的简易数字频率计设计报告.doc>由会员分享,可免费在线阅读全文,更多与<基于单片机的简易数字频率计设计报告(最终版)>相关文档资源请在帮帮文库(www.woc88 ...

  4. 基于AT89C52单片机的简易电子琴设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87853299?spm=1001.20 ...

  5. 基于51单片机的简易电子琴设计

    一.设计背景 ■电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.它是现代电子科技与音乐结合的产物,价格相对便宜,能够满足一般爱好者的需求,因此,在现代音乐中扮演着重要的角色.故简易电子琴的 ...

  6. 单片机spwm c语言程序,基于单片机SPWM简易逆变电路及程序设计

    作为当今电子行业一种比较成熟的,目前使用较广泛的PWM法,SPWM法是以冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同的结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM ...

  7. 基于单片机的简易数字电压表设计(电路+程序)

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  8. 基于单片机的简易电子钟设计

    1.摘  要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广.发展很快.单片机体积小.重量轻.抗干扰能力强.环境要求不高.价格低廉.可靠性高.灵活性好.开发较为 ...

  9. 基于单片机的简易数字电压表设计

    以单片机为核心器件,组成一个简单的直流数字电压表. (1)采用1路模拟量输入,能够测量0-5V之间的直流电压值. (2)电压显示可采用4位LED数码管显示,至少能够显示两位小数. 简易数字电压表的制作 ...

最新文章

  1. c语言编程 三角波,周期矩形波、周期锯齿波、周期三角波,C语言程序.doc
  2. 路要怎么走?关于程序员成长的一点思考
  3. 如何读取resources目录下的文件路径(九种方式)
  4. 【通信原理】【实验】实验三: 数字调制解调实验2ASK--2FSK--2PSK思路(GZHU)
  5. ExecutorService-10个要诀和技巧
  6. mongodb 启动_精心总结--mongodb分片集群启动与关闭
  7. openstack服务编排
  8. 揭秘!阿里实时数仓分布式事务Scale Out设计
  9. AI一体机高速自由流收费稽核解决方案
  10. Linux 双网卡绑定
  11. [转载]git 设置第一次输入密码之后不用输入密码
  12. 应用前瞻||强化学习求解车间调度问题的未来
  13. PDMS中如何设置颜色规则
  14. 我常用的几个软件的注册码
  15. 怎样剪立体灯笼_懒人版立体镂空星星折纸灯笼教程
  16. c++的priority_queue各种使用方法
  17. 许晓斌_Maven实战(六)——Gradle,构建工具的未来?
  18. Eric6中使用PYQT5在窗口显示图片
  19. chrome-调试按钮详解
  20. 管理 - STAR法则

热门文章

  1. android简书app源码,仿简书APP源码(android)
  2. 华硕X550C 安装Ubuntu 14.10 无线网络显示硬件被禁用的解决方法
  3. 2021人才争夺战,学一门炙手可热的互联网技术迫在眉睫!
  4. Python--argparse
  5. Android SDK Manager 详细讲解
  6. 一份详细的Google hacking语法(Google搜索语法)
  7. 集合篇8:笔试编程原题
  8. 麒麟系统下安装mysql_Ubuntu麒麟下安装MySQL+Django+Python(一)
  9. hex文件和bin文件的区别和联系
  10. 解决Win10出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问” - 开启局域网文件共享