基于单片机的广州塔论文.docx

上传人:b****6 文档编号:5866242 上传时间:2023-01-01 格式:DOCX 页数:40 大小:983.33KB
下载 相关 举报
基于单片机的广州塔论文.docx_第1页
第1页 / 共40页
基于单片机的广州塔论文.docx_第2页
第2页 / 共40页
基于单片机的广州塔论文.docx_第3页
第3页 / 共40页
基于单片机的广州塔论文.docx_第4页
第4页 / 共40页
基于单片机的广州塔论文.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

基于单片机的广州塔论文.docx

《基于单片机的广州塔论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的广州塔论文.docx(40页珍藏版)》请在冰豆网上搜索。

基于单片机的广州塔论文.docx

基于单片机的广州塔论文

 

基于单片机的广州塔

 

姓名:

专业:

学校:

指导教师:

 

 

 

 

摘要

STC12C5A60S2是STC系列单片机里应用比较广泛的一款,在自动控制领域里享有很高的价值,以其易用性和多功能性受到了广大电子设计爱好者的好评。

本次设计主要是利用STC12C5A60S2单片机、该系统采用增强型8051单片机STC12C5A60S2为主控制器,利用单片机控制点阵的原理,控制广州塔展示效果,还通过单片机内置的ADC对音频信号进行采样,然后控制广州塔亮的层数达到根据音乐跳舞的效果。

该方案具有电路结构简洁,开发、生产成本低的优点。

 

关键词:

点阵STC12C5A60S2广州塔

 

1绪论

1.1项目研究背景及意义

广州塔其实又称广州新电视塔,昵称小蛮腰。

它是广州最高建筑,整个塔身的设计非常有特点,特别是在夜晚的灯光装饰下,更是显得美轮美奂。

现已俨然成为广州的地标。

如此美的建筑怎能不让人心动。

我们结合所学的单片机点阵显示技术,我们也能做出广州塔的美。

我们采用STC12C5A60S2作为控制系统,显示部分采用的是16*16的点阵显示原理,通过对广州塔的制作,能更好的提升单片机对点阵显示原理的掌握。

2总体设计方案及论证

2.1总体方案设计

本设计包括硬件和软件设计两个部分。

系统总体的设计方框图如图1所示。

 

 

图1系统方框图

3硬件实现及单元电路设计

3.1主控制模块

主控制最小系统电路如图2所示。

图2最小系统

硬件电路总设计见图3。

图3总设计电路图

3.2电源设计

电源部分的设计采用DC5V供电。

3.3模块设计

3.3.1led驱动模块

LED模块采用的是74HC573+ULN2803驱动,其中74HC573控制LED的正极,ULN2803控制LED的负极。

如下图:

图4led驱动电路

3.3.2底座4个LED

底座4个LED使用的七彩LED,为了控制方便,4个LED都接到了单片机的IO口,可以方便的控制其亮灭,使用七彩LED的原因是,其发出的LED光多姿多彩,给广州塔的绚丽增添多一份优美,电路如下图所示:

图5底座led驱动电路

3.3.3音频输入电路的设计

音频电路的设计主要是采用了T型口的USB接口,因为该接口包含了音频和电源的输入,又因为控制模板的单片机是自带了AD的,所以通过按键切换到音频模式下,我们可以看到广州随音乐在跳舞。

3.3.4时钟电路的设计

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。

如图13所示为时钟电路。

图13时钟电路图

4软件设计

#include

#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##)

sbitH1=P2^0;

sbitH2=P2^1;

sbitL1=P2^2;

sbitL2=P2^3;

sbitanjian=P3^2;

uintyanshi;

charmoshi=0;

charflag=0;

voiddelay_1ms(uintq)

{

uinti,j;

for(i=0;i

for(j=0;j<120;j++);

}

voiddh1()

{

chari;

yanshi=400;

P0=0XFF;

L1=L2=1;

L1=L2=0;

for(i=0;i<12;i++)

{

P0=0X01;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

P0=0X02;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0X04;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

P0=0X08;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0X10;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

P0=0X20;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0X40;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

P0=0X80;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(yanshi);

}

}

voiddh2()

{

chari,j;

yanshi=500;

P0=0XFF;

H1=H2=1;

H1=H2=0;

for(i=0;i<1;i++)

{

P0=0X00;

L1=1;

L1=0;

P0=0X01;

L2=1;

L2=0;

if(anjian==0){while(anjian==0);moshi=1;break;}

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=P0<<1;

L2=1;

L2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0X00;

L2=1;

L2=0;

P0=0X01;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

for(j=0;j<7;j++)

{

P0=P0<<1;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0X80;

L1=1;

L1=0;

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=P0>>1;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0X00;

L1=1;

L1=0;

P0=0X80;

L2=1;

L2=0;

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=P0>>1;

L2=1;

L2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

}

}

voiddh3()

{

chari,j;

yanshi=400;

P0=0XFF;

H1=H2=1;

H1=H2=0;

for(i=0;i<2;i++)

{

P0=0X01;

L2=1;

L2=0;

if(anjian==0){while(anjian==0);moshi=1;break;}

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=(P0<<1)|0x01;

L2=1;

L2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0X01;

L1=1;

L1=0;

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=(P0<<1)|0x01;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

delay_1ms(5000);

P0=0X7F;

for(j=0;j<7;j++)

{

P0=P0>>1;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0X7F;

L2=1;

L2=0;

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=P0>>1;

L2=1;

L2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

}

}

voiddh4()

{

chari;

P0=0X81;

L1=1;

L1=0;

P0=0X02;

L2=1;

L2=0;

for(i=0;i<5;i++)

{

P0=0X33;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

P0=0X66;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0XCC;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

P0=0X99;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

}

}

chars1,s2;

voiddh5()

{

chari,j;

yanshi=500;

P0=0XFF;

H1=H2=1;

H1=H2=0;

for(i=0;i<5;i++)

{

s1=0x01;

s2=0x80;

P0=s1;

L1=1;

L1=0;

P0=s2;

L2=1;

L2=0;

if(anjian==0){while(anjian==0);moshi=1;break;}

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

s2=(s2>>1)&0x7F;

P0=s2;

L2=1;

L2=0;

s1=s1<<1;

P0=s1;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

}

}

voiddh6()

{

chari,j;

yanshi=500;

P0=0XFF;

H1=H2=1;

H1=H2=0;

for(i=0;i<5;i++)

{

P0=0x00;

L2=1;

L2=0;

P0=0x80;

L1=1;

L1=0;

if(anjian==0){while(anjian==0);moshi=1;break;}

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=(P0>>1)|0x80;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0x80;

L2=1;

L2=0;

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=(P0>>1)|0x80;

L2=1;

L2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

}

}

voiddh7()

{

chari;

P0=0XFF;

L1=1;

L1=0;

P0=0XFF;

L2=1;

L2=0;

for(i=0;i<5;i++)

{

P0=0X11;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(700);

P0=0X22;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(700);

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0X44;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(700);

P0=0X88;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(700);

}

}

voiddh8()

{

chari;

P0=0XFF;

L1=1;

L1=0;

P0=0XFF;

L2=1;

L2=0;

for(i=0;i<5;i++)

{

P0=0X33;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

P0=0X66;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0XCC;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

P0=0X99;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

}

}

voiddh9()

{

chari;

P0=0XFF;

L1=1;

L1=0;

P0=0XFF;

L2=1;

L2=0;

for(i=0;i<10;i++)

{

if(anjian==0){while(anjian==0);moshi=1;break;}

P0=0X55;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

P0=0XAA;

H1=1;

H1=0;

H2=1;

H2=0;

delay_1ms(600);

}

}

voiddh10()

{

chari,j;

yanshi=500;

P0=0X01;

H1=H2=1;

H1=H2=0;

for(i=0;i<5;i++)

{

P0=0x00;

L2=1;

L2=0;

P0=0x80;

L1=1;

L1=0;

if(anjian==0){while(anjian==0);moshi=1;break;}

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=(P0>>1)|0x80;

L1=1;

L1=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

P0=0x80;

L2=1;

L2=0;

delay_1ms(yanshi);

for(j=0;j<7;j++)

{

P0=(P0>>1)|0x80;

L2=1;

L2=0;

delay_1ms(yanshi);

if(anjian==0){while(anjian==0);moshi=1;break;}

}

}

}

ucharSTC_ADC()//!

根据数据手册写一个ad读取函数

{

uchari;

ADC_RES=0;

ADC_RESL=0;

ADC_CONTR=BIN(10001000);

i=3;

while(i--);

while

(1)

{

if(ADC_CONTR&BIN(10000))

{

break;

}

}

ADC_CONTR=BIN(10000000);

return(ADC_RESL<<2);

}

uchardate;

voidinit()

{

TMOD=0x10;

TL1=(65536-50000)/256;//设置定时初值

TH1=(65536-50000)%256;//设置定时初值

ET1=1;

TR1=1;

EA=0;

}

charh=0,v=0;

voidpp()

{

if(date<=15&&date>0)

{

h=1;

if(v

if(flag==0)

{

P0=0X01;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

if(flag==1)

{

P0=0X01;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

}

if(date<=30&&date>15)

{

h=2;

if(v

if(flag==0)

{

P0=0X03;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

if(flag==1)

{

P0=0X02;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

}

if(date<=45&&date>30)

{

h=3;

if(v

if(flag==0)

{

P0=0X07;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

if(flag==1)

{

P0=0X04;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

}

if(date<=60&&date>45)

{

h=4;

if(v

if(flag==0)

{

P0=0X0F;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

if(flag==1)

{

P0=0X08;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

}

if(date<=75&&date>60)

{

h=5;

if(v

if(flag==0)

{

P0=0X1F;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

if(flag==1)

{

P0=0X10;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

}

if(date<=90&&date>75)

{

h=6;

if(v

if(flag==0)

{

P0=0X3F;

L2=1;

L2=0;

delay_1ms

(2);

P0=0X00;

L1=1;

L1=0;

}

if(flag==1)

{

P0=0X20;

L2=1;

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

当前位置:首页 > PPT模板 > 动物植物

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

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