微机原理创新型实验报告音乐播放器_第1页
微机原理创新型实验报告音乐播放器_第2页
微机原理创新型实验报告音乐播放器_第3页
微机原理创新型实验报告音乐播放器_第4页
微机原理创新型实验报告音乐播放器_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理设计报告创新型实验设计报告题 目 音乐播放器 学 院 专 业 成 员 指导教师 简 介本实验利用液晶屏、按键和喇叭,构成音乐播放器。共有8首歌曲,分两页在液晶屏上显示,每页显示4首歌曲。在屏幕左端有一个“*号,星号所在行表示歌曲被选中。有两个按键,一个是选歌键,一个是播放/暂停键。按下选歌键,星号上下移动,选择歌曲第4首后自动翻页。按播放/暂停键播放选中歌曲,再次按下歌曲暂停,再按下继续播放。选择暂停 曲目表:第一页 第二页1、天大校歌 1、天仙配2、青花瓷 2、鳟鱼3、牧童短笛 3、友谊地久天长4、最炫民族风 4、半屏山目 录1 成员分工 012 乐理根底 013 外部线路图 034

2、 程序设计 04 04音符子程序 054.3 LCD 显示程序 07 09 115 实验心得 12附录:实验源程序 141. 成员分工叶林奇:整体思路设计以及主程序、LCD程序、单音符播放程序设计熊鹏辉:代码编写,线路连接王同宇:按键处理与光标移动程序设计,程序测试2. 乐理根底优美的音乐令人陶醉,我们所听到的音乐都是由根本的音阶构成的。所谓音阶,也就是具有特定频率关系的一组音调。比方大家都知道的do、re、mi、fa、so、la、si,这7个音符就组成了一组音阶。音乐家也许是科学家发现,人耳对于声波的频率是指数敏感的。不妨以下列图来说明:ln(f )人耳感觉到的音高声音频率f人耳感觉到的音高

3、 打比方说,100HZ、200HZ、300HZ、400HZ这些声音,人听起来并不觉得它们是“等距离的,而是觉得越到后面,各个音之间的“距离越近。100HZ、200HZ、400HZ、800HZ这些声音,人听起来才觉得是“等距离的为什么会这样我也不清楚。换句话说,某一组声音,如果它们的频率是严格地按照×1、×2、×4、×8,即按2n的规律排列的话,它们听起来才是一个“等差音高序列。 ×2就意味着等距离,这是音乐中最根本的关系。用音乐术语来说,×2就是一个“八度音程。前面提到的do、re、mi中的do,以及so、la、si后面的那个高音do

4、,这两个do之间就是八度音程的关系。也就是说,高音do的频率是do的两倍。同样的,re和高音re之间也是八度音程的关系,高音re的频率是re的两倍。而高音do上面的那个更高音的do,其频率就是do的4倍。也可以说,它们之间隔了两个“八度音程。在一个八度音程之间适当的选取某些频率,便可构成自然音阶,也即 前面说过的do、re、mi、fa、so、la、si。现在的钢琴是按照“十二平均律来设计的,也就是,把一个2倍的关系按等比数列平分成12分,不难得出等比因子为2开12次方,约为1.05946。这样一个八度之内就有十三个音a1,a2,a13,后一个音的频率由前一个音乘以1.05946得到,这样的两个

5、音称之为半音程关系,相差两个半音那么叫做一个全音。自然音阶是按“全全半全全全半的关系来选取的。就是说,do的频率确定后,re比do高一个全音,mi比re高一个半音也就是从等比数列a1,a2,a12中依次抽取a1,a3,a5,a6,a8,a10,a12,a13构成do、re、mi、fa、so、la、si、高音do。 音乐的根本元素:音符音高+延时 音乐可以分解成一个个的音符,简单地说,一个音符就是一定频率的音延迟一定的时间。与频率差不多的是,时长也是按×2的关系分配的。全音符减半得二分音符,二分音符减半四分音符,四分音符减半得八分音符。有了音符例如我选择低音so、低音la、低音si、d

6、o、re、mi、fa、so、la、si、高音do、高音re、高音mi,以及休止符0,和5种时长:全音符到16分音符的组合,把它们按照简谱上的顺序排列起来,就可以奏出我们想要的音乐了。3. 外部线路图CSPA0PA1PC0PC1PC2PC48253CSGATE0CLK0OUT00288H0280HLCD128641M喇叭按键1按键2PB0PB7D0D7ERWD/I82554. 程序设计u 4.1 主程序开始段地址初始化8255、8253初始化LCD初始化播放键按下?等待按键松开选择键按下?光标下移或翻页YESNOYES歌曲数组读取YESNO显示歌曲播放/暂停标志?暂停播放播放下一音符等待按键松开

7、修改播放/暂停标志歌曲结束?YESNOu 4.2 音符子程序通过8253定时器可以产生不同频率的方波信号,经过功率放大和低通滤波后得到近似的正弦单频信号。8253工作在方式3分频模式,通过设置8253的定时值即可在OUT0得到不同频率的方波输出信号。GATE0是使能端,当其置1时OUT0才有输出,GATE0置1的时间决定了音符的时长。入口参数:音高、时长计数值=106/频率 CLK0输入时钟频率为106音符名编码频率计数值a5102b4545c4050113823223405333034442864552551662273772025u1911v1703w1517000休止符时长编码延时值全音

8、符116T2分音符28T4分音符44T4分半音符64T+2T=6T8分音符82T8分半音符b2T+T=3T16分音符hT音高分支设定计数值CNT0音高分支设定延时值time休止符?YESNOGATE0置1返回延时GATE0置0u 4.3 LCD显示程序LCD最根本的两个操作是写命令和写数据,时序分别如下:D/IRWEDB写命令时序D/IRWEDB写数据时序LCD字符串或汉字显示子程序:判断AL值写入AL对应行的地址从数据地址读取数据CX减一,数据地址加一CX>0?返回YESNOu 4.4 光标子程序 通过按键1,2 控制音乐播放和选择歌曲,在显示屏上有个光标,通过光标指向播放的歌曲。把按

9、键2次数存在AL 里,每按一次AL加一。光标上下移动的原理就是通过不断的去除上一个图标以及显示下一个图标来实现移动的。在屏幕上显示和去除光标子程序分别是:u 4.5 歌曲编码以天大校歌为例歌曲简谱歌曲编码:'u6u854543444645u6是第一个音符“的编码,代表高音do四分半音符,依次类推。最后一个字符e代表歌曲结束。5. 实验心得l 叶林奇:本次创新型实验从选题、设计、编程、调试到最终完成,只花了不到1天时间。之所以这么快,是因为之前用单片机编过一个类似的程序。那个程序是用C语言写的,而且是用在单片机上。在我看来,这是一次成功的代码移植。为了把C程序移植到8086上,需要给C程

10、序中的变量分配存放器,如果变量比拟多,还要利用堆栈。还有就是C语言各种程序结构如分支、循环嵌套等的汇编实现。C程序逻辑易懂,就像流程图一样直观。正是如此,才使我们事半功倍。尽管如此,实验中还是遇到了很多的问题。例如在调试的时候发现,每次在断点停下,都能正常播放出一个音符。但是一全速运行,就发不出声音了。这让我们困惑了很久,最后才发现是音符的延时不够长。像这种问题,之前是没法预料的。这也更加告诉我们,实验中要时刻做好出错的心理准备,遇到问题认真分析,耐心调试,才能得到满意的结果。l 熊鹏辉:本次课程设计使我们更加深入的学习了关于微机原理的知识,使我们对其认识不仅局限与书本上,还与各种芯片与程序有

11、了很好的交流。在实验中,我们遇到了很多问题,但是都一步一步慢慢的解决了。最初我们想的只是能够放出音乐来就行,于是通过给予不同的频率来让其发出不同的音节,后来我们看到了实验箱上的LCD显示屏,于是想到联合起来做一个真正类似MP3播放器的作品,不仅能放音乐,还能进一步的选择歌曲,中间还有暂停播放等操作。在让LCD显示屏显示歌名的时候,我们以为只能直接给其赋予字母,但通过后面的不断尝试与新的编程,成功的显示了汉字。LCD显示屏共有四行,我们写了四首歌,每行首列用来选择歌曲,通过前面的“*的跳动来选择歌曲。信号跳到哪一行,相应的调用那一首歌的数据,于是放出该首歌。在初期的编程中,很多时候程序都不能实现

12、目标,我们就把程序一块一块拿出来单个调试,有的时候甚至单步调试一步一步的找出错误,从而加以改正,最后得到了我们现在的这个程序。在本次实验中,我们对微机原理软硬件的操作更加熟悉,也培养了我们遇到问题不骄不躁慢慢攻克的好习惯。总的来说,这次实验非常有意义,让我们的实践能力得到了很大的提高。l 王同宇:经过本次微机课题的设计与研究,我们深入的学习了除课本以外的很多微机附件的内容,掌握了很多实验室操作技能。我们在实际设计中遇到很多问题,但结合所学知识以及参考资料的帮助,不断地尝试,设计了一种能够解决实际问题的系统。同时也加深了我们对于现实生活中,实际的嵌入式操作系统的原理的理解。在这一过程中,我们充分

13、发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅。而且让我明白了一个设计成型的过程不是从一开始就完成的,而是在完成这项设计的过程中不断的提出新创意,新思想,然后去实现,最后形成一个比最初设想的好的设计。例如本设计中的选歌子程序就是在实验调试过程中提出来并实现的。附:实验源程序;*;名称:音乐播放器 叶林奇 熊鹏辉 王同宇 创立日期:2021/3/2;PA0:按键1选择歌曲 PA1:按键2播放/暂停;PC0:D/I PC1:RW PC2:E PC4:GATE0;OUT0:喇叭;CLK0:1M或2M2M高一个8度音;*STACK1 SEGMENTSTA DW 128

14、DUP(0)TOP EQU LENGTH STASTACK1 ENDSDATA SEGMENTEND_FLAG DB 0PLAY_FLAG DB 0CNT_LOW5 EQU 5102CNT_LOW6 EQU 4545CNT_LOW7 EQU 4050CNT_1 EQU 3823CNT_2 EQU 3405CNT_3 EQU 3034CNT_4 EQU 2864CNT_5 EQU 2551CNT_6 EQU 2273CNT_7 EQU 2025CNT_HIGH1 EQU 1911CNT_HIGH2 EQU 1703CNT_HIGH3 EQU 1517T16 EQU 200MUSIC3 DB &#

15、39;380h2h3858283h5h3h2h18b8a8b818a404380h2h3858283h5h3h2h18b8a8b818a4086h5hu8' DB '68583868580h3h5hu868583868580h3h5h6h5h3h2h3h5h6h5h3h2h180h2h2h3h2h1hb818a404380h2' DB '2818b4a4b23838583838585868u8685462b4b8a8b414283h2h182832b8686858283h2h18283218b8b81824' DB 'a8a83858382812

16、b81828382818a8a8b2b4b8a8b414283h2h182832b8686858283h2h18283218b8b81824a8' DB '5838u4646468 DB '3h2h1hbhahahahah14b80hbh24a80haha4a80hah12b4180hbh380h3h280h3h62626262e'最炫民族风 MUSIC1 DB 'u6u85454344464543858u4544838240434342838444444344452u6u8585838685438383824645428' 3834382834

17、382838583838' DB '58382838a428 h3h283h5h645' DB 'h6h5h3h22583858u80h6h5h6h5h3h540868180h2h583828382h1hb8a2e'天仙配 MUSIC6 DB '58u8u8w8w8u45858580h5hvhuh7h6h540858u8u8w8w8u458u8786h7hu8485408587878uh7h6h7hu45' DB '8u878787hwhvh7hu408u8686868u8u45858580h5hv878u408u87h6h686

18、huh7hvhu45858580h5hv878u404383' DB '8383878u468080838380h7hu404u8u8u8u8u8u8u8u4680h6hv4vh6h4h2h740858u80huh780h7hw8680868v4v' DB '8v8w8u878v8u408u8686868u8u45858580h58v80h78u408u87h6h686huh7hvhu45858580h5hv80h7hu2e'鳟鱼MUSIC7 DB 'a8180h1h1838280h1h2838180h1h3858640868580h3h3818

19、280h1h2838180hbhb8a8140868580h3h3818280h1' DB 'h2868580h3h38586408u8580h3h3818280h1h2838180hbhb8a812e'友谊地久天长 h1hb4585huh' DB '6858383h5h2818182h3h2h1hb818a418342h3h5812e'半屏山CON_8255 EQU 028BHPA_8255 EQU 0288HPB_8255 EQU 0289HPC_8255 EQU 028AH CON_8253 EQU 0283HCNT0_8253 EQU 0

20、280HCNT1_8253 EQU 0281HCNT2_8253 EQU 0282HSELECT DB 1DAT1 DB ' 天大校歌 'DAT2 DB ' 青花瓷 'DAT3 DB ' 牧童短笛 'DAT4 DB ' 最炫民族风 'DAT5 DB ' 天仙配 'DAT6 DB ' 鳟鱼 'DAT7 DB ' 友谊地久天长 'DAT8 DB ' 半屏山 'TEMP DB 16 DUP (0)MES DB 'PRESS ANY KEY TO DOS',0

21、DH,0AH,'$'DATA ENDS;*CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK1 MOV SS,AX MOV AX,TOP MOV SP,AX CLD;*MAIN: MOV AL,90H ;PA入,PB、PC出 MOV DX,CON_8255 OUT DX,AL ;* MOV AL,36H MOV DX,CON_8253 OUT DX,AL ;8253初始化,CNT0方式3 ;* CALL LCD_INIT;LCD初始化 MO

22、V DI,OFFSET DAT1 MOV AL,1 CALL SHOW_STRING MOV DI,OFFSET DAT2 MOV AL,2 CALL SHOW_STRING MOV DI,OFFSET DAT3 MOV AL,3 CALL SHOW_STRING MOV DI,OFFSET DAT4 MOV AL,4 CALL SHOW_STRINGTUBIAO1: MOV AL,1 CALL TUBIAO LEA SI,MUSIC1 ;*A1: MOV DX,PA_8255 IN AL,DX TEST AL,01H;播放键是否按下 JZ A6;A7: MOV DX,PA_8255 IN A

23、L,DX TEST AL,01H JNZ A7 ;等待按键松开 LEA DI,PLAY_FLAG MOV AL,DI XOR AL,1 MOV DI,AL; A6: LEA DI,PLAY_FLAG MOV AH,DI LEA DI,END_FLAG MOV AL,DI CMP AX,0100H JNE END1 ;标志位是0就不播放A5: MOV CH,SI;音高 CMP CH,'e'判断是否结束 JE END1 INC SI MOV CL,SI;时长 INC SI CALL NOTEEND1: MOV DX,PA_8255 IN AL,DX TEST AL,02H JZ A

24、1 A3: MOV DX,PA_8255 IN AL,DX TEST AL,02H JNZ A3 ;等待按键松开 LEA DI,SELECT MOV AL,DI CALL CLEAR_TUBIAO INC AL CMP AL,1 JE MUSIC_1 CMP AL,2 JE MUSIC_2 CMP AL,3 JE MUSIC_3 CMP AL,4 JE MUSIC_4 CMP AL,5 JE MUSIC_5 CMP AL,6 JE MUSIC_6 CMP AL,7 JE MUSIC_7 CMP AL,8 JE MUSIC_8MUSIC_1: PUSH AX MOV DI,OFFSET DAT1

25、 MOV AL,1 CALL SHOW_STRING MOV DI,OFFSET DAT2 MOV AL,2 CALL SHOW_STRING MOV DI,OFFSET DAT3 MOV AL,3 CALL SHOW_STRING MOV DI,OFFSET DAT4 MOV AL,4 CALL SHOW_STRING POP AX LEA SI,MUSIC1 JMP A4MUSIC_2: LEA SI,MUSIC2 JMP A4MUSIC_3: LEA SI,MUSIC3 JMP A4MUSIC_4: LEA SI,MUSIC4 JMP A4 MUSIC_5: PUSH AX MOV DI

26、,OFFSET DAT5 MOV AL,1 CALL SHOW_STRING MOV DI,OFFSET DAT6 MOV AL,2 CALL SHOW_STRING MOV DI,OFFSET DAT7 MOV AL,3 CALL SHOW_STRING MOV DI,OFFSET DAT8 MOV AL,4 CALL SHOW_STRING POP AX LEA SI,MUSIC5 JMP A4MUSIC_6: LEA SI,MUSIC6 JMP A4MUSIC_7: LEA SI,MUSIC7 JMP A4MUSIC_8: LEA SI,MUSIC8 JMP A4 A4: CMP AL,

27、9 JNE A2 MOV AL,1A2: LEA DI,SELECT MOV DI,AL CALL TUBIAO JMP A1;* MOV AH,4CH INT 21H ;*;写命令子程序;入口参数:BL-要写入的命令LCD_WR_CMD PROC NEAR PUSH AX PUSH DX PUSH CX MOV AL,0 MOV DX,PC_8255 OUT DX,AL MOV CX,8000 CALL DELAY MOV AL,BL MOV DX,PB_8255 OUT DX,AL MOV AL,4 MOV DX,PC_8255 OUT DX,AL MOV CX,8000 CALL DEL

28、AY MOV AL,0 MOV DX,PC_8255 OUT DX,AL POP CX POP DX POP AX RET LCD_WR_CMD ENDP ;* ;写数据子程序;入口参数:BL-要写入的数据LCD_WR_DAT PROC NEAR PUSH AX PUSH DX PUSH CX MOV AL,1 MOV DX,PC_8255 OUT DX,AL MOV CX,8000 CALL DELAY MOV AL,BL MOV DX,PB_8255 OUT DX,AL MOV AL,5 MOV DX,PC_8255 OUT DX,AL MOV CX,8000 CALL DELAY MOV

29、 AL,1 MOV DX,PC_8255 OUT DX,AL POP CX POP DX POP AX RET LCD_WR_DAT ENDP ;*LCD_INIT PROC NEAR PUSH BX MOV BL,30H ; /*30-根本指令动作*/ CALL LCD_WR_CMD MOV BL,01H ; /*清屏,地址指针指向00H*/ CALL LCD_WR_CMD MOV BL,06H ; /*光标的移动方向*/ CALL LCD_WR_CMD MOV BL,0CH ;/*开显示,关游标*/ CALL LCD_WR_CMD POP BX RETLCD_INIT ENDP;*;字符串

30、显示子程序;入口参数:DI字符串起始地址 AL行SHOW_STRING PROC NEAR PUSH BX CMP AL,1 JE ROW1 CMP AL,2 JE ROW2 CMP AL,3 JE ROW3 CMP AL,4 JE ROW4ROW1: MOV AL,80H JMP NEXTROW2: MOV AL,90H JMP NEXTROW3: MOV AL,88H JMP NEXTROW4: MOV AL,98HNEXT: MOV BL,30H CALL LCD_WR_CMD MOV BL,AL CALL LCD_WR_CMD MOV CX,16AGAIN: MOV BL,DI CAL

31、L LCD_WR_DAT INC DI LOOP AGAIN POP BX RETSHOW_STRING ENDP;*;图标显示子程序;入口参数:AL行TUBIAO PROC NEAR PUSH BX PUSH AX CMP AL,1 JE TROW1 CMP AL,2 JE TROW2 CMP AL,3 JE TROW3 CMP AL,4 JE TROW4 CMP AL,5 JE TROW1 CMP AL,6 JE TROW2 CMP AL,7 JE TROW3 CMP AL,8 JE TROW4TROW1: MOV AL,80H JMP TNEXTTROW2: MOV AL,90H JMP

32、 TNEXTTROW3: MOV AL,88H JMP TNEXTTROW4: MOV AL,98HTNEXT: MOV BL,30H CALL LCD_WR_CMD MOV BL,AL CALL LCD_WR_CMD MOV BL,'*' CALL LCD_WR_DAT POP AX POP BX RETTUBIAO ENDP;*;图标去除子程序;入口参数:AL行CLEAR_TUBIAO PROC NEAR PUSH BX PUSH AX CMP AL,1 JE CROW1 CMP AL,2 JE CROW2 CMP AL,3 JE CROW3 CMP AL,4 JE CRO

33、W4 CMP AL,5 JE CROW1 CMP AL,6 JE CROW2 CMP AL,7 JE CROW3 CMP AL,8 JE CROW4CROW1: MOV AL,80H JMP CNEXTCROW2: MOV AL,90H JMP CNEXTCROW3: MOV AL,88H JMP CNEXTCROW4: MOV AL,98HCNEXT: MOV BL,30H CALL LCD_WR_CMD MOV BL,AL CALL LCD_WR_CMD MOV BL,' ' CALL LCD_WR_DAT POP AX POP BX RETCLEAR_TUBIAO END

34、P;* ;长延时子程序;入口参数CXLONG_DELAY PROC NEARB2: MOV BX,50000B1: DEC BX JNZ B1 LOOP B2 RETLONG_DELAY ENDP ;* ;延时子程序;入口参数CXDELAY PROC NEAR LOOP $ RETDELAY ENDP ;* ;子程序NOTE:音阶子程序 ;入口参数:CH音高 CL时长 NOTE PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX;* CMP CH,'0' JE note_0 CMP CH,'a' JE note_low5 CMP

35、CH,'b' JE note_low6 CMP CH,'c' JE note_low7 CMP CH,'1' JE note_1 CMP CH,'2' JE note_2 CMP CH,'3' JE note_3 CMP CH,'4' JE note_4 CMP CH,'5' JE note_5 CMP CH,'6' JE note_6 CMP CH,'7' JE note_7 CMP CH,'u' JE note_high1 CMP CH,'v' JE note_high2 CMP CH,'w' JE note_high3;*note_0: JMP timenote_lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论