51单片机自动控制升旗系统Word文档下载推荐.docx

上传人:b****3 文档编号:16925419 上传时间:2022-11-27 格式:DOCX 页数:15 大小:37.54KB
下载 相关 举报
51单片机自动控制升旗系统Word文档下载推荐.docx_第1页
第1页 / 共15页
51单片机自动控制升旗系统Word文档下载推荐.docx_第2页
第2页 / 共15页
51单片机自动控制升旗系统Word文档下载推荐.docx_第3页
第3页 / 共15页
51单片机自动控制升旗系统Word文档下载推荐.docx_第4页
第4页 / 共15页
51单片机自动控制升旗系统Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

51单片机自动控制升旗系统Word文档下载推荐.docx

《51单片机自动控制升旗系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机自动控制升旗系统Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

51单片机自动控制升旗系统Word文档下载推荐.docx

8,0x08,0,0x04,5,0x04,

8,0x0c,8,0x04,

8,0x06,8,0x02,5,0x04,6,0x02,7,0x02,

8,0x08,8,0x08,

0,0x04,10,0x04,8,0x04,9,0x02,10,0x02,

//10,0x04,10,0x04,8,0x04,9,0x02,10,0x02,

12,0x08,12,0x08,

10,0x06,10,0x02,8,0x06,10,0x02,

12,0x06,10,0x02,9,0x08,

//12,0x10,

9,0x10,

13,0x08,12,0x08,

9,0x08,10,0x08,

12,0x04,10,0x04,0,0x04,12,0x04,

//12,0x04,10,0x04,10,0x04,12,0x04,

10,0x04,9,0x02,10,0x02,8,0x08,

10,0x08,0,0x08,

//10,0x08,10,0x08,

5,0x06,6,0x04,8,0x04,8,0x04,

10,0x06,10,0x02,12,0x04,12,0x04,

9,0x04,9,0x02,9,0x02,6,0x08,

9,0x0c,5,0x04,

10,0x0c,10,0x04,

12,0x10,

8,0x06,10,0x02,12,0x04,12,0x04,

10,0x06,8,0x02,12,0x08,

10,0x04,0,0x04,8,0x04,0,0x04,

//10,0x04,10,0x04,8,0x04,8,0x04,

5,0x08,8,0x08,

8,0x08,0,0x08,

//8,0x08,

0xff,0xff,

ucharspeed_count=2;

ucharflag=0;

bittimer_flag=0;

bitMOTOR_FFW_FLAG=0;

bitMOTOR_REV_FLAG=0;

sbitK1=P3^0;

//正转

sbitK2=P3^1;

//反转

sbitK5=P3^4;

//停止

sbitled1=P2^0;

sbitled2=P2^1;

sbitled3=P2^2;

sbitled4=P2^3;

sbitled5=P2^4;

sbitled6=P2^5;

sbitbeep=P3^7;

voidsmg_display();

voidK1_stop_state();

voidK2_stop_state();

voidK5_stop_state();

voidmusic();

ucharnum1=0,num2=0,num3=0;

uintcnt=0,Time=0,Length=0;

uchara=0;

uchartl0,th0;

voiddelay(unsignedchart)//-----延时函数----------//

{

unsignedchart1;

unsignedlongt2;

for(t1=0;

t1<

t;

t1++)

for(t2=0;

t2<

770;

t2++);

TR0=0;

}

voiddelayms(unsignedintx)

{

unsignedinta,b;

for(a=x;

a>

0;

a--)

for(b=124;

b>

b--);

}

voidDTIME(intn)//延时程序

uchari;

for(i=0;

i<

50*n;

i++)

;

voidtimer0()interrupt1

beep=~beep;

TL0=tl0;

TH0=th0;

TR0=1;

voidtimer1_init()

//定时器初始化

TH1=(65536-8000)/256;

TL1=(65536-8000)%256;

ET1=0;

/*voidtimer0(void)interrupt1

TH0=th[speed_count];

TL0=tl[speed_count];

timer_flag=1;

voidup(void)interrupt0//加速

speed_count++;

if(speed_count>

2)speed_count=2;

voiddown(void)interrupt2//减速

speed_count--;

if(speed_count<

0)speed_count=0;

}*/

voidT1_time()interrupt3//定时器函数

TH1=(65536-8000)/256;

TL1=(65536-8000)%256;

num1++;

num2++;

num3++;

smg_display();

voidSETP_MOTOR_FFW()//电机正转

uchari;

P1=FFW[i];

DTIME(5);

i++;

if(i==8)i=0;

voidSETP_MOTOR_REV()//电机反转

P1=REV[i];

i++;

voidmain()

ucharN=10;

TMOD=0x11;

ET0=1;

EX0=1;

IT0=1;

//外部中断0

EX1=1;

IT1=1;

//外部中断1

EA=1;

timer1_init();

while

(1)

if(K1==0)

{

if(MOTOR_FFW_FLAG==0)

{

flag=1;

TR1=1;

smg_display();

music();

}

}

elseif(K2==0)

{

if(MOTOR_REV_FLAG==0)

flag=2;

elseif(K5==0)

P0=0xfb;

P1=0x03;

voidsmg_display()

{

switch(++cnt%6)

case0:

P2|=0xff;

led1=0;

P0=SZ[Time/10];

break;

case1:

led2=0;

P0=SZ[Time%10];

/*case2:

led3=0;

P0=SZ[Time%100%10];

*/

case3:

led4=0;

P0=SZ[Length/100];

case4:

led5=0;

P0=SZ[Length/10%10];

case5:

led6=0;

P0=SZ[Length%100%10];

DTIME

(1);

if(cnt>

500)

cnt=0;

if(flag!

=1&

&

flag!

=2)

Time=0;

}

if(flag==1)

if(K5==0)

{

K5_stop_state();

}

ET1=1;

if(num3==5)

num3=0;

SETP_MOTOR_FFW();

}

if(num1==100)

num1=0;

Time++;

if(Time==43)

{

a=Length;

MOTOR_FFW_FLAG=1;

MOTOR_REV_FLAG=0;

K1_stop_state();

}

if(num2==24)

num2=0;

Length++;

if(flag==2)

SETP_MOTOR_REV();

Time--;

if(Time==0)

a++;

MOTOR_FFW_FLAG=0;

MOTOR_REV_FLAG=1;

K2_stop_state();

Length--;

}

voidK1_stop_state()

DTIME

(2);

P2|=0xff;

P0=SZ[a/100];

P0=SZ[a/10%10];

P0=SZ[a%100%10];

if(K2==0){flag=2;

break;

voidK2_stop_state()

if(K1==0){flag=1;

voidK5_stop_state()

P2|=0xff;

led1=0;

P0=SZ[0];

while

(1);

voidmusic()

unsignedchark;

ET0=1;

if(yyjjxq[k]==0xff)

beep=1;

TR0=0;

delayms(50);

else

if(yyjjxq[k]==0x00)

delay(yyjjxq[k+1]);

k+=2;

else

{

th0=FreqTab[yyjjxq[k]]/256;

tl0=FreqTab[yyjjxq[k]]%256;

TR0=1;

delay(yyjjxq[k+1]);

}

}

电路原理图如下所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1