标题: 用8X8发光矩阵当单片机显示器 [打印本页]

作者: zxwdown    时间: 2019-4-3 23:23
标题: 用8X8发光矩阵当单片机显示器
         很多人认为单片机的最佳搭配显示器是液晶1602显示器,理由是价格便宜,使用方便。但是,液晶1602显示器也有很多缺点,最大的是端口占用太多,有8根数据线,3根控制线,电源及背光电源4根,还要再加一根对比度线,总共要16根线。很多同学是用最小单片机系统,主板与显示器是用杜邦线相连,连接不怎么牢靠,不是电源松,就是背光掉线,要不就是数据没接牢,如果不是主板带显示接口,并不太好让1602显示出内容,而且1602显示16个字符就出了显示范围,还要记得换行,使用并不是很轻松。如果换个思路,用LED8X8发光矩阵当显示器,其实效果也不错。首先是有些LED8X8发光矩阵是集成译码和移位芯片的,接口只有6根数据线和2根电源线,比1602少得多,很适合小系统板用杜邦线连接使用。其次显示不用调对比度,而且尺寸较大,观看不吃力。第三是有完全的显示能力,1602能显示的字符,它都能显示,不象数码管,只能显示十多个符号,它其实是个单个字符的显示器,如果利用滚动显示,以人眼阅读的速度相近的速度滚动显示,效果还是可以接受,价格也比1602便宜,对于显示内容不多的程序调试等新手学习单片机场合,是非常理想的显示器。本人以集成译码器和移位寄存器的6线发光矩阵为条件,编了一个把8X8发光矩阵作为显示器的样例程序,供想以发光矩阵作为单片机显示器的同学参考。下面是单片机程序

  1. #include<reg51.h>
  2. #include "char.h"
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit ser=P0^3;//ser 14
  6. sbit sck=P0^4;//sck 11
  7. sbit rck=P0^5;//rck 12
  8. //============================
  9. void delay(uint ii){uint i;for(i=0;i<ii;i++);}
  10. //============================
  11. void SendByte(uchar cc)
  12. {uchar c=cc;int i;
  13.   for(i=0;i<8;i++){if(c&0x01)ser=1;else ser=0;c>>=1;sck=0;sck=1;}
  14.     rck=0;rck=1;
  15. }
  16. //============================
  17. void PutChar(char ci)
  18. {int i,j;
  19.   for(i=0;i<200;i++)for(j=0;j<6;j++){P0=j;SendByte(vc[ci-0x20][j]);delay(25);SendByte(0);}
  20. }
  21. //============================
  22. void PutStr(char *str)
  23. {int i=0;
  24. while(str[i]!=0){PutChar(str[i]);i++;}
  25. }
  26. //============================
  27. void main()
  28. {int i,j,k=0;
  29.   while(1){PutStr("N=123");}
  30.   }
复制代码


为便于直观观察效果,本人制作仿真模型,全套程序及仿真在附件中。
下面是仿真截图。

仿真效果不好,实际显示效果还好一点。


全部资料51hei下载地址:
LED8X8.zip (49.6 KB, 下载次数: 17)


作者: zxwdown    时间: 2019-4-3 23:45
实际显示效果是这样的:


作者: MzzLjl    时间: 2019-4-4 07:51
支持一下
作者: ptlantu    时间: 2019-4-4 09:24
字母数字还行




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1