⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 电子琴.txt

📁 微机原理与接口技术课程设计实验报告 实验一 电子琴
💻 TXT
字号:
微机原理与接口技术课程设计实验报告


计算机0413班
秦鹏程 
200425601236
实验一  电子琴
一、实验目的
1. 通过D/A转换器产生模拟信号,使PC机作为简易电子琴
2. 了解利用数模转换器产生音乐的基本方法
二、实验内容
实验电路如图所示,8253的CLK0接1MHz时钟,GATE0接+5V,OUT0接8255的PA0,J1接喇叭,编程使计算机的数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音阶。
三、编程提示
1.对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出,给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波,对于音乐,每个音阶都有确定的频率。
各个音阶标称频率值:
音阶     频率:(单位Hz)
1     261.1
2     293.7
3     329.6
4     349.2
5     392.0
6     440.0
7     493.9

2.产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向A/D转换器输出数据的时间间隔,例如:发“1”频率为261.1Hz周期为1/261.1=3.83.ms,输出数据的时间间隔为3.83/32=0.12ms,定时时间可以由8253配合8255实现,按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。

3.程序流程
 
 
4.源程序
data segment
data1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh;正弦波数据数据区
  db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h
  db 80h,66h,4eh,38h,25h,15h,09h,04h
  db 00h,04h,09h,15h,25h,38h,4eh,66h
time db 120,106,94,89,79,70,63,59;发不同音时的计数器初值
msg  db 'Press 1,2,3,4,5,6,7,8,Esc:',0dh,0ah,'$'
num  db ?  ;8253计数器初值的序号
data ends

code segment
  assume cs:code,ds:data
start:
  mov ax,data
  mov dx,offset msg
  mov ah,9
  int 21h  ;显示提示信息
sss: 
  mov ah,7
  int 21h  ;从键盘接收字符不回显
  cmp al,1bh
  je exit  ;若为Esc键,则转Exit
  cmp al,31h
  jl sss
  cmp al,38h
  jg sss  ;若不在'1'~'8'之间转sss
  sub al,31
  mov num,al ;求出相应的时间常数的序号
  mov cx,60 ;取次个正弦波数据
ddd:
  mov si,0
lll:
  mov al,data[si]  ;取正弦波数据
  mov dx,290h
  out dx,al   ;放音
  call delay   ;调延时子程序
  inc si
  cmp si,32   ;是否取完个数据
  jl lll
  loop ddd   ;总循环次数是否完,若没有,则继续
  jmp  sss
exit:
  mov ah,4ch
  int 21h
delay proc near   ;延时子程序
ccc: mov bx,offset time
  mov dx,283h
  mov al,10h
  out dx,al
  mov dx,28bh   ;设A口输入
  mov al,9bh
  out dx,al
  mov al,num   ;取相应的时间常数
  xlat
  mov dx,280h
  out dx,al   ;向计数器输出
kkk:
  mov dx,288h
  in al,dx   ;从A口读一个字节
  test al,01   ;判PA0口是否为
  jz kkk
  ret     ;子程序返回
delay  endp
code ends
end  start
四、实验现象
在DOS环境下,用汇编程序进行汇编,生成DZQ.EXE可执行程序,并运行可执行程序。分别按下1、2、3、4、5、6、7分别发出哆、唻、咪、发、唆、喇、嘁等键音。
五、实验体会
本次实验的主要难处在于汇编程序的编写,但编译通过后看到运行的结果便感到由衷的高兴。
在接好电路,运行程序后,注意按下键后,声音延长作用的长短的变化。同时增大取正弦波,可以看到延长变大,减小次数,则声音变短,这正是由于取了正弦波数变了的原因。说明正弦波的个数使声音延长时间的关键。
同时我深入了解了8253等芯片的工作方式、作用,锻炼了自己的动手能力和分工协作能力,使我对微机接口课程产生了更大的兴趣。

 

 

实验二  步进电机控制
一、实验目的
1. 了解步进电机控制的基本原理
2. 掌握控制步进电机转动的编程方法
二、实验内容
1.按实验图接线路,利用8255输出脉冲序列,开关K0~K6控制步进电机转速,K7控制步进电机转向,实验盒上步进电机插头接实验台上J4,8255CS接288H~28FH,PA0~PA3接BA~BD;PC0~PC7接K0~K7.
2.编程:当K0~K6中某一开关为“1”(向上拨)时步进电机启动。K7向上打电机正转,向下打电机反转.
三、实验说明
步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进电机式旋转,驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。(具体技术资料在此从略)
实验可通过不同长度的延时来得到不同的频率的步进电机输入脉冲,从而得到多种步进速度。
流程图如下:
 


实验源程序
P55A equ  288h ;8255A口输出
P55C equ  28ah ;8255C口输入
P55CTRL equ  28bh ;8255控制口

DATA SEGMENT
BUF  db 0
MES  DB 'K0-K6 ARE SPEED CONTROL',0AH,0DH
  DB  'K6 IS THE LOWEST SPEED',0AH,0DH
  DB  'K0 IS THE LOWEST SPEED',0AH,0DH
  DB  'K7 IS THE DIRECTION CONTROL',0AH,0DH
DATA ENDS

CODE  SEGMENT
ASSUME CS:CODE,DS:DATA
START:
 MOV AX,CS
 MOV DS,AX
 MOV AX,DATA
 MOV DS,AX
 MOV DX,OFFSET MES
 MOV AH,09H
 INT 21H
 MOV DX,P55CTRL
 MOV AL,8BH
 OUT DX,AL  ;8255C输入,A输出
 MOV BUF,33H

OUT1:
 MOV AL,BUF
 MOV DX,P55A
 OUT DX,AL
 MOV AH,1
 INT 16H
 JE IN1   ;有无键按下
 MOV AH,4CH
 INT 21H
IN1:
 MOV DX,P55C
 IN AL,DX  ;读开关状态
 TEST AL,01H
 JNZ K0
 TEST AL,02H
 JNZ K1
 TEST AL,04H
 JNZ K2
 TEST AL,08H
 JNZ K3
 TEST AL,10H
 JNZ K4
 TEST AL,20H
 JNZ K5
 TEST AL,40H
 JNZ K6
 
STOP:
 MOV DX,P55A
 MOV AL,0FFH
 JMP OUT1
 
K0:
 MOV BL,10H
 
SAM:
 TEST AL,80H  ;K7是否为
 JZ ZX0
 JMP NX0
 
K1:
 MOV BL,18H
 JMP SAM
K2:
 MOV BL,20H
 JMP SAM 
K3:
 MOV BL,40H
 JMP SAM
K4:
 MOV BL,80H
 JMP SAM
K5:
 MOV BL,0C0H
 JMP SAM
K6:
 MOV BL,0FFH
 JMP SAM
ZX0:
 CALL DELAY
 MOV AL,BUF
 ROR AL,1  ;循环右移
 MOV BUF,AL
 JMP OUT1
NX0:
 CALL DELAY
 MOV AL,BUF
 ROL AL,1  ;循环左移
 MOV BUF,AL
 JMP OUT1
DELAY PROC NEAR
DELAY1:
 MOV CX,05A4H
DELAY2:
 LOOP DELAY2
 DEC BL
 JNZ DELAY1
 RET
DELAY ENDP
CODE ENDS
END START
四、实验体会
 在源程序中,通过改变buf1,buf2的赋值,可以改变电机的转速,通过这样可以调节电机的转速。Buf2与buf1的比值越大,则电机的转速越高。



 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -