很多人认为单片机的最佳搭配显示器是液晶1602显示器,理由是价格便宜,使用方便。但是,液晶1602显示器也有很多缺点,最大的是端口占用太多,有8根数据线,3根控制线,电源及背光电源4根,还要再加一根对比度线,总共要16根线。很多同学是用最小单片机系统,主板与显示器是用杜邦线相连,连接不怎么牢靠,不是电源松,就是背光掉线,要不就是数据没接牢,如果不是主板带显示接口,并不太好让1602显示出内容,而且1602显示16个字符就出了显示范围,还要记得换行,使用并不是很轻松。如果换个思路,用LED8X8发光矩阵当显示器,其实效果也不错。首先是有些LED8X8发光矩阵是集成译码和移位芯片的,接口只有6根数据线和2根电源线,比1602少得多,很适合小系统板用杜邦线连接使用。其次显示不用调对比度,而且尺寸较大,观看不吃力。第三是有完全的显示能力,1602能显示的字符,它都能显示,不象数码管,只能显示十多个符号,它其实是个单个字符的显示器,如果利用滚动显示,以人眼阅读的速度相近的速度滚动显示,效果还是可以接受,价格也比1602便宜,对于显示内容不多的程序调试等新手学习单片机场合,是非常理想的显示器。本人以集成译码器和移位寄存器的6线发光矩阵为条件,编了一个把8X8发光矩阵作为显示器的样例程序,供想以发光矩阵作为单片机显示器的同学参考。下面是单片机程序
- #include<reg51.h>
- #include "char.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit ser=P0^3;//ser 14
- sbit sck=P0^4;//sck 11
- sbit rck=P0^5;//rck 12
- //============================
- void delay(uint ii){uint i;for(i=0;i<ii;i++);}
- //============================
- void SendByte(uchar cc)
- {uchar c=cc;int i;
- for(i=0;i<8;i++){if(c&0x01)ser=1;else ser=0;c>>=1;sck=0;sck=1;}
- rck=0;rck=1;
- }
- //============================
- void PutChar(char ci)
- {int i,j;
- for(i=0;i<200;i++)for(j=0;j<6;j++){P0=j;SendByte(vc[ci-0x20][j]);delay(25);SendByte(0);}
- }
- //============================
- void PutStr(char *str)
- {int i=0;
- while(str[i]!=0){PutChar(str[i]);i++;}
- }
- //============================
- void main()
- {int i,j,k=0;
- while(1){PutStr("N=123");}
- }
复制代码
为便于直观观察效果,本人制作仿真模型,全套程序及仿真在附件中。
下面是仿真截图。
仿真效果不好,实际显示效果还好一点。
全部资料51hei下载地址:
LED8X8.zip
(49.6 KB, 下载次数: 17)
|