• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

送一个十级可调亮度的小程序

断电可保存~实测可用,eeprom定义什么的就不贴了。

void delay(uchar z)//延时函数
{
  uchar x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void init() //定时器初始化
{
  TMOD=0X01;
  TH0=(65536-100)/256;
  TL0=(65536-100)%256;
  EA=1;
  ET0=1;
  TR0=1;
}


void time0() interrupt 1  //控制灯的状态
{   
    TH0=(65536-100)/256;
	TL0=(65536-100)%256;
	++i;
	if(i==10)	
	{i=0;}
	if(i<=zkb)
	{led=1;}
	else led=0;
}

void keyscan() //按键扫描
 {
    P3=0XFF;
	if(key1==0)
	  {
	   delay(10);
		if(key1==0)
		{
		 while(!key1);     
		  if(zkb<9)
			 zkb++;
		  SectorErase(0x2000);
		  byte_write(0x2000,zkb);
		}
	}
	if(key2==0)
	  {
	   delay(10);
		if(key2==0)
		{
		 while(!key2);
		 if(zkb>0)  
		 zkb--;
		  SectorErase(0x2000);
		  byte_write(0x2000,zkb);
		} 
	  }  
}

void main()
{//zkb=2;
	zkb=byte_read(0x2000);
    
    init();		
	while(1)
	{
		keyscan();
	}   
}

全部回复(5)
正序查看
倒序查看
2017-03-03 12:01
没人,不送
0
回复
12zm
LV.5
3
2017-04-21 20:53
@红豆一马萨
没人,不送
来了,先上吧
0
回复
yxbb
LV.1
4
2017-04-25 16:38
有没有LED灯无极调光的程序(上电100%亮度,开关一下开始向暗调光。再开关一下,停在当前亮度。只要开关一下,就这样交替循环)
0
回复
yxbb
LV.1
5
2017-04-25 16:42
@yxbb
有没有LED灯无极调光的程序(上电100%亮度,开关一下开始向暗调光。再开关一下,停在当前亮度。只要开关一下,就这样交替循环)
这灯以前是用双P沟道MOS做的,现在想用单片机做,不知是否可行
0
回复
2017-04-28 15:36
@yxbb
有没有LED灯无极调光的程序(上电100%亮度,开关一下开始向暗调光。再开关一下,停在当前亮度。只要开关一下,就这样交替循环)
可以的,程序开始设置初始亮度为最亮,然后检测按键。有按键按下比如说P3.2,开始往低走也就是单位时间内说暗的时间变长亮的时间的变短,具体在for循环里做减法,然后如果再按一下跳出此循环,把当前的值显示出来就好了
0
回复