#include<regx51.h>
#define uchar unsigned char
#define uint unsigned int
uchar timer0_tick,ZKB=1//timer0_tick计数,ZKB占空比
uchar i=0,n=0,temp=0
code seven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}//1,2,3, 4, 5, 6, 7, 8, 9
code scan[2]={0xfd,0xfe}
uchar counter[2]={0,0}
sbit AN1=P3^2//调整个位
sbit AN2=P3^3//调整十位
sbit AN3=P3^4//启动按键
sbit AN4=P3^5//确认按键
void delay(uint z)//软件延时函数
{
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
static void timer0_isr(void) interrupt 1 using 0 //中断函数
{
TR0=0
TL0=0xf6
TH0=0xff
TR0=1
if (ZKB>99) ZKB=1
if (ZKB<1) ZKB=99
counter[0]=ZKB%10
counter[1]=ZKB/10
n++
if(n==100)
{
n=0
i++
if(i==2) i=0
P0=seven_seg[counter[i]]
P2=scan[i]
}
timer0_tick++
if(timer0_tick++==100)
{
timer0_tick=0
}
if(AN2==0)
{
delay(100)
if(AN2==0)
{
temp=1
counter[0]++
if(counter[0]==10)
{
counter[0]=0
}
}
}
if(AN1==0)
{
delay(100)
if(AN1==0)
{
temp=1
counter[1]++
if(counter[1]==10)
{
counter[1]=0
}
}
}
ZKB=counter[0]+counter[1]*10
if(AN4==0)
{
delay(5)
if(AN4==0)
temp=0
}
if(temp==1)
P3_7=0// P3_7为竖雹脉冲输出引脚
else
{
if (timer0_tick<=ZKB) /*当小于占空比值时输出低电平,高于时是高档备电平,从而实现占空比的调整*/
{
P3_7=1
}
else
{
P3_7=0
}
}
}
static void timer0_initialize(void)//中断初始化
{
EA=0
timer0_tick=0
TR0=0
TMOD=0x01
TL0=0xf6
TH0=0xff
PT0=0
ET0=1
TR0=1
EA=1
}
void main(void)
{
STAR: delay(100)
if(AN3!=0) goto STAR//按键3启动脉冲
timer0_initialize()
while(1)
}
//按按键3启动脉冲器,初始设置占空比为1%,按键1调整十位,
//按键2调整个位,一旦调整,输出为0,必须按确认键确认,
//输出正确脉冲.可以占空比1-99%任意调节。
公牛无极灯设置一打开就是自然光方法就是上次关灯的状态是自然光就可以了。长时间关闭打开和上次打开是一样的光,短时间关闭再次打开会变色。
无极冲吵调光袜闹:灯的亮度可以从0.5瓦到灯的最大瓦数可以随意调节,是渐变效果,没有档位限制,自由掌握,想要什么亮度就要什么亮度,光色从白光散好侍到暖光随意调节,可以随心所欲要自己舒适的颜色。
这个简单# include<reg51.h>sbit K1 =P1^0 //增加键
sbit K2 =P1^1//减少键
sbit BEEP =P1^2//蜂鸣器
unsigned char PWM=0x12 /丛运则/赋渗棚初悄塌值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)