实 验 报 告
EXPERIMENT REPORT
学号 2017317210325
专业 计科1703
科目 微机原理与接口技术
信 息 学 院
COLLEGE OF INFORMATIC
1 项目介绍
项目的名称为电子琴益智发音装置,主要通过8253,8255,0808,8086,0832实现。装置直观图如下所示:
项目的设计用途:
- 当小孩子或者音乐学习者拨动开关时,会发出不同音调的声音,同时与之相对应的灯就会亮起,并显示相应地简谱。
- 为了加深大家学习的印象,加入了示波器,当波动开关的时候,波形情况不一样。
- 总线上的数据经过初值设置,并在第二个示波器上显示不同频率的方波。
- 输出的频率转换成具体的电压值并转成数字。
2 芯片介绍
1.总述:8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。
设置8255的控制口地址和PB口输入的功能。
这是设置PB端口的地址并读取PB口开关的状态。
2.总述: 8253芯片是可编程计数器/定时器。这种芯片外形引脚都是兼容性的。8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
按音频的数据设置定时器常数,8253的控制字设置为计数器1,16位二进制,方式三的方波模式。对于时间常数的书写时先写低八位,再写高八位。
3.总述:ADC0808 是含8 位A/D 转换器、8 路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。ADC0808的精度为 1/2LSB。在AD 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关数组的256 电阻分压器,以及一个逐次通近型寄存器。8 路的模拟开关的通断由地址锁存器和译码器控制,可以在8 个通道中任意访问一个单边的模拟信号。
因为0808芯片的特殊性,故不需要单独的编码。
4.总述:DAC0832是8位的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
CALL OUTTONE
MOV DX,208H
MOV AL,00H
OUT DX,AL
CALL DELAY
MOV AL, 00FH
MOV DX, 208H
OUT DX,AL
CALL DELAY
通过送入0832端口不同的数据来显示方波的情况。
各个芯片地址译码:
名称 A7A6A5 A4A3A0 A2A1 地址
8255控制端口 1·11 000 11 E6H
8255的A端口 111 000 00 E0H
8255的B端口 111 000 01 E2H
8255的C端口 111 000 10 E4H
8253控制端口 111 100 11 F6H
8253的计数器 111 100 01 F2H
3 功能实现
在电子琴发音功能中,我们已经将开关状态通过8255的B端口读入。在程序内部,我们对开关状态进行一个判断,然后为不同的状态分配一个不同的数字,在8086的控制下,通过数据总线将这个数字传给8253,用以产生不同的频率,从而发出不同的声音。在连线时,D0~D7接数据总线,A0、A1接总线的A1、A2用于片内地址的选择,CS与译码器Y4 连接,WR、RD通过标号与8086的相应引脚连接。同时示波器接到输出端口进行输出。
在8255的B端口中,接到一个74LS145 八三编码器进行编码并显示数字。
在0832这个芯片下,通过写入不同的ax,送入到芯片中,并通过示波器显示不同的波形。
74LS245是用来触发灯进行发光的芯片,当按下开关的时候,触发对应的灯。
4 总结
- 代码问题:由于一开始并没有理解书上的图只顾连线,所以并没有发现代码错误而导致CS片选并没有片选上。于是我们怀疑是线路的问题,多次检查之后并没有问题,冷静分析发现是控制字写错了,而导致的并没有片选上。
- 内存地址问题:由于分配内存地址的空间为0x01000, 并没有报错误,但运行的时候却会导致输入的时候出现问题。于是将内存分配的地址空间改为0x10000就可以了。
- 示波器问题:由于想要用两个示波器去显示两个波形,但由于输出波需要调用delay以及示波器会出现卡顿的问题,当输入两个波的时候声音的音调延迟较高,仍未解决。
- 模拟信号问题:想去找一个将频率映射到模拟信号的器件结果并未找到。
- 总结:通过这次实验首先加固了自己对芯片的学习与思考,加固了自己对之前汇编语言的学习,学会了对接口各个功能的理解及会书写控制字;其次通过学习一个之前完全没用过的软件增加自己的学习能力及动手能力;最重要的是在实践过程从立题到后来一个一个功能的实现收获到了一份快乐。