




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HUNAN UNIVERSITY毕业设计(论文)设计论文题目:基于AVR单片机的简易电子琴设计学生姓名:学生学号;学生班级:电子1103班学院名称:电气信息工程学院指导老师:学院院长:2015 年 5月 26日第 II 页 湖南大学毕业设计(论文)摘 要随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分。电子琴作为一种音乐型玩具更是广泛用于人们的生活中。日本生产的电子琴音质优美,一般由专业的控制芯片制成,价格较贵无法普及,本论文以ATmega128单片机为核心控制器,研制一种简易的电子琴,价格低廉,便于普及,是一种可做的尝试。本论文的简易电子琴功能分为硬件和软件两部分完成,采用了Proteus画出原理图并仿真,通过ICCV7 FOR AVR编程软件对电子琴进行软件编程,然后进行软硬件的调试运行并将程序烧录到ATmega128芯片中。硬件部分由单片机,演奏和播放控制按键,演奏指示灯和发声器件组成。此系统具有硬件电路简单、清晰,成本低,软件系统完善,控制系统牢靠,性价比高等优点,具有一定的实用和参考价值。关键词:单片机;ATmega 128;电子琴;ProteusDesign of simple electronic piano based on AVR MCUAbstractWith the development and progress of society, music is becoming very important in our lives part. As a musical toy keyboard is widely used in peoples lives. Japanese production of beautiful organ sound, general control chip made by a professional, more expensive not universal, this paper ATmega128 microcontroller core controller, the development of a simple flower, inexpensive, easy to spread, is a do It attempts.Simple keyboard function of this paper is divided into two parts, complete hardware and software, using Proteus to draw schematic and simulation, through ICCV7 FOR AVR programming software keyboard software program, and then run and debug hardware and software is programmed to ATmega128 chip. Hardware part by the microcontroller, playing and playback control buttons, lights and sound devices composed performance. This system has the hardware circuit is simple, clear, low cost, and improve the software system,control system reliable and cost advantages, have certain practical and reference value.Keywords: Microcontroller; ATmega 128; Keyboard; Proteus第 45 页 湖南大学毕业设计(论文) 目 录第一章 引言1第二章 系统概述22.1. 系统的工作原理22.2. 系统的需求分析32.3. 系统的工作流程4第三章 系统主要硬件电路的设计53.1. 单片机控制系统原理53.1.1. 芯片介绍53.1.2. 简易电子琴的组成框图113.1.3. 简易电子琴的Proteus总体仿真图123.1.4. 简易电子琴电路涉及的典型器件说明133.2. 单片机主机系统电路133.2.1. 时钟频率133.2.2. 晶振电路143.2.3. 键盘扫描153.2.4. 发音电路163.2.5. 供电电路173.2.6. 硬件电路设计心得17第四章 系统的软件设计184.1. 主程序184.1.1. 主程序的流程图184.1.2. 主程序194.2. 播放音乐子程序214.3. 节拍延时子程序214.4. 外部中断子程序224.5. 端口初始化和初始化外部器件程序224.6. T/C的初始化程序和溢出程序234.7. 延时程序244.8. 音阶频率表和预存音乐程序25第五章 调试275.1. Proteus275.1.1. Preteus简介275.1.2. Proteus应用335.2. ICCV7 FOR AVR 介绍345.3. 系统调试395.3.1. 硬件调试395.3.2. 软件调试40第六章 总结与展望416.1. 全文总结416.2. 研究展望41结束语42致谢43参考文献44第1章 引言当代电子技术的迅速发展,为人们的文化、物质生活提供了优越的条件,数码摄像机、家庭影院、空调、电子计算机等,都是典型的电子技术应用实例,可谓琳琅满目、异彩纷呈。电子琴作为一种键式乐器是音乐与现代电子科学技术的完美结合的产物,它简单易学的特点让它在现代乐器中占有重要的地位。而单片机具有很强的处理功能和控制功能,它成为电子琴中必不可少的一部分。本论文是以ATmega128单片机为核心控制器设计一个简易电子琴。主要介绍了其工作原理,硬件组成和软件的研究调试。虽然单片机产生的时间不长,但它的发展速度惊人,当今社会,我们的生活已经离不开单片机的存在。从简易的到复杂的,基本能看到的地方都有单片机的需求。虽然单片机的应用已经普及开来,但还有许多地方可用单片机替代,因此,单片机在现代社会中还是有发展的。电子琴作为一种音乐性玩具,利用单片机制作的电子琴可以使其微型化,用于玩具琴和教学琴等。本论文设计的电子琴是很多高档电子琴的基础,对进一步研究电子琴有很大的促进作用。第2章 系统概述2.1. 系统的工作原理人类通常听到的声音可分为噪声和乐声两种,噪声是无规律的声音而乐声是有规律的声音,简易电子琴所播放的声音主要是乐声。从人的听觉来感受,乐声有高低之分,当发声物理振动频率高的时候,对应的乐声就高,反之则低。简易电子琴所使用的乐声范围通常从每秒振动16次(最低音)到振动4186次(最高音),可以划分为97个等级。人们都知道当物体振动时,能够发出声音。振动的频率不同,声音的音调也不同。在简易电子琴里,虽然没有振动的弦、簧、管等物体,却有许多特殊的电装置,每个电装置一工作,就会使喇叭发出一定频率的声音。当按动某个琴键时,就会使它与对应的电装置工作,从而使喇叭发出某种音调的声音。简单的说就是按键触发信号发给处理器,再由处理器调用音色库音色通过功放电路输出或通过数码接口进行数字输出。对于一段音乐来说,其是由许多不同的音符组成的,而这些每个音符对用了不同的发声频率,所以简易电子琴可以使用发声系统进行不同频率的发声,并且加以和节拍数对应的延时来产生音乐。由于乐声是由不同的频率构成的,所以可以使用ATmega128单片机的定时器来产生不同的脉冲驱动发声器件,即可得到对应的音符。假设ATmega128单片机的工作时钟为8Mhz,使用定时计数器T/C1的工作方式来进行定时操作,表2.1列举了T/C的初始化值和音符的对应关系。频率初始化值频率初始化值440Hz0xFEE4494Hz0xFF03554Hz0xFF1F587Hz0xFF2C659Hz0xFF43740Hz0xFF58831Hz0xFF6A880Hz0xFF72表2.1 ATmega128定时器T/C1初始化值频率关系一段音乐除了和音符有关系外,和节拍也有关系,也就是ATmega128单片机驱动发声器件发出了乐声长度,其可以使用延时来实现,表2.2则是各个节拍对应的延时长度关系。表2.2 单片机延时和节拍的关系节拍(1/4节拍标准)延时长度节拍(1/8节拍标准)延时长度4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms2.2. 系统的需求分析简易电子琴提供了一系列按键来分别对应基本的自然音,当用户按下了对应的按键的时候发出对应的乐声,并且提供相应的指示,此外为了演示,在简易电子琴内还内置了一首音乐可以完整地提供用户播放试听。设计简易电子琴系统,需要考虑如下几个方面的内容:I. 要播放音乐,则需要一个能发出相应乐声的发声器件,并且使得ATmega128单片机能对该发声器进行驱动。II. 能让用户进行音乐的输入,需要提供和基本音符对应的按键。III. 需要能让用户了解对应的按键已经被按下,需要有对应的指示灯。IV. 要根据相应的乐声基础概念来驱动发生器件发出不同的乐声效果,需要设计合适的单片机软件。V. 当有按键被按下的时候首先判断按键的类型,如果是播放键,则播放预先内置的音乐,如果是演奏键,则驱动发声部件发出相应的乐声,并且给出相应的指示。2.3. 系统的工作流程系统初始化有按键被按下演奏键播放键判断按键值播放内置歌曲发出相应的乐声第3章 系统主要硬件电路的设计3.1. 单片机控制系统原理3.1.1. 芯片介绍AVR单片机是1997年由ATMEL公司发布的增强型内置Flash的RISC(Reduced Instruction Set CPU)精简指令集高速8位单片机,其具有执行速度快、I/O口驱动能力强、集成可编程的RC振荡器、片内资源丰富等特点。其可以分为AT90S系列、ATmega系列和ATTiny系列,其中使用最广泛的是ATmega系列。ATmega系列单片机包括了ATmega8、ATmega16、ATmega128等多种单片机,它们中功能最强大的是ATmega128,其特点如下:l 支持131条AVR指令,其中大多数指令的执行时间为单个时钟周期,执行速度快。l 内部有32个8位通用工作寄存器,硬件乘法器只需要两个时钟周期,当工作频率为16MHz时性能高达16MIPS。l 内置4K字节的片内SRAM,128K字节的系统内可编程Flash,4K字节的EEPROM。l 内置具有独立锁定为的可选Boot代码区,并且可以通过片上Boot程序实现系统内编程。l 内置4个灵活的具有比较模式和PWM功能的定时计数器T/C和一个实时时钟RTC。l 内置8通道10位ADC,可以组合为8个单端通道或者7组差分通道,其中有2个具有可编程增益(1*,10* 或200*)的差分通道。l 内置片内模拟比较器。l 内置具有独立片内振荡器的可编程看门狗定时器。l 内置多种串行通信接口,包括TWI(I2C)两线接口、两路可编程USART、可工作于主机、从机模式的SPI串行接口。l 提供53个可编程的I/O端口,64引脚TQFP封装,64引脚MLF封装。l 支持符合JTAG标准的边界扫描,提供和IEEE1149.1标准兼容的JTAG硬件接口。l 支持2.75.5V(ATmega128L)和4.55.5V(ATmega128)工作电压,前者的工作频率为08MHz,后者的为016MHz。ATmega128内部结构由ALU、通用寄存器、程序存储器、数据RAM、中断模块和内部扩展资源等组成。l ALU(运算器):支持通用寄存器之间,以及通用寄存器和常数之间的算术和逻辑运算,ALU也可以执行单寄存器操作,当运算完成之后更新相应的状态寄存器的内容以反映操作结果。ATmega128通过有条件或者无条件的跳转指令和调用指令来控制程序的工作流程,从而可以直接寻址整个地址空间。l 通用寄存器:其中6个寄存器可以联合起来构成3个16位的X、Y、Z间接寻址寄存器,可以用来寻址数据空间以实现高效的地址运算,其中一个指针还可以作为程序存储器查询表的地址指针。l 程序存储器:这是可以在线编程的Flash,其快速访问寄存器由32个8位通用寄存器组成,访问时间为一个时钟周期,从而ATmega128可以实现单时钟周期的运算器操作,在典型的运算器操作中,两个分别位于不同通用寄存器的操作数被同时访问,然后执行运算,结果再被送回到通用寄存器,整个指令执行过程仅需一个时间周期。l 中断模块:ATmega128内置一个灵活的中断模块,其控制寄存器位于I/O空间内,并且有一个位于状态寄存器SREG中的全局中断使能位,每个中断在中断向量表里都有独立的中断向量,其优先级与该中断向量在中断向量表里的位置有关,中断向量地址越低,其优先级越高。l 内部扩展资源:ATmega128内部集成了多种外部资源,包括SPI接口、ADC接口、EEPROM、串行模块等。先进的RISC结构:133条指令,大多数可以在一个时钟周期内完成32*8通用工作寄存器+外设控制寄存器全静态工作工作于16MHz时性能高达16MIPS只需两个时钟周期的硬件乘法器特殊的处理器特点:上电复位以及可编程的掉电检测片内经过标定的RC振荡器片内/片外中断源6种睡眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式可以通过软件进行选择的时钟频率通过熔丝位可以选择ATmega103兼容模式全局上拉禁止功能I/O和封装:53个可编程I/O口线64引脚TQFP与64引脚MLF分装工作电压2.7-5.5V速度等级:0-8MHz引脚配置(见图3.1):图3.1 ATmega 128的引脚配置图引脚说明(见表3.1):表3.1 ATmega 128引脚说明VCC数字电路的电源GND地端口A(PA7.PA0)端口A为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输出使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流,复位发生时端口A为三态。端口B(PB7.PB0) 端口B为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输出使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流,复位发生时端口B为三态。 端口C(PC7.PC0)端口C为8位双向I/O口,具有可编程的内部上拉电阻。其输 出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输出使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流,复位发生时端口C为三态。端口D(PD7.PD0)端口D为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输出使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流,复位发生时端口D为三态。端口E(PE7.PE0)端口E为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输出使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流,复位发生时端口E为三态。端口F(PF7.PF0)端口F为ADC的模拟输入引脚。如果不作为ADC的模拟输入,端口F可以作为8位双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉:电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口F为三态。如果使能了JTAG接口,则复位发生时引脚PF7(TDI)、PF5(TMS)和PF4(TCK)的上拉电阻使能。端口G(PG4.PG0)端口G为5位双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口G为三态。端口G也可以用做其他不同的特殊功能。在ATmega103兼容模式下,端口G只能作为外部存储器的所存信号以及32kHz振荡器的输入,并且在复位时这些引脚初始化为PG0=1,PG1=1以及PG2=0。PG3和PG4是振荡器引脚。RESET:复位输入引脚,如果外加一个足够长的低电平将引起ATmega128复位。时钟系统及其分布:图3.2为AVR的主要时钟系统及其分布。这些时钟并不需要同时工作。为了降低功耗,可以通过使用不同的睡眠模式来禁止无需工作的模块的时钟。图3.2 ATmega的时钟分布3.1.2. 简易电子琴的组成框图ATmega128单片机演奏指示灯播放按键 演奏按键发声器件ATmega128单片机:这是简易电子琴的核心控制器。播放按键:当被用户按下之后,播放单片机内置的音乐。演奏按键:当被用户按下之后,发出对应的音符,发声器件:能够根据ATmega128单片机的驱动发出对应的声音。演奏指示灯:用于指示当前的按键状态。3.1.3. 简易电子琴的Proteus总体仿真图图3.3 建议电子琴的Proteus总体仿真图在Proteus仿真图中所涉及的典型器件参见表3.2表3.2 Proteus电路器件的列表器件名称库子库说明ATmega128Miceopeocessor ICsAVR FamilyATmega128RESResistorsGeneric通用电阻CAPCapacitorsGeneric电容CAP-ELECCapacitorsGeneric极性电容CRYSTALMiscellaneous晶体NPNModelling PrimitivesAnalogNPN三极管SPEAKERSpeakers&Sounders蜂鸣器BUTTONSwitches&RelaysSwitches独立按键LED-REDOptoelectronicsLEDs发光二极管(黄色)3.1.4. 简易电子琴电路涉及的典型器件说明参见表3.3表3.3简易电子琴电路设计的电影器件说明器件名称器件编号说明晶体X1ATmega128的振荡器ATmega128单片机U1ATmega128单片机电容C!、C2、C3、C4滤波、储能器件电阻R1、R2限流、上拉电阻三极管9012用于驱动蜂鸣器独立按键18、SONG演奏和播放按键发光二极管D1D8发光器件蜂鸣器LS2发声器件排阻RN18位双排阻蜂鸣器:简易电子琴使用蜂鸣器作为发声器件,蜂鸣器按照工作原理可以分为压电式蜂鸣器和电磁式蜂鸣器,前者又被称为有源蜂鸣器,后者又被称为无源蜂鸣器。(有源蜂鸣器和无源蜂鸣器中的“源”不是指电源,而是指振荡源,其最大区别是前者只需要在蜂鸣器两端加上固定的电压差即可激励蜂鸣器发声,而后者必须加上相应频率的震荡信号方可发声。)通常来说,蜂鸣器需要的驱动电流比较大,所以需要使用对应的功率元件(如三极管)来对其进行驱动。3.2. 单片机主机系统电路3.2.1. 时钟频率单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。外部振荡源电路一般选用石英晶体振荡器,此电路在加电大约延迟10ms后振荡器启振,在XTAL2引脚产生幅度为3v左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。电路中两个电容C1,C2,作用有两个:一是帮助振荡器启振;二是对振荡器的频率进行微调。C1,C2的典型值为30pF单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数。3.2.2. 晶振电路晶振一般叫做晶体振荡器,是一种机电器件,是用耗电很小的石英晶体经精密切割磨削并镀上电极焊上引线制成。这种晶体有一个很重要的特性,如果给它通电,它就会产生机械振荡,反之,如果给它机械力,它又会产生电,这种特性叫机电效应。它们有一个很重要的特点,其振荡频率与它们的形状,材料,切割方向等密切相关。由于石英晶体化学性能非常稳定,热膨胀系数非常小,其振荡频率也非常稳定,又由于控制几何尺寸可以做到很精密,因此,其谐振频率也很准确。每个单片机系统里都有晶振,晶振是石英振荡器的简称,英文名为Crystal,它是时钟电路中重要的部件,它的作用是向显卡、网卡、主板等配件的各部分提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出问题。在单片机里它的是必不可少的,它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的所有指令的执行都是建立在这个基础上的,晶振提供的时钟频率越高,那单片机的运行速度也就越快。ATmega128单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。单片机内部有一个反相放大器XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。一般来说,单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就组成振荡器,如图3.4所示。加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中X1为晶振,振荡产生的时钟频率主要由X1确定。电容C1,C2的作用有两个:一是帮助振荡器启振;二是对振荡器的频率起微调作用,典型值为30pF。图3.4 晶振电路3.2.3. 键盘扫描在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘,如图3.5以及图3.6所示。图3.5 独立键盘图3.6 矩阵键盘它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中,矩阵键盘与独立键盘有很大的区别,首先在硬件电路上它要比独立键盘复杂的多,而且在程序算法上比它要繁琐,但它在节省端口资源上有优势,因此它更适合于多按键电路。本设计中,我采用独立键盘,因为需要的按键比较少,这样也使软件和硬件方面都简单很多。3.2.4. 发音电路电子琴发声电路如图3.7所示:图3.7 电子琴的发声电路发生电路由蜂鸣器和三极管组成,通常来说,蜂鸣器需要的驱动电流比较大,所以需要使用对应的功率元件三极管来对其进行驱动。3.2.5. 供电电路本设计的供电电压为5V。我们知道手机充电器其实都是由一个稳定电源(主要是稳压电源,提供稳定工作电压和足够的电流)加上必要的恒流、限压、限时等控制电路构成。所以我采用手机充电插头来将220V的交流电转换成5V的直流电,直接用插头变压使硬件电路的结构更加简单。3.2.6. 硬件电路设计心得在敲好代码做好仿真后我就开始了本设计的硬件电路设计。指导老师帮助我购置了一些元件但诸如杜邦线,排阻这些元件是在设计中发现不够又去电子市场购买的。由于我之前没有做过这种完全由自己设计电路的每一部分的经验,指导老师耐心地给了我一些设计上的建议,例如运用杜邦线来连接电路,这让焊接工作能更简单。在本设计中我也遇到了很多问题,如起初我的供电电压在5V,在指导老师的建议下我将电压降到了芯片的额定电压3.3V。总体来说硬件设计还算顺利,只是烧录程序时老是烧录不进去,由于自己没这方面经验,我便查阅各种资料,包括ATmega128的下载电路如何连接,又去公司借了下载器来完成烧录。所以这过程是很麻烦,但也让我学会了自己解决问题的方法。第4章 系统的软件设计4.1. 主程序4.1.1. 主程序的流程图主程序的流程图如图4.1 等待定时器中断初始化定时计数器 播放音乐 等待按键被按下演奏键播放键 判断对应的音符将对应的频率常数赋值给定时计数器是否有演奏键被按下等待一段延时否设置对应的频率常数,启动定时计数器翻转蜂鸣器的驱动引脚电平 是否有演奏键被按下 是退出播放4.1.2. 主程序Void main(void)unsigned char num,k,i;unsigned char KeyPort=0x00;unsigned char KeyPlaySong=0x00;init_devices();PORTD=0x00;/蜂鸣器无输出while(1)PORTC=0xFF;KeyPort=PINC;PORTF=KeyPort;switch(KeyPort)case 0xfe:num=1;break;case 0xfd:num=2;break;case 0xfb:num=3;break;case 0xf7:num=4;break;case 0xef:num=5;break;case 0xdf:num=6;break;case 0xbf:num=7;break;case 0x7f:num=8;break; /分别对应不同的音调default:num=0;break;if(num=0)TCCR1B=0X00;/定时器关闭PORTD=0x00;/在未按键时,喇叭低电平,防止长期高电平损坏喇叭elseHigh=freqnum-10;Low=freqnum-11;TCCR1B=0x03;/定时器开启 PORTB=0xFF; KeyPlaySong=PINB; if(KeyPlaySong=0xFE)/如果play按键被按下delay_ms(10);/延时10msPORTB=0xFF;KeyPlaySong=PINB;if(KeyPlaySong=0xFE) i=0; while(i100) k=MUSICi+7*MUSICi+1-1;/取去音符振荡所需的数据High=FREQHk;Low=FREQLk;Time=MUSICi+2; /节拍时长i=i+3;PORTC=0xFF;if(PINC!=0xff)/长按任意0音键退出播放delay_ms(10); if(PINC!=0xff) i=101; PlaySong(); TCCR1B=0x03;/定时器开启 4.2. 播放音乐子程序void PlaySong()TCNT1H=High;/reload counter high valueTCNT1L=Low;/reload counter low valueTCCR1B=0x03;/定时器开启delayTips(Time);/延时所需要的节拍4.3. 节拍延时子程序void delayTips(unsigned char t) unsigned char i;for(i=0;it;i+) delay_ms(250); TCCR1B=0x00;/关闭4.4. 外部中断子程序CLI();XDIV =0x00;/时钟分频XMCRA=0x00;port_init();timer1_init();MCUCR=0x00;EICRA=0x00;EICRB=0x00;EIMSK=0x00;TIMSK=0x04;/定时器中断设置ETIMSK=0x00;SEI();/开外部中断4.5. 端口初始化和初始化外部器件程序/端口初始化函数void port_init(void)PORTA =0x00;DDRA =0x00;PORTB =0x00;DDRB =0x00;PORTC =0x00;/m103 output onlyDDRC =0x00;PORTD =0x00;DDRD =0x01;PORTE =0x00;DDRE =0x00;PORTF =0x00;DDRF =0xFF;PORTG =0x00;DDRG =0x00;/初始化外部器件void init_devices(void)4.6. T/C的初始化程序和溢出程序/T/C1 的初始化函数, 64 分频void timer1_init(void)TCCR1B =0x00;/stopTCNT1H =0xFE;/setupTCNT1L =0xE4;OCR1AH =0x01;OCR1AL =0x1C;OCR1BH =0x01;OCR1BL =0x1C;OCR1CH =0x01;OCR1CL =0x1C;ICR1H =0x01;ICR1L =0x1C;TCCR1A =0x00;/T/C1 的溢出处理函数#Pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVFvoid timer1_ovf_isr(void)/TIMER1 has overflowedTCNT1H=High;TCNT1L=Low;PORTD=BIT(0);/蜂鸣器翻转4.7. 延时程序/us 延时函数void delay_us(unsigned int n) /8*0.125=1us int i,j;for(j=0;j8;j+) for(i=0;in;i+) NOP(); /ms 延时函数void delay_ms(unsigned int i) while(i-) unsigned int j;for(j=1;j=1332;j+);4.8. 音阶频率表和预存音乐程序#include #include unsigned char High,Low;unsigned char freq2=0xFE,0xE4,/00440HZ 10xFF,0x03,/00494HZ 20xFF,0x1F,/00554HZ 30xFF,0x2C,/00587HZ 40xFF,0x43,/00659HZ 50xFF,0x58,/00740HZ 60xFF,0x6A,/00861HZ 70xFF,0x72,/00880HZ 1;unsigned char Time;unsigned char YINFU91=,1,2,3,4,5,6,7,8;unsigned char MUSIC=6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0;unsigned char FREQH=0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFB,0xFC,0xFC, 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,;unsigned char FREQL=0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,;第5章 调试5.1. Proteus5.1.1. Preteus简介Proteus软件是英国Labcenter Electronics公司出品的EDA工具软件,其集电路设计、制版、仿真等多种功能于一身,不仅能对数字电路、模拟电路等进行设计、分析和仿真,还能对各种常见嵌入式处理器如51单片机、AVR单片机、ARM、DSP进行设计和仿真,是近年来备受电子设计爱好者青睐的一款新型电子线路设计与仿真软件。Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:1原理布图2PCB自动或人工布线3SPICE电路仿真用户甚至可以采用例如RAM,ROM,键盘,马达,LED,LCD,AD/DA。丰富的器件库:超过27000种元器件,可方便地创建新元件;生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;单片机协同仿真功能支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;多种输出格式的支持:可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。PROTEUS 是单片机课堂教学的先进助手。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的实验教学的功能。课设和毕业设计是学生将来就业必不可少的环节。PROTEUS可以提供实验室无法相比的大量器件,增加了修改电路设计的灵活性,提供的仪器、仪表是实验室在数量无法比拟的,因而为学生们提供了实践创新的良好平台。随着科学技术的发展,“仿真技术”已成为许多设计部门重要的前期设计手段。它具有灵活,结果、过程的一致的特点。让其设计时间大大缩短、耗资大大减少,也可增加工程制造的安全性。相信在单片机开发应用中PROTEUS也能茯得越来越多的运用。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。Proteus软件是一个基于ProSPICE混合模型仿真器的完整嵌入式系统软硬件设计仿真平台,其由Proteus ISIS和Proteus ARES两大应用功能软件组成:前者是一个原理图输入软件,用于电路原理设计和仿真;后者则用于PCB电路图布线。Proteus软件的具体功能模块如图5.1所示原理图输入模块混合模型设计模块ASP高级图形模块Proteus软件CPU仿真模块动态器件库模块高级布线/编辑模块图5.1 Proteus功能示意图Proteus软件可以实现从原理图设计、处理器编程、系统仿真到PCB设计的流程化,真正实现从概念到产品的完整设计、其主要特点如下:l 提供了ARM7、PIC、AVR、HCHhe MCS-51系列的嵌入式处理器模型。l 提供了大量交互外设模型,包括LCD显示、RS232终端、通用键盘、开关、按钮、LED等。l 提供了强大的调试功能,如访问寄存器与内存,设置断点与单步运行模式。l 提供了如IAR、Keil和Hitech等开发工具的源码C和汇编的联合调试。l 提供了一键“make”特性,可以仅使用一个键完成编译与仿真操作。l 内置了超过6000中标准SPICE模型,完全兼容制造商提供的SPICE模型。l 内置的DLL界面为应用提供特定的模式。l 提供了基于工业标准的SPICE3F5混合模型电路仿真器。l 提供了14种虚拟仪器,包括示波器、逻辑分析仪、信号发生器等。l 提供了强大的基于图形的分析功能,包括模拟、数字、混合瞬 时图形,可以对频率、转换、噪声、湿疹、傅里叶等曲线进行分析。l 提供了多种数字和模拟信号发生器,包括直流、正旋、脉冲、分段线性、音频、指数、尖脉冲、脉冲、时钟等。l 支持用户自行设计库元件。l 支持基于元器件的PCB布线系统。Proteus ISIS不仅可以对电路进行实时的交互性仿真和基于图表的精确长时间仿真,还可以对基于嵌入式处理器的应用系统进行包括电路图设计、软件编写、软件编译、跟踪调试、系统仿真等操作。Proteus ISIS的内置元件库提供了MCS-51、AVR、PIC、ARM等多系列的嵌入式处理器。在Proteus ISIS中,除了可以对嵌入式处理器的应用系统进行电路设计和仿真外,还可以在内置的软件开发环境中对嵌入式处理器的具体应用功能进行软件编程,Proteus ISIS支持的编程语言如表5.1所示表5.1 Proteus ISIS支持变成语言CODCOFFELF/DWARF2UBROFSOMF51HEXPICs支持支持支持支持不支持支持AVR不支持支持支持支持不支持支持HC11不支持不支持不支持支持不支持支持ARM不支持不支持支持支持不支持支持MCS51不支持不支持不支持支持支持支持除了进行电路设计和仿真外,Proteus ISIS还支持嵌入式处理器的软件开发。在Proteus ISIS的嵌入式处理器仿真调试中可以使用单步、连续、跟踪等调试方法,还可以添加相应的断点。在仿真过程中,还可以观察嵌入式处理器相应的内部寄存器、存储器、I/O端口等内部的变化情况。在Proteus软件中,用户不仅可以完成电路原理图的设计和仿真,还可以完成PCB印制电路板的设计,包括器件布局、手动、自动布线等操作。Proteus软件提供了一个ARES设计软件,其是一个具有32位数据库,能够进行元件自动布局、撤销和重试的,具有自动布线功能的超强性能的PCB设计系统。其自动布局和自动布线工具使PCB的设计尽可能地简便、复杂的工作尽量都由计算机来完成。同时,ARES也支持手动布线,系统限制相对较少,其主要特点如下:l 可以设计的PCB层数多,支持16个铜箔层、2个丝印层和4个机械层。l 能够将元件进行任意角的布置。l 在放置元件时能够自动生成飞线(Ratsnest)和力向量。l 具有理想的基于网表的手工布线系统。l 自带物理设计规则检测功能可以保证设计的完整性。l 提供了超过1000种标准封装的元件库。l 提供了完整的CADCAM输出,以及嵌板工具。当用户修改了Proteus ISIS生成的原理图并重新加载网表时,ARES将更新相关联的元件和连线,同理,ARES中的变化也将自动地反馈到原理图中。使用Proteus ARES来绘制PCB电路板图的基础操作步骤如下:1. 绘制Proteus ISIS原理图:这是PCB电路板设计的基础,主要目标是完成原理图的绘制和生成网络表:重点是保证电路连线的准确性,并且为电路中涉及的相关器件制定封装信息。2. 电路板整体规划:主要是对PCB电路板进行尺寸、层数、元器件安装位置的规划。3. 设置相关电路参数:这些参数主要包括元件的布置参数、层参数、不限参数等。载入网络表及元器件封装:在ARES实际设计中只需要载入对应的网络表文件即可。网络表是Proteus ARES进行自动布线所必须遵循的规则,也是Proteus ISIS原理图设计与Proteus ARES的接口。只有将网络表装入之后,才可能完成对电路板的自动布线。元器件的封装就是元器件的外形和引脚尺寸定义,对于每个装入的元器件必须有相对应的封装
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中数学图形变换与坐标变化(第1课时)课件+苏科版数学八年级上册
- 新解读《GB 30863-2014个体防护装备 眼面部防护 激光防护镜》
- 市场调查与分析:大数据融合的视角(数字教材版)课件 第7-12章-态度的测量-市场调查报告撰写
- 老年人秋季预防课件
- 《大学物理基础》课程简介与教学大纲
- 社会科学研究方法 课件 第九章 实地研究
- 老年人用药护理课件
- 老年人文护理课件
- 大模型和数据要素赋能一某著名企业办解决方案
- 统编版高三历史二轮复习专练:水陆交通的变迁 专项练习(解析版)
- 项目资金融资合同范本
- YDT 4484-2023物联网云平台技术要求
- 2024年红河产业投资集团有限公司招聘笔试冲刺题(带答案解析)
- 《HALCON编程及工程应用》课件第9章 HALCON测量
- 医院培训课件:《护理人文关怀的践行-仁心仁护彰显大爱》
- PETS5词汇表总结大全
- 应届生培养方案
- 保险代位求偿权答辩状
- 《英语句子成分及基本结构》课件
- 汽修基础理论知识
- 综合实践活动六年级上册全册讲课课件
评论
0/150
提交评论