8086+8255A+8253实现电子琴Proteus仿真

本项目使用8086处理器配合8255A和8253芯片实现了一个电子琴的功能仿真。通过Proteus软件进行电路设计与仿真,程序控制8253产生不同频率的方波信号,再通过8255A控制扬声器发出相应的声音。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8086+8255A+8253实现电子琴Proteus仿真

仿真截图

在这里插入图片描述

代码

CODE SEGMENT
DATA SEGMENT
KEY2F DB 0,38,34,30,29,26,23,20,19
        ;262, 294, 330, 347, 392, 440, 494, 524;均采用低音
        ;计算方式为1/f/0.1ms
KEY DB 1,2,3,5,3,2,1,6,1,3,5,2,1,2,9
	DB 3,3,3,3,1,2,3,5,3,2,1,6,1,9
	DB 3,5,2,7,6,6,6,6,1,6,2,3,5,3,6,9
	DB 2,1,1,6,1,6,2,3,6,5,2,3,3,3,6,1,9
	DB 6,2,3,5,3,6,2,1,1,6,1,5,2,6,5,9
	DB 6,6,6,6,1,3,2,3,5,3,6,2,1,1,6,1,10
PORT0 EQU 288H
PORT1 EQU 28AH
PORT2 EQU 28CH
PORTCTL3 EQU 28EH
PORTA EQU 280H
PORTB EQU 282H
PORTC EQU 284H
PORTCTL5 EQU 0286H
DATA ENDS

MAIN PROC FAR
START:
ASSUME CS:CODE,DS:DATA;段分配
MOV AX, DATA
MOV DS, AX
MOV SI, 0
BEG:
MOV BX, OFFSET KEY2F;求音阶对应频率、初值
MOV AL, KEY[SI]
CMP AL, 9
JNZ NEXT1
CALL DELAY
CALL DELAY
CALL DELAY
NEXT1:
CMP AL, 10
JE EXIT
XLAT
MOV KEY[SI], AL

MOV DX, PORTCTL3;写8254
MOV AL, 00010110B;00端口 写低字节 方式3 2进制计数
OUT DX, AL
MOV DX, PORT0
MOV AL, KEY[SI]
OUT DX, AL

MOV DX, PORTCTL5;写8255A
MOV AL, 10001011B;A口输出其他输入
OUT DX, AL
MOV DX, PORTA;开喇叭
MOV AL, 03H
OUT DX, AL

CALL DELAY

MOV DX, PORTA;关喇叭
MOV AL, 00H
OUT DX, AL

INC SI
JMP BEG

EXIT:
;MOV AH, 4CH
;INT 21H
MAIN ENDP

DELAY PROC NEAR;延时函数
PUSH SI
PUSH CX
MOV SI, 1
DELAYNEXT1:
MOV CX, 0FFFFH
DELAYNEXT2:
LOOP DELAYNEXT2
DEC SI
JNZ DELAYNEXT1
POP CX
POP SI
RET
DELAY ENDP

CODE ENDS
END MAIN

实现过程

8086控制,每次循环取一个音阶对应的8253计数初始值,然后写入8253,然后通过8255A控制8253开始产生对应频率方波,然后通过喇叭产生声音。
一轮循环结束后,取下一个音阶对应的初始值,周而复始。
在这里插入图片描述

实际效果

电子琴演示

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值