AT89S52单片机对LED点阵显示屏的控制设计

发布者:beta13最新更新时间:2023-07-17 来源: elecfans关键字:AT89S52  单片机  LED点阵显示屏 手机看文章 扫描二维码
随时随地手机看文章

第一章 概述

LED点阵显示屏是通过PC机将要显示的汉字字模提取出来,并发送给单片机,然后显示在点阵屏上,主要适用于室内外汉字显示。


第二章 硬件设计

2.1 主要器件介绍

LED 点阵显示屏是由20 个8*8 的LED 点阵块组成,形成16*80 矩形点阵,以Atmel 公司的AT89S52单片机为控制核心。显示屏的其他主要硬件有:①带锁存输出的8位移位寄存器74HC595,作为LED的列线驱动输入;②三八译码器74LS138,作为LED行线的译码选择;③三极管C9012,连接两个三八译码器的十六个输出端,作为开关使用,驱动LED的行线。


2.2 主要器件详细连接说明

AT89S52单片机对LED点阵显示屏的控制设计

Atmel的AT89S52芯片相关器件连接的接脚如下:P00-P03连接3-8译码器的输入口A,B,C,~G2A

AT89S52单片机对LED点阵显示屏的控制设计

P20-P23连接74HC595的输入口RCK, SI,SCK,SCLR

三八译码器74LS138的16 个输出端连接16 个C9012的三极管的基极B,发射极E 连接16 个行线控制端,集电极C连接到GND。

点阵的80 列数据线驱动由10 片74HC595 级联组成,前一片74HC595 的Q’H 引脚连接

下一片的SI引脚,各片的RCK、SCK、SCLR 分别并联。

2.3 LED点阵块

8*8的LED点阵为单色行共阳模块,单点的工作电压为正向(Vf)=1.8 v ,正向电流(IF)= 8-10 mA 。静态点亮器件时(64 点全亮)总电流为640mA,总电压为1.8 v,总功率为1.15W。动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160 mA。16*16点阵静态时16*16*10mA,动态时单点电流80-160mA。

接线方式:

当某一行线打高时,某一列线为低时,其行列交叉的点就被点亮;

某一列线为高时,其行列交叉的点为暗;

当某一行线打低时,无论列线如何,对应这一行的点全部暗。

AT89S52单片机对LED点阵显示屏的控制设计

列线:13—20控制点阵的列接低电平

行线:1-4 21-24控制点阵的行接高电平

2.4 AT89S52

AT89S52单片机对LED点阵显示屏的控制设计

AT89S52单片机对LED点阵显示屏的控制设计

(1)P0.0【39 脚】,P0.1【38 脚】,P0.2【37 脚】,P0.3【36 脚】接两片3-8译码器的A,B,C和第一片的~G2A 与第二片的G1,用来选择LED的行线

(2) P2.0【21 脚】:接74HC595的RCK脚。

P2.1【22 脚】:接74HC595的SCK脚。

P2.2【23 脚】:接74HC595的SI脚。

P2.3【24 脚】:接74HC595的SCLR脚。

(3) 其他

VCC 【40 脚】:接电源

EA/VPP【31 脚】:接电源

RST 【9脚】:复位脚。过10K电阻接GND,过10uF的电容C3接VCC;复位按钮接到电容C2两端。

2.5 移位寄存器74HC595

74HC595是带锁存输出的8位移位寄存器,其管脚见下图,其中SI是串行数据的输入端;

VCC、GND分别为电源和地;RCK是存储寄存器的输入时钟,SCK是移位寄存器的输入时钟,SCLR是移位寄存器的输入清除,Q’H是串入数据的输出,G是对输入数据的输出使能控制,QA~QH串入数据的并行输出。从SI口输入的数据在移

AT89S52单片机对LED点阵显示屏的控制设计

位寄存器的SCK脚上升沿的作用下输入到74HC595中,在RCK脚的上升沿作用下将输入的数据锁存在74HC595中,当G为低电平时时,数据并行输出。SCLR为移位寄存器的输入清除端。

74HC595与AT89S52的连接:SI【14脚】,SCK【11脚】,RCK【12脚】, SCLR【10脚】分别接到AT89S52的P2.2【23脚】,P2.1【22脚】,P2.0【21脚】,P2.3【24脚】上。

其他脚连接:OE【13脚】接地,使其始终输出;

Q’H【9脚】是连接下一片74HC595的SI脚;QA,QB到QH分别连接到LED点阵的1至8列的列线脚上。

2.6 三八译码器74LS138

AT89S52单片机对LED点阵显示屏的控制设计

图所示的是将两片74LS138译码器扩展为4线-16线译码器的连接图。其接线特点为:将四个输入信号~G2A,C,B,A中的低三位C,B,A同时接至两个芯片的地址输入端。输入信号的最高位~G2A接至两个芯片的使能端,使两个芯片不能同时工作。~G2A,C,B,A作为地址输入变量构成二进制代码,Y0~Y7、Y0~Y7作为输入信号,每个输出表示一个二进制代码的含义,即能实现4线-16线译码器的功能。

第三章 软件设计

3.1 单片机的程序设计

单片机在LED点阵显示系统中主要负责数据的接收、存储和扫描显示LED点阵屏三大主要功能。

/***************************************************************************************************

* Name: khldragon

* Date: 09/12/2009

* Description: This program controls 16*80LED and implements dynamic scan.

****************************************************************************************************/

#include

#include

#define CONIO P0 //行选信号

#define NUMOFWORDS (6) //显示的字数

#define SPEED (30) //扫描周期 SPEED越大,扫描越慢;

#define MAXWORDS (5) //屏幕最大固定显示字数

#define BLANK (4) //填充空数

#define MAXROW (16) //最大行数

static sbit OE = P0^4; //控制74LS138,低电平有效

static sbit RCK = P2^0; // 上升沿时数据输出

static sbit SCK = P2^1; //上升沿时数据移位

static sbit SI = P2^2; //74hc595串行输入

static sbit SCLK = P2^3; //低电平移位寄存器清零,通常接VCC

static void send_in(unsigned char Data); //串行数据输入

static void send_out(void); //并行数据输出

static unsigned int row = 0; //行选信号

static int j = 0;

static int k = 0;

static int m = 0;

static int s = 0; //与SPEED匹配

static int count = 0; //当为5时达到最大字数MAX

const static unsigned char code zimo[][32]={

{0x20,0x08,0x13,0xFC,0x12,0x08,0x02,0x08,0xFE,0x08,0x0A,0x08,0x12,0x08,0x3B,0xF8,

0x56,0xA8,0x90,0xA0,0x10,0xA0,0x11,0x20,0x11,0x22,0x12,0x22,0x14,0x1E,0x18,0x00},//祝

{0x00,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x88,0x24,0x98,0x3E,0xA0,0x20,0xC0,

0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x82,0x26,0x82,0x38,0x82,0x60,0x7E,0x00,0x00},//比

{0x01,0x00,0x7F,0xFE,0x44,0x42,0x9F,0xF4,0x04,0x40,0x1F,0xF0,0x04,0x40,0x7F,0xFC,

0x08,0x20,0x1F,0xF0,0x28,0x2E,0xC9,0x24,0x09,0x20,0x01,0x00,0x06,0xC0,0x18,0x30},//赛

{0x00,0x80,0x00,0xA0,0x00,0x90,0x3F,0xFC,0x20,0x80,0x20,0x80,0x20,0x84,0x3E,0x44,

0x22,0x48,0x22,0x48,0x22,0x30,0x2A,0x20,0x24,0x62,0x40,0x92,0x81,0x0A,0x00,0x06},//成

{0x00,0x80,0x00,0x80,0x08,0x80,0xFC,0x80,0x10,0x84,0x17,0xFE,0x10,0x84,0x10,0x84,

0x10,0x84,0x10,0x84,0x1D,0x04,0xF1,0x04,0x41,0x04,0x02,0x44,0x04,0x28,0x08,0x10},//功

{0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,

0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00},//!

};

void main()

{

//初始化引脚

CONIO = 0X00;

P2 = 0X08;

/**********************************动态扫描左移显示不限字数***************************************/

while(1)

{

for(k = 0; k 《 NUMOFWORDS; k++)

{//扫描NUMOFWRODS遍

for(s = 0; s 《 SPEED; s++)

{

for(row = 0; row 《 MAXROW; row++)

{

count = 0;

//将要显示的字,送入74HC595的SI端,即单片机的P2^2引脚

for(j = k; j 》= 0; j--)

{

count++;

if(count 》 MAXWORDS)

break;

send_in(zimo[j][2*row+1]);

send_in(zimo[j][2*row]);

}

//填充空白

for(m = BLANK-k; m 》 0; m--)

{

send_in(0);

send_in(0);

}

send_out();

CONIO=row;

}

}

}

//下面程序逻辑同上,只是换下位置

for(k = 1; k 《= MAXWORDS; k++)

{

for(s = 0; s 《 SPEED; s++)

{

for(row = 0; row 《 MAXROW; row++)

{

for(m = k; m 》 0; m--)

{

send_in(0);

send_in(0);

}

for(j = 1; j 《= MAXWORDS - k; j++)

{

send_in(zimo[NUMOFWORDS-j][2*row+1]);

send_in(zimo[NUMOFWORDS-j][2*row]);

}

send_out();

CONIO=row;

}

}

}

}

}

/*****************************************************************

** 函数名:void send_in(unsigned char data)

** 输 入:unsigned char data

** 输 出: void

** 功能描述: send data to 74hc595

** 全局变量: SCK SI

** 调用模块:main()

** 作 者:khldragon

** 日 期:09/12/2009

** 版本version1.0

****************************************************************/

void send_in(unsigned char data)

{

unsigned char i;

for(i = 0; i 《 8; i++)

{ //循环8次,刚好移完8位

SCK = 0; //先将移位寄存器控制引脚置为低

SI = Data & 0x01; //取数据的最低位,form: little endian

Data 》》= 1; //将数据的次高位移到最高位

SCK = 1; //再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位

_nop_();

}

}

/*****************************************************************

** 函数名:void send_out(void)

** 输 入:void

** 输 出: void

** 功能描述: send data to led

** 全局变量: RCK

** 调用模块:main()

** 作 者:khldragon

** 日 期:09/12/2009

** 版本version1.0

****************************************************************/

void send_out(void)

{

RCK = 0; //先将存储寄存器引脚置为低

_nop_();

_nop_();

RCK = 1; //再置为高,产生移位时钟上升沿,上升沿时移位寄存器的数据进入数据存储寄存器,更新显示数据。

_nop_();

_nop_();

RCK = 0; //先将存储寄存器引脚置为低

}


关键字:AT89S52  单片机  LED点阵显示屏 引用地址:AT89S52单片机对LED点阵显示屏的控制设计

上一篇:51单片机对智能温控器的设计
下一篇:如何使用单片机制作一个手动计数器

推荐阅读最新更新时间:2024-11-06 10:38

STM32单片机(3) 串口中断通信
注:使用普中科技开发板测试时,需要拔掉Boot1短接帽 两根下载线也要拿掉,重启 /******************************************************************************* * * 软件功能: 串口实验(软件延时方式) * *******************************************************************************/ #include stm32f10x.h #include string.h #include delay.h u8 uart1_buf ; int count=0
[单片机]
单片机彩灯控制系统(项目一)
任务描述:某企业承担了一个LED彩灯控制系统设计任务。此彩灯控制系统由时钟电路、复位电路、8个发光二极管LED灯组成,要求单片机并行端口控制LED灯按照1,2→3,4→5,6→7,8→1→2→3→4→5→6→7→8的顺序循环点亮,每个状态停留1秒,循环不止。请用单片机设计其控制系统并调试运行。 硬件图: 元件清单: C语言程序: #include reg51.h unsigned char led ={0x03,0x0c,0x30,0xc0,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void delay(unsigned int k); void main()
[单片机]
<font color='red'>单片机</font>彩灯控制系统(项目一)
2015德州仪器中国教育者巡回讲座圆满收官
(2015年6月26日,哈尔滨讯)为期2个多月、覆盖全国15个城市的2015年德州仪器(TI)中国教育者巡回讲座昨日在哈尔滨圆满收官。此次巡回讲座是TI再度面向教育者展开的技术培训讲座,旨在为广大从事单片机、模拟和无线技术的教育者提供业界最新技术,并为其在课程革新和科技研发方面提供最全面的技术支持。TI中国大学计划部总监王承宁博士与TI模拟和嵌入式技术领域的专家,向高校教师介绍了TI最新的模拟、单片机以及无线技术,交流了相关教学改革新思路,为高校教师的教学研究提供了强大的技术支持。 图1:TI中国大学计划部总监王承宁博士演讲 TI中国教育者巡回讲座于4月16日正式启动,跨越武汉、杭州、南京、上海、北京、天津、
[半导体设计/制造]
2015德州仪器中国教育者巡回讲座圆满收官
基于单片机的具有通讯口的智能温控表
1 引言      温控表已广泛应用于工业控制等诸多领域,本文介绍的具有计算机通讯功能的智能温控表是一种新颖的自动化仪表,它以单片机AT89C52为核心,采用电压/频率转换技术和RS-485通信接口芯片MAX487,具有测量精度高、可靠性好、抗干扰性能强、可实现计算机网络控制等优点,可广泛应用于冶金、纺织、化工、医疗等行业。它具有-200~+500°C范围的温度测量和自动控制,是老式温控表的替代产品,市场前景广阔。 2 系统硬件设计      系统硬件框图如图1所示。   系统接通220V交流电源后,通过稳压电路(7805、7905)产生±5V直流工作电源,以满足本系统中集成电路工作需要,系统的遥测电路开始工作:在人
[单片机]
基于PIC18F系列单片机的嵌入式系统设计
引言     嵌入式系统是指以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、体积、成本、可靠性、功耗严格要求的专用计算机系统。嵌入式系统是面向应用的,系统的硬件选型和软件开发模式都必须根据具体的应用确定。     永磁无刷直流电动机是电机控制研究领域的热点之一,这与其自身固有的技术优势密切相关:以电子换相取代了有刷直流电动机的机械换相。从根本上革除了普通有刷直流电动机由于电刷换相带来的火花、噪音、高故障率等一系列问题,同时又使系统的性能能够与普通有刷直流电动机相媲美,因此得到了广泛的应用。永磁无刷直流电动机的电子换相离不开电机的转子位置信号,传统的方法是采用霍尔器件或其他位置传感器检测位置信号,这使得系统
[嵌入式]
松翰单片机数码管程序
;数码管 ---- 目的:学习查表及间接寻址 CHIP SN8F27E65 //{{SONIX_CODE_OPTION .Code_Option WDT_CLK Flosc/4 .Code_Option Reset_Pin P04 .Code_Option LVD LVD_Max ; 3.3V Reset .Code_Option Watch_Dog Disable .Code_Option Low_Fcpu Flosc/1 .Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator .Code_Option High_Fcpu Fhosc/1 .Code
[单片机]
单片机控制12864液晶显示屏显示静态图片
PROTEUS仿真电路图: 仿真结果展示: 大长安城墙的一角: 大雁塔: 龙: C语言程序代码: #include reg51.h #define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//ye #define LCDCol_Add 0x40//lie #define Start_Line 0xC0//hang /*****液晶显示器的端口定义*****/ #define data_ora P1 /*液晶数据总线*/ sbit LCDMcs=P2^4 ; /*片选1*/ sbit LCDSc
[单片机]
<font color='red'>单片机</font>控制12864液晶<font color='red'>显示屏</font>显示静态图片
【GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(3)使用 Embedded Builder 开发 GD32
3.1 安装 JAVA 环境 Embedded Builder 是一款基于 Eclipse 和 Java 平台的软件,需要安装 java 环境,在 Oracle 官网下载 https://www.oracle.com/java/technologies/downloads/, 以 jdk-8u152-windows-x64.exe 为例,下载后管理员身份打开并安装,记住安装路径,如“D:Program FilesJavajdk1.8.0_351”。 编辑系统变量,将 Java 环境添加到系统环境中。首先在系统变量中添加JAVA_HOME 这个变量。 编辑系统变量中的 Path 变量,单击新建,添加如下两个变量。 在系统
[单片机]
【GD32 <font color='red'>MCU</font> 入门教程】一、GD32 <font color='red'>MCU</font> 开发环境搭建(3)使用 Embedded Builder 开发 GD32
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved