📄 pwm.c
字号:
#include<STC12C2052AD.h>
#include<intrins.h>
sbit L_dat=P1^5;
sbit L_clk=P1^6;
sbit p34=P3^4;
sbit dirt=P1^4;
unsigned char disp[6];
unsigned char tcount;
unsigned long cishu;
unsigned char dy;
void display(void)
{ unsigned char sdate,vvv,n;
unsigned char disp1[6];
for(vvv=5;vvv>0;vvv--)
{
switch(disp[vvv]){
case 0x00:disp1[vvv]=0x3f;break;
case 0x01:disp1[vvv]=0x06;break;
case 0x02:disp1[vvv]=0x5B;break;
case 0x03:disp1[vvv]=0x4F;break;
case 0x04:disp1[vvv]=0x66;break;
case 0x05:disp1[vvv]=0x6D;break;
case 0x06:disp1[vvv]=0x7D;break;
case 0x07:disp1[vvv]=0x07;break;
case 0x08:disp1[vvv]=0x7F;break;
case 0x09:disp1[vvv]=0x6F;break;
case 0x0a:disp1[vvv]=0x77;break;
case 0x0b:disp1[vvv]=0x7C;break;
case 0x0c:disp1[vvv]=0x39;break;
case 0x0d:disp1[vvv]=0x5e;break;
case 0x0e:disp1[vvv]=0x79;break;
case 0x0f:disp1[vvv]=0x71;break;
case 0x10:disp1[vvv]=0xbf;break; //0.
case 0x11:disp1[vvv]=0x86;break;
case 0x12:disp1[vvv]=0xdb;break;
case 0x13:disp1[vvv]=0xcf;break;
case 0x14:disp1[vvv]=0xe6;break;
case 0x15:disp1[vvv]=0xed;break;
case 0x16:disp1[vvv]=0xfd;break;
case 0x17:disp1[vvv]=0x87;break;
case 0x18:disp1[vvv]=0xff;break;
case 0x19:disp1[vvv]=0xef;break;
case 0x1a:disp1[vvv]=0xf7;break;
case 0x1b:disp1[vvv]=0xfc;break;
case 0x1c:disp1[vvv]=0xb9;break;
case 0x1d:disp1[vvv]=0xde;break;
case 0x1e:disp1[vvv]=0xf9;break;
case 0x1f:disp1[vvv]=0xf1;break;//F.
case 0x20:disp1[vvv]=0x76;break;//h
case 0x21:disp1[vvv]=0x06;break;//I
case 0x22:disp1[vvv]=0x0f;break;//j
case 0x23:disp1[vvv]=0x73;break;//p
case 0x24:disp1[vvv]=0x3e;break;//U
case 0x25:disp1[vvv]=0x00;break;//灭
case 0x26:disp1[vvv]=0x6d;break;//
case 0x27:disp1[vvv]=0x38;break;
case 0x28:disp1[vvv]=0x40;break;
case 0x29:disp1[vvv]=0xe7;break;
default:break;}
}
for(vvv=5;vvv>0;vvv--)
{
sdate=disp1[vvv];
for(n=0;n<=7;n++)
{ACC=sdate;
ACC<<=1;
L_clk=0;
L_dat=CY;
_nop_();
L_clk=1;
sdate=ACC;
}
}
}
void int_t1() interrupt 3
{
unsigned long jishu;
ET1=0;
TR1=0;
tcount=tcount-1;
if(tcount==0)
{
tcount=20;
ET0=0;
TR0=0;
if(dirt==0)
{
disp[5]=0x25;
}
else
{
disp[5]=0x28;
}
jishu=TH0*256+TL0;
jishu=jishu*60;
cishu=jishu/333;
disp[4]=(cishu-cishu%1000)/1000;
disp[3]=(cishu%1000-cishu%100)/100;
disp[2]=(cishu%100-cishu%10)/10;
disp[1]=cishu%10;
display();
TH0=0;
TL0=0;
TR0=1;
ET0=1;
TR1=1;
ET1=1;
}
else
{
TH1=0x3C;//50ms
TL1=0xb0;
ET1=1;
TR1=1;
}
}
void delay(unsigned char j)
{
unsigned char k,l;
for(l=0;l<=j;l++)
for(k=0;k<=250;k++);
}
void main(void)
{
WDT_CONTR=0x3c;
TMOD=0x15; //TO计数,TI计时
TH0=0x00;
TL0=0x00;
TH1=0x3C;//50ms
TL1=0xb0;
tcount=20;
CMOD=0x02;
CL=0x00;
CH=0x00;
CCAP0L=256;
CCAP0H=256;
CCAPM0=0x42;
CR=1;
disp[5]=0x25;
disp[4]=0;
disp[3]=0;
disp[2]=0;
disp[1]=0;
display();
TR0=1;
ET0=1;
TR1=1;
ET1=1;
PT0=1;
EA=1;
while(1)
{
WDT_CONTR=0x3c;
if(cishu==0)
{
PCA_PWM0=0x03;
// CCAP0H=256;
}
else if(cishu>=1500)
{
PCA_PWM0=0x00;
CCAP0H=00;
}
else
{
PCA_PWM0=0x00;
// cishu1=cishu*1000/5859;
// CCAP0H=256-cishu1;
CCAP0H=256-cishu*1000/5859;
}
display();
WDT_CONTR=0x3c;
delay(80);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -