32*32点阵LED显示汉字-STC单片机

发布者:中华古风最新更新时间:2012-08-13 来源: 51hei关键字:点阵LED  显示汉字  STC单片机 手机看文章 扫描二维码
随时随地手机看文章

 

说明:我点击浏览下一页

点击浏览下一页

点击浏览下一页

图上摆放的是上面一排引脚是行,下面一排引脚是列。行是LED阳极。

行列各由四个74HC573控制,每个控制8个脚。同时注意单片机P0口上拉保持供电充足。

还有注意每行的扫描时间要合理设置。否则会有显示残缺。根据实际设置吧!!!

横向显示4个字:少 占 鱼 制 作

其实可以把这个程序和我另外的一个单片机串口与电脑通信的程序结合起来,加上我用VC做的上位机界面。可以自由输入显示内容,还可以反向控制电脑的一些操作。不过我还是热衷不用电脑输入显示内容,而用一只感应笔扫描一个32*32LED模板,实现自己点哪就让哪个LED亮的效果。简单有省事。等我做出实物来再发吧!!!其实就是加个光敏三极管,LED模板上各个LED点亮时间不同。通过测频达到取某点坐标的目的。[page]

//32*32点阵LED显示,由8*8点阵组成。列高行低点亮
/*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/

#include
#define uchar unsigned char
#define uint unsigned int
//少占鱼制作  河北正定欢迎您   长沙航空职业技术学院  2010 年QQ:411656434
//邮箱:ssou_1985@163.com
sbit CS1=P1^0;
sbit CS2=P1^1;
sbit CS3=P1^6;
sbit CS4=P1^7;

sbit L1=P1^2;
sbit L2=P1^3;
sbit L3=P1^4;
sbit L4=P1^5;

uchar hang[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar code tab[]={
      0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x20,
      0x09,0x10,0x11,0x0C,0x11,0x04,0x21,0x10,
      0x41,0x10,0x01,0x20,0x01,0x40,0x00,0x80,
      0x01,0x00,0x02,0x00,0x0C,0x00,0x70,0x00,
   //少
      0x02,0x00,0x02,0x00,0x02,0x08,0x03,0xFC,
      0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,
      0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,
      0x20,0x10,0x20,0x10,0x3F,0xF0,0x20,0x10,
   //占
      0x04,0x00,0x04,0x00,0x0F,0xE0,0x10,0x40,
      0x20,0x88,0x7F,0xFC,0xA1,0x08,0x21,0x08,
      0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,
      0x20,0x08,0x00,0x04,0xFF,0xFE,0x00,0x00,
   //鱼
   0x04,0x04,0x24,0x04,0x25,0x04,0x3F,0xA4,
      0x24,0x24,0x44,0xA4,0xFF,0xE4,0x04,0x24,
      0x3F,0xA4,0x24,0xA4,0x24,0xA4,0x24,0x84,
      0x26,0x84,0x25,0x04,0x04,0x14,0x04,0x08
   //制
};
void delay(uint);
void delayus();
void xianshi();
void dis1();
void dis2();
void dis3();
void dis4();
/****************************************************************/

//主函数入口
 
main()
{
delayus();
delay(20);
P0=0x00;
P2=0xff;
L1=0;
L2=0;
L3=0;
L4=0;
CS1=0;
CS2=0;
CS3=0;
CS4=0;
while(1)
 {
  xianshi();
 }

}

 void xianshi()
 {
  dis1();
  dis1();
  dis2();
  dis2();
  dis3();
  dis3();
  dis4();
  dis4();
 }

/************第一个16*16点阵显示***************/
//
void dis1()
{
  //第一个16*16点阵开始显示
 uchar i,j;
/*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/
//少占鱼 河北正定欢迎您   长沙航院  QQ:411656434
 for(i=0;i<8;i++)
 {
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
 /*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/
  P2=hang[i];
  CS1=1;
  P0=tab[i*2];
  L1=1;
  delay(1);
  P0=0x00;
  L1=0;  
  P0=tab[i*2+1];
  L2=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L2=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS1=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }
/*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/
 for(i=8;i<16;i++)
 {
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%8];
  CS2=1;
  P0=tab[i*2];
  L1=1;
  delay(1);
  P0=0x00;
  L1=0;  
  P0=tab[i*2+1];
  L2=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L2=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS2=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }
}

/*************第2个16*16点阵显示*********************/
//
 void dis2()
 {
   //第二个16*16点阵开始显示
 uchar i,j;
 for(i=16;i<24;i++)
 {/*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%16];
  CS1=1;
 P0=tab[i*2];
  L3=1;
  delay(1);
  P0=0x00;
  L3=0;  
 P0=tab[i*2+1];
  L4=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L4=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS1=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }
 for(i=24;i<32;i++)
 {
 /*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%24];
  CS2=1;
 P0=tab[i*2];
  L3=1;
  delay(1);
  P0=0x00;
  L3=0;  
 P0=tab[i*2+1];
  L4=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L4=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS2=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }

//第二个16*16点阵显示完毕
 }
/***********第3个16*16点阵显示**************************/
//
 void dis3()
 {
  //第三个16*16点阵开始显示
  uchar i,j;
 for(i=32;i<40;i++)
 { /*****我在修改的时候,总是字显示不完整,一开始还以为是哪里有错,后来改延时程序也不行,最后每行连续扫描几次,可以了******/
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%32];
  CS3=1;
  P0=tab[i*2];
  L1=1;
  delay(1);
  P0=0x00;
  L1=0;  
  P0=tab[i*2+1];
  L2=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L2=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS3=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }
 for(i=40;i<48;i++)
 {
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%40];
  CS4=1;
  P0=tab[i*2];
  L1=1;
  delay(1);
  P0=0x00;
  L1=0;  
  P0=tab[i*2+1];
  L2=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L2=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS4=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }
 
//第三个16*16点阵显示完毕
 }
 /********第4个16*16点阵显示*********************/
 //
  void dis4()
  {
 /************第4个16*16点阵显示***********************/
//第四个16*16点阵开始显示
  uchar i,j;
 for(i=48;i<56;i++)
 {
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%48];
  CS3=1;
  P0=tab[i*2];
  L3=1;
  delay(1);
  P0=0x00;
  L3=0;  
  P0=tab[i*2+1];
  L4=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L4=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS3=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }

 for(i=56;i<64;i++)
 {
  for(j=0;j<8;j++)//特别注意这里每组点阵的每行扫描8遍,人眼看起来才完整,否则会有残缺不亮
  {
  P2=hang[i%56];
  CS4=1;
  P0=tab[i*2];
  L3=1;
  delay(1);
  P0=0x00;
  L3=0;  
  P0=tab[i*2+1];
  L4=1;
  delay(1);
  P0=0x00;//这句才是真正关闭阳极正电的
  L4=0; //关闭列,这句是使以后的操作不再影响本列状态
  P2=0xff;//这句才是关闭阴极正电的语句
  CS4=0; //关闭行低,使以后的操作部影响本行状态
  i++;
 }
 }
//第四个16*16点阵显示完毕
  }
//

 void delayus()
 {
   uchar i=3;
   while(i--);
 
 }


void delay(uint k)
{
uint data i,j;
for(i=0;i  {
    for(j=0;j<155;j++)
     {;}
   }
}

 

关键字:点阵LED  显示汉字  STC单片机 引用地址:32*32点阵LED显示汉字-STC单片机

上一篇:51单片机的默认中断优先级都是低级及中断嵌套
下一篇:51单片机:8x8点阵显示心形图案

推荐阅读最新更新时间:2024-03-16 13:05

51的LED点阵笔记
今天的学习进度到了LED点阵,其实原理和班上同学在操场上用一堆蜡烛摆一个心字型差不多。用多个LED灯通过一定的组合,亮和灭的操作,达到显示出字或形状的效果。说到这个,和昨天学习的数码管原理也一样,通过LED亮和灭的两种状态,把七条横杠和一个点组合成数字或字母。原理理解不难。 难点:1、LED点阵最小有8*8,一般用来显示字是16*16,如果用io口来实现,8*8需要2个io端口即16个io口,如果是16*16,则需要4个io端口即32个io口,这样很明显io口会被占用很多,做法不现实。 解决方法:使用74HC595芯片,串转并移位锁存器。把数据8位8位串行输入,8位8位串行输出,那样8*8就可以只使用2个io口,加上时钟i
[单片机]
5×7 LED点阵屏的特别使用方式
本例中的电路给出了一种5×7 LED点阵屏的特别使用方式。 电路无需做任何修改,只要对LED单元稍加安排,就可以用于一组5×7 LED单元的设计中。使用一只5×7 LED点阵屏可以显示两个字符,而将N个单元水平排列(不是垂直排列)则可以显示2×N个字符。小写和大写字母最少都只需要一个3×5 LED的结构,但字母M和m除外,它们至少需要5×5LED结构,需要一个专用的子例程。图1中的电路使用了一只8位、18脚的PIC微控制器和一个十进制计数器,驱动一个或两个5×7 LED单元,提供了一个显示两个或四个数字的模块。电路采用了一个小型按键开关做计数器的递增。默认情况下,电路工作在高亮度模式。如果在上电时按住按键,则电路工作在低功耗模式。
[电源管理]
5×7 <font color='red'>LED</font><font color='red'>点阵</font>屏的特别使用方式
51单片机LED点阵上移程序!(汇编)
注释:行采用74LS154+PNP三极管驱动 列采用两个74HC595驱动! 此程序可以实现上移!下面是视频链接实拍效果,请大家查看!链接地址:视频祥见: http://www.tudou.com/programs/view/D0SCJyO4RBQ/ SDATA EQU P1.0 ;串行数据 SCLK EQU P1.1 ;移位时钟脉冲 RCK EQU P1.2 ;输出锁存器控制脉冲 ORG 000H JMP MAIN ORG 0030H MAIN: MOV SP,#5FH MOV 20H,#00H MAIN1: MOV R0,#5 MAIN2: MOV R3,#10H MOV R1,#00H MOV R2,20H
[单片机]
51单片机<font color='red'>LED</font><font color='red'>点阵</font>上移程序!(汇编)
以AT89C51单片机为核心的LED汉字滚动显示屏设计
引言 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED显示屏发展较快,本文讲述了基于AT89C51单片机16×16LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。 1 硬件电路组成及工作原理 本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组成,如图1所示
[单片机]
以AT89C51单片机为核心的<font color='red'>LED</font><font color='red'>汉字</font>滚动<font color='red'>显示</font>屏设计
[51单片机学习笔记FOUR]---16*16LED点阵
一、LED点阵发光原理 8*8单色单片机结构图如下: 从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。 二、点阵扫描实验 1 /*********************************************** 2 实验名称: 点阵扫描 3 实验说明: 扫描每个LED灯,检查点阵是否完好 4 实验时间: 2014/12/24 5 ***********************************************/ 6 #include reg51.h 7 #include intrins.h
[单片机]
[51单片机学习笔记FOUR]---16*16<font color='red'>LED</font><font color='red'>点阵</font>
STC单片机的种类与区别介绍
最近有太多的人不明白 单片机系列 的问题了。也就是说,很多人都在问STC12C2052和STC12C4052两个型号有什么区别。在任何一款STC单片机的数据手册里都有对型号的分析介绍,可是现代社会,人们都很急躁,哪有时间仔细看数据手册呀。于是我就接到了这些不难解释的问题了。现在我在此做一个介绍文章,以后再有问到此问题的,我就直接让他来看文章。 我们来分析一下STC单片机的型号的意义吧。 如 STC,12,C,20,52,AD STC:出品的公司名 12:产品大系列,STC单片机有89、90、10、11、12、15这几个大系列,每个系列都有自己的特点。89系列是老旧而传统的单片机,可以和AT89系列完全兼容,是12T单片机。90
[单片机]
VxWorks汉字显示解决方案
摘要:论述VxWorks上WindML对多字节码的显示支持,着重讨论其存储结构和意义,并给出汉字显示的实现方法。 关键词:VxWorks操作系统 WindML组件 汉字点阵 国标编码 1 VxWorks操作系统图形显示方案 VxWorks作为嵌入式实时操作系统,在国内应用已非常广泛,但VxWorks原厂商没有直接提供完备的汉字显示解决方案。本文这个热点论题,通过对VxWorks显示组件的分析,具体给出一种汉字显示的方案。 VxWorks的汉字显示首先需要一种图形解决方案,只有工作在图形模式下才可能显示汉字。VxWorks有三种显示方案可供选择。 (1)WindML+Zinc WindML是Wind River Mutl
[应用]
51单片机实验8:led点阵(1):点亮一个点
开发板led点阵模块电路图如下: 74HC595:74HC595是一个8位串行输入、并行输出的位移缓存器。芯片第11角为数据输入时钟线,上升沿有效。芯片第12脚为输出存储器锁存时钟线,上升沿有效。芯片第13脚为输出有效(低电平)。芯片第14脚为串行数据输入。 为表示出输入74HC595的8位二进制数,开发板加入了led模块(图一中绿色所示)。若要使led发光,则需将JP595接vcc。 OE为输出有效控制端,低电平有效,所以务必将JOE短接片短接到GND端。 _nop_();函数为延时一个机器周期,所对应头文件为intrins.h #include reg52.h #include intrins.h #
[单片机]
51单片机实验8:<font color='red'>led</font><font color='red'>点阵</font>(1):点亮一个点
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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