51单片机驱动点阵16*16左移

发布者:MagicalSerenade最新更新时间:2015-07-16 来源: 51hei关键字:51单片机  驱动点阵 手机看文章 扫描二维码
随时随地手机看文章
这个点阵左移,曾经让我......如今在朋友指导下.........主要部分在红色部分,请大家理解那里就行了!会了也没有什么!硬件:行采用74HC154+S8550,列采用74HC595!

#include
#define uchar unsigned char
#define uint unsigned int
#define LINE P0//定义行线IO口,即74HC154控制端
#define shudu 20//字移动的速度
sbit DATA=P1^4;//74HC595数据端
sbit CLK=P1^5;//74HC595移位脉冲端
sbit CLKR=P1^6;//74HC595数据锁存端
uchar move;//移动几位变量
uchar line;//行变量
uint word;//字节变量
uchar BUF[4];//4组缓存数组以便动态更改数据
uchar code table[]={
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,0x10,0x3F,0xF8,0x04,0x10,0x04,0x14,0xFF,0xFE,0x04,0x10,0x04,0x10,
0x3F,0xF0,0x04,0x10,0x04,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,
0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x10,
0x1F,0xF8,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x50,0x10,0x20,
0x01,0x10,0xFF,0x90,0x14,0x50,0x14,0x7C,0x7F,0x50,0x55,0x90,0x55,0x10,0x57,0xFE,
0x61,0x04,0x41,0x7E,0x41,0x44,0x7F,0x44,0x41,0x44,0x41,0x44,0x7F,0x7C,0x41,0x44,
0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,
0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08,
0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x08,0x7C,0x09,0x44,0x7F,0xC4,0x08,0x7C,
0x0A,0x44,0x3F,0x44,0x22,0x7C,0x22,0x44,0x22,0x44,0x3E,0x44,0x22,0x94,0x01,0x08,
0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,0x01,0x08,0x3F,0xFC,0x20,0x08,0x20,0x08,
0x3F,0xF8,0x20,0x08,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00,
0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x20,0x10,0x20,0x22,0x44,0x7E,0xFC,0x04,0x08,
0x08,0x10,0x10,0x20,0x20,0x40,0x7E,0xFC,0x00,0x00,0x00,0x04,0xFF,0xFE,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
};//字模数组
/********************************/
/**74HC595移位寄存器送数子函数***/
/********************************/
void song(uchar z)//带参数函数
{
 uchar num,hang;//定义变量
 hang=z;//将形参给变量
 for(num=0;num<8;num++)//移动8次将数据发送完毕
 {
  if(hang&0x01==1)//将高7位屏蔽掉,保留最低位判断
  DATA=1;//为1就将74HC595数据端置1
  else 
  DATA=0;//否则给0
  CLK=0;//上升沿送走数据
  CLK=1;//高电平形成上升沿
  hang>>=1;//将数移走一位
 }
}
/********************************/
/*装一线数据子函数(即一行数据)*/
/********************************/
void yixian()
{
 uchar s;
 for(s=0;s<2;s++)/*循环2次,得到第1个字(代码存在数组1与2中)
与第2个字(代码存在数组2与3中)的某一行数值*/
 {
  BUF[s*2]=table[word+(32*s)+(line*2)];//左半屏代码,line表示行数,word表示字数
  BUF[s*2+1]=table[word+(32*s+1)+(line*2)];//右半屏代码
 }
}
/********************************/
/*将一行数据转换出来,然后显示*/
/********************************/
void yipai()
{
 uchar temp,yi;
 if(move<8)//处理移动次数小于8次的部分
 {
  yi=move;
  temp=(BUF[1]<>(8-yi));/*将第1个字的右半屏数左移yi次,
  然后或上第2个字左半屏的8-yi次数,注此句是处理右半屏的数*/
  song(~temp);//发送给74HC595
  temp=(BUF[0]<>(8-yi));/*将第1个字的左半屏数左移yi次,
  然后或上第1个字右半屏的8-yi次数,注此句是处理左半屏的数*/
  song(~temp);//发送给74HC595
 }
 else//处理移动次数小于8次以外的部分
 {
  yi=move-8;
  temp=(BUF[2]<>(8-yi));//原理同上
  song(~temp);//发送给74HC595
  temp=(BUF[1]<>(8-yi));//原理同上
  song(~temp);//发送给74HC595
 } 
}
void zou()
{
 uchar i;
 while(word<256)
 {
  for(move=0;move<16;move++)//要移多少位?
  {
   for(i=0;i    {
    for(line=0;line<16;line++)//扫描16次,即完成一个字的移动
    {
     yixian();//调用一线子程序
     yipai();//调用数据转换子程序
     LINE=line;//打开行线,即174HC154行线端
     CLKR=1;//在74HC595处锁存起来
     CLKR=0;
     CLKR=1;
    }
   }
  }
  word=word+32;//一个字显示完了,就显示下一个字
 }
 word=0;//清0重新开始
}
  
/********************************/
/************主程序*************/
/********************************/
void main()
{
 
 while(1)
 {
  zou();
 }
}                                                      

 

视频祥见:http://www.tudou.com/programs/view/D0SCJyO4RBQ/

关键字:51单片机  驱动点阵 引用地址:51单片机驱动点阵16*16左移

上一篇:51单片机驱动点阵16*16间断显示C程序
下一篇:点阵16*32综合C程序

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

51单片机外围模块——DS1302时钟模块
一.DS1302的主要性能指标 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。 内部含有31个字节静态RAM,可提供用户访问。 采用串行数据传送方式,使得管脚数量最少,简单SPI 3线接口。 工作电压范围宽:2.0~5.5V。 工作电流:2.0V时,小于300nA 时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式。 采用8脚DIP封装或SOIC封装。 与TTL兼容,Vcc=5V。 可选工业级温度范围:-40C~+85C。 具有涓流充电能力。 采用主电源和备份电源双电源供应。 备份电源可由电池或大容量电容实现。 DS1302采用SPI总线与外结通信
[单片机]
<font color='red'>51单片机</font>外围模块——DS1302时钟模块
利用89C51单片机实现红外线通信接口电路控制
在通信系统中,常利用非电信号来传递控制信号和数据,以实现遥控或遥测的功能红外通信,具有控制简单、实施方便,传输可靠性高的特点,是一种较为常用的通信方式。红外通信利用950 nm近红外波段的红外线作为传递信息的媒体,发送端采用脉时调制方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送,接收端将收到的光脉冲转换成电信号。再经过放大、滤波处理后送给解调电路,还原为二进制数字信号后输出。 1 系统的总体构成 红外通信系统采用红外光传输及无限工作机制,其组成结构主要包括:红外发射器,通信信道,红外接收器三大部分组成。 (1)完成信号的电光变换并向空间发射红外脉冲 红外发射器的关键是红外发光二极
[单片机]
利用89C<font color='red'>51单片机</font>实现红外线通信接口电路控制
51单片机分时控制8路舵机程序
本程序中用到的头文件 12c5a.H下载: http://www.51hei.com/f/12c5a.rar //分时控制舵机,采用的单片机是STC12c5a 51增强型单片机,晶振11.0592MHZ #include 12c5a.H void delay(uint16 time); void Timer_init(); void Timer0(uint32 us); uint16 xdata pwm ={1500,1500,1500,1500,1500,1500,1500,1500}; sbit pwm1=P0^0; sbit pwm2=P0^1; sbit pwm3=P0^2; sbit pwm4=
[单片机]
2051单片机和荧光数码管电子数字钟设计
2051 单片机 和荧光数码管电子数字钟设计 电路 图 2051 单片机 和荧光数码管电子数字钟设计读红外代码子程序******************************* org 0290h tt1:push dph ;保护现场 push dpl push a CC push psw jb 07h,ttt0 ;全部动作未完成则返回 jb 00h,ttt1 ;如果收到遥控引导码则进入接收识别模式 mov th1,#00h ;清T1,为接收做准备 mov tl1,#00h setb 00h ;设接收遥控波头准备好标志位 setb tr1 ;开T1中断 sjmp t
[单片机]
20<font color='red'>51单片机</font>和荧光数码管电子数字钟设计
基于51单片机的羽毛球计分器设计
一.硬件方案 本设计采用单片机AT89C51作为核心元件。本设计由控制系统,显示模块,按键驱动模块3部分组成。主要编写了主程序,中断程序,显示程序功能模块程序等。实现羽毛球计分器功能。 主要由51单片机+最小系统+LCD1602液晶显示模块+LED指示灯模块+按键模块;如图: 二.设计功能 (1)采用按钮开关实现功能控制,按照设计的功能模块共选用8个按钮开关,分别实现启动、A队加分、A队减分、B队加分、B队减分、暂停、停止、清零功能。 (2)选用LCD1602液晶屏作为显示器件,用于记录两队的分数。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)Protues仿真图如下: 四.软件设计 (
[单片机]
基于<font color='red'>51单片机</font>的羽毛球计分器设计
51单片机 LED点阵的呼吸灯效果
STC 89C52RC #include reg52.h typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; ulong periodCnt = 0; //PWM周期计数值 uchar highRH = 0; //高电平重载值的高字节 uchar highRL
[单片机]
1602.c和1602.h头文件,完美版的51单片机1602液晶驱动
本文件可以完美驱动1602液晶屏,调用方法详见: http://www.51hei.com/bbs/dpj-24670-1.html ,有2个文件1602.c和1602.h头文件(在后面). 1602.c文件 //***************************** #include stc12c5a.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define IODATA P0 //这三个引脚参考资料 sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit
[单片机]
MAX517与51单片机的I2C总线数据通信
1 I2C总线的特点及基本通信协议 I2C总线是Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线?串行数据线和串行时钟线?即可使连接于总线上的器件之间实现信息传送,同时可通过对器件进行软件寻址,而不是对硬件进行片选寻址的方式来节约通信线数目,从而减少了硬件所占空间。因为总线已集成在片内,所以大大缩短了设计时间,此外,在从系统中移去或增加集成电路芯片时,对总线上的其它集成芯片没有影响。 1.1 I2C总线的主要特点 I2C总线通常由两根线构成:串行数据线(SDA)和串行时钟线(SCL);总线上所有的器件都可以通过软件寻址,并保持简单的主从关系,其中主器件既可以作为发送器,又可以作为接收器;
[单片机]
MAX517与<font color='red'>51单片机</font>的I2C总线数据通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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