/*======================================================================
程序名: 无线可调光LED台灯
编写人: 胡康
CPU说明: AT89C2051型单片机 12MHZ晶体振荡器
======================================================================*/
//====================================================================//
#include <reg2051.H>
//===========================定义部分=================================//
#define LED_lamp P1_7
#define LED_dis P3_4
void delay(unsigned int d);
void delay1(unsigned int d);
bit Power_flag=0;
bit On_off_flag=0;
bit On_off_press_flag=0;
bit Set_bri_flag=0;
sbit On_off = P3^0;
sbit Step_ctr = P3^1;
sbit Inc_bri = P3^2;
sbit Dec_bri = P3^3;
//=========================键值读取函数===============================//
unsigned char Key(void)
{
if(On_off==1)return(1);//当开关灯键接下时,返回值为1。
if(Step_ctr==1)return(2);//当八级调光键接下时,返回值为2。
if(Inc_bri==1)return(3);//当增加亮度键接下时,返回值为3。
if(Dec_bri==1)return(4);//当降低亮度键接下时,返回值为4。
else return(0);//当无键接下时,返回值为0。
}
//=======================状态指示灯闪烁函数===========================//
void Led(void)
{
LED_dis=0;
delay(50000);
LED_dis=1;
delay(10000);
}
//========================无线LED台灯主函数===========================//
void main(void)
{
unsigned char a, b; //a控制延时长度,b控制循环周期。
P1=0x00; //初始化,LED台灯关闭。
P3=0x00; //初始化,关闭状态指示灯,键盘接口置低电平。
while(1)
{
//------------------------------开灯------------------------------//
while((On_off==1)&&(Power_flag==0)) //按下开关灯键,开灯标志为0,则开灯。
{
Power_flag=1; //置开关灯标志为1。
while(On_off==1); //等待开关灯按键释放。
On_off_press_flag=0; //开关灯按键释放标志置0。
LED_lamp=0;
LED_dis=0;
a=0x00;
//---------------开灯亮度逐渐增加至1/3过程----------------//
for(b=80;b>0;b--) //开机亮度默认为1/3,但感觉上会认为是一半亮度。
{
a++; //每份时间内点亮的时间逐渐增加。
delay(a); //每份时间内点亮的时间延时。
LED_lamp=0; //每份时间内的关闭时间开始。
//LED_dis = 0;
a = ~a; //a取反后的值即为每份时间减点亮的时间,即关闭时间。
delay(a); //每份时间内关闭的时间延时。
程序名: 无线可调光LED台灯
编写人: 胡康
CPU说明: AT89C2051型单片机 12MHZ晶体振荡器
======================================================================*/
//====================================================================//
#include <reg2051.H>
//===========================定义部分=================================//
#define LED_lamp P1_7
#define LED_dis P3_4
void delay(unsigned int d);
void delay1(unsigned int d);
bit Power_flag=0;
bit On_off_flag=0;
bit On_off_press_flag=0;
bit Set_bri_flag=0;
sbit On_off = P3^0;
sbit Step_ctr = P3^1;
sbit Inc_bri = P3^2;
sbit Dec_bri = P3^3;
//=========================键值读取函数===============================//
unsigned char Key(void)
{
if(On_off==1)return(1);//当开关灯键接下时,返回值为1。
if(Step_ctr==1)return(2);//当八级调光键接下时,返回值为2。
if(Inc_bri==1)return(3);//当增加亮度键接下时,返回值为3。
if(Dec_bri==1)return(4);//当降低亮度键接下时,返回值为4。
else return(0);//当无键接下时,返回值为0。
}
//=======================状态指示灯闪烁函数===========================//
void Led(void)
{
LED_dis=0;
delay(50000);
LED_dis=1;
delay(10000);
}
//========================无线LED台灯主函数===========================//
void main(void)
{
unsigned char a, b; //a控制延时长度,b控制循环周期。
P1=0x00; //初始化,LED台灯关闭。
P3=0x00; //初始化,关闭状态指示灯,键盘接口置低电平。
while(1)
{
//------------------------------开灯------------------------------//
while((On_off==1)&&(Power_flag==0)) //按下开关灯键,开灯标志为0,则开灯。
{
Power_flag=1; //置开关灯标志为1。
while(On_off==1); //等待开关灯按键释放。
On_off_press_flag=0; //开关灯按键释放标志置0。
LED_lamp=0;
LED_dis=0;
a=0x00;
//---------------开灯亮度逐渐增加至1/3过程----------------//
for(b=80;b>0;b--) //开机亮度默认为1/3,但感觉上会认为是一半亮度。
{
a++; //每份时间内点亮的时间逐渐增加。
delay(a); //每份时间内点亮的时间延时。
LED_lamp=0; //每份时间内的关闭时间开始。
//LED_dis = 0;
a = ~a; //a取反后的值即为每份时间减点亮的时间,即关闭时间。
delay(a); //每份时间内关闭的时间延时。