基于单片机的广州塔论文Word文件下载.docx
《基于单片机的广州塔论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的广州塔论文Word文件下载.docx(55页珍藏版)》请在冰豆网上搜索。
3.2电源设计
电源局部的设计采用DC5V供电,使用了电解电容进展滤波,电路供电更加的稳定。
3.3模块设计
3.3.1led驱动模块
LED驱动采用的是直接用单片机管脚驱动,因为stc12c5a60s2单片机的管脚电流到达20几毫安,足以驱动XX塔的LED,为了LED工作的稳定性,我们在电路中参加了限流电阻。
3.3.2底座4个LED
底座4个LED使用的七彩LED,为了控制方便,4个LED直接到了电源,上电就能直接点亮,可以直观看出模块电源是否正常,使用七彩LED的原因是,其发出的LED光多姿多彩,给XX塔的绚丽增添多一份优美,电路如下列图所示:
图4底座led驱动电路
3.3.3音频输入电路的设计
音频电路的设计主要是采用了T型口的USB接口,因为该接口包含了音频和电源的输入,又因为控制模板的单片机是自带了AD的,所以通过按键切换到音频模式下,我们可以看到XX随音乐在跳舞。
3.3.4时钟电路的设计
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。
如图13所示为时钟电路。
图13时钟电路图
4软件设计
#include<
stc12c5a60s2.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineLongToBin(n)(((n>
>
21)&
0x80)|((n>
18)&
0x40)|((n>
15)&
0x20)|((n>
12)&
0x10)|((n>
9)&
0x08)|((n>
6)&
0x04)|((n>
3)&
0x02)|((n)&
0x01))
#defineBIN(n)LongToBin(0x##n##)
sbitanjian=P4^5;
sbitP0_0=P0^0;
//层
sbitP0_1=P0^1;
sbitP0_2=P0^2;
sbitP0_3=P0^3;
sbitP0_4=P0^4;
sbitP0_5=P0^5;
sbitP0_6=P0^6;
sbitP0_7=P0^7;
sbitP4_6=P4^6;
sbitP1_1=P1^1;
sbitP1_2=P1^2;
sbitP1_3=P1^3;
sbitP1_4=P1^4;
sbitP1_5=P1^5;
sbitP1_6=P1^6;
sbitP1_7=P1^7;
sbitP3_0=P3^0;
//竖
sbitP3_1=P3^1;
sbitP3_2=P3^2;
sbitP3_3=P3^3;
sbitP3_4=P3^4;
sbitP3_5=P3^5;
sbitP3_6=P3^6;
sbitP3_7=P3^7;
sbitP2_0=P2^0;
sbitP2_1=P2^1;
sbitP2_2=P2^2;
sbitP2_3=P2^3;
sbitP2_4=P2^4;
sbitP2_5=P2^5;
sbitP2_6=P2^6;
sbitP2_7=P2^7;
sbitP4_4=P4^4;
charmoshi=1;
charh=0,v=0;
intt=0;
charzy=0,sj=0,jz=0;
bitly_flag=0;
//成功接收标志
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;
i<
q;
i++)
for(j=0;
j<
110;
j++);
}
voidkey()
if(anjian==0)
{
delay_1ms(5);
if(anjian==0)
{
while(anjian==0);
jz++;
if(jz==2)jz=0;
if(jz==0){moshi=1;
TR0=0;
ET0=0;
};
if(jz==1){moshi=0;
ly_flag=1;
TR0=1;
ET0=1;
}
}
}
voiddh1()
chari,j;
P3_0=0;
//J1
P3_1=0;
//J2
P3_3=0;
//J3
P3_4=0;
//J4
P3_5=0;
//J5
P3_6=0;
//J6
P3_7=0;
//J7
P2_0=0;
//J8
P2_1=0;
//J9
P2_2=0;
//J10
P2_3=0;
//J11
P2_4=0;
//J12
P2_5=0;
//J13
P2_6=0;
//J14
P2_7=0;
//J15
P4_4=0;
//J16
P1_7=0;
P1_6=0;
P1_5=0;
P1_4=0;
P1_3=0;
P1_2=0;
P1_1=0;
P4_6=0;
P0=0X01;
delay_1ms(10);
for(j=0;
7;
j++)
P0=(P0<
<
1)|0x01;
delay_1ms(10);
P4_6=1;
P1_1=1;
P1_2=1;
P1_3=1;
P1_4=1;
P1_5=1;
P1_6=1;
P1_7=1;
2;
P1_7=0;
P1_6=0;
P1_5=0;
P1_4=0;
P1_3=0;
P1_2=0;
P1_1=0;
P4_6=0;
P0=0X01;
delay_1ms(1000);
P0=(P0<
delay_1ms(700);
key();
if(ly_flag==1){ly_flag=0;
break;
}
P4_6=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;
ly_flag=0;
P1_1=1;
P1_2=1;
P1_3=1;
P1_4=1;
P1_5=1;
P1_6=1;
P1_7=1;
delay_1ms(8000);
}
voiddh2()
charj;
P0_7=1;
P0_6=1;
P0_5=1;
P0_4=1;
P0_3=1;
P0_2=1;
P0_1=1;
P0_0=1;
12;
P4_4=1;
P2_0=1;
P3_0=0;
P2_1=0;
delay_1ms(400);
P3_0=1;
P2_1=1;
P3_1=0;
P2_2=0;
P3_1=1;
P2_2=1;
P3_3=0;
P2_3=0;
P3_3=1;
P2_3=1;
P3_4=0;
P2_4=0;
P3_4=1;
P2_4=1;
P3_5=0;
P2_5=0;
P3_5=1;
P2_5=1;
P3_6=0;
P2_6=0;
P3_6=1;
P2_6=1;
P3_7=0;
P2_7=0;
P3_7=1;
P2_7=1;
P4_4=0;
P2_0=0;
voiddh3()
intyanshi=400;
for(i=0;
3;
delay_1ms(yanshi);
1);
delay_1ms(yanshi);
if(ly_flag==1){moshi=0;
P0_7=0;
P0_7=1;
P0_6=1;
P0_5=1;
P0_6=0;
P0_4=1;
P0_5=0;
P0_3=1;
P0_4=0;
P0_2=1;
P0_3=0;
P0_1=1;
P0_2=0;
voiddh4()
P0_7=0;
P0_6=0;
P0_5=0;
P0_4=0;
P0_3=0;
P0_2=0;
P0_1=0;
P0_0=0;
P0_0=0;
delay_1ms(500);
P0_0=1;
P0_1=0;
voiddh5()
chari;
delay_1ms(9000);
}
P2=0XFF;
P3=0XFF;
}
voiddh6()
intyanshi=3000;
20;
P3_4=1;
P3_0=0;
break