(LED学习板)实验23--LED流星灯8段16段-软件生成生成数据
//============================================================================//================翼芯科技 LED流星灯8段16段==软件生成生成数据=================
//============================================================================
//此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知
// 严禁随意用于商业目的,违者必究,后果自负
// 公司网站 http://www.mcu-led.com
// 公司论坛 http://www.cpu-led.com
// 淘宝店:http://cpu-led.taobao.com/和http://mcu-led.taobao.com/
// 产品咨询 QQ :1322130074 电话:13715619122
//程序说明:本程序用于实现LED流星灯8段16段,不同步.IC插到U9位置.
//文件名称:main.C
//日期: 2011/01/23
//版本: 1.0
//C编译器:keil 8.05
//=============================================================================
#include <STC12C5AXX.H>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_();_nop_()
sbit DAT = P3^2; //DM134数据输出
sbit CLK= P3^3; //DM134时钟输出
sbit LE = P3^4; //DM134锁存口
sbit EN = P4^4; //DM134使能口
/******************************************************************
- 功能描述:ms延时
- 隶属模块:无
- 函数属性:无
- 参数说明:无
- 返回说明:无
- 注:.....
******************************************************************/
void Delay(uint ms)
{
uint a,b;
for(a=ms;a!=0;a--)
for(b=250;b!=0;b--)
;
}
/******************************************************************
- 功能描述:DM134传送一个字的数据, 高位在前
- 隶属模块:无
- 函数属性:无
- 参数说明:无
- 返回说明:无
- 注:.....
******************************************************************/
void DM134(uint dat)
{
uchar i;
for(i=16;i!=0;i--)
{
CLK=0;
DAT=dat&0x01; //低位在前
dat=dat>>1; //左移一位
CLK=1; //上升延数据移入
}
LE=1; //寄存器数据更新
LE=0;
}
/******************************************************************
- 功能描述:实现8段拖尾效果
- 隶属模块:无
- 函数属性:无
- 参数说明:无
- 返回说明:无
- 注:.....
******************************************************************/
void Grayscale8(uchar speed)
{
uchar x,y,f; //上半
uint z=0x8000, gray;
for(y=8;y>0;y--)
{
for(f=speed;f>0;f--) //流动速度
{
gray=z;
for(x=8;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
z|=0x8000;
}
z=0x7f80;
for(y=16;y>0;y--) //下半
{
for(f=speed;f>0;f--) //流动速度
{
gray=z;
for(x=8;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
}
}
/******************************************************************
- 功能描述:实现16段拖尾效果
- 隶属模块:无
- 函数属性:无
- 参数说明:无
- 返回说明:无
- 注:.....
******************************************************************/
void Grayscale16(uchar speed)
{
uchar x,y,f;
uint z=0x8000, gray;
for(y=16;y>0;y--)
{
for(f=speed;f>0;f--) //流动速度
{
gray=z;
for(x=16;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
z|=0x8000;;
}
z=0x7fff;
for(y=16;y>0;y--)
{
for(f=speed;f>0;f--) //流动速度
{
gray=z;
for(x=16;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
}
}
/******************************************************************
- 功能描述:主函数
- 隶属模块:无
- 函数属性:无
- 参数说明:无
- 返回说明:无
- 注:.....
******************************************************************/
void main(void)
{
uchar CNT;
//M1:M00:0为标准51;0:1输出;1:0输入;1:1开漏输出
P0M1=0X00; //P0口设为推挽输出
P0M0=0XFF;
P4M1=0X00; //P4口设为推挽输出
P4M0=0XFF;
EN=0;
P0=0;
while(1)
{
for(CNT=0;CNT<3;CNT++)
{
Grayscale16(100); //16段
Delay(100);
}
for(CNT=0;CNT<3;CNT++)
{
Grayscale8(250);//8D段
Delay(100);
}
}
}
页:
[1]