1. 仿真实验板的结构和特点。
2. 仿真实验板与一般的开发系统、应用系统的异同。
为了使读者学习单片机时具备基本的实验条件,对单片机有形象而又具体的认识,作者专门设计了与本书配套的仿真实验板。该实验板最大的特点是:(1)价格低廉。(2)使用简单方便,只要有带RS232串口的PC机就能进行实验。(3)功能全,基本上具备单片机常用的接口,如ADC、DAC、存储器、LED数码管、键盘、并行接口、串行接口,等等。由于同时具备上述特点,使读者在使用本教材学习单片机可以有兴趣、高效、自主地进行。
仿真实验板既是一块用户实验板,又是一种功能强大而实用的单片机开发调试工具, 它充分利用PC机的系统资源, 使用户可以轻松完成8051单片机应用系统的仿真调试工作,从而省去了价格昂贵的仿真器。用户在PC机上完成软件程序的编辑、编译、连接, 通过串行口通信方式将目标程序下载到C51仿真开发实验板中, 可对汇编语言和高级语言源程序进行跟踪调试, 具有指令单步/过程单步运行,设置多个临时断点,随时察看内存数据或单片机内部资源,在线修改源程序等多种功能。随板预留了蛇目孔供用户作扩展区域,并将单片机的引脚全部引出,可作为外部仿真头使用。扩展了模拟信号发生电路(产生三角波、方波)、8255、AD0809、DAC0832、62256、蜂鸣器、按键和LED显示接口电路,此外还预留了若干译码输出口线,可供用户扩展。采用本仿真开发实验板,可使初学者迅速掌握单片机原理及应用,熟悉汇编语言、甚至单片机C语言。用本仿真开发实验板,对用户源程序进行实时在线调试,可极大地缩短单片机应用系统的开发时间。
图10-1、10-2和10-3所示分别为实验板的电路原理图、元件位置图和PCB图。实验板上主要有以下资源:
1.电源:采用单一+12V电源供电(通过电源适配器由~220V得到),通过7905实现稳压的+5V和不稳压的-2~3V电源。其中+5V为单片机及其外围电路供电,-2~3V电源为运算放大器供电。
2.配有32KRAM芯片62256,调试时用户程序被下载到该芯片中,调试完成后可将其换为固化有用户程序的2764/27256芯片,也可以保留62256用作为数据存储器,但要把程序写入89C52中。
3.AT89C52单片机。仿真开发板仅占用单片机内部串行口和定时器T1。板上留有充分的用户扩展区,方便用户进行各种接口扩展。采用盲调的方式也可以在用户程序中使用单片机内部串行口和定时器T1。单片机全部引脚都引出,可作为仿真插头接口,还预置了若干译码输出端口(地址线)以及数据线以便于用户使用。板上留有充分的用户扩展区,方便用户进行各种接口扩展。
4.并行接口芯片8255。并行接口芯片8255是单片机系统最常用的器件,只要掌握了8255的接口技术,也就不难掌握其他的接口芯片了。
5. 8位A\DC芯片ADC0809。虽然ADC0809已经落后,但采用它更便于学习和成本低廉。通过ADC0809可以实现和掌握外围器件的接口和数据采集原理。
6.8位D\AC芯片DAC0832。同样,虽然DAC0832已经落伍,但采用它便于和掌握外围器件的接口和波形的产生。
7.动态扫描LED。LED显示是单片机应用系统常用的显示方式之一,而动态扫描LED是较难掌握的难点之一。虽然现在已经很少采用8255来驱动LED数码管,但采用它便于直观地观察实验现象,掌握动态扫描LED的原理。
8.动态扫描键盘。键盘是单片机应用系统最常用的人机对话接口,而且动态扫描键盘更是较难掌握的难点之一。本实验板配置动态扫描键盘是为了读者通过实验能够确实掌握动态扫描键盘。
表10-1和10-2分别给出了跳线1和跳线2的作用。表10-3给出了单片机存储器空间的地址分配。表10-4和10-5分别给出了LED显示器的显示码和位选码。这些数据在编程时是必不可少的依据。
表10-1 跳线1的作用
跳线名 | 连接方式说明 |
NetU11_13 | 此两脚短路时分别接通AD0809的每一通道。 |
INx ( x = 0~7 ) |
表10-2 跳线2的作用
跳线名 | 连接方式说明 |
TRI | 此两脚短路时将模拟信号发生器产生的三角波接入缓冲器。 |
BUFF | |
BUFF | 此两脚短路时将模拟信号发生器产生的方波接入缓冲器。 |
SQU |
表10-3 地址分配
接口电路 | 地址范围 |
AD0809 | 0000 ~ 1FFFH |
DAC0832 | 2000 ~ 3FFFH |
8255 | 4000 ~ 5FFFH |
62256 | 8000 ~ FFFFH |
表10-4 LED显示码
显示数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
显示码 | 0xc0 | 0xf9 | 0xa4 | 0xb0 | 0x99 | 0x92 | 0x82 | 0xf8 | 0x80 | 0x90 |
表10-5 LED位选码
显示位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
位选码 | 0x7f | 0xbf | 0xdf | 0xef | 0xf7 | 0xfb | 0xfd | 0xfe |
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图10-1 仿真实验板的电路原理图
复位按键 |
D/A输出 |
+12V电源输入 |
DAC0832 |
62256 |
LED数码管 |
RS232 串口 |
单片机的主要引脚引出插座 |
89C52 |
用户 扩展区 |
8255 |
键盘 |
跳线2 |
8255的PB3~7 的引出插座 |
MAX202 |
ADC0809 |
跳线1 |
图10-2 仿真实验板的元件位置图
图10-3 仿真实验板的PCB图
下面就仿真实验板的主要电路原理进行说明。
图10-4所示为单片机89C52(图中标明为8952)及其外部地址译码、锁存电路图。89C52的P2的作为高位地址A8~15,其中A15控制译码器74HC138的使能端、,因而74HC138有效输出片选信号时A15为低电平,即它所选的地址在低32K。同时A15、A14和A13又作为译码输入,确定了片选端Y0、Y1和Y2分别为0000 ~ 1FFFH、2000 ~ 3FFFH和4000 ~ 5FFFH。
图10-4 单片机89C52电路图
图10-5 单片机89C52的晶振、复位和引脚引出电路 |
图10-5所示为单片机89C52的晶振、复位和引脚引出电路。晶振采用11.0592 MHz,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度。
复位电路采用简单的RC充、放电电路,在实验板上电时,C1上的电压不能突变,使单片机的复位端(图中的RST点)处于高电平,在经过约200~300 ms的时间后,由于经过R4的充电,RST点回到低电平,这一过程完成了单片机的复位。如果在调试过程中,出现死机、程序跑飞等情况,可以按下复位键S1强制单片机复位。
JP1的作用是把单片机的P1口和P3口的引脚引出,以方便读者进行一些扩展实验。
ADC0809是一种8路模拟输入逐次比较型A/D转换器,由于价格适中,与单片机的接口、软件操作均比较简单,目前在8位单片机系统中有着广泛的使用。ADC0809由8路模拟开关、地址锁存与译码器、8位A/D转换器和三态输出锁存缓冲器组成。图10-6所示为模数转换器ADC0809的接口电路。
片选信号Y0用于选择ADC0809。将Y0与单片机写信号(图中标为WR)相或非后给ADC0809的ALE端以将通道选择信号ADD-A~ADD-C(分别接接单片机的地址信号A0~A2)打入ADC0809的通道选择寄存器用于选择ADC0809的模拟输入通道,同时该信号还接ADC0809的转换启动端START,在打入通道选择信号的同时启动ADC0809的转换。
将Y0与单片机读信号(图中标为RD)相或非后给ADC0809的数据读出使能端ENABLE,用以从ADC0809读出转换结果。
ADC0809的转换结束信号EOC通过或非门构成的反相器接单片机的外部中断端,单片机可以通过中断或查询方式来判断模数转换是否结束和结果数据是否准备好。
单片机的ALE信号通过计数器74LS393分频后提供给ADC0809作为时钟信号,由CLOCK端输入到ADC0809。
图10-6 模数转换器ADC0809的接口电路
为了保证模数转换的精度,ADC0809采用模拟电路的电源供电以避免数字电路中难以避免的脉冲干扰。对ADC0809的参考电源输入端采用一大一小两个电容进行滤波:大电容(10mF电解电容)用于滤除低频干扰,但由于大电解电容存在较大的分别电感,因而它滤除高频干扰的效果反而不如小电容,因此并联一个高频性能好的小电容用于滤除高频干扰。通常在PCB板上这两个电容都要尽可能地靠近ADC0809参考电源输入引脚安装,以取得较好的效果。
D/A芯片的功能是将输入的数字量转换成与其成比例的模拟量。DAC0832是用CMOS工艺集成的8位数据输入D/A芯片,具有20个引脚,其输出模拟量可有28=256个不同的等级。
图10-6所示为数模转换器DAC0832的接口电路。片选信号Y1直接接DAC0832的片选端CS的缓冲寄存器锁存端Xfer,在与写信号(图中标为WR)共同作用下把需转换的数据经过总线打入DAC0832的数据缓冲器。
由DAC0832转换后的模拟信号是电流信号,经过运放mA741(图中标为UA741)构成的电流/电压转换电路变成电压信号输出,J2用于向外部引出由DAC0832转换后的模拟信号。
由于运放mA741输出的电压信号为负极性,因而运放mA741不仅需要正电源,还需要负电源。图中-AGND实际上是-2~3V的电源。为了简化电源的设计,仿真实验板的电源部分采用了特殊的设计,这将在后面加以详细地介绍。
图10-6 数模转换器DAC0832的接口电路
8255A是Intel公司开发的一个可编程并行接口器件,为40条引脚双列宣插式大规模集成电路。它采用单十5V电源供电、输入输出电平与TTL电路兼容。8255A广泛用于扩展单片机的并行接口电路中。
图10-7所示为并行接口芯片8255A(图中标为8255,以下也简称为8255)的接口电路。片选信号Y2直接接8255的片选端,单片机写信号(图中标为WR)接8255的写信号,单片机读信号(图中标为RD)接8255的读信号,单片机的地址信号A11和A12分别接8255的地址信号A0和A1。单片机的复位信号RST接8255的复位信号RESET。
8255的PA口和PB口用于动态地驱动LED数码管,其中PA口用于驱动段信号,PB口用于驱动位信号。注意:单片机和绝大多数的器件低电平的驱动能力强但又很有限,因而段驱动采用低电平有效(LED发光)和选用共阳极LED数码管。
R9~R16为限流电阻。可见光的LED的压降一般在1.6~1.8V,工作电流5~20mA,据此可以计算限流电阻的阻值。但在计算动态扫描显示的数码管的限流电阻时应该注意:(1)LED的亮度与平均电流成正比,有N位数码管时,瞬时电流(用于计算电阻阻值的电流)应该比所需要亮度的工作电流(平均电流)大N倍。(2)注意瞬时电流不能超过25mA(8255的最大极限值),否则很容易烧毁8255。对于采用较小的数码管时,还要注意瞬时电流不能超过数码管的最大电流极限,特别是在调试和出现故障时,某位数码管由于较长时间地通过接近甚至超过其最大电流极限而烧毁。
R17~R24为驱动三极管的限流电阻。由于有三极管来驱动数码管的位(公共极――阳极),因此限流电阻可以取较大的值。
J3用于引出实验板上没有使用的PB口5个引脚PB3~7。
图10-7 并行接口芯片8255的接口电路
随机存贮芯片(RAM)HM62256的存贮量为32KB,地址线有(A0~A14),是单片机应用系统中最常见的数据存储器。在实验板中,HM62256(下面简称62256)更多的是充当程序存储器:在实验和调试程序时,在单片机89C52驻留的监控程序的控制下把用户程序下载到62256中。所以,在下载程序时,对单片机89C52驻留的监控程序而言,62256是作为数据存储器,把PC通过RS232下载的程序作为数据存放在62256中。而在调试时,在监控程序的控制下,从单片机89C52从62256中取出指令来执行。因而62256的接口设计有特殊的要求:单片机把62256中存储的内容既能作为数据读出,也能作为程序读出。前面我们已经说明,单片机从外部存储器读出数据时采用数据读信号,而从外部存储器读出指令时采用指令数据读信号。而62256只有一个读信号,所以,在实验板中采用和相与后接62256的端,称为von Neumann接法。图10-8给出了数据/程序存储器62256的接口电路,图中62256的端标为OE。
A15反相后接62256的端(图中标为OE),说明62256的地址分配为高32k(8000H~FFFFH)。
图10-8 数据/程序存储器62256
实验板上的串行接口是实验板与PC通信的唯一通道,需调试的程序通过串行接口下载到实验板中,而实验板上程序的运行状态和部分结果也需通过串行接口上传到PC机。
PC机上的串行接口是RS-232,RS-232包括了按位进行串行传输的电气和机械方面的规定。RS-232关于电气特性的要求规定,驱动器输出电压相对于信号地线在-5V~-15V之间为逻辑1电平,表示传号状态;输出电压相对于信号地线在+5V~+15V之间为逻辑0电平,表示空号状态。在接收端,逻辑1电平为-3V~-15V,逻辑0电平为+3V~+15V,即允许发送端到接收端有2V的电压降。这样的RS-232电平和TTL逻辑电路(单片机)产生的电平是不一样的,因此,PC机与单片机89C52之间必须经过一定的电路转换逻辑电平。图10-9给出了实验板上的RS232串行接口逻辑电平转换电路。
图中的芯片MAX202E是美国MAXIM公司为在苛刻环境下进行RS-232通信设计的MAX202E线驱动/接收器,构成转换电路简捷。MAX202E线驱动器/接收器内部含有2个驱动器、2个接收器。每个发送器输出端和接收器输入端设有保护,不闭锁(不同于双极型)、能保证120 kbit/s数据传输速率、3 V/ms最小斜升速率。同时,MAX202E提供额外保护装置以防止静电(Electrostatic Discharge,ESD),它的RS-232输入端和输出端能经受住采用人体模型的±15kv放电测试,当按IEC801-2进行测试时,能经受住±18kv的接触放电和115kv的空气间隙放电试验。这适用于RS-232连接经常要改变的场合(比如笔记本电脑、本实验板等)。MAX202E使用单一的+5V电源工作,正常工作时仅需要外接4个0.1mF的电容器(建议采用陶瓷电容器,在10mF以内选值)。由于在实际应用中易受到电源干扰,用一个与上述电容器等值的电容器接在Vcc到地之间去藕。
一个完整的RS-232接口有22根线,采用25根插针的标准连接器,各插针定义见表10-6。在使用PC机和单片机进行直接通信时,一股选用PC机端的9针串口,因此RS-232只需要少数几根线即可正常工作。TXD/RXD是一对数据线,TXD为发送数据输出,RXD为接收数据输入,当PC机和单片机以全双工方式直接通信时,双方的这两根线应交叉连接。所有信号均通过信号地构成回路,双方的信号地相连。有以上这三条线(TXD、RXD和信号地),单片机和PC机就可以分别对异步通信电路芯片编程,设置成不需要任何联络或握手信号、直接进行数据交换的方式。RS-232二线式直接数据通信接口如图10-10所示。
图10-9 RS232串行接口逻辑电平转换电路
表10-6 RS-232信号的定义
引脚序号 | 说 明 | 引脚序号 | 说 明 |
1 | 保护地 | 13 | (辅信道)允许发送(CTS) |
2 | 发送数据 | 14 | (辅信道)发送数据 |
3 | 接收数据 | 15 | 发送信号无定时(DCE为源) |
4 | 请求发送(RTS) | 16 | (辅信道)接收数据 |
5 | 允许发送(CTS,或消除发送) | 17 | 接收信号无定时(DCE为源) |
6 | 数传机(DCE)淮备好 | 18 | 未定义 |
7 | 信号地(公共回线) | 19 | (辅信道)请求发送(RTS) |
8 | 接收线信号检测 | 20 | 数据终端准备好 |
9 | (保流供数传机测试) | 21 | 信号质量检测 |
10 | (保流供数传机测试) | 22 | 振铃指示 |
11 | 未定义 | 23 | 数据信号速率选择(DTE/DEC为源) |
12 | (辅信道)接收线信号检测 | 24 | 接收数据无定时(DTE为源) |
|
| 25 | 未定义 |
保护地(接外壳) | 1 |
|
| 1 | |
发送数据TXD | 2 | ® | ¬ | 2 | |
接收效据RXD | 3 | ¬ |
| ® | 3 |
信号地 | 7 |
|
| 7 | |
请求发送RTS | 4 | ® | ¬ | 4 | |
消除发送CTS | 5 | ¬ |
| ® | 5 |
载波检测DCD | 8 | ¬ |
| ® | 8 |
数据装置准备好DSR | 6 | ¬ | ® | 6 | |
数据终端准备DTR | 20 | ® |
| ¬ | 20 |
振铃指示RI | 22 | ¬ |
| ® | 22 |
图10-10 RS-232二线式直接数据通信接口
图10-10中,通常左边为连接PC机的25针插头时,右边连接单片机实验板只需2根信号线(另加1根地线)。信号线为双方的2、3端交叉连接,而7端对应连接,即完成了PC机与单片机仿真实验板的连接。仿真实验板配套的RS-232通讯线就是采用上述连接方式制成的。
仿真实验板采用了4位一体的共阳极LED数码管,这种数码管的各同名段连接在一起共用一个引脚引出,各位(每位数码管的公共端)单独引出。
由于段驱动电流较小,为简单起见,由8255的PA口直接驱动(加限流电阻)。而LED数码管的位电流较大,故采用三极管来驱动。位扫描信号由8255的PC口给出。图10-11给出了动态LED显示器电路原理图。
相比于静态显示方式(1根口线驱动一个LED),动态扫描方式需要的口线要少得多。如仿真实验板上有8位数码管,每位数码管有8个LED,如果采用静态驱动方式,则需要8×8=64根口线来驱动。而采用动态驱动方式,只需要8(段驱动)+8(位驱动)=16根口线。
动态方式利用了人眼的视觉暂留效应,每位数码管依次显示一个较短的时间,虽然每个瞬时只有一位数码管在显示,但对观察者看来,好像所有的数码管是在同时显示一样。
虽然动态显示方式节省了口线,但对编程提高了要求。每位数码管显示的时间(或频率)需要在一个合理的范围:显示频率通常在25Hz以上才能保证较好的显示效果。频率低于25Hz时,观察者能够看出数码管在闪烁,频率在25Hz左右,有相当一部分人能够感觉到数码管的闪烁,当频率增加到50Hz时,数码管看上去就十分流畅、舒服了。但显示频率再增加,几乎没有人能够分辨出显示效果的改善。显示频率过高,显示程序耗时大幅度增加,编程困难,显示亮度下降。
利用显示的位扫描,增加几个口线就可以实现扫描(阵列)式键盘。在LED数码管显示时,每个瞬时8255的PC口给出位扫描信号只有1根口线为低电平。由PC口的口线组成“列”,而PB口的3根线组成“行”,在行列的焦点上放置一个按键。如果在某个瞬时单片机检测到PB口线上的低电平时,就可以根据检测到低电平的PB口口线和此时给出低电平的PC口口线判断出按键的位置,也就是键值。为了清楚起见,在图10-12中重新给出实验板阵列式键盘接口电路。
图10-11 动态LED显示器与键盘
8255 |
PB0 |
PB1 |
PB2 |
PC0 |
PC1 |
PC2 |
PC3 |
PC4 |
PC5 |
PC7 |
PC6 |
|
列 |
行 |
图10-12 阵列式键盘接口 |
单片机口线的输出低电平的驱动能力比高电平要强得多,但在保证符合逻辑电平时也只有5mA左右,不需要保证逻辑电平时(如驱动LED时可以有10多个mA)。因此,如果要驱动较大功率的器件:(1)应该以低电平有效;(2)外接功率驱动器件。
蜂鸣器需要的驱动电流较大,根据上述考虑,仿真实验板采用了10-13所示的蜂鸣器驱动电路。该电路结构简单、方便适用。虽然是采用分立元件,在需要驱动负载个数不多的情况下,采用这种电路是较为适宜的。如果需要驱动较多和较重的直流负载,可以选用象7反相功率驱动器MC14433这样一类集成电路比较合适。
10-13 蜂鸣器驱动电路
|
仿真实验板电源电路如10-14所示。220V的交流电适配器输出的12V直流由插座J1输入。经过C9和C15的滤波输入到三端稳压器7905。注意:7905是-5V输出的稳压集成电路,因而7905的输出端(3端)比接地端(1端)要抵5V。所以在电路中把3端作为地(GND),而把1端作为VCC,以保证单片机的工作电压是所需的、稳定的+5V。而把7905的输入端(2端)作为模拟电路的负电源(-AGND)为运放等供电。
图中的LED发光管D5有两个作用:(1)作为电源指示。(2)为模数转换器提供基准电源。由于发光管压降一般在1.6~1.8V之间,而模数转换器ADC0809的参考电源需要2.5V,因此,串接一只普通的二极管D6,使基准电源Vref1在2.2~2.4V之间,基本上满足电路的要求。
仿真实验板的数字电路和模拟电路的电源线采用了各自走线的方法,以减少数字电路和模拟电路之间的相互干扰,特别是数字电路对模拟电路的干扰。如果采用完全独立的两套电源为数字电路和模拟电路分别供电,将显著地增加电路的复杂性和成本。电路中虚设两个电阻R25和R26,分别将数字电路和模拟电路的电源连接在一起。实际电路可以将R25和R26以导线直接短接来代替。这种方法在不增加电路的复杂性和成本的情况下,显著地降低数字电路和模拟电路之间的相互干扰。
10-14 仿真实验板电源电路
文章评论(0条评论)
登录后参与讨论