单片机课程设计1616 LED广告屏.docx

上传人:b****5 文档编号:7606713 上传时间:2023-01-25 格式:DOCX 页数:11 大小:475.99KB
下载 相关 举报
单片机课程设计1616 LED广告屏.docx_第1页
第1页 / 共11页
单片机课程设计1616 LED广告屏.docx_第2页
第2页 / 共11页
单片机课程设计1616 LED广告屏.docx_第3页
第3页 / 共11页
单片机课程设计1616 LED广告屏.docx_第4页
第4页 / 共11页
单片机课程设计1616 LED广告屏.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机课程设计1616 LED广告屏.docx

《单片机课程设计1616 LED广告屏.docx》由会员分享,可在线阅读,更多相关《单片机课程设计1616 LED广告屏.docx(11页珍藏版)》请在冰豆网上搜索。

单片机课程设计1616 LED广告屏.docx

单片机课程设计1616LED广告屏

 

单片机课程设计实验说明书

 

 

题目:

16×16LED广告屏

班级:

组别:

 

目录

课题名称…………………………………………3

单片机组成部分…………………………………3

硬件电路设计……………………………………3

16×16点阵LED显示屏上滚屏显示原理…….3

16×16点阵LED显示屏上滚屏显示原理图….4

附录………………………………………………5

 

一、课题名称:

16×16LED广告屏

实验目的:

1、学习单片机的使用方法和简单的编程原理

2、通过单片机实现16×16LED广告屏显示简单的汉字和图形

二、单片机组成部分

 

图1系统结构框图

三、硬件电路设计

本电路是由AT89C51单片机为控制核心,低功耗;时钟源电路有很多种,比如阻容低速时钟源、普通晶体时钟源、带缓冲放大的晶体时钟源等等,考虑到电路稳定及材料选购等方面,决定采用普通晶体时钟源,其中晶体用12MHZ的石英晶振;复位电路结合实际应用功能的实现,采用上电复位;显示部分由16×16点阵LED显示屏显示;行驱动电路采用74LS154,列驱动电路采用74LS595。

四、16×16点阵LED显示屏上滚屏显示原理

在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。

如果要在16×16点阵屏以上滚屏的方式显示以字体,则需以以下方式进行显示。

在16×16点阵屏中,我们可以把点阵屏看成16行LED组成,且每行有16个LED灯。

在本例中单片机首先将第二行的显示信息给第一行,使第一行显示图像变成第二行所要显示的。

以“我”字为例,原第一行由左到右排列,为A灭,B灭,C灭,D灭,E灭,F亮,G亮,H灭,I灭,J亮,K灭,M灭,N灭,O灭,P灭。

即二进制111110*********1转换为16进制为F9h,BFh。

原第二行由左到右排列,为A灭,B灭,C亮,D亮,E亮,F灭,G灭,H灭,I灭,J亮,K灭,L亮,M灭,N灭,O灭,P灭。

即二进制110001*********1转换为16进制为C7h,Afh。

单片机将第二行信息给第一行取代第一行原信息,故第一行由左到右排列,为A灭,B灭,C灭,D灭,E灭,F亮,G亮,H灭,I灭,J亮,K灭,L灭,M灭,N灭,O灭,P灭。

接着将第一行的信息给第十六行,第三行的信息给第二行,第四行的信息给第三行,依此类推。

按照这个方法,继续进行下面的扫描。

最终点阵屏在视觉上的显示效果是“我”字慢慢往上移。

五、16×16点阵LED显示屏左跑马显示原理图

图2中断原理图3调用子程序原理

图4显示驱动程序流程图图5系统主程序流程图

附录

附录1:

电路图

图6总电路图

图774LS154行驱动模块

图82个74HC595级联

 

附录二:

实验仪器清单

1、51单片机开发板

2、LED灯256个及配套灯座256个

3、三极管8550二十个

4、排针40个

5、杜邦线、导线若干条

6、74HC589芯片及配套芯片座2套

7、芯片74LS154及配套芯片座1套

8、电阻47Ω16个,200Ω16个

 

附录三:

系统程序清单

#include

#defineBLKN2//列锁存器数

sbitG=0x97;//P1.7为显示允许控制信号端口

sbitRCLK=0x96;//P1.6为输出锁存器时钟信号端

sbitSCLR=0x95;//P1.5为移位寄存器清○端

voiddelay(unsignedint);//延时函数

unsignedchardatadispram[32];//显示缓存

voidmain(void)

{

unsignedcharcodeBmp[][32]={

{

0xF9,0xBF,0xC7,0xAF,0xF7,0xB7,0xF7,0xB7,

0xF7,0xBF,0x00,0x01,0xF7,0xBF,0xF7,0xB7,

0xF1,0xD7,0xC7,0xCF,0x37,0xDF,0xF7,0xAF,

0xF6,0x6D,0xF7,0xF5,0xD7,0xF9,0xEF,0xFD

}/*我*/,

{

0xFF,0x07,0xC0,0x6F,0xED,0xEF,0xF6,0xDF,

0xC0,0x01,0xDD,0xFD,0xBD,0xFF,0xC0,0x03,

0xFB,0xFF,0xF8,0x0F,0xF3,0xDF,0xF4,0xBF,

0xEF,0x3F,0x9C,0xCF,0x73,0xF1,0xCF,0xFB

}/*爱*/,

{

0xF7,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,

0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,

0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,

0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF

}/*单*/,

{

0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,

0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,

0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,

0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF

}/*片*/,

{

0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,

0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77,

0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,

0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF

}/*机*/,

{

0xF8,0x3F,0xE7,0xCF,0xDF,0xF7,0xBF,0xFB,

0xB3,0x9B,0x73,0x9D,0x7F,0xFD,0x7F,0xFD,

0x6F,0xED,0x67,0xCD,0xB3,0x9B,0xB8,0x3B,

0xDF,0xF7,0xE7,0xCF,0xF8,0x3F,0xFF,0xFF

}/**/

};

registerunsignedchari,j,k,l;

SCON=0x00;//串口工作模式0:

移位寄存器方式

TMOD=0x01;//定时器T0工作方式1:

16位方式

TR0=1;//启动定时器T0

P1=0x3f;//P1端口初值:

允许接收、锁存、显示

IE=0x82;//允许定时器T0中断

while

(1)

{

delay(2000);//延时2秒

for(i=0;i<32;i++)//显示效果:

卷帘出

{

dispram[i]=Bmp[5][i];

if(i%2)

delay(100);

}

delay(3000);

for(i=0;i<6;i++)//显示效果:

上滚屏

{

for(j=0;j<16;j++)

{

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

{

dispram[k*BLKN]=dispram[(k+1)*BLKN];

dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];

}

dispram[30]=Bmp[i][j*BLKN];

dispram[31]=Bmp[i][j*BLKN+1];

delay(100);

}

}

delay(3000);

for(i=0;i<6;i++)//显示效果:

左跑马

{

for(j=0;j<2;j++)

for(k=1;k<9;k++)

{

for(l=0;l<16;l++)

{

dispram[l*BLKN]=dispram[l*BLKN]<<1|dispram[l*BLKN+1]>>7;

dispram[l*BLKN+1]=dispram[l*BLKN+1]<<1|Bmp[i][l*BLKN+j]>>(8-k);

}

delay(100);

}

}

delay(3000);

for(i=0;i<32;i++)//显示效果:

卷帘入

{

dispram[i]=0x00;

if(i%2)

delay(100);

}

}

}

/*延时函数*/

voiddelay(unsignedintdt)

{

registerunsignedcharbt;

for(;dt;dt--)

for(bt=0;bt<255;bt++);

}

/*显示屏扫描(定时器T0中断)函数*/

voidleddisplay(void)interrupt1using1

{

registerunsignedchari,j=BLKN;

TH0=0xF8;//设定显示屏刷新率每秒62.5帧

TL0=0x30;

i=P1;//读取当前显示的行号

i=++i&0x0f;//行号加1,屏蔽高4位

do

{

j--;

SBUF=dispram[i*BLKN+j];//送显示数据

while(!

TI);

TI=0;

}

while(j);//完成一行数据的发送

G=1;//消隐(关闭显示)

P1&=0xf0;//行号端口清○

RCLK=1;//显示数据打入输出锁存器

P1|=i;//写入行号

RCLK=0;//锁存显示数据

G=0;//打开显示

}

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

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1