1、 1 / 19项目名称:基于 51 单片机的 LED 点阵显示器目录一、 项目介绍 21.1 项目背景1.2 功能介绍二、 电路结构 3三、 实现模块 5四、 运行程序 7一、 项目介绍1.1 项目背景当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。目前,点阵式显示器件具体包括 LED 显示模块和 LCD 显示模块等。现在发展的 LCD 比较先进,LCD 的优点较为明显,他体积
2、小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那2 / 19些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕 LED 点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。LED 显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或
3、图形的变化,达到宣传和提示的目的。1.2 功能介绍2 本次设计的用单片机控制的显示电路使用比较简单,操作方便。它主要是通过一个 88 点阵来显示图案,通过不同的按键来选择控制图案的种类及显示方式。在通电以后,显示屏全亮,随后进入逐字显示状态。按下复位键 K1,系统自动复位,显示 diligent,随后进入待命状态。按键1、2、3、4 分别控制不同的图案。另外,我们可以通 k5 键来控制字符移动速度的快慢。二、 电路结构单片机最小系统设计2.2.1 各部分具体电路1 单片机的时钟电路AT89C52 单片机内部的振荡电路是一个高增益反向放大器,引线 XTAL1 和XTAL2 分别是放大器的输入端和
4、输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C52 的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。内部时钟方式:利用其内部的振荡电路在 XTAL1 和 XTAL2 引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 XTAL1 和 XTAL2 之间接晶体振荡器与电路构成稳定的自激振荡器,如图 2-1 电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为 6MHz 的石英晶体,电容器一般选择 30PF 左右。3 / 19图 2-1使用片内振荡电路的时钟电路2 单片机的
5、复位电路本设计中 AT89C52 是采用上电自动复位和按键复位两种方式。最简单的复位电路如图 2-2 所示。上电瞬间,RC 电路充电,RST 引线端出现正脉冲,只要RST 端保持 10ms 以上的高电平,就能使单片机有效地复位。其中 R1 和 R2 分别选择 200 和 1K 的电阻,电容器一般选择 22F 。图 2-2 AT89C52的复位电路3 AT89C52 的最小应用系统AT89C52 是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图 2-3 所示。这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的 IO 线
6、。4 / 19图 2-3 AT89C52单片机构成的最小系统2.3 按键及接口设计2.3.1 独立式按键接口设计本设计按键较少,采用独立式按键简单而方便。独立式按键就是各键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态很容易判断哪个按键被按下了。设计采用的是中断方式的独立式按键工作电路,按键直接与 AT89C52 的 I/O口线相接,通过读 I/O 口,判定各 I/O 口线的电平状态,即可识别出按下的键。独立式按键电路中,一般采用上拉电阻,这是为了保证在按键断开时,各I/O 口线有确定的高电平。而 AT89C52 芯片
7、内已有上拉电阻,则外部的上拉电阻可以省去。三、 实现模块1. 单片机最小系统2. 按键及接口5 / 193. 显示及接口4. 驱动电路5. 电源电路88点阵 LED显示器的组成原理及控制方式本次设计中采用 88 点阵 LED 显示器,简称 LED 点阵板或 LED 矩阵板。它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种,设计中用到的是共阳极的显示器。共阳极接法的原理图如图 2-4 所示,图中画出了88 点阵的二极管。每一行发光二极管的阳极接在一起,有一个引出端 r,每一列发光二极管的阴极接在一起,有一个引出端
8、 c。当给发光二极管阳极引出端 r1 加高电平,阴极引出端 c1 加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同汉字的目的。图 2-4 88点阵 LED显示器组成原理图6 / 19图 2-5 88点阵 LED引脚的排列图电路图如下所示: 7 / 19四、程序/*必要操作:正确连接点阵到学习板*/8 / 19#include /包含头文件unsigned char mode0,mode1,mode2,mode3,mode4; /显示模式sbit k1=P27;sbit k2=P26;sbit k3=P25;sbit k4=P24;sbit k5=P20;u
9、nsigned char xin18=0x0,0x0,0x0,0x6C,0x92,0x44,0x28,0x10;/心形 1unsigned char bxin18=0x0,0x0,0x0,0x6C,0x82,0x0,0x28,0x10;/半心形 1unsigned char xin28=0x0,0x36,0x49,0x22,0x14,0x8,0x0,0x0;/心形 2unsigned char bxin28=0x0,0x36,0x41,0x0,0x14,0x8,0x0,0x0;/半心形 2unsigned char xin8=0x0,0x36,0x41,0x6E,0x96,0x4C,0x28,
10、0x109 / 19;/双心形 2unsigned char zimu08=0x38,0x24,0x22,0x22,0x22,0x22,0x24,0x38;/Dunsigned char zimu18=0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C;/Iunsigned char zimu28=0x1E,0x20,0x40,0x40,0x4E,0x42,0x22,0x1E;/Gunsigned char zimu38=0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C;/Iunsigned char zimu48=0x20,0x20,
11、0x20,0x20,0x20,0x20,0x20,0x3E;/Lunsigned char zimu58=0x7E,0x40,0x40,0x7E,0x7E,0x40,0x40,0x7E10 / 19;/Eunsigned char zimu68=0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0;/Nunsigned char zimu78=0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18;/Tunsigned char name08=0xE9,0x2A,0xEC,0x9F,0xE8,0x2C,0x6A,0x29;/张unsigned ch
12、ar name18=0x42,0x24,0x7E,0x0,0x3C,0x0,0xFF,0x0;/兰unsigned char name28=0x26,0x74,0x25,0xFE,0x56,0x55,0x56,0x94;/郝unsigned char ai08=0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C;/I11 / 19unsigned char ai18=0x0,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x0;/实心unsigned char ai28=0x0,0x66,0x99,0x81,0x42,0x24,0x18,0x0;/空心
13、unsigned char ai38=0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C;/Uunsigned char xie08=0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x0;/Tunsigned char xie18=0x0,0x24,0x24,0x24,0x3C,0x24,0x24,0x24;/Hunsigned char xie28=0x0,0x8,0x14,0x3E,0x41,0x41,0x0,0x0;/Aunsigned char xie38=0x0,0x0,0x22,0x26,0x2A,0x32,0x22,0x012 / 19;/
14、Nunsigned char xie48=0x22,0x24,0x28,0x30,0x28,0x24,0x22,0x0;/Kunsigned char xie58=0x1C,0x22,0x20,0x10,0xC,0x2,0x22,0x1C;/Svoid delay() /延时函数unsigned int c;c=300;while(c-)void main(void) /主函数unsigned int i,j,k,m;k1=1;k2=1;k3=1;13 / 19k4=1;k5=1;m=10;mode0=0;for(k=0;k7)mode0=0;P0=0; /P0 口各脚输出高电平,点阵不显示while(1)mode1=0;mode2=0;mode3=0;mode4=0;if(k5=0)15 / 19/delay(5);if(k4=0) /消抖m=m+30;if(m100)m=10;while(!k5);/松手检测while(k1=0) /图形 1for(j=0;j4)mode1=0;while(k2=0) /图形 2for(j=0;j2)mode2=0;while(k3=0) /图形 3for(j=0;j3)mode3=0;while(k4=0) /图形 4for(j=0;j5)mode4=0;P0=0X00;P1=0XFF;