单片机控制两片74HC595级联的16颗LED灯整体渐变

一直都实现不了渐变,求大神帮忙谢谢!附上自己的源程序:#include<reg52.h>#defineucharunsignedchar#defineuintunsign... 一直都实现不了渐变,求大神帮忙 谢谢!
附上自己的源程序:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLK=P1^7;
sbit STB=P1^6;
sbit DATA=P1^5;
sbit OE=P1^2;
void init_sys();
void delay(uint t);
void delayms(uint t);
unsigned char ZKB;

void send_data(uint temp1,temp2)
{
uchar i;
CLK=0;
STB=0;
for(i=0;i<8;i++)
{
if(temp1>=0x80)DATA=1;
else DATA=0;

CLK=0;
delay(15);
CLK=1;
delay(15);

temp1=temp1<<1;
}

for(i=0;i<8;i++)
{
if(temp2>=0x80)DATA=1;
else DATA=0;

CLK=0;
delay(15);
CLK=1;
delay(15);

temp2=temp2<<1;
}

STB=0;
delay(15);
STB=1;
delay(15);

CLK=0;
STB=0;
DATA=0;
}

void delayms(uint t)
{
uint x,y;
for(x=t;x>0;x--)
for(y=100;y>0;y--);
}
void delay(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++)
{
;
}
}
void init_sys()
{
TMOD=0x01;
TH0=0xFF;
TL0=0XF6;
TR0=1;
ET0=1;
EA=1;
}

void timer0(void) interrupt 1
{
static uchar click=0;
TH0=0xFF;
TL0=0xF6;
++click;
if (click>=100)

click=0;

if (click<=ZKB)
OE=0;
else
OE=1;

}

void main ()
{
init_sys();

send_data(0x00,0x00);
while(1)
{

for(ZKB=0;ZKB<100;ZKB=ZKB+1)
{
delayms(100);
}
for(ZKB=100;ZKB>0;ZKB=ZKB-1)
{
delayms(100);
}

}
}
展开
 我来答
做而论道
高能答主

2015-08-09 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
……
void timer0(void) interrupt 1
{
static uchar click=0;
TH0=0xFF;
TL0=0xF6;
++click;
if (click>=100) click=0;

if (click<=ZKB) {
send_data(0x00,0x00);//加上这行
OE=0;
}
else {
send_data(0xff,0xff);//加上这行
OE=1;
}
}

……

共加入了两行,对 16 个 LED 进行亮度控制。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式