資源簡(jiǎn)介
STC12C5A60S2呼吸燈,使用片內(nèi)AD和pwm,可調(diào)頻率
代碼片段和文件信息
//Breathing?LED?
//
//P1.3(PWM0)??LED1??ADC
//P1.4(PWM1)??LED2??BUTTON
//
//LED?DISPLAY
//P2.2?P2.3?P2.4??wei?
//P0?SEG
//P1.0?LE
//
//led2:??f?=?0.36?*?v?+?0.2
#include??
typedef?unsigned?char?byte;
typedef?unsigned?int??word;?
#define?ADC_POWER?0x80
#define?ADC_FLAG?0x10
#define?ADC_START?0x08
#define?ADC_SPEEDL?0x20
#define?ADC_SPEEDLL?0x00
sbit?LED1?=?P1^3;
sbit?LED2?=?P1^4;
sbit?w2?=?P2^4;//位選
sbit?w1?=?P2^3;
sbit?w0 =?P2^2;
sbit?le?=?P1^0;
byte?num1num0;
byte?duty;?//?duty?control
byte?ttv;//?t++?per?50ms
float?f1f2T1T2;//?frequency?and?period
byte?n1n2;??//period?-->?digital
byte?unumberutemp;
byte?voltemp[5];
float?voltagevoltage0;
?
byte?table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
byte?dot?=?0x80;
void?delay(unsigned?int?tms);
void?pwmInit();
void?Timer0Init(void);
void?InitADC();?
void?main(void)?
{
?ET0?=?1;
?EX0?=?1;?
?EX1?=?1;
?????IT1=1;//下跳沿觸發(fā)
?IT0=1; ?
?EADC=1;
// ?PT0=1;
??EA?=?1;
?f1=1.6;
?num1=0;
?num0=0;
?P3=0xff;
?Timer0Init();
?pwmInit();
?InitADC();
?TR0?=?1; //timer0?start
? ?while(1)
?{
? T1=1/f1;
n1=T1*20+0.5;
num1=(byte)f1;
num0=(byte)((f1-num1)*10);
?
? P0=table[num1]|dot;
w2=0;
w1=0;
w0=0;
le=1;
le=0;
delay(2);
?
????f2=0.36?*?voltage?+?0.2;
????????T2=1/f2;
n2=T2*20+0.5;
P0=table[num0];
w2=0;
w1=0;
w0=1;
le=1;
le=0;
????? delay(2);
?}
}?
void?incfrq()?interrupt?0//increase?frequency0
{
??delay(40);
??if(P3^2==0)
??{
?? ??CR=0; ??
??f1?+=?0.1; ??
??if(f1<=0.2||f1>=2)
??{
?? f1?=?2;
??}
??CCAP0H?=?0;
??CR=1;
??}
}
void?decfrq()?interrupt?2//decrease?frequency0
{????????????
??delay(40);
??if(P3^3==0)
??{
?? ??CR=0; ?? ??
??????f1?-=?0.1; ??
??if(f1<=0.2||f1>=2)
??{
?? f1?=?0.2;
??}
???CCAP0H?=?0;
??CR=1;
??}
? ??
}
voi
評(píng)論
共有 條評(píng)論