基于单片机电子琴设计精讲.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的简易电子琴设计 设计目的 本方案设计数码管显示音符的实验,使用基于AT89C51单片机,在数码管上显示按键所代表音符的数字,通过键盘可以调节低音,中音,高音的音符,按下数据蜂鸣器会发出相应音符发出的声音。 摘要:通过数码管显示音符的数字,按下键盘,蜂鸣器会发出声音进行提示 关键词:单片机,键盘,蜂鸣器,数码管 硬件电路设计 单片机模块设计 本次设计采用的是单片机AT89C51。芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口,如图3.1所示。左边那列逆时针数起,依次为1,2,3.....40,其中芯片的1脚顶上有一个凹点。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。 图 AT89C51管脚图 AT89C51单片机共有4组8位可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位,共32根。每一根引脚都可以编程,比如用来控制电机、交通灯等,开发产品时就是利用这些可编程引脚来实现我们想要的功能。 P0口:8位双向I/O口线,名称为P0.0-P0.7; P1口:8位准双向I/O口线,名称为P1.0-P1.7; P2口:8位准双向I/O口线,名称为P2.0-P2.7; P3口:8位准双向I/O口线,名称为P3.0-P3.7。 本文单片机模块如图所示,主要是由单片机芯片与晶振和复位电路组成的。是由单片机来控制整个系统,让我们的系统可以正常的运行。 数码管显示模块设计 LED(Light?Emitting?Diode)发光二极管缩写。LED数码管是由发光二极管构成的。 常见的LED数码管为“8”字型的,共计8段。它由七个条形发光二极管和一个小圆点发光二极管组成,每一段对应一个发光二极管。一般来说分共阳极和共阴极两种接法,如图4所示为八段LED数码管结构及外形。共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。反之,共阴极发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。???? LED数码管的a至g七个发光二极管因接得电压不同而导致不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,如表3所示为八段LED数码管的字形码表。? 键盘与蜂鸣器系统 键盘接口 蜂鸣器接口 程序的软件设计 #includereg51.h #define uchar unsigned char #define uint unsigned char sbit beep=P2^0; uchar code sch[3][7]={{0xf1,0xf2,0xf4,0xf4,0xf6,0xf7,0xf8},{0xf8,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc},{0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe}};//低音,中音,高音的1,2,3,4,5,6,7 uchar code scl[3][7]={{0x17,0xb7,0x2a,0xcf,0x09,0x20,0x18},{0x88,0x59,0x13,0x68,0x04,0x90,0x0c},{0x44,0xad,0x09,0x35,0x82,0xc8,0x04}}; uchar code smg[7]={0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8}; uchar line=0,note; void delay(uchar i) { uchar j; while(i--) { for(j=0;j110;j++); } } void keyscan() { if(P1!=0xff) { delay(10); if(P1!=0xff) { switch(P1) { case 0xfe:note=0;break; case 0xfd:note=1;break; case 0xfb:note=2;break; case 0xf7:note=3;break; case 0xef:note=4;break; case 0xdf:note=5;break; case 0xbf:note=6;break; } TR0=1; P0=smg[note]; while(P1!=0xff); TR0=0; beep=1; } } } void main() { EA=1; EX0=1; IT0=1; TMOD=0X01; ET0=1; TH0=sch[line][note]; TL0=scl[line][note]; wh

文档评论(0)

金不换 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档