单片机课设.docx

上传人:b****2 文档编号:24453159 上传时间:2023-05-27 格式:DOCX 页数:25 大小:2.12MB
下载 相关 举报
单片机课设.docx_第1页
第1页 / 共25页
单片机课设.docx_第2页
第2页 / 共25页
单片机课设.docx_第3页
第3页 / 共25页
单片机课设.docx_第4页
第4页 / 共25页
单片机课设.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机课设.docx

《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(25页珍藏版)》请在冰豆网上搜索。

单片机课设.docx

单片机课设

摘要

随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于89C51单片机的音乐喷泉,目前在公共场所喷泉一般只是将音乐和喷泉高低简单配合,无法真正体现音乐的旋律、节奏;或者是采用了高成本复杂的控制系统,搭建复杂的外围电路实现功能;并且多数只能在现场观赏,不能进入家庭。

本文介绍基于89c51单片机控制的小型室内移动式音乐喷泉。

它使用了较少的外围器件和较为简单的电路设计,成本低、体积小,实用性强,适合室内观赏。

为了使控制简单可靠,活用现代社会的市场需求,各种形式的喷泉层出不穷,并逐步转向小型和营业性较强的方向发展。

其音乐喷泉的控制也变得灵活多样,如单片机、PLC、DSP等都在音乐喷泉中有所运用,当然也具有优缺点。

本课题选用单片机作为此次音乐喷泉控制系统设计的控制核心,主要是为了实现单片机的放音,并控制多个彩灯随着音乐的音调节奏变化而随之变换。

本课题是设计一个基于STC12C5A60S2单片机为控制器一方面通过点阵来显示,另一方面驱动ADC采集音频信号,然后将音频信号的强弱通过点阵显示出来。

音频信号有两个来源,一方面由音乐芯片产生三种不同信号,另一方面有外部(如手机)输入,通过音频功率放大器放大。

关键词:

STC12C5A60S2单片机、8*24点阵、音频功效

 

目录

引言1

1.设计背景2

1.1课题背景2

1.2设计内容2

2.音乐喷泉系统简介3

2.1方案选择3

2.2系统设计原理3

2.3系统组成3

3.主要硬件选择4

3.1主控制器选择4

3.2单片机芯片介绍6

3.38*24点阵介绍7

4.电路设计8

4.1整体设计8

4.2分块设计8

5.使用软件简介11

5.1C语言简介11

5.2Keil简介11

5.3Proteus软件介绍11

6.程序设计13

6.1程序思路13

6.2FFT简介13

6.2定时/计数器的初始化编程13

7.总结14

参考文献15

附录:

源程序代码16

引言

音乐喷泉是一种为了娱乐而创造出来的可以活动的喷泉。

它根据美学设计并且经常会产生3维的效果。

这种效果是由于声波或光波或激光穿过水粒子而产生的。

在此过程中,水流被操控,散射及折射光,然后一个3维的画面就产生了。

单片机具有集成度高、功能强、体积小、价格低、抗干扰能力等优于一般CPU的优点,因此往往采用单片机作为数字控制器取代模拟控制器。

单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。

对于自动化专业的学生来说,未来将从事单片机的应用与开发,学习单片机意义重大。

学习它,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。

同时,提供了一个实际应用手段。

 

单片机自问世以来,性能不断提高和完善,其资源又满足很多应用场合的需要,加之单片机具有集成度高,功能强,速度快,体积小,功耗低,使用方便,价格低廉等特点,因此,在工业控制,智能仪器仪表,数据采集和处理,通信系统,高级计算器,家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。

单片机的潜力越来越被人们所重视。

特别是当前用cmos工艺制程的各种单片机,由于功耗低,使用温度范围大,抗干扰能力强,能满足一些特殊要求的应用场合,更加扩大了单片机的应用范畴,也进一步促进是单片机性能发展。

而现在单片机在农业上也有了很多应用。

 

1.设计背景

1.1课题背景

一九三零年,德国发明家奥图皮士特先生首先带出喷泉的概念,起初他只在百货商店和餐馆建造小型喷泉,及后经过多年的发展,其音乐喷泉的设计及构造已变得更大型及复杂。

根德皮斯特域先生早于十二岁已跟随父亲设计及建造喷泉,一九五二年的夏天,西柏林的工业展览中,一个美国人看到音乐喷泉的表演,并把它带回纽约电台音乐会堂。

一九五三年一月十五日音乐喷泉在美国首次表演,表演期间超过一百五十万人观看。

现在根德皮斯特域先生继续改善其音乐喷泉及推向全世界,多年的改良已大大减低建造和维修的成本,电脑更已用在音乐喷泉上,使其表演能更复杂和美丽。

目前在我国有200多家喷泉生产厂家,但是他们多为个体、私营或乡镇小企业,基础、实力、技术力量、管理水平都很薄弱。

产品我国是简单的仿制,重复生产,创新并不多,实际进行科研设计的少之又少。

所以根据我国的实际情况,设计和生产技术水平先进,符合国际流行趋势的音乐喷泉是非常重要的,而且更有必要进行音乐喷泉的研究和开发,特别是控制部分,以达到提高系统性能,提高音乐喷泉艺术效果的。

除此之外,有关音乐喷泉可供查找的文献资料比较少,这样给利用传统的机械设计方法直接进行音乐喷泉的设计及视音误差的校正带来了困难,因此很有必要建立一个仿真设计软件系统来辅助音乐喷泉的设计。

1.2设计内容

本设计主要是介绍了单片机控制下的点阵系统与音频功率放大器,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:

(1)用点阵显示的变化代替喷泉的动态;

(2)利用单片机控制点阵和功率放大器,使音乐频谱的强弱用点阵显示出来;

(3)音乐信号由外部输入,由音频放大器放大。

 

2.音乐喷泉系统简介

2.1方案选择

以STC12C5A60S2单片机为控制器一方面通过点阵来显示,另一方面驱动ADC采集音频信号,然后将音频信号的强弱通过点阵显示出来。

音频信号有两个来源,一方面由音乐芯片产生三种不同信号,另一方面有外部(如手机)输入,通过音频放大器放大。

2.2系统设计原理

采用是基于微处理器的软件分析法,微处理器是本制作的核心部分,因此,选择一个合适的性能与配置的微处理器是关键,我选择MCS-51单片机便能够满足本次制作的要求。

 软件上的分析法核心是快速傅立叶算法,简称FFT。

2.3系统组成

本系统由

图1系统整体功能框图

3.主要硬件选择

3.1主控制器选择

对于单片机的选择,可以考虑使用8031与8052系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。

STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。

1、增强型8051CPU,1T(1024G),单时钟/机器周期

2、工作电压5.5-3.5V

3、1280字节RAM

4、通用I/O口,复位后为:

准双向口/弱上拉可设置成四种模式:

准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA

5、有EEPROM功能

6、看门狗

7、内部集成MAX810专用复位电路

8、外部掉电检测电路

9、时钟源:

外部高精度晶体/时钟,内部R/C振荡器常温下内部R/C振荡器频率为:

5.0V单片机为:

11~17MHz;3.3V单片机为:

8~12MHz

10、4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1

11、3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,独立波特率发生器可以在P1.0口输出时钟

12、外部中断I/O口7路,传统的下降沿中断或电平触发中断,并新增支持上升沿中断的PCA模块,PowerDown模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3,CCP0/P1.3

13、PWM2路

14、A/D转换,10位精度ADC,共8路,转换速度可达250K/S

15、通用全双工异步串行口(UART)

16、双串口,RxD2/P1.2,TxD2/P1.3

17、工作范围:

-40~85

18、封装:

LQFP-48,LQFP-44,PDIP-40,PLCC

管脚说明P0.0~P0.7

P0:

P0口既可以作为输入/输出口,也可以作为地址/数据复用总线使用。

当P0口作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。

当P0作为地址/数据复用总线使用时,是低8位地址线A0~A7;数据线D0~D7

P1.0/ADC0/CLKOUT2标准IO口、ADC输入通道0、独立波特率发生器的时钟输出

P1.1/ADC1

P1.2/ADC2/ECI/RxD2标准IO口、ADC输入通道2、PCA计数器的外部脉冲输入脚,第二串口数据接收端

P1.3/ADC3/CCP0/TxD2外部信号捕获,高速脉冲输出及脉宽调制输出、第二串口数据发送端

P1.4/ADC4/CCP1/SS非SPI同步串行接口的从机选择信号

P1.5/ADC5/MOSISPI同步串行接口的主出从入(主器件的输入和从器件的输出)

P1.6/ADC7/SCLKSPI同步串行接口的主入从出

P2.0~P2.7P2口内部有上拉电阻,既可作为输入输出口(8位准双向口),也可作为高8位地址总线使用。

P3.0/RxD标准IO口、串口1数据接收端

P3.1/INT0非外部中断0,下降沿中断或低电平中断

P3.3/INT1

P3.4/T0/INT非/CLKOUT0定时器计数器0外部输入、定时器0下降沿中断、定时计数器0的时钟输出

A/D转换器的结构:

STC12C5A60AD/S2系列带A/D转换的单片机的A/D转换口在P1口,有8路10位高速A/D转换器,速度可达到250KHz(25万次/秒)。

8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。

上电复位后P1口为弱上拉型IO口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不须作为A/D使用的口可继续作为IO口使用。

单片机ADC由多路开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器以及ADC_CONTER构成。

该单片机的ADC是逐次比较型ADC。

主次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。

逐次比较型A/D转换器具有速度高,功耗低等优点。

需作为AD使用的口先将P1ASF特殊功能寄存器中的相应位置为‘1’,将相应的口设置为模拟功能。

3.2单片机芯片介绍

作为本次设计中使用的核心元件,其结构如下图:

图3.2单片机引脚图

引脚介绍:

VCC为电源电压引脚

GED为接地引脚

P0,P1,P2,P3为输入输出端口引脚

RST为复位引脚

XTAL1和XTAL2为复位电路引脚位。

3.38*24点阵介绍

LED点阵显示系统中各模块的显示方式有静态和动态显示两种。

静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。

本文将介绍一种采用单片机AT89S51进行控制的8*8LED点阵。

该点阵可实现动态显示数字0~9及字符A~Z的功能

图3.3点阵模块的内部电路和引脚

如图3.3所示为一个共阳极8×8的单色LED点阵模块LG12088B的内部电路图及点阵中的LED所在的行、列标号及控制引脚。

图中LED排列成点阵形式,同一行的LED银基连接在一起,同一列的阳极连接在一起,仅当阳极和阴极的电压被加上,使LED为正偏时,LED才发亮。

本设计采用3个8×8LED点阵构成8×24点阵屏,可以显示喷泉的变化。

4.电路设计

4.1整体设计

此次设计主要是应用单片机来设计音乐喷泉,硬件部分主要分以下电路模块:

显示电路用8×24点阵,通过动态扫描进行显示,音频信号由音频放大器实现。

单片机采用STC12C5A60S2,这种单片机应用简单,适合音乐喷泉电路设计。

4.2分块设计

这部分主要对总体电路设计中各模块电路的分析和分块电路设计。

1.原理图及仿真(无法给入信号,所以无法仿真)

以下原理图改为8*24的LED(版面不够)

2.点阵部分

点阵部分采用的是3个8*8点阵共阳连接,p0控制行,p1,p2,p3控制列,由于p1.0要设置为AD口,所以点阵最终效果只能显示出8*23。

图4.1点阵设计实物图

3.最小系统部分

最小系统部分采用2个30p瓷片电容,1个40uf电解电容,一个12M晶振,一个10k电阻和单片机构成。

点阵显示即由单片机提供的输出信号。

图4.2最小系统设计实物图

4.最终效果

用手机或mp3/4给单片机一个信号,点阵接受这些信号并显示

图4.3最终效果实物图

5.使用软件简介

5.1C语言简介

C语言是目前世界上流行、使用最广泛的高级程序设计语言。

C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。

许多著名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。

用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,象PC-DOS、WORDSTAR等就是用这种方法编写的。

5.2Keil简介

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

5.3Proteus软件介绍

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。

它是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

该软件的特点是:

1)实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

2)支持主流单片机系统的仿真。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

3)提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。

4)具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

 

6.程序设计

6.1程序思路

6.2FFT简介

FFT(Fast Fourier Transform)即离散傅立叶变换的快速算法。

在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征。

尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,且要求相当大的内存,不利于计算机实时对信号进行处理,限制了DFT的应用。

直到 Cooley & Tukey 在1965 年提出的快速离散傅立叶计算方法被发现,快速傅立叶变换算法才在实际的工程中得到广泛应用。

需要强调的是,FFT并不是一种新的频域特征获取方式,而是DFT的一种快速实现算法,可用来将一个信号从时域变换到频域。

多数的复杂信号在进行频域变换之后,变换的目的实际上是从频域里来看同一个信号,从而容易分析出其信号的特性。

这也是很多信号分析采用FFT变换的一个重要原因,。

另外,FFT能将一个信号的频谱提取出来,这在频谱分析方面也是经常使用的。

6.2定时/计数器的初始化编程

8XX51的定时/计数器是可编程的器件,使用前应先对其内部的寄存器进行设置,以对它进行控制,这称为初始化编程。

 

7.总结

通过这次课程设计,我学到了不少课本上没有的知识,锻炼了自己的动手能力。

在调试过程中,故障是不可避免的,或者正如老师所说的没有故障反而还是不正常。

对于一个复杂的系统来说,要在大量的元器件和线路中迅速准确地找出故障是件很不容易的事。

产生故障的原因很多,情况也很复杂,因此需要掌握故障的一般诊断方法,故障诊断过程就是以故障现象出现,通过反复测试,做出分析判断,逐步找出故障的过程。

要通过对原理图的分析,把系统分成不同功能的电路模块,通过逐一测量找到故障模块,然后再对故障模块内部加以测量找出故障,查找故障,分析故障和飘出故障,这样可以提高我分析问题和解决问题的能力,因此,我把它看成事一次好的学习机会。

通过这些我的硬件和软件开发能力都获得了提高。

通过开发板的设计和硬件搭建的过程,使我对12C5A60S2单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法。

并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和运用。

我的动手能力得到了很大的提高,创新意识得到了锻炼。

经过本次课程设计,使我深深的体会到了理论应用在实际中的存在相当多的问题。

要把所学的知识融会贯通也不是一件容易的事情。

在做设计的时候一不小心也容易出差错。

 

参考文献

[1]李群芳,肖看.单片机原理接口与应用(第二版),北京:

清华大学出版社,2010

[2]马秀丽,李筠c语言程序设计,北京:

清华大学出版社,2008

[3]孙育才.《单片微型计算机及其应用》.南京:

东南大学出版社.2004

[4]潘新民王燕芳.《微型计算机控制技术》.北京:

电子工业出版社2003

[5]李群芳.《单片机原理及接口技术》.北京:

电子工业出版社,2008

 

附录:

源程序代码

#include//"stc12c5620ad.h"

#include

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

#defineucharunsignedchar

#defineuintunsignedint

#defineSAMPLE_NUM64

#defineNUM_2_LOG6//每个光柱?

#defineFFT_OUT_MIN3//3

ucharcodeBRTable[SAMPLE_NUM]={0,32,16,48,8,40,24,56,4,36,20,52,12,44,28,60,2,34,18,50,10,42,26,58,6,38,22,54,14,46,30,62,1,33,17,49,9,41,25,57,5,37,21,53,13,45,29,61,3,35,19,51,11,43,27,59,7,39,23,55,15,47,31,63};

charcodesin_tabb[SAMPLE_NUM]={0,12,25,37,49,60,71,81,90,98,106,112,117,122,125,126,127,126,125,122,117,112,106,98,90,81,71,60,49,37,25,12,0,-12,-25,-37,-49,-60,-71,-81,-90,-98,-106,-112,-117,-122,-125,-126,-127,-126,-125,-122,-117,-112,-106,-98,-90,-81,-71,-60,-49,-37,-25,-12};

charcodecos_tabb[SAMPLE_NUM]={127,126,125,122,117,112,106,98,90,81,71,60,49,37,25,12,0,-12,-25,-37,-49,-60,-71,-81,-90,-98,-106,-112,-117,-122,-125,-126,-127,-126,-125,-122,-117,-112,-106,-98,-90,-81,-71,-60,-49,-37,-25,-12,0,12,25,37,49,60,71,81,90,98,106,112,117,122,125,126};

uchara[26],c[26],d[10],d_con=0,e[10]={0};

ucharkeep,keepnum,anum,timernum,lednum3,Ltime;//用于分离

/*加入数组用于显示相应led灯数目*/

ucharlednum[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//0-7的显示数组P0组控制

intxdataReal[SAMPLE_NUM];

intxdataImage[SAMPLE_NUM];

voidtimerinit()//定时器初始化函数

{

TMOD=0x01;

TH0=(65536-6000

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

当前位置:首页 > 小学教育

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

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