- 2
- 0
- 约2.61千字
- 约 6页
- 2024-04-03 发布于浙江
- 举报
#includereg52.h
sbitIN1=P2^3;
intnum=0;
voidInit();
intmain()
//头文件
//电动机控制口为P2^3
void
Init();
while(1)
Init()
//定时器初始化函数
TMOD=0x01;
THO=(65536-100)/256;
TLO=(65536-100)%256;
EA=1;
ETO=1;
TRO=1;
//定时器0以模式1工作
voidTimer_0(void)interrupt1
THO=(65536-100)/256;
TLO=(65536-100)%256;
num++;
if(num=10)
IN1=1;
else
IN1=0;
f(num20)
num=0;
//占空比的设定,此处为50%
//周期
2:控制电动机的正/反转(单片机):
#includereg52.h
#defineucharunsignedchar
#defineuintunsignedint
sbitA1=P2^4;
sbitA2=P2^5;
sbitB1=P2^6;
sbitB2=P2^7;
ucharjsa=0,jsb=0,sd=0,key=0,zf=0,off=0,PWM_bai=0,PWM_shi=0,PWM_ge=0;uintus_1X=0,PWM_jsa=0,PWM_jsb=0;
voidTO_time()interrupt1
THO=(65536-1)/256;
TLO=(65536-1)%256;
us_1X++;
if(us_1X500)
us_1X=0;
ucharcodetable1[]=
Ox3f,
0x06,0×5b,0x4f,0×66,0x6d,
0x7d,0x07,0x7f,0x6f
};
voiddelay(ucharx)
uchari,j;
for(i=x;i0;i--)
for(j=110;j0;j--);
voidPWM_xs()
{
f(sd==0)
{
PWM_bai=jsa/100;
PWM_shi=jsa/10%10;
PWM_ge=jsa%10;
if(sd==1)
PWM_bai=jsb/100;
PWM_shi=jsb/10%10
PWM_ge=jsb%10;
P1=0xfb;
PO=table1[PWM_bai];
delay(1);
P1=0xfd;
PO=table1[PWM_shi];
delay(1);
P1=0xfe;
PO=table1[PWM_ge];
delay(1);
//1us加一次
//2KHz
//定时器清空,重新开始
//数码管显示
1/0
//1-5
//6-9
//数码管显示
voidjianpan()
uchartemp;
P3=0xfe;
temp=P3;
temp=temp0xfc;
f(temp!=Oxfc)
delay(20);
temp=P3;
temp=tempOxfc;
if(temp!=0xfc)
temp=P3;
switch(temp)
caseOxfa;
if(sd==0)
{
jsa=jsa+10
if(jsa100)
jsa=0;
f(sd==1)
{
jsb=jsb+10
if(jsb100)
jsb=0;
break;
case0xf6:
sd++;
off=1;
break;
while(temp!=0xfc)
{
temp=P3;
temp=tempOxfc;
}
P3=0xfd;
temp=P3;
//矩阵键盘
//松手检测
temp=temp0xfc;
if(temp!=0xfc)
delay(20);
temp=P3;
temp=temp0xfc;
if(temp!=0xfc)
temp=P3;
switch(temp)
case0xf9:
key++;
break;
caseOxf5:
zf++;
if(zf2)
zf=1;
off=0;
break;
while(temp!=0xfc)
temp=P3;
temp=temp0xfc;
//松手检测
voidmain()
TMOD=0X01;
THO=(65536-1)/256;
TLO=(65536-1)%256;
EA=1;
ETO=1;
TRO=1;
while(1)
jianpan();
PWM_xs():
if(key==2)
P1=0xff;
//定时器开启
jsa=0,jsb=0,sd=0,key=0,zf=0,off=0,PWM_bai=0,PWM_shi=0,PWM_ge=0;us_1X=0,PWM_jsa=0,PWM_jsb=0;
PWM_jsa=jsa*5;
PWM_js
原创力文档

文档评论(0)