微机原理课设电子琴8253 8255.docx

上传人:b****5 文档编号:8200666 上传时间:2023-01-29 格式:DOCX 页数:11 大小:109.02KB
下载 相关 举报
微机原理课设电子琴8253 8255.docx_第1页
第1页 / 共11页
微机原理课设电子琴8253 8255.docx_第2页
第2页 / 共11页
微机原理课设电子琴8253 8255.docx_第3页
第3页 / 共11页
微机原理课设电子琴8253 8255.docx_第4页
第4页 / 共11页
微机原理课设电子琴8253 8255.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

微机原理课设电子琴8253 8255.docx

《微机原理课设电子琴8253 8255.docx》由会员分享,可在线阅读,更多相关《微机原理课设电子琴8253 8255.docx(11页珍藏版)》请在冰豆网上搜索。

微机原理课设电子琴8253 8255.docx

微机原理课设电子琴82538255

一、内容摘要

设计一个电子琴。

利用数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调。

二、课程设计的目的和意义

1、进一步掌握定时器编程和应用。

2、了解微机利用定时器产生音乐的基本方法。

三、课程设计的要点和内容

1、根据音阶频率表,利用定时器可以产生相应频率的脉冲信号,不同频率的脉冲信号经驱动电路放大后,就会发生不同的音调。

2、对于每个按键的音调发音时间由软件延时控制,如键一直按下,就会连续发音各音阶标称频率值:

本次课设要求设计一个电子琴,作为一个乐器,其最基本的功能就是能够发出一个音阶的所有声音,即:

do,re,mi,fa,so,la,xi,dou,8个音符,不同的声音的本质就是不同频率的波,每个音符都对应着固定的频率;而声音的长短即是波的个数。

所以得出的一条思路是:

用汇编语言来产生一系列频率不同的方波信号,找到各个音符的频率,然后用汇编语言产生同频信号,并将该信号输入到扬声器,如果驱动功率不够则可以加放大电路。

四、硬件电路设计

1、单元电路设计:

硬件结构应结合软件方案一并考虑,做到软件、硬件功能相匹配。

在DJ-598K三合一单片机微机试验仪平台上,硬件设计参考方案如下:

2、电路工作原理:

2.1可编程8253计数器

(1)在计算机的引用中,常常要对外设的某些信号进行计数,希望计算机既能控制技术的过程,还有能读取计数的结果,进而作为控制或管理的决策依据。

如果被计数的信号有了准确的固定的周期,就形成了定时器。

 

(2)图为8253的内部组成和引脚。

如图所示,与外部的连接线主要分布在右侧的三个部分,即:

三个计数器。

其中CLK为计数通道的输入脉冲信号,对于8253来说的频率范围是0—2MHz。

GATE为门控信号,用来启动或禁止计数工作,高电平有效,不同的工作方式,作用也不同。

Out为输出信号,用来输出波形,不同的工作方式,不同的工作方式,输出的波形也不同;而与CPU的的内部接线主要分布在左侧的三个部分。

其中,D0—D7为8位三态数据线,可直接连接到CPU的数据总线上,主要作用有:

是实现与CPU的数据传输通道,接受控制字或计数初值,读取计数通道中的当前计数值。

CS—A1部分为读/写控制逻辑,主要用于接受CPU的控制信息,译码后产生整个器件内部的工作的控制信息——RD为读信号线,低电平有效;WR写信号线,低电平有效;CS为片选信号,低电平有效,只有CS有效的前提下,才会执行读或写操作;A1,A0为端口选择地址线,用于对右侧三个技术通道和控制寄存器进行寻址。

(3)8253的主要工作原理是:

8253其本质为减一计数器,其工作过程为:

首先需要设置工作方式,然后将工作方式处置置入计数初值锁存器;启动计数后,CPU向8253的计数初值锁存器赋初值,每来一个CLK信号,减一计数器减1,直到减到0或1时,就发出输出信号OUT输出。

2.274LS393

(1)74LS393为一个双4位二进制计数器,主要用于二进制计数。

(2)1CPVCC

1RD2CP

1QA2RD

1QB2QA

1QC2QB

1QD2QC

GND2QD

 

五、软件开发

1、系统程序模块图及说明

 

 

六、联机调试

1、硬件调试:

PB0作为定时器门控信号,OUT1发出音频信号,驱动喇叭。

2、软件调试及调试数据:

将在硬件调试设计满足预期要求以后,把软件加载到硬件中,并对该系统进行功能测试。

 

七、程序清单

CODESEGMENT;DZQ.ASM

ASSUMECS:

CODE,ds:

code

CONTROLequ43h//CONTROL为43h

COUNT0equ40h//COUNT0为40h

COUNT1equ41h//同上

COUNT2equ42h//同上

IOCONPTEQU0FF2BH

IOBPTEQU0FF29H

IOAPTEQU0FF28H

PAEQU0FF20H;字位口

PBEQU0FF21H;字形口

PCEQU0FF22H;键入口

ORG18F0H//下一条偏移语句的偏移地址

START:

JMPSTART0//跳到STARTO

BUFDB?

?

?

?

?

?

//在DB中存?

KZDB?

ltimedb?

lkeydb?

ZPDW?

data1:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h

db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1H

data3:

dw2273,2024,1805,1704

dw1517,1353,1205,1136

START0:

movax,cs//cs貌似是什么断点

movds,ax

CALLBUF1//调用子程序,BUF1为其地址

MOVAL,88H//设置控制字,使用工作方法4

MOVDX,IOCONPT//DX为控制字口地址

OUTDX,AL//送控制字

movdx,IOBPT//设置计数器0口地址

moval,00//数值锁存。

outdx,al

movzp,offsetbuf

redikey:

calldispkey//调用dispkey

cmpKZ,09h//kz-09h,设置条件标志位

JNCredikey//跳转到redikey

cmpkz,01h//kz-01h,设置条件标志位

jcredikey//跳到redikey

movbx,zp//

moval,kz

mov[bx],al

cmpbx,offsetbuf+5

jzzp1

incbx

movzp,bx

jmpouttone

zp1:

movzp,offsetbuf

outtone:

movdx,IOBPT

moval,0ffh

outdx,al

moval,kz

movah,00h

decax

shlax,1

movbx,offsetdata3

addbx,ax

movax,[bx]

callt8253

movcx,20h

con1:

pushcx

calldisp

popcx

loopcon1

movdx,IOBPT

moval,00

outdx,al

jmpredikey

t8253:

pushax

moval,76h;计数器1,16位二进制,方式3。

movdx,CONTROL//

outdx,al//送控制字

popax//ax出栈

movdx,COUNT1//

outdx,al

moval,ah

outdx,al

ret

;-------------------------

dispkey:

calldisp

callkey

movah,al;newkey

movbl,ltime;ltime

movbh,lkey;lkey

moval,01h

movdx,PA;0ff21h

outdx,al

cmpah,bh

movbh,ah;bh=newkey

movah,bl;al=time

jzdisk4

movbl,88h

movah,88h

disk4:

decah

cmpah,82h

jzdisk6

cmpah,0eh

jzdisk6

cmpah,00h

jzdisk5

movah,20h

decbl

jmpdisk7

disk5:

movah,0fh

disk6:

movbl,ah

movah,bh

disk7:

movltime,bl

movlkey,bh

movKZ,bh

moval,ah

ret

key:

moval,0ffh

movdx,PB

outdx,al

movbl,00h

movah,0feh

movcx,08h

key1:

moval,ah

movdx,PA

outdx,al

rolal,01h

movah,al

nop

nop

nop

nop

nop

nop

movdx,PC

inal,dx

notal

nop

nop

andal,0fh

jnzkey2

incbl

loopkey1

jmpnkey

key2:

testal,01h

jekey3

moval,00h

jmpkey6

key3:

testal,02h

jekey4

moval,08h

jmpkey6

key4:

testal,04h

jekey5

moval,10h

jmpkey6

key5:

testal,08h

jenkey

moval,18h

key6:

addal,bl

cmpal,10h

jncfkey

movbl,al

movbh,0h

movsi,offsetdata2

moval,[bx+si]

ret

nkey:

moval,20h

fkey:

ret

data2:

db07h,04h,08h,05h,09h,06h,0ah,0bh

DB01h,00h,02h,0fh,03h,0eh,0ch,0dh

DISP:

MOVAL,0FFH;00H

MOVDX,PA

OUTDX,AL

MOVCL,0DFH;20H;显示子程序,5ms

MOVBX,OFFSETBUF

DIS1:

MOVAL,[BX]

MOVAH,00H

PUSHBX

MOVBX,OFFSETDATA1

ADDBX,AX

MOVAL,[BX]

POPBX

MOVDX,PB

OUTDX,AL

MOVAL,CL

MOVDX,PA

OUTDX,AL

PUSHCX

DIS2:

MOVCX,0a0H

LOOP$

POPCX

CMPCL,0FEH

JZLX1

INCBX

RORCL,1

JMPDIS1

LX1:

MOVAL,0FFH

MOVDX,PB

OUTDX,AL

RET

BUF1:

MOVBUF,11H

MOVBUF+1,10H

MOVBUF+2,10H

MOVBUF+3,10H

MOVBUF+4,10H

MOVBUF+5,10H

RET

CODEENDS

ENDSTART

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1