音乐彩灯课程设计.docx
- 文档编号:1999850
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:15
- 大小:193.13KB
音乐彩灯课程设计.docx
《音乐彩灯课程设计.docx》由会员分享,可在线阅读,更多相关《音乐彩灯课程设计.docx(15页珍藏版)》请在冰点文库上搜索。
音乐彩灯课程设计
目录
一、设计要求····························
二、设计目的····························
三、设计的具体实现······················
四、程序································
五、结论································
六、心得体会····························
七、附录································
八、参考文献····························
音乐彩灯设计报告
一、设计要求
1、三人一组,一人负责硬件电路设计与连接,一人采用C语言编程、调试,另一人采用汇编语言编程并调试。
2、选用8255、8253以及相关外围芯片与开关量、发光二级管、扬声器组成输入输出电路。
3、使用8255的PC0连接到8259,使用微机中IRQ10中断,中断号是72H。
4、编程的两位同学学号末两位相加,得到的和数转换成二进制数,作为触发中断的开关信号状态。
如:
学号为×××××01和学号为×××××02的同学一组,中断触发条件为:
开关信号状态是03,即二进制数00000011。
5、报警时,发光二级管在两个设定状态下循环切换。
同组的两个同学各自的学号末两位对应的二进制数即是两个设定状态。
6、设计数据结构,记录报警音乐(自选)的音长和音阶信息,并使用8253的几个计数器实现音乐播放控制。
采用某一计数器输出音长信号,另一计数器输出音阶信号。
将音长信号连接到8255的PC4,程序对此信号进行查询,当进入一个新的音长信号周期时,设置对应的一个音阶信号;这样,程序不断查询PC4,控制选择不同的音长和音阶,并同时切换发光二极管显示状态。
7、不可损坏实验设备及器件。
二、设计目的
随着化学工业环境越来越复杂,声光报警器作为报警控制系统中一个重要部件,越来越多的被用户关注,在可燃气体环境中使用它能有效防止对现场人员的人生安危,有毒气体环境中现场人员中毒达到致命的事故屡见不鲜,现场安装防爆声光报警器能在第一时间提醒现场工作人员的危险性。
主要用于商店、店铺、私人车库等场所,当有人非法把卷帘门撬开时,卷帘门神便马上发出响亮报警声音,让非法入侵者无法得手,起到防盗报警作用。
产品即插即用,无需任何布线与专控。
还有其他各种各样的功能,总之,声光报警器具有很多的用途,因此学习简单的制作原理是很有必要的,是对以后踏入社会非常好的积累。
三、设计的具体实现
3.1模块分析
3.1.1数据采集中断服务程序
该子程序的功能是检测A口输入的是不是我们两个人的学号相加,如果连续检测50次都是等于学号相加的话,就进入中断子程序执行程序。
中断子程序里面包括关中断,标志自加1,从片中断结束,主片中断结束,开中断等5个部分。
3.1.2获取原中断向量
该部分的作用是获取原中断向量,并且把他保存下来,等到中断子程序执行完成以后,利用这个可以跳转回到中断发生的地址,继续执行别的程序。
3.1.3设置新中断向量
当前要执行的中断处理的相关信息,确保电脑能正确快速的找到当前需要执行的中断子程序。
3.1.4开中断设置
这部分包括打开从片的IRQ10和打开主片的IRQ2,为中断服务程序的进行做好准备。
3.1.5恢复原中断向量
将我们保存的原中断向量从堆栈里面出栈,从而为结束中断子程序且跳转回原来的断点做准备。
3.1.6关中断设置
这部分包括关闭从片的IRQ10和关闭主片的IRQ2,为中断服务程序的结束做好准备。
3.2流程图
N
3.3实验原理
1.通过接口电路将扬声器SPK、LED彩灯接入微机系统,采用CPU统一控制,满足设计要求
2.其设计原理可结合微机接口技术所学知识完成
3.4接线原理图
四、具体编码实现
4.1开发工具
IBM汇编语言
4..2端口设置
8255A:
300H~303H
8253A:
304H~307H
8251A:
308H~30BH
ADC0809:
30CH、30EH
DAC0832:
30FH
8237A:
主片0~0FH;从片0C0H~0DEH
8259A:
主片20H,21H;从片0A0H,0A1H
4.3与外设的连接
8255的A口同硬件的输入接口连接,是外界的输入能够读入芯片中
8255的B口同外设的LED灯相连接,保证外设的灯能正常闪亮
8255的C口pc0同8259的从片IRQ10和主片的IRQ2相连,确保当pc0=1的时候,能够进入中断子程序。
8255的C口中的pc3连通扬声器的与门,当pc3值为1的时候,扬声器能正常代开并工作。
8255的C口中的pc4连通8253的0号计数器的输出,保证当一个音长到了以后,就开始继续读下面得音频和音长。
4.4系统主要的代码实现
4.4.1中断子程序
interpretproc;中断程序模块,发声音
cli;关中断
movah,02h
movdl,31h
int21h
movah,02h
movdl,31h
int21h
callsound
moval,062h;发中断结束命令(OCW2)
out0a0h,al;从片结束中断
out020h,al;主片结束中断
sti;开中断
movdx,303h
moval,98h;8355控制命令字方式0,A口,C口上部输入
outdx,al
moval,00h
outdx,al
iret;中断返回
interpretendpinterp
4.4.2发声子程序
soundproc
leasi,FREQUENCY;频率有效地址
leadi,TIME;音长有效地址
movdx,303h
moval,10011000b
outdx,al;对8255初始化完成
moval,00000111b;开门控
outdx,al
movdx,307h
moval,01110110B
outdx,al
movax,11931;写初值保证1号计数器输出时100HZ
movdx,305h
outdx,al
moval,ah
outdx,al
movlamp,0
;对82531号计数器控制字的写完了
begin:
movbx,[si];取频率
movB,bx
addB,30h
movdx,B
;movah,02h
;int21h
cmpB,1
jzexitsound
movdx,307h
moval,10110110b;8253计数器2号计数器,方式3先读低位,在读高位。
outdx,al
movdx,12h
movax,34deh;除数
DIVbx;被除数
movdx,306h;商在AX中
outdx,al
moval,ah
outdx,al;对82532号计数器的计数初值
movdx,307h
moval,00010110b
outdx,al
movdx,304h;计数器0
movax,[di];取时间
outdx,al;计数器0赋初值
movdx,302h;C口
delay:
inal,dx;输入到al
testal,10h;判断第五位的pc4是否为1
jnzdelay;延时
addsi,2
adddi,2
inclamp
testlamp,00000001b
jzlp
movdx,300h;A口输出
moval,11111010B;5号
outdx,al
jmpexitlp
lp:
cmplamp,2
movdx,300h
moval,11111001B;6号
outdx,al
exitlp:
jmpbegin
exitsound:
movah,02h
movdl,30h
int21h
movdx,303h
moval,98h
outdx,al
movdx,303h
moval,00000110b
outdx,al;关声音
ret
soundendp
五、结论
音乐能够播放,灯能够随着音乐一起变化,基本上实现了实验的要求,但是关于中断程序的返回和结束还有问题,以后要进一步改善。
六、心得体会
经过这段时间在实验室的训练,我对微机原理与接口技术的知识有了更深一
步的了解,对于实验中用到的5255,8253,8259等芯片都有了较为深刻的认识,知道了如何使用这几个芯片,对于它们的初始化,赋初值,写命令字都有了较为熟悉的了解,对于8053,8055的端口地址以及命令字格式都已经差不多记下来了,使用8253芯片,主要是用来得到我们需要的音乐频率,因为系统默认的时钟频率太大了,所以计数器主要使用工作方式3来降低频率,8255工作方式控制字用来设定A、B口和C口的数据传送方向是输入还是输出,设定各口的工作方式是3种方式的哪一种。
对于8253芯片作为计数器的用法基本上已经掌握,相关的操作命令能相对熟练的运用,对于8255芯片作为并行输入输出的本质有了一定的了解,对8255的A口,B口,C口做不同的输入输出工作的具体应用有了一定的经验,同时对8059做中断处理操作时候相关命令有了一定的了解。
Intel8259拥有3种操作命令,即OCW1~OCW3,这些命令在Intel8259启动后,可以多次运行。
因此,在编写用户程序时只使用这3种操作命令。
其中OCW1是屏蔽中断源操作命令,对应芯片奇地址(A0=1),8bit(D7~D0)可读/写。
其中:
Di=1表示阻止第i个中断源向CPU请求中断。
否则为允许。
而OCW2是中断结束操作命令,对应芯片偶地址(A0=0),8bit(D7~D0)可写。
通过他们的使用可以实现开光中断,进而进入终端子程序。
对于中断我也加深的认识,学到了不少的东西。
首先设置从片的中断源号是IRQ10,中断类型是72h,主片的中断源号是IRQ2,中断类型也是70h,同时8059也能和其他芯片一起来实现相对复杂的工作,使用8255的PC0连接到8259,就可以利用将pc0设置的1的方式,直接实现中断的调用实现,这样就可以控制中断子程序的处理过程了。
在中断子程序里面加上调用控制发出音乐的子程序,并且加以调用,就能实现程序运行时,一旦8位开关信号量状态满足设定条件,就触发中断,使发光二级管按规律闪烁,同时扬声器播放一段音乐。
发生和灯变幻的程序写在一起,他们执行的时候就差不多同时执行,从而实现了音乐节拍和二极管的变化的同步变化。
七、附录
8255引脚图
参数名称
符号
测试条件
最大规范值
最小规范值
输入低电平电压
VIL
0.8V
-0.5V
输入高电平电压
VIH
Vcc
2.0V
输入低电平电压(数据总线)
VOL
IOL=2.5MA
0.45V
输入低电平电压(外部端口)
VOL
IOL=1.7MA
0.45V
输入高电平电压(数据总线)
VOH
IOH=-400MA
2.4V
输入高电平电压(外部端口)
VOH
IOH=-200MA
2.4V
达林顿驱动电流
IDAR
REXT=750VEXT=1.5V
-0.4MA
1.0MA
电源电流
ICC
120MA
输入负载电流
IIL
I=Vcc—0V
+10MA
-10MA
输出浮动电流
IOFL
Vout=Vcc--0
+10MA
-10MA
8253内部结构
名称参数
符号
测试条件
最大
典型
最小
单位
输入低电压
Vil
0.8
-0.5
V
输入高电压
Vih
Vcc+0.5
2.2
V
输出低电压
Vol
0.45
V
输出高电压
Voh
2.4
V
输入负载电流
Iil
Vin=Vcc~0
+/-10
uA
输出浮动漏电
Iofl
Vout=Vcc~0.45
+/-10
uA
电流
Icc
140
mA
八、参考文献
[1]范立南.微型计算机原理及应用[M].沈阳:
东北大学出版社,2004.2:
281-289
[2]楼顺大,周佳社.微机原理与接口技术[M].北京:
科学出版社,2006.8
[3]潘新民,王燕芳.微型计算机控制技术[M].北京:
电子工业出版社,2003
[4]陈辉,傅越千.微机原理与接口技术[M].北京:
北京
大学出版社,2007.2
[5]周明德,蒋本珊.微机原理与接口技术[M].人民邮电出版社,2002.5
[6]王鹛.基于PC机的函数发生器设计与实现[J].电脑知识与技术,2008,01(9)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 彩灯 课程设计