微机原理课程设计终结版Word格式文档下载.docx
《微机原理课程设计终结版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计终结版Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
(三):
设计原理、思路及流程图
(四):
源程序
(五):
总结
(六)附原理图
(一)设计内容:
以8086作为处理器,用8255接八个开关K1~K8,做电子琴按键输入,以8253控制扬声器,拨动不同的开关,发出相应的音阶。
其中K1代表静音,K2发s的音,K3发la的音,K4发sol的音,K5发fa的音,K6发mi的音,K7发re的音,K8发do的音。
(二)元件与仪器:
1.主芯片8086
图1(8086引脚说明)
2.计时器8255A
8255是一个40引脚的双列直插式集成电路芯片.它具有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。
而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;
同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组。
图2(8255A引脚图)
图3(8255A结构图)
3.并行控制器8253
8253是24脚双列直插式芯片,+5V电源供电。
每个芯片内部有3个独立的计数器(计数通道),每个计数器都有自己的时钟输入CLK,计数输出OUT和门控信号GATE。
数据总线D0~D7:
为三态输出/输入线。
片选信号CS,读信号RD,写信号WR,他们为输入信号,低电平有效。
地址线A1、A0,接到系统总线A1、A0上。
计数器时钟信号CLK,作用是在8253进行定时或计数工作是,每输入1个时钟脉冲信号CLK,便使计数值减1。
计数器门控选通信号GATE,计数器输出信号OUT,作用是计数工作时,每来1个时钟脉冲,计数器减1,当计数器值减为0,就在输出线上输出一OUT信号,以示定时或计数以到。
图4(8253引脚图)
图5(8253内部结构图)
4.其它若干元器件
扬声器、运放器等。
(三)设计原理、思路及流程图
驱动控制扬声器利用8253与8255A共同执行,利用8255A的PB0、PB控制扬声器的开启、关闭。
利用定时器8253驱动发声,CPU通过对8253通道2(端口地址42H)进行编程,利用8253方式3以不同的脉冲频率产生不同的输出方波,方波信号通过滤波器、功率放大器使扬声器发声。
表1音阶频率表
音阶
静音
Si
La
Sol
Fa
Mi
Re
Do
频率
493
440
392
349
329
293
241
计数值
2420
2712
3044
3419
3627
4072
4572
图6(硬件电路接线图)
图7(编程流程图)
(四)源程序
1)利用8个逻辑开关做为电子琴的键盘输入,高电平有效,则开关量由8255A的端口A方式0,输入方式(控制字AL=10010000B)送入CPU中。
此时调用的是7号系统功能调用,从标准设备输入单字符置入AL寄存器中,调用格式为:
MOVAH,07H
INT21H
2)CPU根据不同的开关量,将程序跳转到相应频率对应的8253的初始化,并给8253赋上频率对应的初始值,此时利用的是8253的通道2,方式3,产生不同频率的方波。
代码如下:
MOVAL,0B6H
OUT43H,AL
MOVAX,计数值
OUT42H,AL
MOVAL,AH
3)要使8253OUT发出的方波频率与任务中的频率相同,则要给8253设置计数值,计算方法为:
计数值=输入时钟频率/任务要求频率
然后CPU将8255A的PB0、PB1置1,打开8253的GATE和与门(图2.1)。
INAL,61H
ORAL,03H
OUT61H,AL8253
4)产生的方波信号通过滤波器形成正弦信号,然后通过功率放大器,将正弦信号放大,驱动扬声器发声。
再然后CPU将8255A的PB0、PB1置0,关闭扬声器。
ANDAL,0FCH
OUT61H,AL
再次输入开关量,则循环执行上面过程。
5)当输入为PC键盘任意键输入时,则整个程序退出。
此时是调用的6号和4CH号系统功能调用,系统输入键盘任意键,返回DOS。
调用格式为:
MOVDL,0FFH
MOVAH,6
INT21H
MOVAH,4CH
全部程序:
STACKSEGMENTSTACK
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,63H
MOVAL,90H
OUTDX,AL;
8255A初始化
INPUT:
MOVDX,60H
INAL,DX;
8255A端口A输入
INT21H;
从开关输入信号
CMPAL,00000001B
JZK1
CMPAL,00000010B
JZK2
CMPAL,00000100B
JZK3
CMPAL,00001000B
JZK4
CMPAL,00010000B
JZK5
CMPAL,00100000B
JZK6
CMPAL,01000000B
JZK7
CMPAL,10000000B;
判断从哪个开关输入并跳
JZK8;
转到相应8253初始化
MOVDL,0FFH
MOVAH,6
INT21H
MOVAH,4CH;
键盘任意输入则退出程
序,返回DOS
K1:
MOVAL,0B6H
OUT43H,AL
MOVAX,0
JMPSING
K2:
MOVAX,2420
K3:
MOVAX,2712
K4:
MOVAX,3044
K5:
MOVAX,3419
K6:
MOVAX,3627
K7:
MOVAX,4072
K8:
OUT43H,AL;
8253初始化
MOVAX,4572;
并给AX赋
JMPSING;
值
SING:
OUT42H,AL
MOVAL,AH
OUT42H,AL;
传送计数值到8253
INAL,61H
OUT61H,AL;
打开扬声器
ANDAL,0FCH
关闭扬声器
JMPINPUT;
跳转到INPUT
CODEENDS
ENDSTART
(五)总结
对于这次课程设计收获很大,不仅全面考虑整个系统还要明确分工合作,而且也巩固了我们在课堂上的学习,这次设计主要是定时计数器8253和并行通信接口8255A的拓展,对于扬声器的运用要使用8235的out2口等知识,同时为防止雷同,我们特地用了Altium_Designer对硬件电路画了原理图,在经济允许的情况下可将PCB图送去打板实现实物。