收藏 分销(赏)

毕业设计(论文)-基于单片机的广州塔论文.doc

上传人:天**** 文档编号:4943519 上传时间:2024-10-20 格式:DOC 页数:63 大小:678.50KB 下载积分:14 金币
下载 相关 举报
毕业设计(论文)-基于单片机的广州塔论文.doc_第1页
第1页 / 共63页
毕业设计(论文)-基于单片机的广州塔论文.doc_第2页
第2页 / 共63页


点击查看更多>>
资源描述
基于单片机的广州塔 姓名: 专业: 学校: 指导教师: 1 1 目 录 摘要 1 1 绪论 2 1.1 项目研究背景及意义 2 2 总体设计方案及论证 2 2.1 总体方案设计 2 3 硬件实现及单元电路设计 3 3.1 主控制模块 3 3.2 电源设计 4 3.3 模块设计 4 3.3.1 LED驱动模块 5 3.3.2 底座LED驱动 6 3.3.3 音频电路的设计 8 3.3.4 时钟电路的设计 8 4 软件设计 15 4.1 主程序 15 5 总结 17 6 参考文献 17 附 录 18 附件1:原理图 18 附件2:元件清单 29 附件3:实物图 30 2 1 摘要 STC12C5A60S2是STC系列单片机里应用比较广泛的一款,在自动控制领域里享有很高的价值,以其易用性和多功能性受到了广大电子设计爱好者的好评。本次设计主要是利用STC12C5A60S2单片机、该系统采用增强型8051单片机STC12C5A60S2为主控制器,利用单片机控制点阵的原理,控制广州塔展示效果,还通过单片机内置的ADC对音频信号进行采样,然后控制广州塔亮的层数达到根据音乐跳舞的效果。该方案具有电路结构简洁,开发、生产成本低的优点。  关键词:点阵 STC12C5A60S2 广州塔 1 绪论 1.1 项目研究背景及意义 广州塔其实又称广州新电视塔,昵称小蛮腰。它是广州最高建筑,整个塔身的设计非常有特点,特别是在夜晚的灯光装饰下,更是显得美轮美奂。现已俨然成为广州的地标。如此美的建筑怎能不让人心动。我们结合所学的单片机点阵显示技术,我们也能做出广州塔的美。我们采用STC12C5A60S2作为控制系统,显示部分采用的是16*16的点阵显示原理,通过对广州塔的制作,能更好的提升单片机对点阵显示原理的掌握。 2 总体设计方案及论证 2.1 总体方案设计 本设计包括硬件和软件设计两个部分。系统总体的设计方框图如图1所示。 电源 STC12C5A60S2主控制器模块 按键控制 音频输入 16*16 LED显示 图1 系统方框图 3 硬件实现及单元电路设计 3.1 主控制模块 主控制最小系统电路如图2所示。 图2 最小系统 硬件电路总设计见图3。 图3 总设计电路图 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 音频输入电路的设计 音频电路的设计主要是采用了T型口的USB接口,因为该接口包含了音频和电源的输入,又因为控制模板的单片机是自带了AD的,所以通过按键切换到音频模式下,我们可以看到广州随音乐在跳舞。 3.3.4 时钟电路的设计 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。 因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。如图13所示为时钟电路。 图13 时钟电路图 4 软件设计 #include <stc12c5a60s2.h> #define uchar unsigned char #define uint unsigned int #define LongToBin(n) (((n>>21)&0x80)|((n>>18)&0x40)|((n>>15)&0x20)|((n>>12)&0x10)|((n>>9)&0x08)|((n>>6)&0x04)|((n>>3)&0x02)|((n)&0x01)) #define BIN(n) LongToBin(0x##n##) sbit anjian=P4^5; sbit P0_0=P0^0;//层 sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; sbit P0_5=P0^5; sbit P0_6=P0^6; sbit P0_7=P0^7; sbit P4_6=P4^6; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; sbit P3_0=P3^0;//竖 sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3_3=P3^3; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_6=P3^6; sbit P3_7=P3^7; sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7; sbit P4_4=P4^4; 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;i<q;i++) for(j=0;j<110;j++); } void key() { 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;} } } } 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;//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;j<7;j++) { P0=(P0<<1)|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_7=1; for(i=0;i<2;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;j<7;j++) { P0=(P0<<1)|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_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;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; P4_6=1; P0_7=1; P0_6=1; P0_5=1; P0_4=1; P0_3=1; P0_2=1; P0_1=1; P0_0=1; for(j=0;j<12;j++) { 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; delay_1ms(400); P3_1=1; P2_2=1; P3_3=0; P2_3=0; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P3_3=1; P2_3=1; P3_4=0; P2_4=0; delay_1ms(400); P3_4=1; P2_4=1; P3_5=0; P2_5=0; delay_1ms(400); P3_5=1; P2_5=1; P3_6=0; P2_6=0; delay_1ms(400); if(ly_flag==1){moshi=0;ly_flag=0;break;} P3_6=1; P2_6=1; P3_7=0; P2_7=0; delay_1ms(400); P3_7=1; P2_7=1; P4_4=0; P2_0=0; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} } } void dh3() { char i,j; int yanshi=400; 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 for(i=0;i<3;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(yanshi); for(j=0;j<7;j++) { P0=(P0<<1); delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} } P0_7=0; P4_6=1; delay_1ms(yanshi); P4_6=0; P1_1=1; delay_1ms(yanshi); P1_1=0; P1_2=1; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_2=0; P1_3=1; delay_1ms(yanshi); P1_3=0; P1_4=1; delay_1ms(yanshi); P1_4=0; P1_5=1; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_5=0; P1_6=1; delay_1ms(yanshi); P1_6=0; P1_7=1; delay_1ms(yanshi); P1_6=1; P1_7=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_5=1; P1_6=0; delay_1ms(yanshi); P1_4=1; P1_5=0; delay_1ms(yanshi); P1_3=1; P1_4=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_2=1; P1_3=0; delay_1ms(yanshi); P1_1=1; P1_2=0; delay_1ms(yanshi); P1_1=0; P0_7=1; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P0_6=1; P0_7=0; delay_1ms(yanshi); P0_5=1; P0_6=0; delay_1ms(yanshi); P0_4=1; P0_5=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P0_3=1; P0_4=0; delay_1ms(yanshi); P0_2=1; P0_3=0; delay_1ms(yanshi); P0_1=1; P0_2=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} } } void dh4() { char 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_7=0; P0_6=0; P0_5=0; P0_4=0; P0_3=0; P0_2=0; P0_1=0; P0_1=0; P0_0=0; for(j=0;j<3;j++) { P1_7=0; P0_0=0; P4_6=1; P0_7=1; delay_1ms(500); P4_6=0; P0_7=0; P1_1=1; P0_6=1; delay_1ms(500); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_2=1; P0_5=1; P1_1=0; P0_6=0; delay_1ms(500); P1_3=1; P0_4=1; P1_2=0; P0_5=0; delay_1ms(500); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_4=1; P0_3=1; P1_3=0; P0_4=0; delay_1ms(500); P1_5=1; P0_2=1; P1_4=0; P0_3=0; delay_1ms(500); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P1_6=1; P0_1=1; P1_5=0; P0_2=0; delay_1ms(500); P1_7=1; P0_0=1; P1_6=0; P0_1=0; delay_1ms(500); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} } } void dh5() { char i; P1_7=1; P1_6=1; P1_5=1; P1_4=1; P1_3=1; P1_2=1; P1_1=1; P4_6=1; P0_7=1; P0_6=1; P0_5=1; P0_4=1; P0_3=1; P0_2=1; P0_1=1; P0_1=1; P0_0=1; for(i=0;i<3;i++) { P3_0=0; delay_1ms(400); P3_1=0; delay_1ms(400); P3_3=0; delay_1ms(400); P3_4=0; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P3_5=0; delay_1ms(400); P3_6=0; delay_1ms(400); P3_7=0; delay_1ms(400); P2_0=0; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P2_1=0; delay_1ms(400); P2_2=0; delay_1ms(400); P2_3=0; delay_1ms(400); P2_4=0; delay_1ms(400); key(); if(ly_flag==1){moshi=0;break;} P2_5=0; delay_1ms(400); P2_6=0; delay_1ms(400); P2_7=0; delay_1ms(400); P4_4=0; delay_1ms(9000); key(); if(ly_flag==1){moshi=0;break;} delay_1ms(9000); key(); if(ly_flag==1){moshi=0;break;} delay_1ms(9000); key(); if(ly_flag==1){moshi=0;break;} P2=0XFF; P3=0XFF; P4_4=1; } } void dh6() { char j; int yanshi=3000; P1_7=1; P1_6=1; P1_5=1; P1_4=1; P1_3=1; P1_2=1; P1_1=1; P4_6=1; P0_7=1; P0_6=1; P0_5=1; P0_4=1; P0_3=1; P0_2=1; P0_1=1; P0_0=1; for(j=0;j<20;j++) { P3_4=1; P2_0=1; P2_4=1; P4_4=1; P3_0=0; P3_5=0; P2_1=0; P2_5=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P3_0=1; P3_5=1; P2_1=1; P2_5=1; P3_1=0; P3_6=0; P2_2=0; P2_6=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P3_1=1; P3_6=1; P2_2=1; P2_6=1; P3_3=0; P3_7=0; P2_3=0; P2_7=0; delay_1ms(yanshi); key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} P3_3=1; P3_7=1; P2_3=1; P2_7=1; P3_4=0; P2_0=0; P2_4=0; P4_4=0; delay_1ms(yanshi); if(j<6)yanshi=yanshi-400; key(); if(ly_flag==1){moshi=0;ly_flag=0;break;} } } void dh7() { 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=0X00; P0=0X00; P4_6=0; P1_7=1; delay_1ms(400); P1_6=1; delay_1ms(400); P1_6=0; P1_5=1; delay_1ms(400); P1_5=0; P1_4=1; delay_1ms(400); P1_4=0; P1_3=1; delay_1ms(400); P1_3=0; P1_2=1; delay_1ms(400); P1_2=0; P1_1=1; delay_1ms(400); P1_1=0; P4_6=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P4_6=0; P0_7=1; delay_1ms(400); P0_7=0; P0_6=1; delay_1ms(400); P0_6=0; P0_5=1; delay_1ms(400); P0_5=0; P0_4=1; delay_1ms(400); P0_4=0; P0_3=1; delay_1ms(400); P0_3=0; P0_2=1; delay_1ms(400); P0_2=0; P0_1=1; delay_1ms(400); P0_1=0; P0_0=1; delay_1ms(400); /////////////P00 key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_6=1; delay_1ms(400); P1_6=0; P1_5=1; delay_1ms(400); P1_5=0; P1_4=1; delay_1ms(400); P1_4=0; P1_3=1; delay_1ms(400); P1_3=0; P1_2=1; delay_1ms(400); P1_2=0; P1_1=1; delay_1ms(400); P1_1=0; P4_6=1; delay_1ms(400); P4_6=0; P0_7=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P0_7=0; P0_6=1; delay_1ms(400); P0_6=0; P0_5=1; delay_1ms(400); P0_5=0; P0_4=1; delay_1ms(400); P0_4=0; P0_3=1; delay_1ms(400); P0_3=0; P0_2=1; delay_1ms(400); P0_2=0; P0_1=1; delay_1ms(400);/////////////////////////////P01 key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_6=1; delay_1ms(400); P1_6=0; P1_5=1; delay_1ms(400); P1_5=0; P1_4=1; delay_1ms(400); P1_4=0; P1_3=1; delay_1ms(400); P1_3=0; P1_2=1; delay_1ms(400); P1_2=0; P1_1=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_1=0; P4_6=1; delay_1ms(400); P4_6=0; P0_7=1; delay_1ms(400); P0_7=0; P0_6=1; delay_1ms(400); P0_6=0; P0_5=1; delay_1ms(400); P0_5=0; P0_4=1; delay_1ms(400); P0_4=0; P0_3=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P0_3=0; P0_2=1; delay_1ms(400);/////////////////////////////////P02 P1_6=1; delay_1ms(400); P1_6=0; P1_5=1; delay_1ms(400); P1_5=0; P1_4=1; delay_1ms(400); P1_4=0; P1_3=1; delay_1ms(400); P1_3=0; P1_2=1; delay_1ms(400); P1_2=0; P1_1=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_1=0; P4_6=1; delay_1ms(400); P4_6=0; P0_7=1; delay_1ms(400); P0_7=0; P0_6=1; delay_1ms(400); P0_6=0; P0_5=1; delay_1ms(400); P0_5=0; P0_4=1; delay_1ms(400); P0_4=0; P0_3=1; delay_1ms(400);//////////////////////////P03 key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_6=1; delay_1ms(400); P1_6=0; P1_5=1; delay_1ms(400); P1_5=0; P1_4=1; delay_1ms(400); P1_4=0; P1_3=1; delay_1ms(400); P1_3=0; P1_2=1; delay_1ms(400); P1_2=0; P1_1=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_1=0; P4_6=1; delay_1ms(400); P4_6=0; P0_7=1; delay_1ms(400); P0_7=0; P0_6=1; delay_1ms(400); P0_6=0; P0_5=1; delay_1ms(400); P0_5=0; P0_4=1; delay_1ms(400);///////////////////////////P04 P1_6=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_6=0; P1_5=1; delay_1ms(400); P1_5=0; P1_4=1; delay_1ms(400); P1_4=0; P1_3=1; delay_1ms(400); P1_3=0; P1_2=1; delay_1ms(400); key(); if(ly_flag==1){moshi=0;ly_flag=0;goto hm;} P1_2=0; P1_
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服