ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:232.48KB ,
资源ID:9619593      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9619593.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机竞赛论文 电子琴1.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机竞赛论文 电子琴1.docx

1、单片机竞赛论文 电子琴1一、设计任务应用单片机制作一个电子音乐琴,使其能够弹奏音乐。二、要求1、基本要求: 1、具有七个基本键。(1 2 3 4 5 6 7) 2、音调输出清晰正确。2、发挥部分: 1、扩展出高、低各7个音符键。 2、使其具有延音效果。 3、具有乐谱回放功能。 总 体 概 述本设计采用AT89S52单片机作为整个系统的控制核心,具有:音乐琴, 电子钟, LED阵列扫描显示, 液晶字符显示, 循环彩灯 五个模块。音乐琴采用4X4矩阵键盘为输入键盘,共有十六个基本音, 并与其他功能组合, 具有一定的实用性与趣味性, 较好的完成题目要求。关键词:单片机 矩阵键盘 频率 。一、音乐琴系

2、统。1. 电路原理图 2 系统板硬件连线 1 把“单片机系统”区域中的 P1.0 端口用导线连接到“音频放大模块”区域中的 SPK IN 端口上; 2 把“单片机系统“区域中的 P3.0 P3.7 端口用 8 芯排线连接到“ 4X4 行列式键盘”区域中的 C1 C4 R1 R4 端口上; 3 相关程序内容 音乐产生的方法; 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时 / 计数器 T0 来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系

3、弄正确即可。现在以单片机 12MHZ 晶振为例,例出高中低音符与单片机计数 T0 相关的计数值如下表所示 音符 频率( HZ ) 简谱码( T 值) 音符 频率( HZ ) 简谱码( T 值) 低 1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 #

4、 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 #

5、5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据 低音 0 19 之间,中音在 20 39 之间,高音在 40 59 之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0

6、,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 2 、音乐的音拍,一个节拍为单位( C 调) 曲调值 DELAY 曲调值 DELAY 调 4/4 125ms 调 4/4 62ms 调 3/4 187ms 调 3/4 94ms 调 2/4 250ms 调 2/4 125m

7、s 对于不同的曲调我们也可以用单片机的另外一个定时 / 计数器来完成。 下面就用 AT89S51 单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。 在这个程序中用到了两个定时 / 计数器来完成的。其中 T0 用来产生音符频率, T1 用来产生音拍。 4 程序框图 5 汇编源程序 KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#01H SETB ET0 SETB EA WAIT: MOV P3,#0FFH CLR P3.

8、4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP D

9、K1: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A CLR TR0 NOKEY1: MOV P3,#0FFH CLR P3.5 MOV

10、A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 LJMP DK2 NK8: NOP DK2: MO

11、V A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK2A CLR TR0 NOKEY2: MOV P3,#0FFH CLR P3.6 MOV A,P3 A

12、NL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9 LJMP DK3 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10 LJMP DK3 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 LJMP DK3 NK12: NOP DK3:

13、MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A CLR TR0 NOKEY3: MOV P3,#0FFH CLR P3.7 MOV A,P3

14、 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4 NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#13 LJMP DK4 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 LJMP DK4 NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK4 NK16: NOP

15、 DK4: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A CLR TR0 NOKEY4: LJMP WAIT DELY10MS: MOV

16、R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0: MOV TH0,STH0 MOV TL0,STL0 CPL P1.0 RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H TABLE1: DW 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178 END 二、时钟系统1

17、 原理图2 工作原理利用单片机89S52作为本系统的中控模块。电路设有四个按键,一个为功能选择开关,能够选择调节时间、日期、第一个闹钟、第二个闹钟;第二个为“加”按钮,能够实现数字的累加;第三个为“减”按钮,能够实现数字的递减;第四个为确定选择开关。电路程序取用单片机内部其中一个定时中断系统作为基准秒频,这样能够使CPU达到最大利用。功能调节时显示电路仍然能够达到同步显示。当调节的闹钟时间与时钟显示的时间相等时,声光报警电路动作,取用LM386能够放大单片机输出的音频信号,推动扬声器发出乐耳的音乐,时钟程序的整体设计方案是用单片机驱动电路控制时钟显示,为显示提供电源,用软件程序控制时种运行和各

18、种调节功能。三、LED列阵扫描显示系统1.原理图2 系统板硬件连线 我们把行列总线接在单片机的i0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。在这个例子里,由于一共用到16行,16列,如果将其全部接入89c51单片机,一共使用32条io口,这样造成了io资源的耗尽,系统也再无扩充的余地。实际应用中我们使用4-16线译码器74ls154来完成列方向的显示。而行方向16条线则接在p0口和p2口。3 相关C程序内容 #include unsigned char code tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; unsigned c

19、har code graph38=0x12,0x14,0x3c,0x48,0x3c,0x14,0x12,0x00, 0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00, 0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00 ; unsigned char count; unsigned char cnta; void main(void) unsigned char i,j; TMOD=0x01; TH0=(65536-4000)/256; TL0=(65536-4000)%256; TR0=1; ET0=1; EA=1; while(1)

20、 if(P2_0=0) for(i=5;i0;i-) for(j=248;j0;j-); if(P2_0=0) count+; if(count=3) count=0; while(P2_0=0); void t0(void) interrupt 1 using 0 TH0=(65536-4000)/256; TL0=(65536-4000)%256; P3=tabcnta; P1=graphcountcnta; cnta+; if(cnta=8) cnta=0; 四:LCD字符显示1 C程序:#include#define uchar unsigned charsbit rs=P12;sbi

21、t rw=P11;sbit e=P10;delay(uchar time)while(time0) time-;void enrw()rs=0; rw=0; e=0; delay(250); e=1;write_data(uchar c)P2=c; rs=1; rw=0; e=0; delay(250); e=1;init_lcd(void)/初始化P2=0x01;/清屏幕enrw();P2=0x38;/数据长度为8位,双行显示,5*7字符。enrw();P2=0x0c;/打开显示开关enrw();P2=0x06;/地址计数递增,显示屏不移动enrw();write_cmd(uchar m)/

22、写命令,注意与写数据的区别 P2=m; enrw();position(uchar row,uchar colum)/写位置uchar p; if(row=1) p=0x82+colum-1; else p=0xC0+colum-1; write_cmd(p);display(uchar *s)/写字符串,简单的指针应用for(;*s!=0;s+) write_data(*s);void main()unsigned int m,n; m=1; n=2; init_lcd(); position(m,1); display( wolcome); position(n,1); display(c

23、ongratulations); while(1);2:原理图3:液晶的显示1线段的显示 点阵图形式液晶由M 行N 列个显示单元组成,假设LCD 显示屏有64行,每行有128 列,每8 列对应1 个字节的8 个位,即每行由16 字节,共168=128个点组成,屏上6416 个显示单元和显示RAM 区1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM 区的000H00FH 的16 个字节的内容决定,当(000)=FFH 时,则屏的左上角显示一条短亮线,长度为8 个点;当(3FFH)=FFH 时,则屏的右下角显示一短亮线;当(000H)=FFH,(001H

24、)=00H,(002H)=FFH,(003H)=00H,(00EH)=FFH,(00FH)=00H 时,则在屏的顶部显示一条由8 段亮线和8 条暗线组成的虚线。这就是LCD 显示的基本意思。2字符的显示 当用LCD 显示一个字符时就较复杂了,因为一个字符由68 或88 点阵组成,即要找到和屏上某几个位置对应的显示RAM区的8 个字节,并且要使每个字节的不同的位为1,其它的为0,为1的点亮,为0的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器(如T6963C)来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示RAM对应的地址,设

25、立光标,在此送上该字符对应的代码即可。3汉字的显示 汉字的显示一般采用图形方式,事先从微机中提取要显示的汉字的点阵码,每个汉字占32 字节,分左右两半部,各占16 字节,左边为1、3、5,右边为2、4、6, 根据在LCD 上开始显示的行列号及每行的列数可找出显示RAM 对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加1,送第二字节,换行按列对齐,送第三字节直到32 字节显示完就可在LCD 上得到一个完整的汉字。内带T6963C的液晶图形显示模块和8031 单片机的连接1LCD显示控制器T6963C T6963C 是点阵式液晶图形显示控制器,能直接和8031单片机连接(见附图);可

26、以以图形、字符方式或合成显示;内部有字符发生器,共128 个字符,允许CPU随时访问显示RAM,并可进行位操作。2内带T6963C 的液晶图形显示模块(MGLS12864T)和8031 单片机的连接 内带T6963C 的液晶图形显示模块MGLS12864T 和8031 单片机的连接见附图。由图可以看出,MGLS12864T 的数据线和8031 的数据总线相接,它的C/D 接8031 的地址线A0,/CE2接8031外扩系统地址译码器74LS138的一个输出端;MGLS12864T的/WR,/RD分别和8031的/WR,/RD 相接,/RESET,VCC,/HALT 接+5V,VO 接5V15V

27、 可调,VEE 接5V15V;FG、GND接8031 的GND。T6963C 的主要指令见表1。参数1 参数2 指令代码 功 能1水平位置 垂直位置 21H 光标指针设置2地址(低5位) 00H 22H CGRAM 偏置地址设置3低字节 高字节 24H 地址指针位置4低字节 高字节 40H 文本区首址5 低字节 00H 41H 文本区宽度(字节数/行)6低字节 高字节 42H 图形区首址7低字节 00H 43H 图形区宽度(字节数/行)8无 无 8XH 显示方式设置9无 无 9XH 光标闪烁,显示,文本,图形显示10. 无 无 AXH 光标形状选择11无 无 BXH 数据自动读/写方式设置12

28、D1(仅写才有) 无 C0C5H 数据一次写/读,地址加1或不变13无 无 D0H 屏读14无 无 D8H 屏拷贝15无 无 FXH 位操作对T6963C进行操作前应先读状态字,T6963C 的状态字中的各位含意如表2。表2位 状态 1 0STA0:指令读写状态 准备好 忙STA1:数据读写状态 准备好 忙STA2:数据自动读状态 准备好 忙STA3:数据自动写状态 准备好 忙STA4:未用STA5:控制器运行检测可能性 可能 不能STA6:屏读/拷贝出错状态 出错 正确STA7:闪烁状态检测 正常显示 关显示五、参考书目1、单片机原理及应用主编:万文略 重庆大学出版社2、单片及应用技术与实例主编:沙占友 电子工业出版社3、C程序设计主编:谭浩强 清华大学出版社组号:第23组 参赛队员: 尤明 段宁 邵凌

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1