流水灯显示_课程设计(编辑修改稿)内容摘要:

程图 音乐播放子程序代码 MUISC: MOV TMOD,01H MOV IE,82H START0: MOV 30H,00H。 取简谱码指针,初次 30H=00 NEXT: MOV A,30H MOV DPTR,TABLE MOVC A,@A+DPTR。 查表,首址(第 0 位)是 52H MOV R2,A; R2 暂存简谱码, R2=52H JZ END0; 取到结束码( 00H),跳至 END0 ANL A,0FH; 取低 4 位(节拍码), A=02H MOV R5,A; 节拍码存于 R5 MOV A,R2 SWAP A。 交换高低 4 位, A=25H ANL A,0FH; 取低 4 位(音符码), A=05H JNZ SING; 取到的音符码为 0 吗。 不是跳至 SING CLR TR0; 是,则不发音 JMP D1 SING: DEC A; 取到的音符码,减 1, A=4 MOV 22H,A RL A。 乘 2, A=8 MOV DPTR,TABLE1; 到表 TABLE1 取 T 值,首址 64260 MOVC A,@A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,@A+DPTR MOV TL0,A 邵阳学院课程设计(论文) 14 MOV 20H,A SETB TR0; 启动定时器 D1: CALL DELAY; 基本延时单位 187 毫秒 INC 30H JMP NEXT; 取下一个简谱码 END0: CLR TR0; 停止定时器 0 计时 JMP START1; 重复循环 TIM0: PUSH ACC; 定时器 0 中断子程序,重复加载 PUSH PSW MOV TH0,21H MOV TL0,20H CPL ; 输出 POP PSW POP ACC RETI DELAY: MOV R7,02 D2: MOV R4,187 D3: MOV R3,248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2 DJNZ R5,DELAY; 节拍的长短,即每个音符的发音时间的长短 RET TABLE1: DW 64260,64400,64524,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217 TABLE: DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H 邵阳学院课程设计(论文) 15 DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H DB 0C4H,0B4H,04H DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H DB 0C4H,0B4H,04H DB 00H; 简谱码表,高四位为音符,低四位为节拍数 END 邵阳学院课程设计(论文) 16 音乐子程序流程图 Y N N Y 图 音乐子程序流程图 给 30H 赋初值 A=30H 查表 简码表存于 R2 给 DPTR赋初值 建立简谱码 建立初值 系统初始化 取 A的低四位存于 R5 R2=00H。 取A的高四位存于A TR0 调用延时 A=00H。 30H 加 1 TR0=0 给 DPTR 赋初值 建立 TABLE1 查表 TH0=A,21H=A 查找下一个 T 值 TL0=A, 20H=A , 20H=a 启动定时器 跳至花样灯 开始 邵阳学院课程设计(论文) 17 花样灯程序及流程图 花样灯程序代码 START1: SETB IT0; 系统初始化 SETB EX0 SETB IT1 SETB EX1 SETB EA MOV A,0FEH LOOP:MOV P1,A; 依次点亮,循环点灯 LCALL DELAY RL A LJMP LOOP INTER0:JNB ,S1; 若 =0,切换到花样灯 1 JNB ,S3; 若 =0,切换到花样灯 2 SJMP EXIT S1:MOV R2,10; 八只彩灯“亮 — 灭 — 亮”闪烁 10 次 S2:MOV P1,00 LCALL DELAY1 MOV P1,0FFH LCALL DELAY1 DJNZ R2,S2 SJMP S1 RETI S3:MOV R3,10; 八只彩灯从 0、 6 到 7 交替闪烁 10 次 S4:MOV P1,0AAH LCALL DELAY1 MOV P1,55H LCALL DELAY1 DJNZ R3,S4 SJMP S3 邵阳学院课程设计(论文) 18 EXIT:RETI DELAY:MOV R0,0FFH D1:MOV R1,0FFH D2:NOP NOP DJNZ R1,D2 DJNZ R0,D1 RET END 花样灯流程图 图 花样灯流程图 A移位 调用延时 初始化 A=0FFH P1=A 开始 邵阳学院课程设计(论文) 19 Y Y N N N Y Y 图 花样灯中断服务流程图 =0。 =0。 R2=10 P1=00H 延时 P1=0FFH 延时 R21=0 R3=10 P1=AAH 延时 P1=55H 延时 R31=0 中断返回 开始 邵阳学院课程设计(论文) 20 第 5章 系统调试及软件仿真 在 Proteus 仿真软件中实现 LCD12864 液晶模块显示“生日快乐”的同时,蜂鸣器播放生日歌。 当生日歌播放完之后,八只彩灯被依次点亮并循环,如若要切换彩灯花样,可以按键实现。 在本次仿真过程中遇到的最大问题就是,出现“ Simulation is not running in real time due to excessive CPU load” 的提示信息。 软件仿真时,音乐播放速度特别慢,感觉像卡带了一样,我以为是电路出了问题。 上网查询了解到, CPU 过载,导致仿真速度不能实时运行,可能与电脑的配置过低, Proteus 仿真软件的版本低以及电路太复杂有关,并不一定就是电路图出问题。 这个问题的出现,让我了解到,Proteus 仿真软件要达到实时运行的效果还是有差距的。 在 Proteus 仿真软件的帮助教程中已经提到这方面问题的解决方案,我试着根据上面的方案进行操作。 分别点击电阻和发光二极管的属性,选“使用文本方式 编辑所。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。