LED点阵_单片机_普中

发布者:delta14最新更新时间:2024-08-05 来源: cnblogs关键字:LED点阵  单片机  普中 手机看文章 扫描二维码
随时随地手机看文章

1 介绍

LED点阵屏由LED发光二极管组成,通过控制LED亮灭来显示文字、图片、动画、视频等,被广泛应用于公共场合做信息展示,如广告屏、公告牌等。

工作原理:每个LED放置在行线和列线的交叉点上,当对应的某一行电平拉高,某一列电拉低,则对应交叉点的LED就会点亮。

 要实现显示图像或字体,只需考虑其显示方式。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。


2 功能要求:在点阵屏上点亮一个点(如左上第一个点),再显示字母和图形。


3 硬件设计

3.1 系统框图

3.2 LED点阵和74HC595原理图

4 软件设计


4.1 点亮指定的LED等


 1 #include 'reg52.h'

 2 

 3 typedef unsigned int     u16;     //数值范围为0-65535,2个字节

 4 typedef unsigned char     u8;       //数值范围为0-255,1个字节

 5 

 6 sbit SH_CP    =    P3^6;          //移位寄存器时钟输入

 7 sbit ST_CP    =    P3^5;        //存储寄存器时钟输入

 8 sbit DS        =    P3^4;        //串行数据输入

 9 

10 #define LED8X8_COL_PORT     P0    //点阵列控制端口

11 

12 //延时函数

13 void delay_10us(u8 ten_us)

14 {

15      while(ten_us--);

16 }

17 

18 //向74hc595写入一个字节的数据,实现并转串,8位数据由高到低一位一位传给DS

19 void hc595_wr(u8 dat)

20 {

21       u8 i;

22     for(i=0;i<8;i++)

23     {

24          DS=dat>>7;

25         dat=dat<<1;

26         SH_CP=0;

27         delay_10us(1);

28         SH_CP=1;

29         delay_10us(1);

30     }

31     ST_CP=0;

32     delay_10us(1);

33     ST_CP=1;

34 }

35 

36 void main()

37 {

38     //将LED点阵左边第一列设置为0,即0111_1111,

39     LED8X8_COL_PORT=0x7f;      

40   while(1)

41   {

42       //将LED点阵上边第一行设置为1,即1000_0000

43       hc595_wr(0x80);

44   }

45 }


4.2 显示字母Z


 1 #include 'reg52.h'

 2 

 3 //对系统默认数据类型进行重新定义

 4 typedef unsigned int     u16;       //数据范围0-65535

 5 typedef unsigned char     u8;          //数据范围0-255

 6 

 7 //定义输入、输出管脚

 8 sbit SH_CP    = P3^6;        //移位寄存器时钟输入

 9 sbit ST_CP     = P3^5;        //存储寄存器时钟输入

10 sbit DS     = P3^4;        //串行数据输入

11 

12 #define LED_COL_PORT     P0      //LED控制管脚

13 

14 

15 //LED点阵显示图像数据,采用列扫描方式

16 u8 gled_row[8]    = {0x00,0x42,0x46,0x4A,0x52,0x62,0x42,0x00}; //LED点阵显示字母Z的行数据

17 u8 gled_col[8]    = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //LED点阵显示字母Z的列数据

18 

19 //延时函数,ten_us=1时,大约延时10us

20 void delay_10us(u8 ten_us)

21 {

22     while(ten_us--);

23 }

24 

25 //由单片机向74HC595写入一个字节的数据

26 void hc595_wr(u8 dat)

27 {

28      u8 i;

29     for(i=0;i<8;i++)     //循环8次即可将一个字节写入寄存器中

30     {

31          DS=dat>>7;         //高位在前,优先传输一个字节中的高位

32         dat=dat<<1;         //将低位移动高位

33         SH_CP=0;         //产生移位寄存器的时钟,将端口数据送入寄存器中

34         delay_10us(1);

35         SH_CP=1;

36         delay_10us(1);

37     }

38     ST_CP=0;         //存储寄存器时钟,上升沿将前面写入寄存器的数据输出

39     delay_10us(1);

40     ST_CP=1;

41 }

42 

43 void main()

44 {

45      u8 i=0;

46 

47     while(1)

48     {

49          for(i=0;i<8;i++)                //循环8次扫描8行、列

50         {

51               LED_COL_PORT = gled_col[i];      //传输列选数据

52             hc595_wr(gled_row[i]);         //传输行选数据

53             delay_10us(100);             //延时大约1ms,等到显示稳定

54             hc595_wr(0x00);                 //消影     

55         }

56     }

57 }


5 实验现象

使用USB线将开发板和电脑连接成功后,把编译后产生的.hex文件下载到芯片内,8x8LED点阵左上角显示第一个点;同理,8x8LED点阵显示字母Z。


参考资料:


 (1)Arduino 8×8点阵屏的驱动 – Arduino 实验室 (nxez.com);


关键字:LED点阵  单片机  普中 引用地址:LED点阵_单片机_普中

上一篇:T0和T1可编程选择为定时功能与计数功能,二者有什么不同?
下一篇:IO扩展(74HC595)_单片机_普中

推荐阅读最新更新时间:2024-11-16 23:48

单片机码表的驱动程序
#include reg52.h #include ./delay/delay.h #define SEGPORT P0 sbit start = P1^0; sbit end = P1^1; sbit seg_select = P2^1; sbit bit_select = P2^0; unsigned char flag = 1; unsigned char duanma = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char weima = {0xfe,0xfd,0xfb,0xf7,0xef,0
[单片机]
单片机型FM有线/无线遥控广播系统
引言 在许多单片机应用系统中,常常利用电信号与非电信号,来传送控制信号和数据信息,以实现遥控或遥测的功能,例如光信号、超声波信号、电脉冲信号等。而本FM有线/无线遥控广播系统中,是使用双音频电信号发送接收挖出,实现对FM有线/无线广播的远程控制管理。这种双音频通信具有控制简单,实施方便,传输可靠,而且造价低廉的特点,也是一种较为常用的通信方式。实现单片机系统双音频通信的关键在于双音频接收电路设计和应用,以及检测程序的设计。 1 遥控广播系统的基本原理 基本原理如图1所示。 遥控广播系统的通信是电话拨号收发的一种双音频通信方式,是一项可靠、成熟的通信技术。它取代了传统的电话拨号脉冲通信方式,成为现代电话通信拨号的主要通信方式
[单片机]
<font color='red'>单片机</font>型FM有线/无线遥控广播系统
AVR单片机电压表程序
AVR电压表程序: #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define setb(val,bitn) (val|=(1 (bitn)))//设置某IO口某位为1 #define clr(val,bitn) (val&=~(1 (bitn)))//设置某IO口某位为0 #define get(val,bitn) (val&(1 (bitn)))//读取某位状态如 uchar shi=20,fen=39,miao,a=0xff,num; #pragma data:code//定义程序存在RO
[单片机]
掌握这7个规则,单片机开发没难度!
01设计满足要求的最精简的系统 正确估计单片机的能力,知道单片机能做什么,最大程度的挖掘单片机的潜力对一个单片机系统设计者来说是至关重要的。我们应该有这样一个认识,即单片机的处理能力是非常强大的。 早期的PC机,其CPU(8086)处理能力和8051相当,却能处理相当复杂的任务。单片机的能力的关键就在软件设计者编写的软件上。只有充分地了解到单片机的能力,才不会做出“冗余”的系统设计。而采用许多的外围芯片来实现单片机能实现的功能。这样做,即增加了系统成本,也可能会降低了系统的可靠性。 02使用看门狗 看门狗电路通常是一块在有规律的时间间隔中进行更新的硬件。更新一般由单片机来完成,如果在一定间隔内没能更新看门狗,那看门狗将产生复
[单片机]
单片机上使用M430/OS对系统的意义解析方案
引 言 1 在MSP430上使用RTOS的意义 一般的观点认为,MSP430上使用RTOS是没有意义的这是可以理解的。因为MSP430的硬件资源有限(以MSP430F149为例,只有2KB RAM),任何商业操作系统都不可能移植到MSP430上。目前在MSP430上得到应用的RTOS,只有μC/OS-II,但使用μC/OS-II 必须有昂贵的C编译器,这严重地限制了其在MSP430上的使用。 正是基于以上情况,笔者在应用MSP430过程中,编写了一个基于MSP430F149的RTOS,暂定名为M430/OS。它占用RAM量少、代码短小,稍加改动就可适用于大多数其它MSP430单片机。 在MSP430单片机系统上使用M430
[单片机]
单片机学习记录——开发总流程
开发总流程 1.打开keil,建立新的工程。 2.新建 .c 文件和 .h 文件,再把.c文件添加到工程中。 3.在新建的.c文件中编辑c代码就可以了。 4.编译程序,生成.hex可执行文件。 所需查看的文档 查看原理图,了解硬件如何接线,知道控制哪几个IO口 查看单片机的datasheet和各个外设芯片的datasheet,了解如何编程,尤其是外设芯片的工作时序。 如何烧录程序至单片机? 答:编译编写好的单片机程序,生成.hex文件,打开烧录软件,选择单片机型号和COM端口,再选择.hex文件,点击下载,然后打开开发板的电源。至此,程序就已烧录进单片机。
[单片机]
PIC单片机定时器取值
用PIC16F877A,晶振用4M的做了一个实验如下: 实验通过示波器测得LED的高电平是500MS,低电平是500MS.以下为测试图: #include pic.h #define uint unsigned int #define uchar unsigned char uint intnum=0; void init_system() { TRISC=0x00; PORTC=0; INTCON=0xc0; PIE1=0x01; TMR1L=(65536-63000)%256; //并非很多书上定的取50000 TMR1H=(65536-63000)/256; T1CON=0x31; } void inter
[单片机]
PIC<font color='red'>单片机</font>定时器取值
单片机数据采集系统研究瞬变过程
0 引 言   在教学实验及科学实验中,我们常常需要了解充电的电压、电流曲线、放电的电压曲线,记录并整理数据,画曲线,这里使用单片机数据采集系统可以直观了解RC电路的过渡过程,用数据采集系统得出的数据计算该RC电路的时间常数。 1 RC电路的过渡过程   实验电路如图1所示。   当数据采集系统启动后,U1为高电平,晶体三极管T1导通,T1集电极U C1 下降,合二极管D截止,三极管T2也截止,而电容器C通过r4及r5充电,充电时间常数近似为      τ充=(r4+r5)·C   电阻r5上的电压U r 与电容电流成正比,U C 近似为电容器电压,将U C 与U r 送入数据采集系统,可以得到256对电容电压及电容
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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