玩转LED点阵之二:16X64单红点阵左移

发布者:快乐舞步最新更新时间:2015-07-02 来源: 51hei关键字:LED点阵  点阵左移  STC89C52 手机看文章 扫描二维码
随时随地手机看文章
//单片机:STC89C52

//晶振:22.1184M,下载选择双倍时钟,否则会有闪烁!
//显示屏:HUB08接口16X64单红点阵
//显示方式:左移
//作者:振甬电子
//QQ: 1766135164
//网址:www.51hei.com
//时间:2013-05-13

#include
#include"zimo.h"
#define uchar  unsigned char
#define uint   unsigned int
#define SPEED   5   //定义速度与数字成反比 数字小,速度快
#define NUMBER  11  //定义要移动显示总16X16汉字个数,计算方法:NUMBER=汉字显示个数+4个空格

uchar word=0,col=0,col1=0,disrow=0,move=0;//wor为要显字变量,col为位移变量,col1为字节偏移量,disrow为行变量
uchar BUFF__UP[17];     //缓冲字节数取值=[2*板点阵宽度/8]+1比较保险,即两倍板的点阵字节数.
uchar BUFF__UP0[12];    //上半屏显示缓冲

sbit R1=P0^4;//红色数据1
sbit R2=P3^3;//红色数据2
sbit G1=P3^4;//绿色数据1
sbit G2=P3^5;//绿色数据
sbit CLK=P0^7; //595时钟端口
sbit STB=P0^6; //595锁存端口
sbit OE =P0^5;//74HC138使能:低有效

//根据列指针由双字节合并为单字节的子程序模块
//和点阵的取模方式有关:低位在前,高位在后,但是实际显示,高位在前,低位在后!
uchar Combine_2byte(uchar h1,uchar h2) 
{
 uchar T_date,tempcol;
 tempcol=col1;
 T_date=(h1>>tempcol)|(h2<<(8-tempcol));
 return T_date;
     

//分别装屏点阵数据
void Load_one_line(void)     //多加4个16X16汉字的缓冲
{
 BUFF__UP[0]=Table[word][disrow*2+0];//装载点阵数据
 BUFF__UP[1]=Table[word][disrow*2+1];

 BUFF__UP[2]=Table[word+1][disrow*2+0];
 BUFF__UP[3]=Table[word+1][disrow*2+1];

 BUFF__UP[4]=Table[word+2][disrow*2+0];
 BUFF__UP[5]=Table[word+2][disrow*2+1];

 BUFF__UP[6]=Table[word+3][disrow*2+0];
 BUFF__UP[7]=Table[word+3][disrow*2+1];

 BUFF__UP[8]=Table[word+4][disrow*2+0];
 BUFF__UP[9]=Table[word+4][disrow*2+1];

 BUFF__UP[10]=Table[word+5][disrow*2+0];
 BUFF__UP[11]=Table[word+5][disrow*2+1];

 BUFF__UP[12]=Table[word+6][disrow*2+0];
 BUFF__UP[13]=Table[word+6][disrow*2+1];

 BUFF__UP[14]=Table[word+7][disrow*2+0];
 BUFF__UP[15]=Table[word+7][disrow*2+1];

}

//发送屏一线点阵数据
void Send_one_line(void)
{
 char s;
 uchar temp,i,inc;
 if(col<8)            inc=0;
 if(8<=col&&col<16)   inc=1;
 for(s=0+inc;s<=8+inc;s++)
 {
  temp=Combine_2byte(BUFF__UP[s],BUFF__UP[s+1]);
  for(i=0;i<8;i++)
  {
   R1=~(temp>>i)&0x01;//取出最低位
   R2=0xff;      //不显示
   G1=0xff;
   G2=0xff;  
   CLK=0;
   CLK=1;       //移位时钟
  }
 }
}


//左移函数
void LEFT_MOVE()
{
  uchar i;
  for(col=0;col<16;col++)//循环16次,点亮并移动一个汉字,步进是一位
 {
  col1=col%8;//一个字节移动位数
  for(i=0;i
  {
   for(disrow=0;disrow<16;disrow++)//扫描16行   
   {
    Load_one_line();//装载一行点阵数据 
    Send_one_line();//发送一行点阵数据
    OE=1;                     
    STB=1;        // 输出锁存          
    STB=0;                
    P0=disrow;    // 行扫描 
    OE=0;
      }
  }
 }

 word=word+1;// 一个汉字移动后,指向下一个汉字
 if(word>=NUMBER)
 {
  word=0;//移动完NUMBER个汉字后重新开始
   
}


//主函数入口
void main(void)
{
 R1=0;//数据初始化
 R2=0;
 G1=0;
 G2=0;
 while(1)
 {
     LEFT_MOVE(); //左移
 }
}

zimo.h

unsigned char code Table[][32]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空白
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

[page]
0x08,0x00,
0xC8,0x7F,
0x48,0x00,
0x7F,0x00,
0x48,0x3F,
0x68,0x00,
0xD8,0x7F,
0x48,0x03,
0x4C,0x25,
0x4B,0x65,
0x48,0x19,
0x48,0x11,
0x28,0x11,
0x28,0x65,
0x1A,0x23,
0x04,0x01,

0xFC,0x1F,
0x00,0x0C,
0x60,0x03,
0x80,0x00,
0xFC,0x1F,
0x84,0x10,
0x84,0x10,
0xFC,0x1F,
0x84,0x10,
0x84,0x10,
0xFC,0x1F,
0x84,0x10,
0x84,0x10,
0x84,0x10,
0x84,0x14,
0x04,0x08,

0x80,0x00,
0x80,0x00,
0x80,0x00,
0xFC,0x1F,
0x84,0x10,
0x84,0x10,
0xFC,0x1F,
0x84,0x10,
0x84,0x10,
0x84,0x10,
0xFC,0x1F,
0x84,0x10,
0x80,0x40,
0x80,0x40,
0x00,0x7F,
0x00,0x00,

0x00,0x00,
0xFC,0x0F,
0x00,0x04,
0x00,0x02,
0x00,0x01,
0x80,0x00,
0x80,0x00,
0x80,0x20,
0xFF,0x7F,
0x80,0x00,
0x80,0x00,
0x80,0x00,
0x80,0x00,
0x80,0x00,
0xA0,0x00,
0x40,0x00,

0x00,0x01,
0x00,0x01,
0x3F,0x01,
0xA0,0x7F,
0xA1,0x20,
0x52,0x12,
0x14,0x02,
0x08,0x02,
0x18,0x02,
0x18,0x06,
0x24,0x05,
0x24,0x09,
0x82,0x18,
0x61,0x70,
0x1C,0x20,
0x00,0x00,

0x02,0x00,
0x84,0x01,
0x6C,0x3E,
0x24,0x22,
0x20,0x22,
0x20,0x22,
0x27,0x22,
0x24,0x22,
0xA4,0x22,
0x64,0x2A,
0x24,0x12,
0x04,0x02,
0x04,0x02,
0x0A,0x00,
0xF1,0x7F,
0x00,0x00,

0x90,0x00,
0x90,0x01,
0x88,0x20,
0xC8,0x7F,
0x44,0x20,
0x2C,0x12,
0x16,0x02,
0x45,0x0A,
0xC4,0x12,
0x44,0x12,
0x24,0x22,
0x24,0x62,
0x14,0x22,
0x84,0x02,
0x04,0x01,
0x00,0x00,
 



0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空白
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空白
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};


关键字:LED点阵  点阵左移  STC89C52 引用地址:玩转LED点阵之二:16X64单红点阵左移

上一篇:单片机程序-点阵LED
下一篇:单片机制作光立方资料(基于74hc595和573)

推荐阅读最新更新时间:2024-03-16 14:23

玩转LED点阵之二:16X64单红点阵左移
//单片机:STC89C52 //晶振:22.1184M,下载选择双倍时钟,否则会有闪烁! //显示屏:HUB08接口16X64单红点阵 //显示方式:左移 //作者:振甬电子 //QQ: 1766135164 //网址: www.51hei.com //时间:2013-05-13 #include #include zimo.h #define uchar unsigned char #define uint unsigned int #define SPEED 5 //定义速度与数字成反比 数字小,速度快 #define NUMBER 11 //定义要移动显示总16X16汉字个数,计算方法:NUMBER=
[单片机]
玩转<font color='red'>LED点阵</font>之二:16X64单红<font color='red'>点阵</font><font color='red'>左移</font>
24. 8X8 LED点阵显示技术
1. 实验任务 在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。 2. 电路原理图 图4.24.1 3. 硬件电路连线 (1). 把 单片机系统 区域中的P1端口用8芯排芯连接到 点阵模块 区域中的 DR1-DR8 端口上; (2). 把 单片机系统 区域中的P3端口用8芯排芯连接到 点阵模块 区域中的 DC1-DC8 端口上; 4. 程序设计内容 (1). 8X8 点阵LED工作原理说明 8X8点阵LED结构如下图所示 从图4.24.2中可以看出,8X8点阵共需要64个发光二极管
[单片机]
24. 8X8 <font color='red'>LED点阵</font>显示技术
采用stc89c52单片机的电磁阀控制程序
下面是一个用stc89c52 单片机 对电磁阀进行一些简单控制的程序 #include reg52.h sbit a=P1^0;//下开关 sbit b=P1^1;//上升 sbit c=P1^2;//下降 sbit d=P1^3;//上线位 sbit e=P1^4;//下限位 void main() { a=1;// 上开关 常开 b=1;// 上升 常开 c=1;// 下降 常开 d=1;// 上限位开关 常开 e=1;// 下限位开关 常开 while(1) //循环 { if(a==0) // 判定上开关闭合 执行语句 { a=1; //断开开关信号 依旧执行 下降 直到碰到下限位开关 c
[单片机]
基于51单片机的智能营养秤系统设计与实现
一、项目背景 随着人们生活水平和健康意识的提高,越来越多的人开始注重自己的饮食健康。在此背景下,智能营养秤系统应运而生,成为了一种非常实用的工具。本项目基于51单片机设计和实现一种智能营养秤系统,通过该系统可准确地测量食物的重量并计算其热量、蛋白质、脂肪、碳水化合物等营养成分含量。 当前系统采用了STC89C52单片机作为主控芯片,预置了多种食材的营养成分数据。用户只需要使用矩阵键盘输入食材编号,将需要称重的食材放置在重力传感器上进行依次称重,系统就可以自动计算出所有食材的各类营养含量总值,并通过液晶屏显示出来。同时,系统根据预设的营养指标,对不达标或超标的食材进行对应的声光提示,提醒用户注意饮食健康。 当前系统还配备了无
[单片机]
基于51单片机的智能营养秤系统设计与实现
51单片机学习:LED点阵实验(显示图像)
实验名称:LED点阵实验(显示图像) 接线说明: 实验现象:下载程序后,8*8LED点阵显示心形 注意事项:LED点阵旁的J24黄色跳线帽短接到GND一端 ***************************************************************************************/ #include reg51.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义74HC595控制管脚 sbit SRCLK=P3^6; //移位寄存器时钟输入 sbit RCLK=P3^5; //存储
[单片机]
STC89C52单片机内部eeprom的应用
/****说明:结合我手上的板子,显示部分代码没有规律。上班时间没事用了俩小时看芯片资料带改,下班后一试直接成功。用手机看的PDF sheet,可把我累死了! 测试功能:0-60循环计数,断电保护存储最后数值,重启继续。*****/ #include intrins.h ;gt; #include reg52.h ; //52系列单片机头文件 #define uchar unsigned char #define uint unsigned int #define RdCommand 0x01 //定义ISP的操作命令 #define PrgCommand 0x02 #define EraseCommand 0x03 #defin
[单片机]
STC89C52单片机 流水灯
流水灯 宏定义 用define 进行宏定义的典型用法 #define uchar unsigned char 注意宏定义后面不能加分号,它是预处理指令不是语句。 其中用“uchar”直接替换了unsigned char 此时我们可以用uchar去定义变量类型如:uchar i ;等价于 unsigned char i ; 对于上面的宏定义我们是用来给已有数据类型取别名。 对已有数据类型取别名一般还有使用关键字typedef, 定义方法如下: typedef 已有数据类型 新的数据类型;(要加分号) 函数的定义 函数就是将多条语句集合在一起,来完成一种特定功能。 函数分为标准函数库,和用户自定义函数。 标准函数库:kei
[单片机]
<font color='red'>STC89C52</font>单片机 流水灯
一种LED点阵显示控制的设计方案
  由于单片机技术的不断发展以及高亮度LED发光管的出现,使得大屏幕高亮度LED电子广告屏成为可能。与传统的霓虹灯广告相比,LED电子广告屏在显示效果以及可修改性上都有着无法比拟的优势,而且单片机的日益平民化以及LED技术的不断创新,使得高亮度高清晰的LED点阵广告牌与传统霓虹灯广告牌的成本日益接近。另外,SMT技术飞速发展,开关电源的大规模使用,使其无论在体积上还是在可靠性上都比传统的霓虹灯广告有明显的优势,为其在特殊领域的应用奠定了基础。   1 设计原理与设计方案   1.1 设计原理   对于点阵型LED显示可以采用共阴极或共阳极,本系统采用共阳极,其硬件电路如图1所示。当行上有一正选通信号时,列选端四位数据为0的发
[电源管理]
一种<font color='red'>LED点阵</font>显示控制的设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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