简述C51单片机并行口扩展设计及应用
进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用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 显示电路
2.4 电源部分电路的设计
整个电路系统使用9v~12v的直流电源供电,故使用一个拔码开关和一个二极管,以起保护作用,这里拔码开关只起到电源开关的作用。由于cpu电源为5v,所以使用l7805三端稳压来供cpu电源,电源指示灯一个。电源部分电路图如图4所示:
图4 电源电路
2.5 复位部分电路设计
本电路的复位电路是用一个复位芯片max706p来设计的,并带有复位按钮一个。这里复位是低电平有效的,有手动复位按钮,当程序跑飞或无响应时可以选用手动复位。复位信号来自于cpu的p22口。复位电路原理图如图5所示。
图5 复位电路
3 系统软件部分设计与应用
程序已经调试通过,整个程序实现的功能如下:
p1口的八位扩展,控制8个开关led指示灯,程序实验了对这8个指示灯的开关跑马控制,实验程序可以编写从l1至l8的循环发亮,在每个发光 二极管发光的同时,数码管显示当前发亮led的序号,比如11、22、33等等。也可让每个二极管闪烁,可以规定闪烁时间为半秒钟或更长,然后再在每一个 led指示灯闪烁的同时,让led数码管显示当前闪烁的指示灯的序号,比如,l1灯闪烁时,数码管显示11字样,l2灯闪烁时,数码管显示22字样等等。 在数模转换这一子函数的编写上,是使用指针数组来写的,dac0832实现da的转换的芯片,实现的功能是输出一正弦波模拟信号,当在端子口接一示波器时,示波器将输出一正弦波图形。主程序流程图如(图6)所示。以上所述是整个系统的功能,所有的程序都已经通过调试试验,实验证明是可行的。
4 结束语
整个系统的软件已经完全通过调试,证明是切实可行的,整个系统的硬件设计是本着单片机系统设计的简单化原则来设计,显的简炼有序,软件编写也非常简单易懂。本系统设计比较适合于在小型系统中应用。
- 基于AT89C51的燃气泄漏报警器设计(02-19)
- 基于AT89C51的无线病房呼叫系统设计(09-10)
- 基于单片机的无线病房呼叫系统设计(08-26)
- 基于AT89C51单片机16×16 LED汉字滚动显示屏的设计(09-20)
- 单片机智能频率信号装置(11-25)
- 单片机在医学信号检测仪中的应用(02-07)