微机原理与接口技术8254电子发声器 课程设计 BY凉.docx
《微机原理与接口技术8254电子发声器 课程设计 BY凉.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术8254电子发声器 课程设计 BY凉.docx(16页珍藏版)》请在冰豆网上搜索。
![微机原理与接口技术8254电子发声器 课程设计 BY凉.docx](https://file1.bdocx.com/fileroot1/2022-11/17/815a2b92-b951-407c-9773-f59c763966fd/815a2b92-b951-407c-9773-f59c763966fd1.gif)
微机原理与接口技术8254电子发声器课程设计BY凉
重庆大学
课程设计报告
课程名称:
微机原理与接口技术
设计题目:
和谐之音发生器
院系:
电气信息学院
班级:
2007级
*******
设计时间:
2009年12月
一概述
1.1学习目的
“微机原理与接口技术”是电气工程及其自动化专业的一门重要的专业基础课程。
我们通过该门课的学习,知道了处理器的工作原理,微型计算机的基本结构,接口技术及汇编语言程序设计,为后续的课程的学习和今后的工作打下坚实的基础。
通过实验可以培养学生利用计算机技术和编程手段分析,解决专业领域的各种问题的能力和意识,并进一步感受微机发展的微机发展的新技术和新方法。
1.2学习计算机的意义
电子计算机是一种能自动高速地进行大量运算的电子机器。
电子计算机的出现和发展,是科学技术和生产力的卓越成就之一,反过来,它也极大地促进了科学技术和生产力的发展。
微型计算机的发展前景是不可估量的。
微型计算机功能强,体积小,使用方便,可靠性高,价格低廉,因而应用范围非常广泛,航天工业,交通运输,医药卫生甚至家庭生活及教学仪器等方面都广泛地使用了微型计算机。
毫无疑问,今后微型计算机在人类社会和日常生活中的影响将会越来越大。
1.3课程设计目的
1.掌握82548255的使用和编程方法。
2.通过用82548255设计电子琴及它们的输入输出方式和它们的控制字。
综合运用本学期所学的关于汇编的知识,在实验中进一步熟悉本学期所学的课程并结合实际生活,掌握汇编的应用。
3.通过此次编程的练习能够熟练的掌握键盘的内部结构及其如何编码键盘,才能使之于对应的芯片准确结合并达到实验的要求,以后再遇到类似的问题时如何的分析,编码与设计。
二总体方案设计
课程设计任务是设计一个电子琴发声程序,并在运行时通过实验箱上的扬声器发声,并且当按下数字1~14时,依次发出1,2,3,4,5,6,7的低音和1,2,3,4,5,6,7的中音。
并在实验箱上的发声器上发声,这肯定需要有发声程序,驱动发声程序,还有键盘扫描程序,及为了能够听见清脆的字符音还得对程序进行必要的延时。
利用8254芯片所提供转化后的频率送到发声单元进行发声及8255芯片送提供的输入输出功能,来完成从键盘的输入到发声装置发声的控制。
三硬件设计
3.18254原理
8254是Intel公司生产的课编程间隔定时器。
是8253的改进型,比8253具有更优良的性能。
8254具有一下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高技数频率为10MHZ(8253为2MHZ)
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
图3.1是8254的内部结构框图和引脚图,它是由与CPU的的接口,内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
图3.18254内部结构框图和引脚图
表3.1,表3.2,表3.3所示
表3.18254控制字的格式
表3.28254读出控制字格式
表3.38254状态字制格式
3.28255的工作原理:
双向选通工作方式。
8255的内部结构及引脚如图3.2所示,
8255工作方式控制字和C口按位置位/复位控制字如图3.3所示
图3.28255的内部结构及引脚
图3.38255工作方式控制字和C口按位置位/复位控制字
音符及所对应的频率表:
3.3键盘工作原理
键盘示意图及键值如图3.4
图3.4键盘示意图
3.4总体程序框图
3.4.18254部分接线图
图3.58254芯片接线图
。
3.4.28255部分接线图
图3.68255部分接线图
四.电子发声原理
例如输入时钟采用1MHZ,要得到800HZ的频率,计数初值即为1000000/800。
音符与表的对照关系如上表所示。
对于每一个音符的演奏时间,可以通过软件延时来处理。
首先确定单位延时子程序(根据CPU的频率不同而有所变化)。
然后确定每个音符演奏需要几个单位延时,将此值送入寄存器,再调用延时子程序即可。
五.软件设计
5.1程序流程图
图5.1的程序流程图
5.2各子程序功能
1.为8255和8254所定义的端口地址:
I0Y0EQU06C0H
MY8254_COUNT0EQUI0Y0+00H
MY8254_COUNT1EQUI0Y0+02H
MY8254_COUNT2EQUI0Y0+04H
MY8254_MODEEQUI0Y0+06H
MY8255_AEQU0640H
MY8255_BEQU0642H
MY8255_CEQU0644H
MY8255_MODEEQU0646H
2..频率表及所对应的时间表:
FREQ_LISTDW262H,294H,330H,349H,392H,440H,496H
DW523H,587H,659H,698H,784H,880H,988H
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
3.定义8255和8254的控制字
MOVDX,MY8255_MODE
MOVAL,81H
OUTDX,AL
MOVDX,MY8254_MODE
MOVAL,36H
OUTDX,AL
4.CCSCAN子程序实现取出按键值并输入A口(清屏子程序)
CCSCAN:
MOVAL,00H
MOVDX,MY8255_A
OUTDX,AL
MOVDX,MY8255_C
INAL,DX
NOTAL
ANDAL,0FH
RET
5.Play输出发音的子程序
PLAYPROC
MOVAH,0
MOVSI,AX
SHLSI,1
MOVDX,0FH
MOVAX,4240H
DIVWORDPTR[SI]
MOVDX,MY8254_COUNT0
OUTDX,AL
MOVAL,AH
OUTDX,AL
RET
PLAYENDP
6.延时子程序
DALLYPROC
D0:
MOVCX,0010H
D1:
MOVAX,02H
D2:
DECAX
JNZD2
LOOPD1
DECDL
JNZD0
RET
DALLYENDP
7.按键扫描功能
COLUM:
MOVAL,CH
MOVDX,MY8255_A
OUTDX,AL
MOVDX,MY8255_C
INAL,DX
L1:
TESTAL,01H
JNZL2
MOVAL,00H
JMPKCODE
L2:
TESTAL,02H
JNZL3
MOVAL,04H
JMPKCODE
L3:
TESTAL,04H
JNZL4
MOVAL,08H
JMPKCODE
L4:
TESTAL,08H
JNZNEXT
MOVAL,0CH
KCODE:
ADDAL,CL
CALLPLAY
PUSHAX
KON:
CALLDALLY
CALLCCSCAN
JNZKON
POPAX
JMPBEGIN1
六.源程序清单
I0Y0EQU06C0H
MY8254_COUNT0EQUI0Y0+00H
MY8254_COUNT1EQUI0Y0+02H
MY8254_COUNT2EQUI0Y0+04H
MY8254_MODEEQUI0Y0+06H
MY8255_AEQU0640H
MY8255_BEQU0642H
MY8255_CEQU0644H
MY8255_MODEEQU0646H
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
FREQ_LISTDW262H,294H,330H,349H,392H,440H,496H
DW523H,587H,659H,698H,784H,880H,988H
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,MY8255_MODE
MOVAL,81H
OUTDX,AL
MOVDX,MY8254_MODE
MOVAL,36H
OUTDX,AL
BEGIN1:
CALLCCSCAN
JNZINK1
JMPBEGIN1
INK1:
CALLCCSCAN
JNZINK2
JMPBEGIN1
INK2:
MOVCH,0FEH
MOVCL,00H
COLUM:
MOVAL,CH
MOVDX,MY8255_A
OUTDX,AL
MOVDX,MY8255_C
INAL,DX
L1:
TESTAL,01H
JNZL2
MOVAL,00H
JMPKCODE
L2:
TESTAL,02H
JNZL3
MOVAL,04H
JMPKCODE
L3:
TESTAL,04H
JNZL4
MOVAL,08H
JMPKCODE
L4:
TESTAL,08H
JNZNEXT
MOVAL,0CH
KCODE:
ADDAL,CL
CALLPLAY
PUSHAX
KON:
CALLDALLY
CALLCCSCAN
JNZKON
POPAX
JMPBEGIN1
NEXT:
INCCL
MOVAL,CH
TESTAL,08H
JZKERR
ROLAL,1
MOVCH,AL
JMPCOLUM
KERR:
JMPBEGIN1
CCSCAN:
MOVAL,00H
MOVDX,MY8255_A
OUTDX,AL
MOVDX,MY8255_C
INAL,DX
NOTAL
ANDAL,0FH
RET
PLAYPROC
MOVAH,0
MOVSI,AX
SHLSI,1
MOVDX,0FH
MOVAX,4240H
DIVWORDPTR[SI]
MOVDX,MY8254_COUNT0
OUTDX,AL
MOVAL,AH
OUTDX,AL
RET
PLAYENDP
D