研发埠
标题:
如何基于并行口对89C51单片机进行扩展?
[打印本页]
作者:
才子
时间:
2013-3-14 10:51
标题:
如何基于并行口对89C51单片机进行扩展?
作者:
小强
时间:
2013-3-14 10:53
1)基于89c51的系统硬件设计1.1 并行口的扩展的电路设计AT89C51是一种带4K字节FLASH存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。众所周知,c51系列的单片机都有四个i/o口(p0、p1、p2、p3),那么at89c51也不例外,但我们通常仅仅使用p1口作为并行口,而令其余口(p2、p3)处于闲置状态,所以这次设计,我们就是使用闲置不用的p3口作为选能信号线来将p1口进行并行口扩展。(1)并行口扩展优点连线简单;不占用存储器空间;(2)编程也方便灵活。但也有很大的缺点并行口扩展能力有限,(如使用74ls573(74ls373)且不进行驱动处理,则最多可扩展4个同样类型的并行输出端口,当然还需要与之对应的四个选通信号。)如扩展较多,选通信号占用并行口位数太多,例如欲扩展8个并行输出端口,则需要8个选能信号,此时,仅选能信号就占用了一个8位并行口,这对在i/o端口线有限的单片机系统中,如此浪费资源的现象是不能容忍的。在本次的设计中,采用芯片74hc573(带三态输出的八进制透明d型锁存器)对p1口进行了一个8位并行口的扩展,选通信号选用p3口的p3.3引脚。P1口扩展电路原理图如图1所示。图1 P1口扩展电路原理图1.2 拟信号输出的电路设计数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。最常见的数模转换器是将并行二进制的数字量转换为直流电压或直流电流,它常用作过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自动控制。数模转换器电路还用在利用反馈技术的模数转换器设计中。模拟信号的输出需要用到d/a转换器,这里我使用最常用的8位的d/a转换器dac0832来转换数字电压信号。因dac0832是并行d/a转换集成电路,其输出为电流型,在使用时,必须额外增加一个运算放大器,才能得到电压信号,在本次电路中使用了1个lm741放大器来放大信号输出,lm741是一个普通的单操作的放大器,具有输入电压范围大,短路电压保护,高增益和不需频率补偿等优点。dac0832的片选端口与单片机的p2.2相连,xfer和wr2接地,使之一直处于使能状态,即输入数据寄存器中的数字信号可直接转换为模拟信号。d/a转换电路的输出是一个周期的正弦波,通过外接示波器可以清淅的看到。另外模拟信号的输出引在一个外接端子上,可以与其它系统相连接,做到通用性的效果。d/a转换原理图如图2所示。图2 D/A转换原理图1.3 静态数码管显示的电路设计静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个"8"可分为1位、2位、4位等等数码管;数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。这里我们所设计的电路显示是属于静态显示那种,是两位静态数码管显示,其主要的功能是显示当前发光led的序号,比如如果当前是l1灯在亮的话,数码管将显示11,是l2灯亮,数码管显示22字样等。电路的设计使用2个8位的移位寄存器(74hc164),和两个八段的led数码管(共阳的)加上2个8×330ω的排阻构成。静态数码管显示的优点在于,编写程序相对比较简单,一旦将欲显示的数据发送出去,只要当前显示的数据没有变化,就无须理睬它。不足之处在于,如果显示的位数太多,硬件的开销和电源的功耗问题将会很严重(比如这里,只需显示两位,就需要用到两块74hc164和2个排阻)。显示电路原理图如图3所示。图3 显示电路原理图1.4 电源部分电路的设计整个电路系统使用9v~12v的直流电源供电,故使用一个拔码开关和一个二极管,以起保护作用,这里拔码开关只起到电源开关的作用。由于cpu电源为5v,所以使用l7805三端稳压来供cpu电源,电源指示灯一个。电源部分电路图如图4所示。图4 电源部分电路图1.5 复位部分电路设计本电路的复位电路是用一个复位芯片max706p来设计的,并带有复位按钮一个。这里复位是低电平有效的,有手动复位按钮,当程序跑飞或无响应时可以选用手动复位。复位信号来自于cpu的p22口。复位电路原理图如图5所示。图5 复位电路原理图2)系统软件部分编写与调试[img][/img][img][/img][img][/img][img][/img][img][/img]
欢迎光临 研发埠 (http://bbs.yanfabu.com/)
Powered by Discuz! X3.2