64个发光二极管,且每个发光二极管是放置在各行和列的交叉点上。当对应的某一列置高电
图2.3 8*8点阵实物图
平,另一列置低电平时,则在该行和列的交叉点上相应的二极管就亮。 图10为8×8点阵LED外观及引脚图,其等效电路如图9所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0 1,X0 0即可。应用时限流电阻可以放在X轴或Y轴[8]。
②8*8点阵显示原理
从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。8*8的点阵共有64个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,8*8的点阵需要64/8 8个锁存器。这个数字很庞大,因为我们仅仅是8*8的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法[9]。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如8行)的同名列共用一套驱动器。具体就8*8的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第8行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的[10]。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图2.4为显示屏电路实现的结构框图:
图2.4 显示屏系统框图 3 程序设计语言
单片机能执行的程序可以用很多种语言编写。从语言结构及其与单片机的关系两方面可分为三大类:分别是机器语言、汇编语言和高级语言。
3.1机器语言
机器语言是一种用二进制代码“0”和“1”表示指令和数据 的最原始的程序设计语言。由于计算机只能识别二进制代码,因此,这种语言与计算机的关系最为直接,计算机能够快速识别并立即执行,响应速度最快。但这种语言编写程序非常繁琐、费时,且不易看懂,不便记忆,容易出错。
3.2 汇编语言
汇编语言是一种用助记符来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是不同的。这种语言比机器语言更加直观、易懂、易用,且便于记忆。但是由于不同机器的汇编语言不同,这种语言有一定的局限性,移植性差。
3.3高级语言
高级语言是一种面向过程且独立于计算机硬件结构的通用计算机语言。目前在单片机应用最广泛的是C语言。
单片机C语言的特点
①对单片机的指令系统不要求了解,仅要求对单片机的存储结构有初步的了解。
②寄存器的分配、不同存储器的寻址及数据类型等细节可由编译器管理。 ③程序有规范的结构,可分为不同的函数,可使程序结构化。
④关键字及运算函数可用近似人的思维过程方式使用。 ⑤编程及程序调试时间显著缩短,从而提高效率。
⑥提供的库包含许多标准子程序,具有较强的数据处理能力等。 C语言使用的编程软件 .1编程软件
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
.2仿真软件
Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析 SPICE 各种模拟器件和集成电路。
4 基于单片机的病床呼叫系统的设计实现 4.1系统总体设计 求
本课题主攻方向是使系统实现以下目的:
①任一病房(共16张)呼叫,医护值班室马上能响应并显示病房号; ②显示病房床号;
③若有多个病床呼叫就循环显示; ④处理完毕后清除记录;
⑤显示器不重复显示按一次以上的病床号 案
用8051自身接口实现数码管静态显示和键盘扫描,使用8051单片微机外加作地址锁存用的四块三态锁存器74LS373芯片和一块74LS138芯片可构成一个完整的最小微机电路。以此为基础,在智能装置中若要配置多位数码管显示器,以及m行n列矩阵键盘的话,可以不扩展I/O芯片而由8051自身I/O口,实现上述功能, 即用P0口的八个端口作为LED的段选,用P2口的高三位连接一个三八译码器74LS138 作为四个LED的片选.用P1口和P2口的低五位做键盘电路的接口。
总体结构框图
本设计是基于AT89C51单片机设计的病房呼叫系统设计,该系统就是以Atmel公司的AT89C51单片机作为主控器,包括键盘输入电路,显示电路,以及晶振复位电路等来实现病房呼叫系统。
图4.1病房呼叫系统结构框图 4.2 系统硬件设计 成示意图
图4.2 硬件构成示意图 外围电路设计 .1 控制器AT89C51 复位电路: