1、基于单片机的广州塔论文大学论文基于单片机的广州塔 姓名:专业: 学校: 指导教师: 目 录摘要 11 绪论 21.1 项目研究背景及意义 22 总体设计方案及论证 22.1 总体方案设计 23 硬件实现及单元电路设计 33.1 主控制模块 33.2 电源设计 43.3 模块设计 43.3.1 LED驱动模块 53.3.2 底座LED驱动 6 3.3.3 音频电路的设计 8 3.3.4 时钟电路的设计 84 软件设计 154.1 主程序 155 总结 176 参考文献 17附 录 18附件1:原理图 18附件2:元件清单 29附件3:实物图 30摘要STC12C5A60S2是STC系列单片机里应
2、用比较广泛的一款,在自动控制领域里享有很高的价值,以其易用性和多功能性受到了广大电子设计爱好者的好评。本次设计主要是利用STC12C5A60S2单片机、该系统采用增强型8051单片机STC12C5A60S2为主控制器,利用单片机控制点阵的原理,控制广州塔展示效果,还通过单片机内置的ADC对音频信号进行采样,然后控制广州塔亮的层数达到根据音乐跳舞的效果。该方案具有电路结构简洁,开发、生产成本低的优点。关键词:点阵 STC12C5A60S2 广州塔 1 绪论1.1 项目研究背景及意义 广州塔其实又称广州新电视塔,昵称小蛮腰。它是广州最高建筑,整个塔身的设计非常有特点,特别是在夜晚的灯光装饰下,更是
3、显得美轮美奂。现已俨然成为广州的地标。如此美的建筑怎能不让人心动。我们结合所学的单片机点阵显示技术,我们也能做出广州塔的美。我们采用STC12C5A60S2作为控制系统,显示部分采用的是16*16的点阵显示原理,通过对广州塔的制作,能更好的提升单片机对点阵显示原理的掌握。2 总体设计方案及论证2.1 总体方案设计 本设计包括硬件和软件设计两个部分。系统总体的设计方框图如图1所示。电源STC12C5A60S2主控制器模块按键控制音频输入 16*16 LED显示 图1 系统方框图 3 硬件实现及单元电路设计3.1 主控制模块主控制最小系统电路如图2所示。 图2 最小系统硬件电路总设计见图3。图3
4、总设计电路图3.2 电源设计电源部分的设计采用DC5V供电,使用了电解电容进行滤波,电路供电更加的稳定。3.3模块设计 3.3.1 led驱动模块 LED驱动采用的是直接用单片机管脚驱动,因为stc12c5a60s2单片机的管脚电流达到20几毫安,足以驱动广州塔的LED,为了LED工作的稳定性,我们在电路中加入了限流电阻。3.3.2 底座4个LED底座4个LED使用的七彩LED,为了控制方便,4个LED直接到了电源,上电就能直接点亮,可以直观看出模块电源是否正常,使用七彩LED的原因是,其发出的LED光多姿多彩,给广州塔的绚丽增添多一份优美,电路如下图所示:图4 底座led驱动电路3.3.3
5、音频输入电路的设计音频电路的设计主要是采用了T型口的USB接口,因为该接口包含了音频和电源的输入,又因为控制模板的单片机是自带了AD的,所以通过按键切换到音频模式下,我们可以看到广州随音乐在跳舞。3.3.4 时钟电路的设计XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。如图13所示为时钟电
6、路。图13 时钟电路图4 软件设计 #include #define uchar unsigned char#define uint unsigned int#define LongToBin(n) (n21)&0x80)|(n18)&0x40)|(n15)&0x20)|(n12)&0x10)|(n9)&0x08)|(n6)&0x04)|(n3)&0x02)|(n)&0x01)#define BIN(n) LongToBin(0x#n#)sbit anjian=P45;sbit P0_0=P00;/层sbit P0_1=P01;sbit P0_2=P02;sbit P0_3=P03;sbit
7、P0_4=P04;sbit P0_5=P05;sbit P0_6=P06;sbit P0_7=P07;sbit P4_6=P46;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;sbit P3_0=P30;/竖sbit P3_1=P31;sbit P3_2=P32;sbit P3_3=P33;sbit P3_4=P34;sbit P3_5=P35;sbit P3_6=P36;sbit P3_7=P37;sbit P2_0=P20;sbit P2_1
8、=P21;sbit P2_2=P22;sbit P2_3=P23;sbit P2_4=P24;sbit P2_5=P25;sbit P2_6=P26;sbit P2_7=P27;sbit P4_4=P44;char moshi=1;char h=0,v=0;int t=0;char zy=0,sj=0,jz=0;bit ly_flag=0; /成功接收标志void delay_1ms(uint q) uint i,j; for(i=0;iq;i+) for(j=0;j110;j+); void key() if(anjian=0) delay_1ms(5); if(anjian=0) whil
9、e(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; void dh1() char i,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;/
10、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;j7;j+) P0=(P01)|0x01; delay_1ms(10); P4_6=1; delay_1ms(10); P1_1=1; delay_1ms(10); P1_2=1; delay_1ms(10); P1_3=1; delay_1ms(10); P1_4=1; delay_1ms(10); P1_5=1; delay_1ms(10); P1_6=1; delay_1ms(10); P1
11、_7=1; for(i=0;i2;i+) 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); for(j=0;j7;j+) P0=(P01)|0x01; 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;break; P1_1=1; delay_1ms(700); key(); if(ly_
12、flag=1)moshi=0;ly_flag=0;break; P1_2=1; delay_1ms(700); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; P1_3=1; delay_1ms(700); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; P1_4=1; delay_1ms(700); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; P1_5=1; delay_1ms(700); key(); if(ly_flag=1)moshi=0;ly_flag=0
13、;break; P1_6=1; delay_1ms(700); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; P1_7=1; delay_1ms(8000); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; delay_1ms(8000); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; delay_1ms(8000); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; delay_1ms(8000); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; delay_1ms(8000); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; delay_1ms(8000); key(); if(ly_flag=1)moshi=0;ly_flag=0;break; void dh2() char j; P1_7=1; P1_6=1; P1_5=1; P1_4=1; P1_3=1; P1_2=1; P1_1=1; P
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1