高级会员
主题
回帖0
积分247
阅读权限30
注册时间2012-10-8
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2012-11-4 23:10
|
显示全部楼层
本帖最后由 cdwj 于 2012-11-4 23:26 编辑
LED点阵屏显示--16x128单行突变
#include <reg52.h>
#include <zimo.h>
#define uchar unsigned char
#define uint unsigned int
//////////新卡I/O配置//////////
#define HANG P0 //P0口为行选
sbit R2=P2^1; //红色数据
sbit R1=P2^2; //红色数据
sbit EN=P2^3; //74HC138的使能
sbit SK=P2^4; //74HC595的时钟移位
sbit LT=P2^5; //74HC595的时钟和输出锁存
sbit G2=P2^6; //绿色数据
sbit G1=P2^7; //绿色数据
void outR1(uchar d)//发送红色数据一个字节,高位先送
{
uchar i;
for(i=0; i<8; i++)
{
R1=d&0x80;
SK=0;
SK=1; //上升沿移位
d<<=1; //左移1位
}
}
void LEDinit() //初始显示
{
uint u,q; //速度变量
uchar k,w; //行变量
for(u=0;u<300;u++) //初始显示时间
{
for(k=0;k<16;k++) //上16行
{
q=0; //字变量
for(w=0;w<8;w++) //一行8个字
{
outR1(zimo0[q+k*2]); //写第一个字的两个字节
outR1(zimo0[q+k*2+1]);
q+=32; //下一个字
}
HANG=k; //行选
LT=0;
LT=1; //上升沿锁存
}
}
}
void main(void)
{
uchar a; //行变量
uint b; //数据变量
uint u; //速度变量
uchar k; //行选变量
uint q; //一行字数变量
uchar w; //行字变量
EN=0; //开显示
LEDinit(); //LED初始显示
while(1)
{
b=0;
for(a=0;a<28;a++) //28行,根据实际调整
{
for(u=0;u<100;u++)//变化速度,根据实际调整
{
for(k=0;k<16;k++) //上16行
{
q=0; //字变量
for(w=0;w<8;w++) //一行8个字
{
outR1(zimo1[b+2*k+q]);//写每个字的两个字节
outR1(zimo1[b+2*k+q+1]);
q+=32; //下一个字
}
HANG=k; //行选
LT=0;
LT=1; //上升沿锁存
}
}
b+=256; //下一行字
}
}
} |
|