基于PC机的信号发生器设计与实现

时间:2022-10-25 02:17:16

基于PC机的信号发生器设计与实现

摘要:信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。该文在了解8086CPU芯片的基础上,应用8086的接口芯片设计一个信号发生器,根据外接16位编码,利用8253的方波发生器的频率改变信号发生器的频率,用LED发光管显示其设定的闪烁的频率,使用逻辑开关进行频率的改变。

关键词:信号发生器;单片机;并行输入/输出接口芯片;8255芯片

中图分类号:TP34文献标识码:A文章编号:1009-3044(2010)09-2201-03

PC-Based Design and Implementation of Signal Generator

YUAN Qiu-hua

(Mining Measurement Center of Huaibei Anhui, Huaibei 235000, China)

Abstract: The signal generator also known as the signal source or oscillator, in the production practice and science and technology has a broad application. In this paper, in understanding 8086CPU chip, based on the 8086 application interface chip design a signal generator, according to an external 16-bit code, use of the square wave generator 8253 changes in the frequency of the frequency of the signal generator, with LED LED display the set given the frequency of flashing, and then use the logical switch frequency changes.

Key words: signal generator; MCU; parallel input/output interface chip; 8255 chip

该设计的核心是应用接口芯片来设置一个信号发生器,同时通过外接输入来改变其频率,改变的频率由16位编码器提供具体的大小变化,但对于其频率的量化和改变幅度都没有更为严格的要求。需要一个8253的级联,使通道0,2级联,利用通道2的方式2显示方波,当初值设好后,自动将所设周期平分为两个部分,前一部分保持为高,后一部分为底,输出为一方波。由8255连接一个16位的编码器,通过编码器所设置不同的初值,来改变8253的通道0的计数初值,通过不同的初值来改变频率,计数器0的初值为0F42H(十进制62500)时,方波周期为0.5s。

1 解决问题方法及思路

1) 硬件部分:选择8086CPU芯片,8253一片,8255一片,LED一个,逻辑开关一组,pc机一台。过8253的计数通道0的CLOK 0输入一个时钟频率,由OUT 0 的输出再级联到CLOK2然后在由OUT 2输出到发光二极管,可由8255的A、B口连接的16位编码器,进行编码置数,通过置入不同的初始值来改变输出的频率,发光二极管的闪烁显示频率的大小。

2) 软件部分:整个设计在win8086集成环境软件下进行。具体的程序控制如下:首先对应用芯片进行初始化设定,选择其工作方式,8253使用方式2,8255的三个口PA,PB,PC则都用于输入。在外接输入方面,分别读入PA和PB口的编码来分别用于生成频率信号的低八位和高八位,同时通过PC口的一个控制开关来控制信号频率的改变条件。

2 硬件设计

2.1 选择芯片

8255芯片:并行输入/输出接口芯片。

通过8255来将外接16位控制开关的值输入到8253中,从而改变外接LED管的频率,它是一个基本的输入输出接口,而在本实验中主要是用于它的输入功能。

1) 8255引脚图:8255是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。三个端口都可以作为输入端口或输出端口。A口有三种工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。8255的工作只有当片选CS效时才能进行。而控制逻辑端口实现对其他端口的控制。

2) CPU接口(数据总线缓冲器和读/写控制逻辑)

① 数据总线缓冲器:这是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的。这个缓冲器是8255A与CPU数据总线的接口。所有数据的输入/输出,以及CPU用输出指令向8255A发出的控制字和用输入指令从8255A读入的外设状态信息,都是通过这个缓冲器传递的。

② 读/写控制逻辑:它与CPU的6根控制线相连,控制8255A内部的各种操作。控制线RESET用来使8255A复位。和地址线A1及A0用于芯片选择和通道寻址。8255A的读/写控制逻辑的作用,是从CPU的地址和控制总线上接受输入的信号,转变成各种命令送到A组或B组控制电路进行相应的操作。

3) 8255A的引脚信号

① 与外设相连的:PA7~PA0:A口数据信号线。PB7~PB0:B口数据信号线。PC7~PC0:C口数据信号线。

② 与CPU相连的:RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7~D0:它们是8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全部接口芯片来分配若于低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。只有当有效时,读信号写才对8255进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效时,CPU可向8255A中写入数据。A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定当A1、A0:为00时,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。

2.2 8253 芯片

1) 8253在本设计中的作用:8253在本设计中作为方波发生器,可用于产生一定频率的方波,控制LED灯的闪烁频率。

2) 8253的功能分析:

8253 是专门用于定时/计数可编程集成电路,其内部有3个可编程的16位计数器,各个计数器之间完全独立。

在方式3,OUT输出是对称方波或基本的矩形波。当CPU设置控制字后,输出将为高,在写完计数初置N后计数器就自动开始计数,输出保持为高。当计数到N/2时,输出变低,直至计数到0 ,使输出变高。同时又重新装入计数值开始新的计数。计数过程周而复始重复进行。

8253的基本结构包括:

① 数据总线缓冲器和控制逻辑:用于与CPU连接及芯片的读/写操作。

② 控制字寄存器(只写不读):用于存放8253可编程控制字,3个端口共用一个控制寄存器,只有一个公用地址,三个计数器的选择要通过控制字格式中的最高二位SC1,SC0的状态决定。

③ 3个16位的独立计数器:用于存放计数器的初值,每个计数器都有 时钟输入,

门控和输出3个信号,计数器是可读/写的,它们内部还有3类寄存器(计数初值寄存器CR用于存放所设定的计数器常数~计数执行单元CE用于实现计数操作加或减~计数输出锁存器OL用于需要读出的计数值)。

2.3 选择器件LED

LED在本设计中的作用:LED发光二级管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,做为终端显示。

LED功能分析:① 物理构造:LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性;② 工作原理:当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现;③ 数字成像:将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。

LED技术参数:① 发光二极管的压降一般为1.5~2.0 V,其工作电流一般取10~20 mA为宜;② 发光二极管的发光颜色有:红色光、黄色光、绿色光、红外光等; ③ 发光二极管应用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。

2.4 开关

1) 开关的作用:本次设计需要用八位开关置数,故要用到开关,输入0时,开关闭合,输入1时,开关断开。

2) 开关功能的分析:如图1所示,开关未合时,与5V电压相连,输入1,当合上之后,开关就将A口接地,也就输入为0,4位开关可以置0~15的数。

3 硬件总逻辑图及程序设计

硬件总逻辑如图2所示。

3.1 控制程序设计思路说明

本实验的重点在于利用控制程序通过改变外接开关控制量来控制灯的闪烁的频率,因此关键在于通过8255A将PA PB口所连接的开关控制写入8253的0计数器做初值。在实验中8255A的PA和PB口都用做输入,分两次写入8253的0计数器的低八位和高八位,8253只需要使用0和2两个计数器即可,2计数器外接发光二极管,而0计数器通过8253的内部级联提供闪烁的频率。

本程序的译码不复杂,通过A0和A1,选中8253或8255于是可得到两芯片的相关地址如下:

8255的端口地址:04b6h

8255A口地址:04b0h

8255B口地址:04b2h

8255C口地址:04b4h

8253控制端口地址:04a6h

8253计数器0地址:04a0h

8253计数器1地址:04a2h

8253计数器2地址:04a4h

3.2 程序流程图

程序流程图如图3所示。

3.3 控制程序

assume cs:code

code segment public

org 100h

start :

mov dx,04b6h ;8255控制端口地址

mov ax,93h ;设置A口输入,B口输入,C口低位输入

out dx,ax

mov dx, 04a6h ;8253控制端口地址

mov ax,36h ;设置计数器0工作方式

out dx,ax

mov dx, 04a0h ;计数器0地址

mov al, 0fh;设初值低八位

out dx,ax

mov ax,0;设初值高八位

out dx,ax

mov dx , 04a6h

mov al, 0b6h;设置计数器2工作方式

out dx,al

start1:

mov dx,04b4h ;PC口地址

in ax,dx;读c口状态

and ax,08h;屏蔽其他位影响

cmp al,08h

jz start1;开关控制程序

mov dx,04b0h;PA口地址

In al,dx ;读开关量低八位

mov bl,al

mov dx,04b2h ;PB口地址

in al,dx ;读开关量高八位

mov ah,al

mov al,bl

mov dx ,04a4h ;计数器2地址

out dx ,al;设初值低八位

mov al,ah

out dx ,al;设初值高八位

jmp start1

code ends

end start

3.4 上机调试过程

1) 硬件调试:① 将所有需要使用的硬件按电路图连接好后,开通电源;② 首先CPU出现问题:不能正常工作,拔掉后重插,问题依旧,换了一块CPU后就可以正常使用;③ 在线路连接时发现线头与接口处不能紧密结合,出现了时断时续的情况,用力按紧后解决了这个问题。

2) 软件调试:将程序输入电脑里,用编译程序编译后出现了一些常犯的错误,通过给出的错误提示信息一一进行排解,直到没有编译错误为止

3) 联机调试:先关闭试验箱电源,将数据线与试验箱连接上,开通试验箱电源。设置好通信接口和频率,出现“程序下行复位成功”的提示,表明通信成功。

4 结束语

本设计主要体现了8253用做计数器的功能,它通过内部级联扩大了其选择的范围,但在这中级联条件下,计数器2对于频率的影响要明显大于计数器0,因此即使改变计数器0的初值,也不会对结果产生很大的影响,可能相对而言,改变的程度会稍有变化。

参考文献:

[1] 潭博学,苗江静.集成电路原理及应用[M].2版.北京:电子工业出版社,2008.

[2] 周国祥.微机原理与接口技术复习考试指南[M].合肥:合肥工业大学出版社,2006

[3] 戴梅萼,史嘉权.微型计算机技术及应用[M]3版.北京:清华大学出版,2008.

[4] 杨立.微机原理与接口技术[M].天津:天津大学出版社,2010.

[5] Thomas L,David M.模拟电子技术基础[M].王燕萍,译.北京:清华大学出版社,2007.

上一篇:通用数据转换平台研究与实现 下一篇:基于随机Petri网的网格虚拟联盟模型