




已阅读5页,还剩84页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 此次设计是at89s51单片机实验系统的开发与应用,该设计主要包括时钟模块、液晶显示模块、键盘按钮模块、发声模块、存储器扩展模块等。本论文详细介绍了该实验系统的开发过程及相关硬件结构和软件设计,以atmel公司的at89s51单片机为核心控制器,并使用protuse软件与keil软件相结合,进行仿真,达到教学实验的效果,并使用dreamweaver软件制作网页展示。关键字:at89s51;实验系统;应用 abstract this design is the development and application of at89s51 microcontroller experimental system, this design mainly consists of the clock module, liquid crystal display module, keyboard button module, sound module, memory expansion module. this paper introduces the development process of the experimental system and related hardware and software design, with atmel company at89s51 microcontroller as the core controller, and use the protuse software combined with keil software, simulation, to achieve the teaching experiment results, and the production of webpage demonstrate the use of dreamweaver software.keywords: at89s51; experimental system; application目录 摘要iabstractii1 绪论1 1.1 选题意义 1 1.2 要完成的任务 1 1.3 单片机的性能特点1 1.3.1 at89系列单片机简介 2 1.3.2 at89系列单片机的特点 2 1.4 仿真软件介绍 4 1.4.1 proteus软件简介4 1.4.2 keil软件简介4 2 硬件设计 5 2.1 实验系统设计方案 5 2.2 常用各功能模块介绍 6 2.2.1 晶振电路6 2.2.2 复位电路6 2.2.3 4*4 键盘按钮电路7 2.2.4 流水灯电路 72.2.5 发声电路8 2.2.6 6位7段led数码管显示电路 8 2.2.7 lcd液晶显示电路 9 2.2.8 程序存储器扩展电路11 2.2.9 ds18b20温度传感器电路 11 2.2.10 sht11温湿度传感器电路12 3 开发系统的应用13 3.1 led数码管显示实验设计13 3.1.1 硬件电路原理13 3.1.2 软件程序设计13 3.2 流水灯开关控制设计 153.2.1 硬件电路原理15 3.2.2 软件程序设计15 3.3 可控制数字音乐盒设计17 3.3.1 硬件电路原理17 3.3.2 播放音乐的原理18 3.3.3 音符频率的产生 18 3.3.4软件程序设计20 3.4太阳能水温水位控制设计23 3.4.1 硬件电路原理23 3.4.2 软件程序设计26 3.5室内温湿度测量 27 3.5.1硬件电路原理27 3.5.2软件程序设计27 3.6 交通灯设计29 3.6.1 硬件电路原理29 3.6.2 软件程序设计 29 4 dreamweaver软件31 4.1 dreamweaver软件介绍 31 4.2 利用dreamweaver实现实验系统32 4.2.1 定义本地站点324.2.2 搭建站点364.2.3 设计网页36 参考文献38 结束语39 致谢40 附录一led数码管显示仿真图41 附录二流水灯控制仿真图42 附录三音乐盒仿真图43 附录四太阳能水位温度控制仿真图44 附录五室内温湿度测量仿真图 45 附录六网页展示图47 附录七程序 49 v1 绪论1.1 选题意义 该设计具有流水灯显示、数码显示、音乐发声等功能,能满足教学课程实验的基本设计,实验系统结构简单,实用性强。在传统的单片机实验教学中,由于实验箱电路固定,学生只能照抄照搬讲义内容进行电路插接,按照讲义上的实验步骤一步步完成规定的实验项目,却无法实现自己的一些新想法、新思路,进行 实验验证,这严重挫伤了学生的学习主动性,束缚了学生的创新思维。现在,通过仿真实验,可以很好地弥补实际实验的不足,并且该题目对硬件与软件都有涉及,很明确软硬件知识课程学习对应用是非常重要的.通过对该题的深入研究不仅对学习单片机有用,而且对电子方面的教学也起到关键的作用。1.2 要完成的任务 首先设计实验系统各个模块的硬件电路,其次设计应用实验的软件程序,然后安装proteus软件和keil软件,在proteus中绘制局部电路图,再绘制各个实验应用电路图。再在keil中建立工程、编译程序、检查错误、链接程序、生产.hex文件。最后在proteus中添加.hex文件,进行实验仿真,实现相应功能或现象、最后自学dreamweaver,在dreamweaver环境中搭建一个的本地站点,通过插入动画、图片、文字、音乐等内容,再利用编写代码、创建链接等知识做网页展示,实现实验系统。1.3 单片机的性能特点 单片机芯片作为控制系统的核心部件,除了具备通用微机cpu的数值计算功能外,还必须具有灵活、强大的控制功能,以便实时监测系统的输入量、控制系统的输出量,实现自动控制的目的。由于单片机主要面向工业控制,工作环境比较恶劣,加上高温、强电磁干扰,甚至还有腐蚀性气体;在太空工作的单片机控制系统,还必须具有抗辐射能力。因而,决定了单片机cpu与通用微机cpu具有不同的技术特征和发展方向,正由于它的实用性强,所以单片机在电类教学中的地位是相当重要的。(1)抗干扰性强工作温度范围宽。通用微机cpu一般要求在室温下工作抗干扰能力也较低。(2)可靠性高。(3)控制功能往往很强,数值计算能力较差。通用微机cpu具有很强的数值运算能力,但控制能力相对较弱。将通用微机用于工业控制时,一般需要增加一些专用的接口电路。(4)指令系统比通用微机系统简单。80c51系列新一代8位单片机的主要特点:(1)普遍采用cmos工艺,除了具有节电运行模式和掉电数据保护功能外,整机功耗比采用hmos工艺的80c5l系列低。(2)片内存储器容量大,规格多,程序存储器类型也趋于多样化。该系列不同品种的片内程序存储器容量从4kb扩展到8kb、16kb,甚至32kb,数据存储器容量从128b扩展到512b。(3)最高时钟频率从12mhz提高到16mhz、24mhz、33mhz,甚至40mhz,指令执行时间大大缩短,增强了这些产品的实时处理能力。(4)工作电压低、范围宽(18v、一60v),可用电池供电,便于野外作业使用。(5)扩展了接口电路功能,如:增加了高速io接口,扩展了io口引线数目。(6)部分型号增加了定时计数器的个数,还扩展了定时计数器的功能。(7)部分型号增加了定时复位功能,提高了抗干扰能力。(8)强化并且完善了串行通信功能。(9)封装形式多样化,同一型号的cpu,具有多种封装形式,如pdip封装、cdip封装、plcc(方形壁插塑封)、clcc(方形壁插陶瓷封装)、pqfp(塑料方形四边引线扁平封装),部分产品还采用了bga(球形网格阵列)封装。1.3.1 at89系列单片机简介 at89系列单片机是美国atmel公司的8位flash单片机产品。这个系列单片机的最大特点是在片内含有flash存储器,而其他方面和mcs51没有太大的区别。该系列有着十分广泛的用途,特别是在便携式、省电和特殊信息保存的仪器和系统中显得更为突出。1.3.2 at89系列单片机的特点(1)内含有flash存储器由于片内含有flash存储器,因此在系统开发过程中可以十分容易地进行程序的修改。同时,在系统工作过程中,能有效地保存数据信息,即使外界电源损坏也不影响信息的保存。(2)和80c51插座兼容at89系列单片机的引脚和mcs51系列单片机的引脚是一样的。只要用相同引脚的at89系列单片机就可以取代mcs51系列单片机。(3)静态时钟方式at89系列单片机采用静态时钟方式,节省电能,这对于降低便携式产品的功耗十分有用。1.3.3 at89s51单片机简介 at89s51是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-systemprogramming)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs5 1指令系统及80c5 1引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案。 at89s51具有如下特点:40个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入输出(io)口,5个中断优先级2层中断嵌套,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。此外,at89s51设计和配置了振荡频率可为0hz并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram、定时计数器、串行口、外部中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外部中断激活或硬件复位。同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。主要功能特性:(1)兼容mcs51指令系统(2)4k可反复擦写(1000次)isp flash rom(3)32个双向io口(4)45v-55v工作电压(5)2个16位可编程定时计数器(6)时钟频率033mhz(7)全双工uart串行中断口线(8)1288bit内部ram(9)2个外部中断源(10)低功耗空闲和省电模式(11)中断唤醒省电模式(12)3级加密位(13)看门狗(wdt)电路(14)软件设置空闲和省电功能(15)灵活的isp字节和分页编程(16)双数据寄存器指针1.4 仿真软件介绍 1.4.1 proteus软件简介 proteus软件是英国labcenterelectronics公司出版的eda工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它eda工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。proteus是世界上著名的eda工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到pcb设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、pcb设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等,2010年又增加了cortex和dsp系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持iar、keil和mplab等多种编译器。1.4.2 keil软件简介 keilc51是美国keilsoftware公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。运行keil软件需要win98、nt、win2000、winxp等操作系统。如果使用c语言编程,那么keil几乎就是不二之选。 2 硬件设计2.1 实验系统设计方案单片机实验开发板是一个实际应用的系统,能够为相关的学生单片机实验提供支持。此实验板是参考单片机教材中的实验内容设计的,能够实现简单的测试实验。本设计包括硬件系统的详细设计及c语言在基本控制中的应用。本设计的任务主要分为硬件和软件两大部分,其主要硬件设计框图如图2.1所示: at 8 9 s 5 1 晶振电路 流水灯电路 数码管显 示电路电路 复位电路液晶显示电路 存储器扩展电路路 发声电路4*4矩阵按钮电路dh11温湿度传感器电路ds18b20温度传感器电路 图2.1 硬件框图 此开发系统的主要内容包括:(1)单片机最小系统电路(mcu、复位电路、晶振电路)(2)蜂鸣器发声电路(3)按键电路(4)流水灯电路(5)lm106l液晶显示电路 (7)存储器扩展电路 (7)六段数码管显示电路 (8)ds18b20温度传感器电路 (9)dh11温湿度传感器电路2.2 常用各功能模块介绍 2.2.1 晶振电路 mcs-51片内有一个高增益的反相放大器,其输入端为引脚xtal1和输出端为引脚为xtal2,用于外接石英晶体振荡器和微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图3-2所示。电容c1和c2对频率有微调作用,电容一般取20pf左右。晶体振荡频率范围是12mz12mhz,一般情况下,选用振荡频率为12mhz的石英晶体。振荡脉冲信号经过内部时钟发生器进行二分频之后,才成为单片机的时钟信号。电路如图2.2所示 图2.2 晶振电路 选取晶振为12mhz,系统机器周期为1us。 2.2.2 复位电路 复位是由外部的复位电路来实现的。复位引脚rst通过一个施密特触发器用来抑制噪声,然后才能得到内部复位操作所需要的信号。 本系统是采用上电自动复位,上电自动复位是通过外部复位电路的电容充电来实现的。只要vcc的上升时间不超过1ms,就可以实现自动上电复位。 电路如图2.3所示: 图2.3 复位电路 2.2.3 4*4 键盘按钮电路用来连接p2口与矩阵键盘模块,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如p2口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键),在需要的按键数较多时,采用矩阵法来做键盘是合理的。电路如图2.4所示: 图2.4 按钮电路 2.2.4 流水灯电路 电路图如图2.5所示: 图2.5 流水灯电路 流水灯模块包含8个led灯,8个led接8个上拉电阻到高电平,led左侧接低电平点,led亮。2.2.5 发声电路 本系统是采用蜂鸣器用来发出声音,由于在实际应用中,单片机输出的标准高电平为5伏,输出功率很有限,所以本系统中,理论联系实际,用一个pnp型三极管驱动蜂鸣器,由于三极管具有放大作用,在实际应用中,输出功率将会提高很多。电路如下图2.6所示: 图2.6 发生电路 2.2.6 6位7段led数码管显示电路 图2.7 led数码管如图2.7所示abcdefg为7段led的输入端口,dp为小数点,123456为片先信号,当1为高电平时则选中第一个数码管,2为高电平时则选中第二个数码管,以此类推。2.2.7 lcd液晶显示电路 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、pda移动通信工具等众多领域。(1)液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(static)、单纯矩阵驱动(simplematrix)和主动矩阵驱动(activematrix)三种。(2)液晶显示器各种图形的显示原理 1)线段的显示图2-2-8存储器扩展电路14点阵图形式液晶由mn个显示单元组成,假设lcd显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示ram区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由ram区的000h00fh的16字节的内容决定,当(000h)=ffh时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3ffh)=ffh时,则屏幕的右下角显示一条短亮线;当(000h)=ffh,(001h)=00h,(002h)=00h,(00eh)=00h,(00fh)=00h时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是lcd显示的基本原理。 2)字符的显示 用lcd显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示ram区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在lcd上开始显示的行列号及每行的列数找出显示ram对应的地址,设立光标,在此送上该字符对应的代码即可。(3)汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32b,分左右两半,各占16b,左边为1、3、5右边为2、4、6根据在lcd上开始显示的行列号及每行的列数可找出显示ram对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32b显示完就可以lcd上得到一个完整汉字。液晶显示电路如图2.8所示: 图2.8 液晶显示电路 本系统显示是采用液晶显示器lm016l进行显示,lm016l的功能、显示原理以及使用方法将会在后文中介绍,p0口是一个地址/数据复用的双向i/o口,当使用p0口访问外部存储器和数据存储器时,p0口内部已有上拉电阻,当p0口作程序检验,输出指令字节时,必须外接上拉电阻。lm016l的控制信号rs、rw、e分别接到单片机的p2.0、p2.1、p2.2。2.2.8 程序存储器扩展电路本系统是采用了一个74ls373锁存器和一个27512程序存储器外部扩展组成,其主要的功能就是为了在外部扩展单片机内存,使它有足够的空间存放系统中的程序,而达到使它实现所要得到的功能和应用的领域,电路图如2.9所示: 图2.9 程序存储器扩展电路2.2.9 ds18b20温度传感器电路图2.10 温度传感器电路2.2.10 dh11温湿度传感器电路图2.11 温湿度传感器电路 3 开发系统的应用3.1 led数码管显示实验设计 3.1.1硬件电路原理基于电路中 c3r1 组成复位电路,它的作用是将单片机内部特殊的功能寄存器和端 口寄存器恢复到原始状态,和计算机按下重启键的作用是同等的,目的是将所有的程 序结束,使其恢复到初始状态。 在此,c3r1 组成的是上电复位电路,在上电的瞬间是单片机恢复到初始状态, 从内部 flash 存储器的初始状态开始执行,也就是从程序的 0000h 位置开始执行。 ea 接 vcc 电源,目的是使程序从内部 flash 的程序开始执行,如果 ea 引脚接 vss(电 源地),则不能先执行内部flash 的程序,而先执行外外部存储器的程序,由程序调用 才能访问内部 flash。x1c1c2 组成震荡电路,和内部的震荡电路共同构成单片机 工作基准时钟电路。它含有单片机的数字电路系统的工作基准,为数字电路系统稳定 的时钟信号。x1 为晶振,它的标称频率越高,数字电路系统的工作频率也就越高。abcdefg为7段led的输入端口,dp为小数点,123456为片先信号,当1为高电平时则选中第一个数码管,2为高电平时则选中第二个数码管,以此类推。利用51最小系统,然后用p1.0到p1.5的6个引脚输出片选信号,p2.0到p2.6的7个引脚输出数据。3.1.2 软件程序设计ledbuf equ 30h; 为显示数据开辟内存单元org 0000hljmp mainorg 000bhljmp time0org 0030htable: db 0c0h,0f9h,0a4h,0b0h,99h db 92h, 82h, 0f8h ,80h, 90h;7段数码管译码表main: mov sp,#70h;初始化堆栈 mov ledbuf,#2 mov ledbuf+1,#0 mov ledbuf+2,#1 mov ledbuf+3,#4 mov ledbuf+4,#6 mov ledbuf+5,#7 mov ledbuf+6,#7 ;写入要显示的数字 mov r0,#ledbuf ;将ledbuf的首地址给r0 mov dptr,#table ;将table的首是址给dptr mov r2,#06h ;r2作为循环次数寄存器 mov r1,#01h;r1中放片选信号 mov tmod, #01h ;定时器0工作在方式1 mov th0, #0dfh mov tl0,#0b0h ;初始代定时器0 setb tr0 ;开定时器0 setb ea ;开总中断 setb et0 ;开定时器0中断 sjmp $ ;动态停机time0: djnz r2, loop1;循环6次后回到初始值继续循环,小于6次跳到loop1mov r2,#06hmov r1,#01hmov r0,#ledbuf ;初始化数据loop1: mov th0,#0dfh mov tl0,#0b0h ;初始化定时器0mov a,r1 mov p1,arl amov r1,a ;将r1中片选信号输入p1并且使其数据左移一位mov a,r0 movc a,a+dptrmov p2,a inc r0 ;通过查表将ledbuf中数据送往p2retiend3.2 流水灯开关控制设计 3.2.1 硬件电路原理电路中 c3r1 组成复位电路,它的作用是将单片机内部特殊的功能寄存器和端 口寄存器恢复到原始状态,和计算机按下重启键的作用是同等的,目的是将所有的程 序结束,使其恢复到初始状态。 在此,c3r1 组成的是上电复位电路,在上电的瞬间是单片机恢复到初始状态, 从内部 flash 存储器的初始状态开始执行,也就是从程序的 0000h 位置开始执行。 ea 接 vcc 电源,目的是使程序从内部 flash 的程序开始执行,如果 ea 引脚接 vss(电 源地),则不能先执行内部flash 的程序,而先执行外外部存储器的程序,由程序调用 才能访问内部 flash。x1c1c2 组成震荡电路,和内部的震荡电路共同构成单片机 工作基准时钟电路。它含有单片机的数字电路系统的工作基准,为数字电路系统稳定 的时钟信号。x1 为晶振,它的标称频率越高,数字电路系统的工作频率也就越高。如图2-8所示流水灯模块包含8个led灯接p2口,采用低电平有效,共阳极连接,为防止二极管击穿,在每个二极管中串接了1k的限流电阻。因此,led灯低电平点亮。p1口接8个sw开关控制8个流水灯。在编程软件的配合下,要求实现如下指示灯/控制功能:程序启动后,8个发光二极管先整体闪烁3次(即亮-暗-亮-暗-亮-暗-亮-暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管发亮灯状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。3.2.2 软件程序设计(1)软件编程原理为: 1)8只发光二极管整体闪烁3次 亮灯:向p2口送入数值0; 灭灯:向p2口送入数值0ffh; 闪烁3次:循环3次; 闪烁快慢:由软件延时时间决定。 2)根据开关状态控制灯亮和灯灭 开关控制灯:将p1口(即开关状态)内容送入p2口; 无限持续:无条件循环。(2)流程图如下图所示: 图3.1 主程序 图3.2 延时子程序程序编码: mov r5,#3loop1: mov p2,#0 acall delay mov p2,#0ffh acall delay djnz r5,loop1loop2: mov p2,p1 sjmp loop2delay: mov r0,#100del0: mov r1,#50del1: mov r2,#25del2: djnz r2,del2 djnz r1,del1 djnz r0,del0 ret end3.3 可控制数字音乐盒设计 主要由单片机控制系统、行列式键盘、液晶显示屏、内存外部扩充电路、复位电路等组成。单片机at89s51是本系统的核心,它主要负责控制各个部分协调工作。在其外围接上:复位电路、数码管、按钮及扬声器。元件为:晶振x1、电容、电阻、扬声器、4*4行列式键盘、74ls373锁存器、27c512外部程序存储器扩展、lm016l液晶显示屏。硬件电路中用p1.0p1.7控制按键,其中p1.0p1.3扫描行,p1.4p1.7扫描列,用p2.0p2.2作为lcd的rs,r/w,e的控制信号。用p0.0p0.7作为lcd的d0d7的控制信号。用p3.7口控制蜂鸣器,电路为12mhz晶振频率工作,起振电路中c1,c2均为30pf。将p0口作为74ls373锁存器的输入以及27c512的数据输入口,锁存器输出至27c512的低八位地址口,将p2口作为27c512高八位地址口,27c512的控制信号oe/vpp接至单片机的psen,实现片外rom的读写控制。3.3.1 硬件电路原理 本音乐发生器是用单片机来设计制作完成,其功能的实现主要通过软件编程来完成,at89c51单片机片内带有4kb和外部程序存储器扩展的256k的内存,并且允许在系统内改写或用编程器编程。该音乐发生器的效率较高,其误差主要由晶振自身的误差所造成。存储歌曲是采用的外部扩展,4*4行列式键盘来实现的,按键将单片机i/0口的电平拉低,单片机检测到i/o口电平为0时,判断并存储键值。并自动跳转至相应曲号的标号处执行代码。显示采用的是液晶显示屏lm016l,显示稳定清晰,并且能显示多个信息,当片内4k的程序存储器存满后,自动跳转到片外256k程序存储器继续存储。3.3.2 播放音乐的原理 发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制p3.0引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的i/o反相,然后重复计时此半周期时间再对i/o反相,就可在i/o脚上得到此频率的脉冲。3.3.3 音符频率的产生(1)音符及定时器初始值:例如:中音1(do)的音频=523hz,周期t=1/523s=1912sm定时器/计数器0的定时时间为:t/2=1912/2sm=956sm定时器956sm的计数值=定时时间/机器周期=956sm/1sm=956(时钟频率=12mhz)装入t0计数器初值为65536-956=64580表3.3 c调各音符频率与计数初值t的对照表 音符频率(hz)/初值(us) 音符频率(hz)/初值(us) 低1do 262/63627 中1do 523/64580 高1do 1042/65056 低2re 294/63835 中2re 589/64687 高2re 1245/65134 低3m 330/64021 中3m 661/64780 高3m 1318/65157 低4fa 350/64107 中4fa700/64822 高4fa 1397/65178 低5so393/64264 中5so 786/64900 高5so1568/65217 低6la441/64402 中6la882/64969 高6ls1760/65252 低7si495/64526 中7si990/65031 高7si 1967/65282 将64580装入t0寄存器中,启动t0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对p3.0引脚的输出值进行取反,就可得到中音do(523hz)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值th0,tl0以产生不同的频率。表3.3是c调各音符频率与计数初值t的对照表。 (2)音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5高音5的计数初值。例如c调的低1do的thtl=65536-50000/262=63627,中音do的thtl=65536-500000/523=64580,高音do的thtl=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是c调的,那么出现低音的5so,直接将代码写为1;出现低音6la,直接写一个2的代码;出现低音7si,直接写一个3代码。 表3.4 是音符编码表 音符音符编码音符音符编码不发音 0低5so 1低6la 2低7si 3中1do 4中2re 5中3m 6中4fa 7中5so 8中6la 9中7si a高1do b高2re c高3m d高4fa e高5so f高6la g(3)节拍频率的产生 音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表3.5和表3.6所示。 表3.5 节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表按与节拍对应的表1/8拍为一个延时时间的节拍编码节拍编码节拍节拍编码 节拍节拍编码节拍节拍编码节拍 1 1/4 6 6/4 1 1/8 6 6/8 2 2/4 8 8/4 2 2/8 8 8/8 3 3/4 a 10/4 3 3/8 a 10/8 4 4/4 c 12/4 4 4/8 c 12/8 5 5/4 f 15/4 5 5/8 表3.6 乐谱节拍编程时的时间延时表 乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间 4/4 125 ms 4/4 62 ms 3/4 187 ms 3/4 94 ms 2/4 250 ms 2/4 125 ms 音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。3.3.4软件程序设计(1) 本设计采用了自定下下的设计流程,即在编制一个程序时,先考虑程序的总体结构而忽略一些细节问题,然后逐步的一步一步的细化,直至用程序语言完全描述每一个细节为止。主要程序流程有:主程序、判断有无按键子程序、键盘扫描子程序、显示键号/歌曲号子程序、开机画面子程序、按键值播放歌曲子程序、播放时间初始化子程序、液晶显示屏写指令子程序、液晶显示屏写数据、字符串显示子程序播放时间显示子程序、播放歌曲子程序、播放时间更新子程序。程序中使用了两个定时中断,定时中断0用于产生整个音程的频率,以便驱动扬声器。定时器t1用于刷新播放时间,当发生一秒定时中断时,将秒加一,达到60秒时,将分加一,达到60分时,将时加一。程序设置了溢出处理,即当时间为23:59:59时,自动将时间更新为00:00:00。程序的总体流程是当p1由按键按下时,读键盘,并储存键值,若为f键则通过查表的方式,调用字符串显示子程序显示开机画面,同时用查表的方式求出键号的ascii值,并调用显示键号/曲号自称序,将键号显示出来。若为1-a,程序根据储存的键号,将相应歌曲的表头地址赋给dptr,取出曲谱,判断是否为休止符,通过查表的方式将表中的定时器初值装入定时器t0,在定时中断0里面,重装初值,将输出口取反,完成发声。本设计中,每发一个调,调用一个30ms的延时,一次当做曲谱的节拍码。在此过程中若有功能键按下,将当前歌曲的表头地址加513/减513或等待。于此同时调用播放时间初始化子程序,显示00:00:00,装定时器t1的初值,准备更新播放时间。程序流程图如图3.7和3.8所示:3.8 音乐子程序图图3.7 音乐盒主程序流程图 3.4太阳能水温水位控制设计3.4.1硬件电路原理 本实验利用单片机采集温度,温度值精确到小数点一位,用4位数码管显示温度值,设置三个按键调整报警温度值,当温度超出所设定的上下限范围时,蜂鸣器开始报警。单片机复位电路报警电路时钟振荡温度传感器led显示蜂鸣器报警水位传感器按键电路图3.9 总体设计框图 (1)单片机最小系统电路图3.10 单片机最小系统 1)单片机9脚接复位电路,可按复位按钮s1给单片机复位。 2)晶振采用12mhz。3)由于单片机只访问片内flash rom并执行内部程序存储器中的指令,因此单片机的31脚接高电平vcc。 (2)ds18b20测温电路图3.11 ds18b20电路 ds18b20的1脚接地,2脚数据端接单片机的p3.4,3脚接vcc,为了确保ds18b20工作可靠,2脚要接10k的上拉电阻。 (3)报警电路图3.12 蜂鸣器电路 本实验中采用蜂鸣器报警,由于单片机输出电流较小,所以用三极管9013驱动蜂鸣器发出声音。 (4) 四位数码管显示电路图3.13 数码管显示电路4位数码管为共阳管,由于单片机输出电流比较小,故用4个pnp型的三极管9015来驱动数码管。单片机输出低电平时三极管导通,使数码管的4各公共端1、4、5和12脚为高电平,此时数码管的数据端输入低电平后数码管被点亮,120欧电阻r12到r19为三极管的限流电阻。 (5)报警温度设定按键电路图3.14按键电路 报警温度用按键s2,s3,s4来设置,s2为调整键,按一次可调整报警上限温度值,按两次可调整报警下限温度值,按三次数码管恢复到正常温度显示。s5是紧急呼叫按键。(6) 水位监测电路图3.14 水位监测电路 水位用三根导线,一个是电源负极,当导线接触到水后,由于水的导电性,使得两外两根导线也是低电平,从而使三极管9012导通,p1.3和p1.4是低电平,当两根导线不接触水的时候,输出是高电平。(7)水位报警电路图3.15水位报警电路 当水位比较低的时候,红灯亮,水位在中间的时候,红灯和黄灯亮,当水位慢的时候三个灯都亮,出故障的时候三个灯闪。3.4.2 软件程序设计为了保证实验的正常运行,当系统开机后,即单片机上电复位开始运行后,需要对硬件各部分进行自动检查,如果正常,系统就可以继续往下执行,如果不正常就必须出错报警,以便人工修正,为实验的正常运行作好准备。主程序流程图如3.16 : 图3.16主程序流程图 图3.17读温度流程图3.5室内温湿度测量3.5.1硬件电路原理 主要由4个大的模块构成,分别是主控模块、传感器模块、lcd液晶显示模块及报警模块,其中主控模块是此次毕业设计的核心模块,主要是指stc89c52芯片,它控制整个系统的运行,利用其各个口分别控制其他模块,使其他模块能够成为一个整体,实现功能的需要;报警模块主要指将蜂鸣器接入单片机电路。通过对时时温度的检测,并给定所需要的温度区间,即给定上下限值,实现越限报警;传感器模块用于实验室实时温湿度的检测、由于dht11的数字一体性,集成了模数转换等模块。直接接单片机即可。lcd液晶显示模块同样接入单片机,完成对单片机处理后的数据进行显示。图3.18 整体原理图3.5.2软件程序设计本次实验主要是能够实时显示出当前确切的温湿度,并且在高于预设值的时候能够发出蜂鸣。一旦接通电源,工作指示灯常亮,蜂鸣器首先蜂鸣,表示系统正常运行。接着lcd初始化,采用八位的数据端口,两行显示,其中第一行显示的湿度预设值,根据键盘我们可以加减数值,第二行显示的是实时的温湿度值,在程序设计中,分别定义温湿度参数,根据数据转换过来的数值,判断是否超过了预设值, 1602显示当前的温湿度值,传输数据正常,再次循环判断,如果没有超过预设值,蜂鸣器不会蜂鸣,1602正常显示,也同样再次循环。按键说明:从左边第一个起,减键、加键、设置键。报警方式:蜂鸣器和发光二极管产生声光报警。 (1)当dht11测出来的温度大于设定的温度上限值或小于温度下限值时,蜂鸣器发出报警声同时红色的指示灯也会产生光报警并lcd1602液晶显示温度报警信息,当dht11测出来的湿度大于设定的湿度上限值或小于湿度下限值时会产生声光报警并lcd1602液晶显示温度报警信息。 (2)可通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轨道交通设施对城市景观的影响分析考核试卷
- 镁矿开采安全风险评估与防范措施考核试卷
- 航运物流与区块链技术考核试卷
- 航空器飞行器驾驶员培训与考核试卷
- 成人高考法律基础知识与案例分析考核试卷
- 铬矿在建筑材料领域的应用研究考核试卷
- 牙齿的常见疾病类型概述
- 体育课急救知识
- 口腔设备学X线洗片机
- 麻醉手术室基础认知与操作规范
- 昆明市用人单位人员就业(录用)登记表
- 公司职业病危害防治责任制度
- 第十八章:爬行纲课件
- 米亚罗-孟屯河谷风景名胜区旅游基础设施建设项目环评报告
- 滁州市第一人民医院医疗暂存间环保设施提升改造项目环境影响报告表
- 籍贯对照表完整版
- 警用无人机考试题库(全真题库)
- 中等职业学校英语课程标准(2020年版)(word精排版)
- 医保业务知识题库
- 等级医院评审中应注意的迎评礼仪
- 吉林省长春市东北师大附中明珠学校2023年物理八年级第二学期期末统考模拟试题含解析
评论
0/150
提交评论