微机原理课设Word文档格式.docx
- 文档编号:18897095
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:30
- 大小:262.83KB
微机原理课设Word文档格式.docx
《微机原理课设Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理课设Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
用于产生秒脉冲。
8255并口:
用做接口芯片,与数码管相连
2.3硬件接线图
输出
硬件接线图如图2.1所示。
D0PB0
D1PB1
D28
D32
D45
D55
D6芯
D7片
WR
RDPA0
CSPA1
A0
A1
XD0
XD1
XD2系
XD3统
XD4总
XD5线
XD6
XD7
IOW#
IOR#
IOY3IOY1
XA1
XA2
Clk
+5V
D0
D1
D28
D32
D45
D54
D6芯
D7片
WR
RD
CS
A0
A1
CLK0
OUT0
GATE0
输入
扬声器
图2.1硬件接线图
2.4设计流程图
软件流程图如图2.2所示。
图2.2软件流程图
3主要芯片介绍
3.18254芯片
3.1.1定时/计数器8254
在微机及控制系统中,经常要用到定时信号。
如系统的日历时钟,动态存储器刷新。
对外部执行机构控制时也需要定时中断、定时检测、定时查询等。
定时的方法主要是两种:
软件定时:
利用指令的执行时间设计循环程序,使CPU执行延迟子程序的时间就是定时时间。
缺点:
执行延迟时,CPU一直被占用,降低了CPU的效率。
硬件定时:
用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间
延迟。
突出优点为计数时不占用CPU时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU效率。
1.主要功能:
⑴每片上有3个独立的16位的减计数器通道。
⑵对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。
⑶每个通道都有6种工作方式,都可以通过程序设置或改变。
⑷每个计数器的速率可高达2MHz。
最高的计数时钟频率为2.6MHz。
2.既可作定时器又可作计数器:
⑴计数:
计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,由OUT端输出一个标志信号。
⑵定时:
计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。
除上述典型应用外,8254还可作频率发生器、分频器、实时钟、单脉冲发生器等。
3.1.28254内部结构
8254的内部结构如图3.1所示,它主要包括以下几个主要部分:
图3.18254的内部结构
⑴数据总线缓冲器
实现8254与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8254的控制信息、数据信息以及CPU从8254读取的状态信息,包括某时刻的实时计数值。
⑵读/写控制逻辑
控制8254的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。
⑶控制字寄存器
在8254的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。
⑷计数通道0#、1#、2#:
这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。
3.1.38254外部引脚
8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。
8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:
⑴D7~D0:
双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。
⑵
:
来自于CPU的读控制信号输入引脚,低电平有效。
⑶
来自于CPU的写控制信号输入引脚,低电平有效。
⑷
芯片选择信号输入引脚,低电平有效。
图3.28254的引脚
⑸A1、A0:
地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。
⑹VCC及GND:
+5V电源及接地引脚
⑺CLKi:
i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。
⑻GATEi:
i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。
⑼OUTi:
i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。
3.1.4计数器内部结构
每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。
在计数器工作时,初值不受影响,以便进行重复计数。
图中每个计数器有一个时钟输入端CLK作为计数脉冲源,计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。
门控端GATE用于控制计数开始和停止。
输出OUT端当计数器计数值减到零时,该端输出标志信号。
图3.3计数器内部结构
3.1.58254端口地址
图3.48254端口地址
3.1.68254控制字
图3.58254控制字
说明:
⑴8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。
⑵8254编程时先写控制字,再写时间常数。
3.1.78254工作方式
⑴方式0:
计数结束产生中断方式
当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。
⑵方式1:
可编程单次脉冲方式
当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。
⑶方式2:
频率发生器方式
当初值装入时,OUT变为高;
计数结束,OUT变为低。
该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。
⑷方式3:
方波发生器
当装入初值后,在GATE上升沿启动计数,OUT输出高电平;
当计数完成一半时,OUT输出低电平。
图3.6方波图
方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。
计数过程
当把方式3的控制字写入控制字寄存器后,输出端OUT变成高电平,作为初始电平。
再将计数初值写入计数初值寄存器CR中,再经过一个时钟周期,计数初值被移入计数执行单元CE中,从下一个时钟脉冲开始作减1计数,方式3的计数过程分为两种情况:
第一种情况:
计数初值为偶数,当作减1计数减到N/2时,输出端OUT端变成低电平,减到0时,输出端OUT变成高电平,并重新从初值开始新的计数过程。
若GATE为高电平,则一直重复同样的计数过程。
可见,输出端OUT输出连续的方波,故称方波发生器。
第二种情况:
计数初值为奇数,当作减1计数减到(N+1)/2以后,输出端OUT变成低电平,减到0时,输出端OUT又变成高电平。
并重新从初值开始新的计数过程。
这时输出端的波形为连续的近似方波。
门控信号的影响
工作在方式3时,门控信号GATE的功能与工作方式2一样,即GATE为高电平时,允许计数;
GATE为低电平时停止计数。
GATE引脚上的信号从低电平跳到高电平时,将会重新把计数初值寄存器CR中的内容移入计数执行单元CE中,并以新装入的值重新开始计数。
新的计数初值对计数过程的影响
如果在计数过程中写入新的初值,而GATE信号一直维持高电平,则新的初值不会影响当前的计数过程,只有在计数结束后的下一个计数周期,才按新的初值计数。
若写入新的初值后,遇到门控信号的上升沿,则结束现行的计数过程,从下一个时钟脉冲下降沿开始按新的计数初值进行计数。
可见,工作在方式3时,当计数初值为偶数,OUT端输出连续的标准方波;
当计数初值为奇数,在每个计数周期内,有(N+1)/2个周期输出高电平,(N-1)/2个时钟周期输出低电平,OUT端输出连续的近似的方波。
3.28255介绍
8255A具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
3.2.18255引脚
8255为可编程并行接口芯片,其引脚信号,如图2.1所示。
图3.78255A芯片
8255的引脚功能:
8255采用40条引脚的双列直插式(DIP)封装,其引脚信号有:
⑴PA0~PA7:
为A端口的8条输入/输出引脚。
A口外设双向数据线;
⑵PB0~PB7:
为B端口的8条输入/输出引脚。
B口外设双向数据线;
⑶PC0~PC7:
为C端口的8条输入/输出引脚。
C口外设双向数据线;
⑷D0~D7:
双向数据信号线,用来传送数据和控制字和系统数据总线相连与CPU侧连接的八条双向数据线;
⑸
为片选信号线,只有当其
有效时,读出信号
与写入信号
才对8255有效。
(低电平有效)——片选输入信号;
⑹
为写信号线,CPU通过OUT指令使其有效,与其他信号线一起实现对8255接口的写操作,将数据或状态信息从CPU中写入8255。
(低电平有效)——写输入信号;
⑺
为读出信号线,CPU通过IN指令使其有效,与其他信号线一起实现对8255接口的读操作,将数据或状态信息从8255中读到CPU。
(低电平有效)——读输入信号;
⑻A0,A1:
为端口选择信号线,8255内部有3个数据端口和1个控制端口,共4个端口。
片内寄存器选择输入信号;
3.2.28255外部引线
D0--D7:
双向数据信号线,用来传送数据和控制字。
RD:
为读信号线,与其他信号线一起实现对8255接口的读操作。
通常与系统总线IOR连接。
WR:
为写信号线,与其他信号线一起实现对8255接口的写操作。
通常与系统总线IOW连接。
为片选信号线,当它为低电平(有效)时,才能选中该8255芯片,也才能对8255进行操作。
A0,A1:
为地址选择信号线。
8255内部有3个口:
A口,B口,C口,还有一个控制寄存器,它们可由程序寻址。
A0,A1上的不同编码可分别寻址上述3个口和一个控制寄存器,具体规定如下:
选择
A口
1
B口
C口
控制寄存器
通常A0,A1分别接系统总线A0和A1,它们与CS一起来决定8255的接口地址。
PA0--PA7:
为口的8条输入输出信号线。
该口的8条线是工作与输入、输出还是双向方式可由软件编程来决定。
PB0~PB7为B口的8条输入输出信号线。
利用软件编程可指定这8条线是输入还是输出。
PC0~PC78条线根据其工作方式可作为数据的输入或输出线,也可以用作控制信号的输出或状态信号的输入线。
3.2.38255控制字
8255有两个控制字:
方式选择控制字和端口C按位置置位、复位控制字。
方式选择控制字的第七位总是1,而端口C按位置置位、复位控制字的第七位总是0,所以称第七位称为区分两个控制字的标识位。
1.工作方式选择控制字
2.C口按位置置位/复位控制字
图3.8方式选择控制字及端口C按位置置位、复位控制字
3.2.48255三种工作方式
8255可编程外围接口芯片是通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0-基本输入/出方式
方式1—选通输入/出方式
方式2—双向选通工作方式
方式0——基本输入/输出
在此工作方式下,每个口都作为基本的输入输出口,C口的高4位和低4位以及A口和B口都可独立地设置为输入口和输出口(如表1所示)。
在此工作方式下:
输出的数据被锁存,而输入的数据不被锁存。
方式0基本功能是基本输入/输出方式。
其功能如下:
①进行数据传送时不需要联络信号。
②任一设置成方式0的端口均可设置成输入或输出。
③输出具有锁存功能。
④输入没有锁存功能。
⑤每一个8位口和4位口均可设置成方式0。
如果所有的8位口和4位口都设置成方
端口是否具有锁存功能是需要注意的。
如果具有锁存功能,则8255A可作为CPU与外设之间数据传送的中转站。
这时,CPU与外设之间数据传送是异步的。
如果没有锁存功能,则8255A作为数据通道,仅起单向三态门的作用。
这时,CPU与外设之间数据传送是同步的。
序号
控制字
(PA0---PA7)
(PC4---PC7)
B口(PB0---PB7)
C口(PC0---PC3)
80H
入
2
81H
出
3
82H
4
83H
5
88H
6
89H
7
8AH
8
8BH
9
90H
10
91H
11
92H
12
93H
13
98H
14
99H
15
9AH
16
9BH
表3.98255在方式0下的输入输出组合
方式0的输出具有锁存功能,而输入没有锁存功能
方式1——选通输入/输出
在工作方式下,三个端口分为A、B两组,A、B两个口仍用作数据输入输出口,而C口分成两部分,分别作为A口和B口的联络信号。
在8255A中,联络信号是3位,两个数据口,共用去C口的6位,剩余的两位仍可作为数据位使用。
方式2——双向选通输入/输出
此工作方式只限于A组使用,它用A口的8位数据线,用C口的5位进行联络。
工作时输入输出都能被锁存。
当A口工作在方式2时,B口可以在方式0或方式1工作。
在模拟霓虹灯的设计中只用到了工作方式0,如表3.1所示。
工作方式0:
又称为基本工作方式。
在此方式下,可分别将A口的8条线,B口的8条线,C口高4位对应的4条线和C口的低四位对应的四条线定义为输入或输出。
故它们的输入输出共有16种不同的组合。
8255的数据线、片选信号线、地址线、读写控制线等分别与系统总线相连,其中A、B、C三个端口以排针形式引出,供实验使用。
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
3.2.58255内部结构
表3.108255A的内部结构
从图中可以看到,左边的信号与系统总线连接,而右边是与外设相连接的3个口。
3个口均为8为。
其中A口、B口输入、输出都有锁存能力。
C口输出有锁存能力,输入有锁存能力,在使用上要注意这一点。
为了控制方便,将8255的3个口分成A、B两组。
其中A组包括A口的8条线PA0~PA7和C口的高4位PC4~PC7。
B组包括B口的8条线PB0~PB7和C口的低4位PC0~PC3。
A组和B组分别由软件来加以控制。
3.2.68255A的端口地址
信号线
寄存器
编址
IOY3
60H
61H
62H
63H
4具体模块设计
4.1频率产生模块
而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8254产生各音符,用8255并行接口来控制,达到播放音乐的功能。
CPU通过对定时器的通道0进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值。
产生指定频率声音的程序段如下:
PLAY:
MOVDX,0FH
MOVAX,4240H
DIVWORDPTR[SI]
MOVDX,MY8254_COUNT0
OUTDX,AL
MOVAL,AH
4.2控制模块
对8255芯片PA0和PA1口的置0和1来选择歌曲。
其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。
4.3控制音符的演奏时间
控制音符的演奏时间,是设计音乐程序的关键问题。
最直观的方法是按照按照乐谱为每一个音符规定一个演奏时间,但是利用这种方法是调试程序特别困难。
特别是在遇到一首不熟悉的歌曲时,初期很难确定每一个音符的演唱时间,而调试程序的时候费时费力,效果很差,下面,我么么向读者推荐一个记号的方法,即没一个音符规定一个“单位时间”。
单位时间*N=音符的演唱时间
其中N为调试参数,一首歌只有一个调试参数。
设计程序时用EQU伪指令定义调试参数,初值先行估计,调试时再修改它。
如何确定每个音符的演奏时间呢?
我们知道,音符的节奏分为一拍、半拍、1/4拍、1/8拍等等。
如果在一首歌曲中,音符演奏的时间最短为1/8拍,我们就规定一拍音符的单位时间为8,半拍音符的单位时间为4,1/4拍音符的单位时间为2,1/8拍音符的单位时间为1。
以“友谊地久天长”这首歌为例,最短音符为1/8拍,我们就定义一个单位时间为8。
所示,途中第一行是一段曲谱,第3行是相应音符的单位时间,编程时,首先将一个音符的频率转化成计数初值写入2号计数器,然后将音符的单位时间乘以调试参数N,在调用延时子程序,就可以控制音符的演奏时间了,调试时,只需改变调试参数N即可。
4.4音符频率表
音符频率表如下表所示:
表4.1音符频率表1
音符
音调
A
B
C
D
E
F
G
221248278294330371416
248278312330371416467
131147165175196221248
147165185196221248278
165185208221248278312
175196221234262294330
196221248262294330371
表4.2音符频率表2
1234567
441495556589661742833
495556624661742833935
262294330350393441495
294330371393441495556
330371416441495556624
350393441467525589661
393441495525589661742
表4.3音符频率表3
88299011121178132214841665
990111212481322148416651869
525589661700786882990
58966174283388
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理