

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AT89S51 也片机试验及实践教秤 Z 电了琴1.实验任务1.山 4X4 组成 16 个按钮地阵.设计成 16 个音.2.对助惡弹公想耍衣达的咅你.2.电路原理图&SSrrrKwrr 氏iKwrfK3K w i9 si w& SJcwcft2r& SAftCWW&KTB22U-3.系统板硬件连线1把冲片机系统快域中的 P1.0 端口用亍线连接列*7 诩!放人模块快域中 的 SPKIN 竭口上;2.把单片机系统衣域中的 P3.0 一 P3.7 瑞口用 8 芯排线连接到 4X4 行列式键盘嘔域中的 C1 - C4 R1 - R4 端 III::4相关程序内容2.斤
2、乐产牛的方法:一阡疔乐是许姜不同的音阶组成的.而毎个音阶対应着不同的频率.这样我 们就可以利用不同的频率的组合.即町构成我们所患要的昌你 J 十然对单片 机來产生不同的频率 II常方便.我们可以利川唯片机的定时/计数器 T0來产| 生这样方波频率信号,因此.我们只耍把 MR 曲的音阶对应频率关系弄】E 确即 可.现在以单片机12MHZ 鬲掾为例.例出髙中低音符与单片机计数 T0 相关 的计数值如卜衣所示卜脚我们要为这个音符建工一个农格.右助 J-单片机通过仕农的方式來认时相应1.4X4 行列式键#1 D低 2RE294#2RE#311 低3Mp30(if 4FA349 5SO#pl15 低6
3、LA440低 7 SI殛$4103641856426064331# 4 FA#顿率(HZ |简谱码(T 恤)6486064898# 5 SO# 帀 6 LA#6P 7 SI Wl 1DO523# 1DO#554# JRE#622帀1旃飞 丽予TA6981DO #TDO# A2 RE #2 RE#為 3 M乔 4FA# 4FA#104665058110965085TT755TiO64684647324777高 5 SO #5 SO#TLA#6高 7 SI1568652 仃166165235176065252低 1(HZ简iT值)6383563928740164934496864994|6563的
4、数据低音 0 19 之何.中音在 20 - 39 之间.爲哥在 40 - 59 之何TABLE: DW 0,63628,63835,64021,64103,64260.64400,64524,0.0DW 0,63731,63928,0,64185,64331,64463.0,0,0DW 0,64580,64684.64777.64820,64898,64968,65030.0,0DW 0,64633,64732,0,64860,64934,64994.0,0,0DW 0,65058,65110.65157,65178.65217,65252,65283,0,0DW 0,65085,65134,
5、0,65198,65235,65268.0,0,0DW 02、音乐的音个 run 为单位(c 调)曲调值DELAY曲调 ftlDELAY调 4/4125ms训 4/462ms调 3/4187ms调 3/494ms调 2/4250ms调 2/4125ms对于不同的曲调我们也可以用单片机的刃外个足时/计数器来完成.F 面就用 AT89S51 单片机产生一片生日快乐歐曲來说明单片机如何产生的.庄这个程序中用到了两个定时/计数器来完成的兀中 T0 用來产生音符频率T1 用来产生音拍.5.程序框图6.汇编源程序KEYBUF EQU 30HSTHO EQU 31HSTLO EQU 32HTEMP EQU
6、33HORG OOHLJMP STARTORG OBHLJMP INT_T0START: MOV TMOD.#01HSETB ETOSETB EAWAIT:MOV P3,#0FFHCLR P3.4MOV A,P3ANL A.#OFHXRL A.#0FHJZ NOKEY1LCALL DELY10MSMOV A,P3ANL A.#OFHXRL A.#0FHJZ NOKEY1MOV A,P3ANL A.#0FHCJNE A.#0EH.NK1MOV STHO.AMOV TH0.AINC TEMPMOV A,TEMPMOVC AA*DPTRMOV STLO.AMOV TLO.ASETB TRODK1A:
7、 MOV A.P3ANL A,#OFHXRL A.#0FHJNZ DK1ALR TRONOKEY1:MOV P3,#OFFHCLR P3.5MOV A,P3ANL A.#OFHXRL A.#0FHJZ NOKEY2LCALL DELY10MSMOV A,P3ANL A.#OFH|MOV B.#2MUL ABMOV TEMP.AMOV DPTR,#TABLE1MOVC AADPTRMOV STH0,AMOV THO.AINC TEMPMOV A.TEMPMOVC A.A+DPTRMOV STLO.AMOV TLO.ASETB TRODK2A: MOV A,P3ANL A,#OFHXRL A,#0
8、FHJNZ DK2ACLR TRONOKEY2:MOV P3,#0FFHCLR P3.6MOV A,P3ANL A.#OFHXRL A,#OFHJZ N0KEY3LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A.#0FHJZ NOKEY3MOV A,P3ANL A.#0FHCJNE A.#0EH.NK9MOV KEYBUF,#8LJMP DK3NK9: CJNE A.#0DH,NK10MOV KEYBUF,#9LJMP DK3NK10: CJNE A,#0BH,NK11MOV KEYBUF,#10LJMP DK3NK11: CJNE A,#07H,NK12MOV KE
9、YBUF,#11LJMP DK3NK12: NOPDK3:IMOV A.KEYBUFMOV DPTR,#TABLEMOVC A.A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP.AMOV DPTR.#TABLE1MOVC A.A+DPTRMOV STH0,AMOV THO.AINC TEMPMOV A,TEMPMOVC A.A+DPTRMOV STLO.AMOV TLO.ASETB TRODK3A: MOV A.P3ANL A,#0FHXRL A.#0FHJNZ DK3ACLR TRON0KEY3:MOV P3,#0FFHCLR P3.7MOV
10、A.P3ANL A.#0FHXRL A.#0FHJZ NOKEY4LCALL DELY10MSMOV A.P3ANL A,#0FHXRL A.#0FHJZ NOKEY4MOV A,P3ANL A.#0FHCJNE A,#0EH,NK13V KEYBUF,#12IP DK4I3: CJNE A,#0DH,NK14MOV KEYBUF,#13LJMP DK4NK14: CJNE A,#0BH,NK15MOV KEYBUF,#14LJMP DK4EDK4A: MOV A,P3ANL A,#0FHXRL A.#0FHJNZ DK4ALR TRONOKEY4:LJMP WAITDELY10MS:MOV
11、R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETINT TO:MOV THO.STHOMOV TLO,STLOCPL P1.0RETITABLE: DB 3FH,06H,5BH,4FH.66H,6DH,7DH,07HDB 7FH.6FH,77H,7CH,39H,5EH,79H.71 HTABLE1: DW 64021,64103.64260.64400DW 64524,64580.64684,64777DW 64820,64898,64968,65030DW 65058,65110,65157,65178END7. C 语言源程序include nsign
12、ed char code table=0 x3f,0 x06,0 x5b,0 x41,x66,0 x6d,0 x7d,0 x07,x7f,0 x6f,0 x77.0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char temp;unsigned char key;unsigned char i,j;nsigned char STHO;nsigned char STLO;nsigned int codetab=64021,64103.64260.64400,64524,64580,64684,64777,64820,64898.6496&65030,650
13、58,65110,65157.65178;void main(void)TMOD=0 x01;ET0=1;EA=1;whileP3=0 xff;EEP3_4=0;temp=P3;temp=temp & OxOf;if (temp!=0 x0f)(for(i=50;i0;i-)仙(j=200;j0:j-);temp=P3;temp=temp & OxOf;if (temp!0 x0f)(tempP3;temp二temp & OxOf:switch(temp)case OxOe: key=0; break;case OxOb:temp-P3;P1 O-P1 0;PO=tab
14、lekey;STH0=tabkey/256:STL0=tabkey|%256;TR0=1;temp=temp & OxOf;while(temp!=0 x0f)lemp=P3; temp=temp & OxOf;)TR0=0;)P3M;P3_5=0;temp=P3;temp=temp & OxOf;if (temp!0 x0f)I1or(i=50;i0;i)forG=200;j0j-);1emp=P3;temp.temp & OxOf;if (temp?=0 x0f)temp=P3;temp=temp & OxOf;switch(temp)OxOe:4;
15、k;case OxOd:畑 y=5;break;case OxOb:break; case 0 x07:Etemp=P3;P1 0=-P1 0:P0-tablekey;STH0=tabkey/256: STL0=tabkey%256: TRO;temp=temp & OxOf; while(temp!=0 x0f) temp=P3;temp=temp & OxOf;TR0=0;)P3=0 xff;P3_6=0;1emp=P3;1emp=temp & OxOf; if (lemp!=0 x0f) fior(i=50;i0;i-) 仙卜 200;j0;H;emp=P3; e
16、mp=temp & OxOf; if (temp?0 x0f)temp=P3;temp=temp & OxOf:switch(temp)case OxOe:case OxOd:case 0 x07:ey.11;reak;temp=P3;P1 0=-P1 0;P0=tablekey;STH0=tab(key)/256;STL0=tabkey)%256;TR0=1;1emp=temp & OxOf;while(temp!=0 x0f)(temp=P3;temp=temp & OxOf;TR0=0;E)P3=0 xff;P3_7=0;temp=P3;1emp=temp & OxOf:if (temp!=0 x0f)for(i=50:i0;i)1or(j=200;j0;j-); temp=P3; temp=temp & OxOf; if(temp!=0 x0f)1emp=P3; temp-temp & OxOf; switch(temp)cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成本费用分摊协议
- 合同变更登记表
- 民宿特价预售合同协议
- 和学徒签合同协议
- 模具合伙人合作合同协议
- 正规保证借款合同协议
- 快递站打包服务合同协议
- 商场物业承租协议书模板
- 商品交易合同取消协议
- 江苏省扬州市梅岭市级名校2025届第二学期普通高中半期考试初三物理试题含解析
- 隧道高空作业施工方案
- 危险性较大的分部分项工程专项施工方案严重缺陷清单(试行)
- 深信服超融合HCI技术白皮书-20230213
- 2025年陕西省土地工程建设集团有限责任公司招聘笔试参考题库附带答案详解
- 2024广西公务员【申论A卷、C卷+2023申论A卷】共3套真题及答案
- 《多样的中国民间美术》课件 2024-2025学年人美版(2024)初中美术七年级下册
- 人教版 七年级 下册 语文 第四单元《青春之光》课件
- 2024物业管理数字化升级服务合同
- 灌浆作业安全操作规程(3篇)
- 药品追回管理制度内容
- 二战时期的中国抗日战争
评论
0/150
提交评论