工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->AT89S51制作的LED显示屏

AT89S51制作的LED显示屏

作者:dolphin时间:2016-09-29

  用AT89S51制作的LED(发光二极管)显示屏可以显示字符、汉字、动画等任何图形。该电路充分利用了单片机的I/O口资源.使整机硬件达到最简,很适合初学者仿制。
  
  一、工作原理
  
  整个点阵显示屏由4块8×8的LED点阵拼合而成。每块LED点阵的分辨率为8×8=64像素.4块LED点阵拼合起来就是16×16=256像素,即16行和16列。如下图所示,所有的行线分别接所在行每个LED的阳极,所有的列线分别接所在列每个LED的阴极。单片机P2口和P3口的输出用于扫描16行,PO口和P1口的输出送显示数据到16列。由于单片机可以提供较大的灌人电流,故采用这种接法,但显示数据时必须取反后才能输出。这种动态显示方式使显示屏每一时刻只显示一行.即要完成一桢画面的显示.16行须逐行显示一次.也就是将16行依次扫描一次。只要扫描速度足够快,由于人眼的惰性就会使人感觉显示的是一幅完整的画面。例如。扫描到第三行时。该行的行线置高电平.其它15条的行线置低电平,这样,当从列线送出数据后.只有第三行的16个LED才能显示数据。VT1-VT16是行扫描驱动管,为每行的16个LED在显示不同内容时提供足够大的动态电流.R17-R32为限流电阻,以防止过大的电流灌入单片机而损坏器件。

LED显示屏电路


  
  二、软件设计
  
  程序用汇编语言编写,其中大部分都是用来控制查显示数据表的程序,以得到不同的显示效果.如拉幕式显示、汉字上移显示、动画显示等等。
  
  由于显示屏是256像素,即256位数据,故显示一桢画面需256/8=32个字节,在单片机的RAM中将50H-6FH单元作为显示缓存,在送出待显示数据之前先将单片机ROM中的一桢待显示数据调入显示缓存,然后调用一次显示子程序就完成了一桢画面的显示。扫描从第16行开始,依次向第1行进行扫描显示。如图2所示,P2、P3全部置位以保证在装载数据期间显示屏无任何显示,否则显示的画面会产生阴影效果。
  
  RO是间接寻址的数据指针,其初始值为50H.映射的是显示缓存的初始单元。以下是判断9-16行是否扫描完毕的程序段:
  
  CJNER5,#09H,NEXT0R5用来记录扫描次数.当9-16行的8次扫描完毕后R5的值变成09H.然后转向1-8行开始扫描。与此同时,CY被该条指令清除。扫描每行延时1ms.则将16行即一桢画面扫描完约16ms,那么显示屏每秒的刷新频率约63Hz,所以人眼不会感觉到闪烁。
  
  三、安装与调试
  
  由于LED点阵管脚排列不规则,所以应注意不要接错。实验发现。AF-88371型LED点阵可以用其他型号代换,其管脚排列一致,可以直接按图1所示装配,若要加工成印刷电路板时须自制LED点阵的封装。只要连线无误,该机就能够正常工作。字模提取采用Zi_mo.exe软件,该软件能够生成任何输入的字符,也可以自定义显示内容或导人图片,默认情况下生成的是16×16的点阵代码.将生成的A51代码直接复制到程序中的数据表即可。
  
  四、扩展应用
  
  LED显示屏属于传统的显示方式,经实验后发现了一个更有趣的现象。硬件方面,只需将16个普通LED的一端分别接到单片机的两个P口,另一端经300Ω的电阻后分别接到电源正极,然后将16个LED整齐地排成一列即可。软件方面,将本文所介绍的显示子程序中的行扫描部分全部删掉,并将1ms延时变为3ms延时,输出的P口按接法做适当的调整,令程序显示一幅静止的“心形”画面。通电后,可以看到16个LED都被点亮。不过,象荧光棒那样用手一摇立即可以看到令人惊奇的“心形”画面。其实,这不过是用“手摇”
  
  代替了行扫描,所以最好显示对称图形效果较好。
  
  五、显示屏源程序



评论

技术专区