基于51单片机的led点阵显示.docx

上传人:b****8 文档编号:12367949 上传时间:2023-06-05 格式:DOCX 页数:17 大小:492.35KB
下载 相关 举报
基于51单片机的led点阵显示.docx_第1页
第1页 / 共17页
基于51单片机的led点阵显示.docx_第2页
第2页 / 共17页
基于51单片机的led点阵显示.docx_第3页
第3页 / 共17页
基于51单片机的led点阵显示.docx_第4页
第4页 / 共17页
基于51单片机的led点阵显示.docx_第5页
第5页 / 共17页
基于51单片机的led点阵显示.docx_第6页
第6页 / 共17页
基于51单片机的led点阵显示.docx_第7页
第7页 / 共17页
基于51单片机的led点阵显示.docx_第8页
第8页 / 共17页
基于51单片机的led点阵显示.docx_第9页
第9页 / 共17页
基于51单片机的led点阵显示.docx_第10页
第10页 / 共17页
基于51单片机的led点阵显示.docx_第11页
第11页 / 共17页
基于51单片机的led点阵显示.docx_第12页
第12页 / 共17页
基于51单片机的led点阵显示.docx_第13页
第13页 / 共17页
基于51单片机的led点阵显示.docx_第14页
第14页 / 共17页
基于51单片机的led点阵显示.docx_第15页
第15页 / 共17页
基于51单片机的led点阵显示.docx_第16页
第16页 / 共17页
基于51单片机的led点阵显示.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的led点阵显示.docx

《基于51单片机的led点阵显示.docx》由会员分享,可在线阅读,更多相关《基于51单片机的led点阵显示.docx(17页珍藏版)》请在冰点文库上搜索。

基于51单片机的led点阵显示.docx

基于51单片机的led点阵显示

 

项目名称:

基于51单片机的LED点阵显示器

 

一、项目介绍………………………………………2

1.1项目背景

1.2功能介绍

二、电路结构………………………………………3

三、实现模块………………………………5

四、运行程序………………………………………7

一、项目介绍

1.1项目背景

当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。

因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。

目前,点阵式显示器件具体包括LED显示模块和LCD显示模块等。

现在发展的LCD比较先进,LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。

LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。

1.2功能介绍

2本次设计的用单片机控制的显示电路使用比较简单,操作方便。

它主要是通过一个8×8点阵来显示图案,通过不同的按键来选择控制图案的种类及显示方式。

在通电以后,显示屏全亮,随后进入逐字显示状态。

按下复位键K1,系统自动复位,显示diligent,随后进入待命状态。

按键1、2、3、4分别控制不同的图案。

另外,我们可以通k5键来控制字符移动速度的快慢。

二、电路结构

单片机最小系统设计

2.2.1各部分具体电路

1单片机的时钟电路

AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。

单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。

AT89C52的时钟产生方式有两种:

内部时钟电方式和外部时钟方式。

由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。

内部时钟方式:

利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。

最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。

图2-1使用片内振荡电路的时钟电路

2单片机的复位电路

本设计中AT89C52是采用上电自动复位和按键复位两种方式。

最简单的复位电路如图2-2所示。

上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。

其中R1和R2分别选择200Ω和1KΩ的电阻,电容器一般选择22μF。

图2-2AT89C52的复位电路

3AT89C52的最小应用系统

AT89C52是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2-3所示。

这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的I∕O线。

图2-3AT89C52单片机构成的最小系统

2.3按键及接口设计

2.3.1独立式按键接口设计

本设计按键较少,采用独立式按键简单而方便。

独立式按键就是各键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。

因此,通过检测输入线的电平状态很容易判断哪个按键被按下了。

设计采用的是中断方式的独立式按键工作电路,按键直接与AT89C52的I/O口线相接,通过读I/O口,判定各I/O口线的电平状态,即可识别出按下的键。

独立式按键电路中,一般采用上拉电阻,这是为了保证在按键断开时,各I/O口线有确定的高电平。

而AT89C52芯片内已有上拉电阻,则外部的上拉电阻可以省去。

三、实现模块

1.单片机最小系统

2.按键及接口

3.显示及接口

4.驱动电路

5.电源电路

8×8点阵LED显示器的组成原理及控制方式

本次设计中采用8×8点阵LED显示器,简称LED点阵板或LED矩阵板。

它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。

有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种,设计中用到的是共阳极的显示器。

共阳极接法的原理图如图2-4所示,图中画出了8×8点阵的二极管。

每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。

当给发光二极管阳极引出端r1加高电平,阴极引出端c1加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同汉字的目的。

图2-48×8点阵LED显示器组成原理图

图2-58×8点阵LED引脚的排列图

电路图如下所示:

四、程序

/*

必要操作:

正确连接点阵到学习板

*/

#include//包含头文件

unsignedcharmode0,mode1,mode2,mode3,mode4;//显示模式

sbitk1=P2^7;

sbitk2=P2^6;

sbitk3=P2^5;

sbitk4=P2^4;

sbitk5=P2^0;

unsignedcharxin1[8]={

0x0,0x0,0x0,0x6C,0x92,0x44,0x28,0x10

};//心形1

unsignedcharbxin1[8]={

0x0,0x0,0x0,0x6C,0x82,0x0,0x28,0x10

};//半心形1

unsignedcharxin2[8]={

0x0,0x36,0x49,0x22,0x14,0x8,0x0,0x0

};//心形2

unsignedcharbxin2[8]={

0x0,0x36,0x41,0x0,0x14,0x8,0x0,0x0

};//半心形2

unsignedcharxin[8]={

0x0,0x36,0x41,0x6E,0x96,0x4C,0x28,0x10

};//双心形2

 

unsignedcharzimu0[8]={

0x38,0x24,0x22,0x22,0x22,0x22,0x24,0x38

};//D

unsignedcharzimu1[8]={

0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C

};//I

unsignedcharzimu2[8]={

0x1E,0x20,0x40,0x40,0x4E,0x42,0x22,0x1E

};//G

unsignedcharzimu3[8]={

0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C

};//I

unsignedcharzimu4[8]={

0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3E

};//L

unsignedcharzimu5[8]={

0x7E,0x40,0x40,0x7E,0x7E,0x40,0x40,0x7E

};//E

unsignedcharzimu6[8]={

0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0

};//N

unsignedcharzimu7[8]={

0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18

};//T

unsignedcharname0[8]={

0xE9,0x2A,0xEC,0x9F,0xE8,0x2C,0x6A,0x29

};//张

unsignedcharname1[8]={

0x42,0x24,0x7E,0x0,0x3C,0x0,0xFF,0x0

};//兰

unsignedcharname2[8]={

0x26,0x74,0x25,0xFE,0x56,0x55,0x56,0x94

};//郝

 

unsignedcharai0[8]={

0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C

};//I

unsignedcharai1[8]={

0x0,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x0

};//实心

unsignedcharai2[8]={

0x0,0x66,0x99,0x81,0x42,0x24,0x18,0x0

};//空心

unsignedcharai3[8]={

0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C

};//U

 

unsignedcharxie0[8]={

0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x0

};//T

unsignedcharxie1[8]={

0x0,0x24,0x24,0x24,0x3C,0x24,0x24,0x24

};//H

unsignedcharxie2[8]={

0x0,0x8,0x14,0x3E,0x41,0x41,0x0,0x0

};//A

unsignedcharxie3[8]={

0x0,0x0,0x22,0x26,0x2A,0x32,0x22,0x0

};//N

unsignedcharxie4[8]={

0x22,0x24,0x28,0x30,0x28,0x24,0x22,0x0

};//K

unsignedcharxie5[8]={

0x1C,0x22,0x20,0x10,0xC,0x2,0x22,0x1C

};//S

 

voiddelay()//延时函数

{

unsignedintc;

c=300;

while(c--){}

}

voidmain(void)//主函数

{

unsignedinti,j,k,m;

k1=1;

k2=1;

k3=1;

k4=1;

k5=1;

m=10;

mode0=0;

for(k=0;k<8;k++)

{

for(j=0;j<30;j++)//调节字母变化速度

for(i=0;i<8;i++)//点阵8列动态扫描法显示,每次扫描一列并发送数据码

{

if(mode0==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码

P0=zimu0[i];

if(mode0==1)

P0=zimu1[i];

if(mode0==2)

P0=zimu2[i];

if(mode0==3)

P0=zimu3[i];

if(mode0==4)

P0=zimu4[i];

if(mode0==5)

P0=zimu5[i];

if(mode0==6)

P0=zimu6[i];

if(mode0==7)

P0=zimu7[i];

P1=~(1<

delay();//延时

}

mode0++;

if(mode0>7)

mode0=0;

}

P0=0;//P0口各脚输出高电平,点阵不显示

 

while

(1)

{

mode1=0;

mode2=0;

mode3=0;

mode4=0;

if(k5==0)

{

//delay(5);

if(k4==0)//消抖

{

m=m+30;

if(m>100)

m=10;

}

}

while(!

k5);//松手检测

while(k1==0)//图形1

{

for(j=0;j

for(i=0;i<8;i++)//点阵8列动态扫描法显示,每次扫描一列并发送数据码

{

if(mode1==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码

P0=bxin1[i];

if(mode1==1)

P0=xin1[i];

if(mode1==2)

P0=bxin2[i];

if(mode1==3)

P0=xin2[i];

if(mode1==4)

P0=xin[i];

P1=~(1<

delay();//延时

}

mode1++;

if(mode1>4)

mode1=0;

}

while(k2==0)//图形2

{

for(j=0;j

for(i=0;i<8;i++)//点阵8列动态扫描法显示,每次扫描一列并发送数据码

{

if(mode2==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码

P0=name0[i];

if(mode2==1)

P0=name1[i];

if(mode2==2)

P0=name2[i];

P1=~(1<

delay();//延时

}

mode2++;

if(mode2>2)

mode2=0;

}

while(k3==0)//图形3

{

for(j=0;j

for(i=0;i<8;i++)//点阵8列动态扫描法显示,每次扫描一列并发送数据码

{

if(mode3==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码

P0=ai0[i];

if(mode3==1)

P0=ai1[i];

if(mode3==2)

P0=ai2[i];

if(mode3==3)

P0=ai3[i];

P1=~(1<

delay();//延时

}

mode3++;

if(mode3>3)

mode3=0;

}

while(k4==0)//图形4

{

for(j=0;j<20;j++)//调节表情变化速度

for(i=0;i<8;i++)//点阵8列动态扫描法显示,每次扫描一列并发送数据码

{

if(mode4==0)//模式0-3分别对应4种表情,根据模式选择表情所对应的显示码

P0=xie0[i];

if(mode4==1)

P0=xie1[i];

if(mode4==2)

P0=xie2[i];

if(mode4==3)

P0=xie3[i];

if(mode4==4)

P0=xie4[i];

if(mode4==5)

P0=xie5[i];

P1=~(1<

delay();//延时

}

mode4++;

if(mode4>5)

mode4=0;

}

P0=0X00;

P1=0XFF;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2