毕业设计(论文)-基于单片机的多功能交通灯系统设计 (2).doc_第1页
毕业设计(论文)-基于单片机的多功能交通灯系统设计 (2).doc_第2页
毕业设计(论文)-基于单片机的多功能交通灯系统设计 (2).doc_第3页
毕业设计(论文)-基于单片机的多功能交通灯系统设计 (2).doc_第4页
毕业设计(论文)-基于单片机的多功能交通灯系统设计 (2).doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的多功能交通灯系统设计苏州市职业大学毕业设计(论文)说明书设计(论文)题目 基于单片机的多功能交通灯系统设计 院 系 电子信息工程系 专业班级 07电子信息工程技术1 姓 名 学 号 指导教师 2010年 6 月 11 日摘 要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。随着汽车总量的不断增加,城市交通拥挤和堵塞现象时常出现,因而城市交通指挥变得重要。一套性能齐全、安全有效的交通灯控制系统对一个城市来说必不可少。本系统采用msc-51系列单片机at89c52为中心器件来设计交通灯控制器,实现了能根据实际车流量通过at89s52芯片的p2口设置交通灯亮的功能;采用6个发光二极管来模拟各路交通信号红绿黄三种灯循环点亮,2个led七段数码管以倒计时的方式显示允许通行或禁止通行的信号灯剩余的时间,停10s,准备3s,之后通行10s。另外,本系统还采用1602液晶显示器和580c喇叭speaker实现在交通灯交替点亮的同时液晶显示英文字符和播放背景音乐的功能,液晶以滚动方式随着红绿灯的交替点亮循环显示相应的提示标识,实用性强、操作简单、扩展功能强。本设计采用的程序编写语言为汇编语言,简单又便于阅读。编写程序的原则是:1.满足设计的要求。2.尽量采用最好,最有效的算法。3.编写时应尽量用最简洁的语言。编写好源程序后,采用keil uvision2软件对其进行编译,使其生成单片机可以识别的.hex文件,再把此文件导入单片机at89s52中即可。关键词:单片机,交通灯,播放音乐,液晶显示abstractwith the rapid development of science and technology in recent years, scm applications are deepening at the same time promote more traditional control detection update. in real-time detection and control of the microcomputer application system, the microcontroller is often used as a core component, only the scm knowledge is inadequate and should be based on specific hardware architecture hardware and software, to be improved. with the cars total growing urban traffic congestion and jams frequently occur, and thus become important urban traffic control. complete set of performance, safety and effective traffic light control system is essential for a city. in this system, msc-51 series mcu at89s52 to design the traffic signal controller, realized according to the actual traffic flow through the port p2 at89s52 chip set of traffic lights function; with 6 a light-emitting diodes to simulate various quarters red, green and yellow light traffic signal cycle of light, two seven-segment led digital tube with a countdown displayed to allow access or prohibit the passage of the signal remaining time, stop 10s, ready 3s, after the passage 10s. in addition, the system also uses liquid crystal display and 580c speakers speaker 1602 to achieve the turn at the traffic lights lit lcd display, while english characters and play background music function, liquid crystal on a rolling basis alternating light cycle with lights display the corresponding prompt identification, practical, simple and powerful extensions. the design used in assembly language programming language, simple and easy to read. programming principle is: 1. to meet the design requirements. 2. as far as possible the best and most effective algorithm. 3. preparation should be kept in the most simple language. after the preparation of a good source, using keil uvision2 compile their software, to generate the microcontroller can recognize. hex file, then import this file in mcu at89s52 can.key words: scm, traffic lights, plays music, lcd 目 录绪 论5第一章 单片机的基本知识61.2 单片机的发展概述61.3 单片机的特点61.4 单片机的内部结构71.4.1 at89s52芯片简介81.4.2 at89s52芯片的引脚排列及功能91.4.3 时钟电路101.4.4 复位电路11第二章 系统硬件设计122.1 交通灯显示模块122.2 数码管led显示时间模块132.2.1 数码管led显示器132.2.2 数码管led时间显示142.3 液晶lcd1602显示模块152.3.1 1602字符型lcd简介152.3.2 1602lcd的指令说明及时序162.3.3 1602lcd字符的显示182.4音乐播放模块192.4.1 音调的确定192.4.2 节拍的确定212.4.3 编码的确定21第三章 系统软件设计233.1 设计程序流程图233.2 控制器的软件设计233.2.1 定时设定233.2.2 1秒钟的设定243.2.3 软件延时253.3 交通灯和数码管led倒计时的源程序263.4 液晶lcd1602显示字符源程序273.5 音乐播放源程序30第四章 结论33致 谢34参考文献35附录36绪 论随着社会经济的发展,交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代交通监控指挥系统中最重要的组成部分。当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已经出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车先后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。第一章 单片机的基本知识本章将首先介绍一些单片机的发展背景,以及单片机的基础知识,主要包括单片机的概念,芯片的简介等。1.2 单片机的发展概述随着集成电路技术的发展,单片微型计算机的功能也不断增强,许多高性能的新型机种不断涌现出来。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为自动化和各个测控领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和i/o接口电路等,即在一块芯片上集成了cpu、振荡器电路、rom和ram 存储器、定时器/计数器和并行/串行i/o接口。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的cpu功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。1.3 单片机的特点单片机的发展日新月异,在硬件规模方面,单片机相当于将一个基本规模的单板机所具有的资源复合在一块芯片上,因此具有相当的规模.在功能方面,单片机已经超过了单板机的功能.在指令系统方面,如果将单片机的指令系统与z80的指令系统相比较,除单片机的数据传送能力较弱一点之外,单片机的指令系统已大大超过z80。单片机具有以下几个特点:(1)片内存储容量越来越大。(2)抗干扰性好,可靠性高。(3)芯片引线齐全,容易扩展。(4)运行速度高,控制功能强。单片机应用系统的特点有:(1)单片机构成的应用系统可靠性高。(2)系统配置规范 。(3)控制功能具有预想性,变动控制方案容易。(4)具有较高的性价比。1.4 单片机的内部结构单片机由 cpu 、存储器(包括 ram 和 rom )、 i/o 接口、定时器/计数器、中断控制功能等均集成在一块芯片上,片内各功能通过内部总线相互连接起来。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(princeton)结构。intel的mcs-51系列单片机采用的是哈佛结构的形式。图1.1mcs-51结构框图1.4.1 at89s52芯片简介 at89s52是mcs-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。内部包含中央处理器、程序存储器(rom)、数据存储器(ram)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(cpu)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,cpu负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(内部ram): at89s52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的ram只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(内部rom): at89s52共有4kb个8位掩膜rom,用于存放用户程序,原始数据或表格。定时/计数器: at89s52有3个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(i/o)口: at89s52共有4组8位i/o口(p0、 p1、p2或p3),用于对外部数据的传输。全双工串行口: at89s52内置一个uart全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统: at89s52具备较完善的中断功能,有两个外中断、三个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路: at89s52内置最高频率达12mhz的时钟电路,用于产生整个单片机运行的脉冲时序,但at89s52单片机需外置振荡电容。1.4.2 at89s52芯片的引脚排列及功能 at89s52芯片有40个引脚,有3种封装形式,一种是dip(dual inline package)封装形式,这是普通40脚双列直插形式;一种是lcc(leaded chip carrier)封装形式,还有一种是qfp(quad flat package)封装形式。本设计采用40pin封装的双列直插dip结构,下图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个i/o口,中断线与p3口线复用。其引脚排列和逻辑符号框图为图1.2 at89s52引脚和逻辑符号图pin9:reset/vpd复位信号复用脚,当芯片通电时,时钟电路开始工作,在reset引脚上出现2个机器周期以上的高电平,系统即初始复位。初始化后,程序计数器pc指向0000h,p0-p3输出全部为高电平,堆栈指针写入07h,其它专用寄存器被清“0”。reset由高电平下降为低电平后,系统即从0000h地址开始执行程序。然而,初始复位不改变ram(包括工作寄存器r0-r7)的状态。at89s52芯片的复位方式可以是自动复位,也可以使手动复位,见下图1.3。此外,reset/vpd还是一个复用脚,vcc掉电其间,此脚可接上备用电源,以保证单片机内部ram的数据不会丢失。pin29:psen当访问外部程序存储器时,此脚输出负脉冲选通信号,pc的16位地址数据将通过p0和p2口输出,在执行片内程序存储器取指令时,不产生psen信号;在访问外部程序存储器时,亦不产生psen信号。pin30:ale/prog当访问外部存储器,ale(地址锁存信号)的输出用于锁存地址的低位字节。而访问非外部程序存储器时,ale端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,可以作为外部时钟或定时信号用。当访问外部数据存储器时,将以1/12振荡频率输出。prog为编程脉冲输入端,即当选用8751单片机时,对片内程序存储器进行编程时,由此引脚输入编程脉冲。pin31:ea/vpp 程序存储器的内外部选通线,8051和8751单片机,内置有4kb的程序存储器,当ea为高电平并且程序地址小于4kb时,读取内部程序存储器指令数据,而超过4kb地址则读取外部指令数据。如ea为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,ea端必须接地。在编程时,ea/vpp 脚还需加上21v的编程电压。1.4.3 时钟电路 at89s52虽然有内部振荡器,但要形成时钟,必须外部附加电路。at89s52单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。图1.3 at89s52内部和外部两种时钟方式本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2mhz到12mhz之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,cx1、cx2可在20pf到100pf之间取值,但在60pf到70pf时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择12mhz,电容选择20pf。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠的工作。1.4.4 复位电路at89s52的复位是由外部的复位电路来实现的。复位引脚rst通过一个施密特触发器用来抑制噪声,在每个机器周期的s5p2,施密特触发器的输出电平有复位电路采样一次,然后才得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。如图1.3所示图1.3 at89s52上电和按钮两种复位方式最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用12mhz时c取10uf,r取1k欧姆。本设计采用的是上电自动复位方式,但除了上电复位外,有时还需要按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位时通过rst端经电阻与电源vcc接通而实现的。第二章 系统硬件设计在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、led数码管、液晶显示器。根据设计控制要求,我们选用p0p2口作输出led数码管和液晶lcd1602显示控制口,用p3口作音乐播放的输出控制口。led数码管通过静态显示方式实现倒计时读秒。液晶lcd1602要根据交通灯的的变化规律以英文字符的形式相应的显示红黄绿三种灯表示的含义,580c喇叭speaker循环重复播放音乐作为背景音乐。其中,单片机系统为系统的主控制器,以控制其他模块协调工作。2.1 交通灯显示模块交通灯采用三色led,它由2个红色发光二极管、2个黄色发光二极管和2个绿色发光二极管封装在一起,低电平有效。发光二极管,是一种半导体固体发光器件,它是利用固体半导体芯片作为发光材料,当两端加上正向电压,半导体中的载流子发生复合引起光子发射而产生光。发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,在p型半导体和n型半导体之间有一个过渡层,称为p-n结。在某些半导体材料的pn结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。pn结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称led。本设计将发光二极管连接到at89s52的p1口上,由单片机p1口赋值控制交通灯的亮暗。当发光二极管连接的p1引脚为低电平时,灯亮,反之,灯灭。下面是单片机p1口与led灯的连接图,p1.0p1.7这8个引脚分别连接8个发光二极管,予以控制。 图2.1 交通灯的显示连接2.2 数码管led显示时间模块本设计利用at89s52单片机的一个并行口实现多个led数码管显示的简单方法,将所有位的段选线并联在一起,由一个8位io口控制,而共阴极点或共阳极点分别由另一个8位io口控制;也可采用并行扩展口构成显示电路,交通灯的倒计时时间显示是通过8位共阳数码管动态显示的,设计根据交通灯的红、黄、绿三色灯的变换相应显示各自的倒计时显示时间,给行人和车辆以指示。2.2.1 数码管led显示器单片机中通常使用的是由7个发光二极管组成的显示字符段,一般为七段数码显示管(含小数点为八段),即七段led按“日”字排列成的数码管。这些显示二极管的一端连接在一起,形成公共端cc,端子ag、dp则通过引脚与外部总线相连,如下图所示。用led显示红、黄、绿灯显示时间的倒计时,给行人和车辆以指示。七段led的阳极连在一起称为共阳极接法,而阴极连在一起称为共阴极接法。每段led的笔画分别称为a、b、c、d、e、f、g,另有一段构成小数点。了解led的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。下图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。(a)led器件 (b)共阳极接法 (c)共阴极接法图2.2 数码管结构图在选用共阴的l ed时,只要在某一个发光二极管加上高电平,该段即点亮,反之则暗。而选共阳的led时,要使某一段发光二极管发亮,则需加上低电平,反之则暗,为了保护各段led不被损坏,需外加限流电阻。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。本系统采用的是共阳极数码管。 2.2.2 数码管led时间显示 为了要显示某个字形,则应使此字形的相应段点亮,也即送一个不同的电平组合代表的数据来控制led的显示字形,此数据称为字符的段码。数据字位数与led段码的关系如表2.1所示:表2.1 数据字位数与led段码的关系数据位数d7d6d5d4d3d2d1d0led段码dpgfedcbaled显示模块由8位共阳数码管组成,包括控制参数调整显示模块和交叉口倒计时显示模块2部分,此2部分的8位led均采用动态显示方式,即将所有数码管的段码线相应段并联在一起,接到p0口,用p2口的各位对各个led进行控制,从而实现对led的定时选通。图2.3 数码管led显示模块2.3 液晶lcd1602显示模块lcd1602是一款最常用也是最便宜的液晶显示屏。在单片机系统中应用液晶显示器作为输出器件时具有显示质量高,数字式接口简单且体积小、重量轻、功耗小等优点。2.3.1 1602字符型lcd简介液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可显示出图形。液晶显示器的分类方法有很多种,通常可按其显示方法分为段式、字符式、点阵式等;按其驱动方式来分,可以分为静态驱动(static)、单纯矩阵驱动(simple matrix)和主动矩阵驱动(active matrix)三种。字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式lcd,目前常用16*1,16*2,20*2和40*2行等的模块,本设计采用的是1602字符型液晶显示器显示交通灯英文提示。1602lcd分为带背光和不带背光两种,它们绝大多数是基于hd44780液晶芯片的,控制原理是完全相同的。一般lcd1602字符型液晶显示器实物如图2.4所示图2.4液晶lcd1602lcd 1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。1602lcd主要技术参数有: 显示容量:16*2个字符 芯片工作电压:4.5-5.5v 工作电流:2.0ma(5.0v) 模块最佳工作电压:5.0v 字符尺寸:2.95*4.35(w*h)mm1602lcd采用标准的14条引脚线(无背光)或16引脚线(带背光接口),最多可以显示两行标准字符,每行最多可以显示16个字符,各引脚接口说明如表2.2所示表2.2 1602lcd引脚功能说明编号符号引脚说明编号符号引脚说明1vss电源地9d2数据2vdd电源正极10d3数据3vl液晶显示偏压11d4数据4rs数据/命令选择12d5数据5r/w读/写选择13d6数据6e使能信号14d7数据7d0数据15bla背光源正极8d1数据16blk背光源负极2.3.2 1602lcd的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,具体如表2.3所示。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)表2.3 1602lcd控制指令表序号指令rsr/wd7d6d5d4d3d2d1d01清显示00000000012光标返回000000001*3置输入模式00000001i/ds4显示开/关控制0000001dcb5光标或字符移位000001s/cr/l*6置功能00001dlnf*7置字符发生器地址0001字符发生存储器地址8置数据存储器地址001显示数据存储器地址9读忙标志或地址01bf计数器地址10写数到cgram或ddram10要写的数据内容11从cgram或ddram读数11读出的数据内容指令1:清显示,指令码01h,光标复位到地址00h位置。指令2:光标复位,光标返回到地址00h。指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或右移。高电平表示有效,低电平则无效。指令4:显示开关控制 d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 c:控制光标的开与关,高电平有光标,低电平无光标 b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 dl:高电平4位总线,低电平8位总线 n:低电平为单行显示,高电平双行显示 f:低电平显示5*7的点阵字符,高电平显示5*10字符指令7:字符发生器ram地址设置。指令8:ddram地址设置。指令9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙指令10:写数据。指令11:读数据。基本操作时序:读状态 输入:rs=l,rw=h,e=h 输出:d0-d7=状态字写指令 输入:rs=l,rw=l,e=下降沿脉冲 d0-d7=指令码 输出:无读数据 输入:rs=h,rw=h,e=h 输出:d0-d7=数据写数据 输入:rs=h,rw=l,e=下降沿脉冲 d0-d7=数据 输出:无2.3.3 1602lcd字符的显示lcd 1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、大小写英文、常用的符号、和日文假名等,每一字符都有固定的代码,比如大写的英文字母“a”的代码是41h,显示时模块把地址41h中的点阵字符图形“a”显示出来,显示操作的过程如下:1、首先确认显示的位置,即在第几行第几个字符开始显示。图片1.jpg (31.37 kb)2009-2-10 09:10第一行的显示地址是0x800x8f,第二行的显示地址是0xc00xcf。例如想要在第2行,第3个位置显示一个字符,那么地址码就是 0xc2。在编程过程中,通常编写一个函数确定在某行某个位置显示数据。2、其次设置要显示的内容,即上面提到的cgrom内的字符编码。如显示“a”,将编码41h写入到液晶屏显示即可。通常设置地址和显示内容用一个函数来完成。3、定义一个字符串显示函数,可以通过直接输入字符方式进行显示。本设计中液晶显示模块与at89s52接口图,液晶lcd1602显示器通过与单片机的p2口连接写入和读取数据,从p0口显示读出的数据,利用定时器实现液晶lcd1602与交通灯实时同步的循环显示交通指示信息。当灯亮时,液晶lcd1602显示“please stop”,黄灯亮时,液晶lcd1602显示“wait a moment”,绿灯亮时,液晶lcd1602显示“lets go”。图2.5 液晶显示模块与at89s52接口2.4 音乐播放模块乐曲中不同的音符,实质就是不同频率的声音。利用单片机的定时器产生乐谱的各种频率方波,经过放大电路,有蜂鸣器放出,就产生了美妙和谐的乐曲。一般来说,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚音调和节拍两个概念即可,音调表示一个音符唱多高的频率,节拍表示一个音符唱多久的时间。我们知道,声音的频率范围约在几十到几千赫兹,若能控制单片机某个口线的电平的高低,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,本设计在音乐开始播放后,没有任何操作情况下,单片机会连续播放,形成交通灯的背景音乐。2.4.1 音调的确定音调的确定实际上就是不同频率脉冲信号的产生,其步骤如下:1单片机要产生不同频率的脉冲信号,先要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的i/o反相,然后重复计时此半周期的时间在对i/o反相,就可以在i/o脚上得到此频率的脉冲。2利用单片机的内部定时器使其工作在计数器模式mode1下,改变计数值th1及tl1以产生不同的频率。3.例如频率为523hz,其周期t=1/523 s=1912us,因此只要令计数器计时956us/1us=956,在每计数956次时就将i/o反相,就可得到中音do(532hz)。 计数脉冲值与频率的关系公式如下: n=fi / 2 / fr(n:计数次数,fi:音频脉冲频率,fr:单片机的机器周期 )4定时器初始值的求法如下: t=65536-n=65536-fi / 2 / fr例如:设k=65536,f=1000000=fi=1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的定时器初始值。 t=65536-n=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr低音do:t=65536-500000/262=63627中音do:t=65536-500000/523=64580 高音do:t=65536-500000/1047=650595不同的频率产生的计数值对应于不同的音符频率,c调各音符频率与计数值t的对照表如下表2.4所示。表2.4 c调各音符频率与计数值t的对照表音符频率/hz简谱码/t值音符频率/hz简谱码/t值低1do26263628#4fa#74064860#1do#27763731中5so78464898低2re29463835#5so#83164934#2re#31163928中6la88064968低3m33064021#693264994低4fa34964103中7si98865030#4fa#37064185高1do104665058低5so39264260#1do#110965085#5so#41564331高2re117565110低6la44064000#2re#124565134#646664463高3m131865157低7si49464524高4fa139765178中1do52364580#4fa#148065198#1do#55464633高5so156865217中2re58764684#5so#166165235#2re#62264732高6la176065252中3m65964777#6186565283中fa69864820高7si1967652832.4.2 节拍的确定每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1delay,则1拍应为4delay,以此类推。所以只要求得1/4拍的delay时间(1/4拍的延迟时间=187毫秒),其余的节拍就是它的倍数,如下表2.5为1/4和1/8节拍的部分时间设定。 表2.5 节拍与节拍码对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍41/2拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍a2又1/2拍a1又1/4拍c3拍c1又1/2拍f3又3/4拍表2.6 各调1/4节拍的时间设定和各调1/8节拍时间设定表曲调值delay曲调值delay调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒2.4.3 编码的确定建立音乐的步骤: 1.先把吧乐谱的音符找出,然后由上表建立t值表的顺序。 2.把t值表建立在table1,构成发音符的计数值放在“table”。 3.简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“table”处。 表2.7 简谱对应的简谱码、t值、节拍数设计时借助杜邦线使喇叭sreaker与单片机p3.0端口接通,让音频信号从p3.0口输出,喇叭speaker通过芯片lm2003放大信号输出音频,形成美妙悦耳音乐。其连接如下图2.6所示: 图2.6 音乐模块连接第三章 系统软件设计3.1 设计程序流程图开 始液晶显示播放音乐(t1)90设置定时器0和1数码管动态扫描(t0)数码管倒计时交通灯工作循环设置图3.1 单片机交通灯程序流程图从流程图可以看出,本设计的交通灯工作的主要过程就是,利用两个定时器t0和t1分别控制交通灯中数码管的动态扫描和音乐信号的输出,然后调用程序使红黄绿三种灯交替点亮,数码管led倒计时显示以及液晶lcd1602显示这三种功能同时并相对应的实现。3.2 控制器的软件设计3.2.1 定时设定在交通灯的时间显示中,每秒钟的设定采用软件延时的方法,延时方法可以有两种,一种是利用mcs-51内部定时器产生溢出中断来确定1秒的时间,另一种是采用软件延时的方法。定时器工作时必须给计数器送计数器初值,这个值是送到th和tl中的。它是以加法计数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为c和计数初值设定为tc 可得到如下计算通式:tc=m-c式中,m为计数器模值,该值和计数器工作方式有关。在方式0时m为213;在方式1时m为216;在方式2和3时m为28。由公式t=(m-tc) t计数 或 tc=m-t/t计数其中t计数是单片机时钟周期tclk的12倍;tc为定时初值如果单片机的主脉冲频率为12mhz,经过12分频方式0 tmax=213*1微秒=8.192毫秒方式1 tmax=216*1微秒=65.536毫秒显然1秒钟已经超过了计数器的最大定时时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题。3.2.2 1秒钟的设定我们采用在主程序中设定一个初值为20的软件计数器和使t0定时50毫秒。这样每当t0到50毫秒时cpu就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,cpu先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回输出时间显示程序。相应的程序代码如下:(1) 主程序定时器需定时50毫秒,故t0工作于方式1。初值:tc=m-t/t计数=216-50ms/1us=15536=3cb0horg 0100hstart: mov sp,#50h mov tmod,#11h ;设置定时器t0,t1mov ie,#10001010b ;端口初始化mov ip,#08h ;设置中断优先级,t1为高优先级mov th0,#high(65536-5000) ;设置定时器高字节初值mov tl0,#low(65536-5000) ;设置定时器低字节初值 setb tr0 ;启动定时器t0mov r7,#200(2) 中断服务子程序timer0: push acc ;定时器部分,负责数码管扫描 push psw mov th0,#high(65536-5000) ;设置高字节初值 mov tl0,#low(65536-5000) ;设置低字节初值 djnz r7,ret0 mov r7,#200 mov a,scanmode ;调用扫描 mov b,#4 div ab mov a,b rl a mov dptr,#tab_scan jmp a+dptr3.2.3 软件延时mcs-51的工作频率为2-12mhz,我们选用的at89s52单片机的工作频率为12mhz,机器周期与

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论