单片机设计——八音盒.docVIP

  • 11
  • 0
  • 约6.21千字
  • 约 12页
  • 2023-09-23 发布于湖北
  • 举报
8051八音盒 课程设计任务书 8051八音盒 本设计利用8051单片机结合内部定时器LCD设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。本设计可以学习8051定时器程序设计,按键扫描及歌曲旋律简单直觉式输入法的设计方法。 其基本功能为:1使用LCD显示器来显示目前演奏的歌曲编号;2具有16个按键操作来选择演奏哪一首歌曲;3内建10首歌曲旋律,按下单键可以演奏歌曲;4演奏时可以按键中断。程序执行后工作指示LED闪动,表示程序开始执行,按下单键0~9便可以演奏歌曲,歌曲演奏中,可以按键中断。 设计项目简介 设计思路: 选择8051单片机,通过T0定时中断,并配合P3.0引脚输出音频频率。 P3.0引脚输出接扬声器。 通过P3.4引脚接入中断按键,进行中断 通过P0接8155外扩端口。 通过8155PA口接LCD驱动电路芯片,再接显示器。 8155的PB,PC口接键盘,输入歌曲号。 音符产生方法: 不同的音调有不同的频率。频率不同,音调也就不同。 利用定时器,使其工作在模式1,定时中断,然后控制P3.0引脚的输出每次取反,就可以在P3.0的引脚输出相应的方波频率。改变计数初值,就改变了频率。定时器的定时时间等于半个周期,定时时间到就输出脉冲取反,重复此过程,就可在P3.0引脚得到一音频的脉冲。 如:中音1的频率=523HZ,周期T=1/523=1912us; 定时器的定时时间为:T/2=1912/2us=956us; 计算得TH0,TL0的计数初值THTL=64580 下面是个音符计数初值 音符 THTL 音符编码 低音5 0F66FH 1 低音6 0F724H 2 低音7 0F81BH 3 中音1 0F88FH 4 中音2 0F95EH 5 中音3 0FA17H 6 中音4 0FA6BH 7 中音5 0FB08H 8 中音6 0FB92H 9 中音7 0FC0EH A 高音1 0FC4BH B 高音2 0FCAFH C 高音3 0FD0CH D 高音4 0FD36H E 高音5 0FD84H F 节拍产生方法: 音乐中的节拍用延时时间产生。假设1/4拍执行一次延时程序,这1/2拍就执行两次延时程序,所以只要求出1/4延时时间,其余的节拍就是他的倍数。为方便记谱,将节拍数也进行编码,如下: 节拍编码 节拍 1 1/4 2 1/2 3 3/4 4 1 建立曲谱编码表: 编谱用8位编码,高4位代表音符,低4位代表节拍。如5 6中音5,中音6,都是1/2拍,则编码为:82H 92H 电路原理图: 系统功能简介: 8051八音盒具有4乘4键盘,由于选歌旋律。有LCD显示,显示当前正在播放的旋律。 有中断按键,在单片机播放旋律时可以按中断暂停,再选歌曲旋律。有LED指示,其随旋律的节拍而变化。 程序框图: 程序清单: ORG 0000H SJMP MAIN ORG 0100H MAIN:SETB EA SETB EX1 ;开外部中断int0 MOV DPTR,#8000H MOV A,#30H MOVX @DPTR,A ;令8155a,b为输出,c为输入 MOV R7,#0BH ACALL SCREEN ;显示器初始化为00 DISPLAY:ACALL SCAN ;扫描键盘 ACALL SCREEN ;lcd显示 CJNE R7,#0FFH,NEXT ;判断中断是否选中曲目 SJMP DISPLAY ;没选中,即无按键 NEXT:ACALL MUSIC ;选中曲目在r7中 CLR R7 SJMP MAIN ;再次扫描 END ORG 0200H ;scan子程序 SCAN:MOV DPTR,#8002H ;dptr指向b口 MOV A,#00H MOVX @DPTR,A ;使b口输出低电平 MOV DPTR,#8003H ;dptr指向pc口 MOVX A,@DPTR ;读pc口状态 ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH ;若有键按下,则keyscan SJMP EXIT ;无键按下,则exit KEYSCAN:ACALL DY12MS ;延时12ms去抖动 MOV R2,#0EH ;列扫描始值给r2 MOV R3,#04H ;列数4给r3 MOV R0,#00H ;列计

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档