基于51单片机交通灯控制器设计.docx
- 文档编号:10623542
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:54
- 大小:1.34MB
基于51单片机交通灯控制器设计.docx
《基于51单片机交通灯控制器设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机交通灯控制器设计.docx(54页珍藏版)》请在冰豆网上搜索。
基于51单片机交通灯控制器设计
第一章单片机及其系统概述
1.1单片机的定义及特点
何谓单片机:
单片机(MCU)是将计算机的基本组成部分(CPU、ROM、RAM、中断系统、定时计数器、I/O)集成在一个芯片或一个完整的封装的器件内,因此称作单片微型计算机。
主要应用于控制领域,比如构成智能化产品,实现自动化,工业测控领域,用以实现各种参数的测量和控制功能,因此又称作微控制器。
常用于被测系统的核心,并融入其中,及嵌入系统内部进行使用,为了强调嵌入的特点,也常称作嵌入式的微控制器。
其特点是:
结构简单,体积小。
性价比高。
可靠性高,功耗小。
应用范围广泛。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
单片机按用途大体上可分为两大类:
1--通用型单片机
2--专用型单片机
专用型单片机是指用途比较专一,出厂时程序已经一次性固化好,不能再修改的单片机。
例如电子表里的单片机就是其中的一种。
其生产成本很低。
通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。
小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。
1.2嵌入式系统的定义及其特点
何谓嵌入式系统?
嵌入式系统(EmbeddedSystem),一般是指嵌入到对象体系中执行专用功能的计算机系统。
嵌入式系统诞生于微型机时代,其嵌入性的本质是将一个计算机嵌入到一个对象体系中去:
对象系统则是指嵌入式系统所嵌入的宿主系统。
为了区别于原有的通用计算机系统,嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。
嵌入式系通常由嵌入式硬件和软件两部分组成。
一个简单的嵌入式系统可以由微控制器或单片机及嵌入式软件组成。
总的来说,嵌入式系统就是以应用为核心,以计算机技术为基础,软硬件可裁剪,适应对功能、可靠性、安全性、体积、重量、成本、功耗、环境、安装方式等方面严格要求的专用计算机系统。
通过嵌入式系统的定义,可知一个嵌入式系统,应该满足的三个基本要素,即“嵌入性”、“专用性”与“计算机系统”。
它与通用计算机系统相比,一般具有以下的特点。
(l)实时性要求。
许多嵌入式系统对系统响应时间有要求,其软件和硬件设计必须满足实时性,以保证系统在允许的时间内完成任务,尤其在多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此系统软件的实时性是基本要求。
(2)系统体积小型化、功能专业化。
(3)软件的固化特性。
为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
(4)软件代码高质量、高可靠性
尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还存在实时性的要求。
为此要求程序编写和编译工具的质量要高,以减少程序二进制代码长度、提高执行速度。
1.3简述嵌入式系统的应用
嵌入式系统的应用前景是非常广泛的。
人们将会无时无处不接触到嵌入式产品,从家里的洗衣机、电冰箱,到作为交通工具的小汽车、办公室里的远程会议系统等等。
特别是以蓝牙为代表的小范围无线接入协议的出现,使嵌入式无线电的概念悄然兴起。
当嵌入式的无线电芯片的价格可被接受时,它的应用可能会无所不在。
下面介绍几种具体的应用。
(1)嵌入式移动数据库 所谓移动数据库是指支持移动计算的数据库,有两层含义:
用户在移动的过程中可以联机访问数据库资源;用户可以带着数据库移动。
典型的应用场合有在开着的救护车上查询最近的医院。
该系统由前台移动终端、后台同步服务器组成,移动终端上有嵌入式实时操作系统和嵌入式数据库。
(2)嵌入式系统在智能家居网络中的应用智能家居网络(E-Home)指在一个家居中建立一个通信网络,为家庭信息提供必要的通路,在家庭网络操作系统的控制下,通过相应的硬件和执行机构,实现对所有家庭网络上家电和设备的控制和监测。
其网络结构的组成必然有家庭网关,家庭网关主要实现控制网络和信息网终的信号综合并与外界接口,以便作远程控制和信息交换。
不论是网关还是各家电上的控制模块,都需有嵌入式操作系统。
这些操作系统必须具有内嵌式、实时性好、多用户的特点。
(3)嵌入式语音芯片嵌入式语音芯片基于嵌入式操作系统,采用语音识别和语音合成、语音学层次结构体系和文本处理模型等技术;可以应用在手持设备、智能家电等多个领域,赋予这些设备人性化的交互方式和便利的使用方法;也能应用于车载通信设备实现人机交流。
该芯片应用在移动通信设备中,比如,手机短消息到达时,可以直接听到声音。
(4)基于小范围无线通信协议的嵌入式产品以蓝牙为代表的小范围无线接入协议与嵌入式系统的结合,必将推动嵌入式系统的广泛应用。
近来,基于这些协议的嵌入式产品层出不穷,包括各种电话系统、无线公文包、各类数字电子设备以及在电子商务中的应用。
这些产品以其微型化和低成本的特点为其在家庭和办公室自动化、电子商务、工业控制、智能化建筑物和各种特殊场合的应用开辟了广阔的前景。
1.4嵌式系统的设计
1.4.1嵌式系统设计的基本要求
在嵌入式系统的设计中,我们应遵循以下要求:
实现用户功能上的需求;实时性要高;高度的可靠性和安全性;适应工作环境的要求;设计周期短且价格便宜;通用性和可扩展性高等
1.4.2选择嵌入式系统的微处理器
嵌入式系统的核心部件是各种类型的嵌入式处理器。
目前,据不完全统计,全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30几个系列。
嵌入式处理器的寻址空间一般从16KB到16~32MB,处理速度从0.1MIPS到2000MIPS,常用封装从8个引脚到144个引脚。
在此毕业设计中,我选用嵌入式微控制器作为嵌入式处理器。
嵌入式微控制器又称单片机,它将整个计算机系统集成到一块芯片中。
它一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、I/O、串行口、PWM输出、A/D、D/A、FlashRAM、EEPROM等必要功能和外设。
微控制器是目前嵌入式系统工业的主流。
微控制器的片上外设资源一般比较丰富,适合于控制,因此称为微控制器。
为适应不同的应用要求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存贮器和外设的配置和封装。
这样可以使单片机最大限度地和应用需求相匹配,从而减少功耗和成本。
和嵌入式微处理器相比,嵌入式微控制器的最大特点是单片化,体积大大减小。
嵌入式微控制器的品种和数量最多,比较有代表性的通用系列包括8051,P51XA,MCS-251,MCS-96/196/296,C166/167,MC68HC05/11/12/16,68300等。
1.4.3嵌入式系统的开发过程
在嵌入式系统的开发过程中有宿主机和目标机的角色之分:
宿主机是执行编译、链接、定址过程的计算机;目标机指运行嵌入式软件的硬件平台。
首先需把应用程序转换成可以在目标机上运行的二进制代码。
这一过程包含3个步骤:
编译、链接、定址。
编译过程由交叉编译器实现。
所谓交叉编译器就是运行在一个计算机平台上并为另一个平台产生代码的编译器。
常用的交叉编译器有GNUC/C++(gcc)。
编译过程产生的所有目标文件被链接成一个目标文件,称为链接过程。
定址过程会把物理存储器地址指定给目标文件的每个相对偏移处。
该过程生成的文件就是可以在嵌入式平台上执行的二进制文件。
嵌入式系统的开发过程中另一个重要的步骤是调试目标机上的应用程序。
嵌入式系统调试采用交叉调试器,一般采用宿主机——目标机的调试方式,它们之间由串行口线或以太网或BDM线相连。
交叉调试有任务级、源码级和汇编级的调试,调试时需将宿主机上的应用程序和操作系统内核下载到目标机的RAM中或直接烧录到目标机的ROM中。
目标监控器是调试器对目标机上运行的应用程序进行控制的代理(DebuggerAgent),事先被固化在目标机的Flash、ROM中,在目标机上电后自动启动,并等待宿主机方调试器发来的命令,配合调试器完成应用程序的下载、运行和基本的调试功能,将调试信息返回给宿主。
第二章毕业设计的准备工作
2.1STC89C51RC单片机简介
2.1.1总述
在此嵌入式系统的设计中,主要用单片机进行控制现场,故采用目前最普遍、较便宜的ATMELSTC89C51RC单片机。
该系列单片机是采用高性能的静态80C51设计。
由先进CMOS工艺制造并带有非易失性Flash程序存储器。
全部支持12时钟和6时钟操作。
其8051的内部功能模块如图2.1所示。
图2.1 8051的内部功能模块图
STC89C51RC包含512字节RAM、32条I/O口线、3个16位定时/计数器、8输入4优先级嵌套中断结构、1个串行I/O口(可用于多机通信、I/O扩展或全双工UART)以及片内振荡器和时钟电路。
此外,由于器件采用了静态设计,可提供很宽的操作频率范围(频率可降至0)。
可实现两个由软件选择的节电模式、空闲模式和掉电模式。
空闲模式冻结CPU,但RAM、定时器、串口和中断系统仍然工作。
掉电模式保存RAM的内容,但是冻结振荡器,导致所有其它的片内功能停止工作。
由于设计是静态的,时钟可停止而不会丢失用户数据。
运行可从时钟停止处恢复。
2.1.2性能
1.增强型6时钟/机器周期,12时钟/机器周期8051CPU
2.工作电压:
5.5V-3.4V(5V单片机)
3.工作频率范围:
0-40MHz相当于普通8051的0-80MHz实际工作频率可达48MHz
4.用户应用程序空间4K
5.片上集成512字节RAM
6.通用I/O口(32个),复位后为:
Pl/P2/P3是准双向口/弱上拉(普通8051传统I/O口),P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器,可通过串口(P3.O/P3.1)直接下载用户程序,8K程序3秒即可完成一片
8.EEPROM功能
9.看门狗
10.内部集成MAX810专用复位电路(D版本才有),外部晶体20M以下时,可省外部复位电路
11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用
12.外部中断4路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒
13.遁用异步串行口(UART),还可用定时器软件实现多个UART
14.工作温度范围:
0–75℃/-40-+85℃
15.封装:
LQFP-44,PDIP-40,PLCC-44,PQFP-44
2.1.3结构概览
STC89C51RC的结构如下图2.2所示。
图2.2STC89C51RC系统结构
2.1.4芯片的引脚排列和说明
STC89C51RC共有40个引脚,封装形式为PDIP-40,它的排列如图2.3所示
图2.3STC89C51RC引脚原理图
图2.4STC89C51RC实物图
在40个引脚功能说明如表2.1所示。
表2.1STC89C51RC管脚功能说明
VCC(40脚)
+5V电源输入
VSS(20脚)
接地
P0口(39~32脚)
P0口是一个8位漏极开路双向I/O端口。
作I/O端口使用时,需加上拉电阻。
作为一个输出端口,每个引脚作为8个TTL输入。
P0口也可以配置为复用地址/数据总线,访问外部程序和数据存储器。
P1口(1~8脚)
P1口是一个8位双向I/O端口的内部上拉端口,此外,P1.0和P1.1可配置为定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2触发输入(P1.1/T2EX)
P1.0T2(外部计数投入定时器/计数器2),时钟输出
P1.1T2EX(定时器/计数器2捕捉/重载触发和方向控制)
P2口(21~28脚)
P2口是一个8位双向I/O端口的内部上拉端口
P2口也可以配置为复用地址总线,访问外部程序和数据存储器,输出地址的高8位
P3口(10~17脚)
P3口是具有双重功能的8位接口
P3.0RXD(串行输入端口)
P3.1TXD(串行输出端口)
P3.2INT0(外部中断0,低电平有效)
P3.3INT1(外部中断1,低电平有效)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6WR(外部数据存储器写选通,低电平有效)
P3.7RD(外部数据存储器读选通,低电平有效)
RST(9脚)
复位/备用电源引线。
当该端加上超过24个时钟的高电平时,可使单片机复位;若在改引线上接+5V备用电源,则当VCC掉电时,该备用电源可保护片内RAM中的信息。
使其不丢失
XTAL1(19脚)
XTAL2(18脚)
外部晶体连线,片外石英晶体连与此二端与片内电路构成振荡器,产生片内CPU的工作时钟。
当使用外部时钟电路时,XTAL1连接外部时钟电路,XTAL2接地
EA(31脚)
允许访问片外ROM/编程高电压引线。
当EA=1时,访问片内ROM;若EA=0,访问片外ROM
ALE(30脚)
地址锁存。
当P0口工作在第二功能时,从该口可以送出A0~A7和传送D0~D7,利用ALE可以将A0~A7锁存在地址锁存器上。
PSEN(29脚)
片外ROM选通信号,常用作片外ROM的读控制信号,低电平有效
2.1.5特性
STC89C51RC系统的特性参数如表2.2所示。
表2.2STC89C51RC系统特性参数表
工作电压
4.5V~5V
正常工作电流
4mA~7mA
最大工作速率
80MHz
Flash程序存储器字节
4K
RAM程序存储器字节
512
降低EMI
具备
看门狗
具备
双倍速
具备
ISP
具备
IAP
具备
EEPROM字节
2K+
数据指针
2
串口UART
1ch
中断源
8
优先级
4
定时器
3
A/D
无
2.1.6STC89C51RC开发方法
STC89C51RC可以通过在线编程电路进行编程,在线编程电路即是一个程序烧写器。
用它可以替代在单片机应用项目的开发过程中常用的工具——程序烧写器。
它利用了STC89C51RC片内置的IPA进行烧写程序。
使用目前常用的KeiluVision2可以进行源程序的开发,使用软件的在线模拟调试进行程序的仿真调试,然后进行程序的编译,生成程序的HEX文件。
最后在使用STC-ISP下载编程烧录软件通过RS232向STC89C51RC片内烧写程序。
图2.5是原理连接图。
图2.5STC89C51RC在线编程电路原理图
2.2确定项目任务与要求
设计题目:
基于51单片机交通灯控制器设计
任务与要求:
制作一个以51单片机为中心的交通灯控制器
具体要求如下:
(1)要求能实时控制两个方向的交通灯。
(2)要求能够实时显示两位的计时数字。
(3)要求交通灯控制器的体积较小,抗干扰强,能够适应大多数实际工作环境。
2.3确定所选用的器件
由于STC89C51RC单片机的集成化较高,因此,所用器件主要是以STC89C51RC为主,控制信号可以通过已有的P0、P1、P2口进行实时输出,除了以上器件以外,还需要电阻,电容,发光二极管,MAX232等若干。
具体器件清单可以参照清单列表2.3。
表2.3元器件清单
名称
参数
数量
电容
104
4
电容
30P
2
电解电容
10uF
3
发光二极管
9
排阻
1K
1
排阻
5.1K
1
电阻
1K,1/4W
7
电阻
10K,1/4W
1
电阻
470,1/4W
2
排开关
DIP-8
1
按键开关
1
晶振
6MHz
1
AT89C51RC
1
MAX232
1
RS232接口
1
USB接口
1
LED
红
1
LED
黄
2
LED
绿
2
7段数码显示管
2
排针
若干
导线
若干
多功能实验电路板
一块
2.4工作原理
在确定任务要求,及所用原件以后,就要弄清楚整个系统的工作过程以及其工作原理,了解整个系统是如何控制交通灯的信号。
首先,我们知道,交通灯的控制是不需要从外界采集数据的,所以我在做交通灯控制器设计是不需要考虑系统的输入量。
其次,交通灯的控制是基于秒级的控制,所以我所要设计的是一个基于秒级的时序控制系统。
其基本状态表如表2.4所示。
表2.4交通灯状态图
路灯
状态
南北方向
东西方向
红
黄
绿
红
黄
绿
S1
●
○
○
○
○
●
S2
○
●
○
○
●
○
S3
○
○
●
●
○
○
通过表2.4我们可以看到,在此设计中,只有三个控制量,即红、黄、绿。
所以我使用P0.0~P0.2做红、黄、绿的控制开关。
P1、P2口做倒数计时的输出端口。
流程图如图2.6所示。
图2.6程序流程图
第三章软件系统设计介绍
3.1背景介绍
在基于51单片机交通灯控制器的软件设计当中,我采用C语言作为开发语言。
与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,易学易用,因此出现了专门用于51系列单片机编程的C语言——C51。
目前最先进、功能最强大的C51编译器是KeilC51。
3.2C51编程说明
3.2.1单片机C语言与汇编语言
在单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。
对用惯了汇编语言的人来说,高级语言可控性不好,不如汇编语言那样能够随心所欲。
但是使用汇编语言会遇到很多问题,首先它的可读性和可维护性不强,特别是当程序没有很好标注的时候,其次就是代码的可重用性也比较低。
使用C语言就可以很好地解决这些问题。
C语言具有良好的模块化,容易阅读和维护等优点。
由于模块化,用C语言编写的程序有很好的可移植性,功能化的代码能够很方便地从一个工程移植到另一个工程,从而减少了开发时间。
用C语言编写程序比用汇编语言更符合人们的思考习惯,开发者可以更专心地考虑算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。
很多系统特别是实时时钟系统都是用C语言和汇编语言联合编写的。
对时钟要求严格时,使用汇编语言是唯一的方法。
除此之外,包括硬件接口的操作都应该用C语言来编写。
语言的特点就是可以使程序员尽量少地对硬件进行操作,它是一种功能性和结构性很强的语言。
对于大多数51系列单片机,使用C语言这样的高级语言与使用汇编语言相比具有如下优点:
(1)不需要了解处理器的指令集,也不必了解存储器结构。
(2)寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器的寻址和数据类型等细节。
(3)指定操作的变量选择组合提高了程序的可读性。
(4)可使用与人的思维更相近的关键字和操作函数。
(5)与使用汇编语言编程相比,程序的开发和调试时间大大缩短。
(6)C语言中的库文件提供许多标准的例程,例如格式化输出、数据转换和浮点运算等。
(7)通过C语言可实现模块化编程技术,从而可将己编制好的程序加入到新程序中。
(8)C语言可移植性好且非常普及,C语一言编译器几乎适用于所有的目标系统,已完成的软件项目可以很容易地转换到其他的处理器或环境中。
C语言程序运行时与汇编语言的不同之处:
(1)进入C程序后,首先将RAM地址为007FH的128个单元清零,然后置SP为07H(SP根据变量多少而不同)。
因此,如果要对内部RAM置初值,一定是在执行了一条C语句之后。
(2)对于C程序设定的变量,C51编译器自行安排寄存器或存储器作参数传递区,通常在R0~R7(一组或两组,根据参数多少而定)。
因此,如果对具体地址置数,应该避开R0~R7这些地址。
(3)如果不特别制定变量的存储类型,变量通常被安排在内部RAM区。
3.2.2汇编语言和C语言混合编程
由于单片机硬件的限制。
在有些场合无法用C语言编写,而只能用汇编语言来编写程序。
大多数情况下汇编程序能和用C语言编写的程序很好地结合在一起。
1.增加段和局部变量
在把汇编程序加入到C程序中之前,必须使汇编程序和C程序一样具有明确的边界、参数、返回值和局部变量。
2.函数声明
为了使汇编程序段和C程序能够兼容,必须为汇编语言编写的程序段指定段名并进行定义。
如果要在它们之间传递函数,则必须保证汇编程序用来传递函数的存储区和C函数使用的存储区是一样的。
被调用的汇编函数不仅要在汇编程序中使用伪指令以使CODE选项有效,并声明为可再定位的段类型,而且还要在调用它的C语言主程序中进行声明。
函数名的转换规律如表3.1所示。
段名的转换规律如表3.2所示。
表3.1函数名的转换规律
主函数中的声明
汇编符号名
说明
Voidfuns(void)
FUNC
无参数传递或不含寄存器的函数名不作改变转入目标文件中,名字只是简单地转为大写形式
Voidfuns(char)
_FUNC
带寄存器参数的函数名,前面加“_”前缀,它表明这类函数包含寄存器内的参数传递
Voidfuns(void)reentrant
_?
FUNC
对于重入函数,前面加“_?
”前缀,它表明该函数包含栈内的参数传递
表3.2段名的转换规律
存储区
命名转换
CODE
?
PR?
CO
XDATA
?
XD
DDATA
?
DT
BIT
?
BI
PDATA
?
PD
3.KeilC51与汇编的接口
(1)模块内接口
有时候,需要使用汇编语言来编写程序,比如对硬件进行操作或在一些对时钟要求很严格的场合,但又不希望用汇编语言来编写全部程序或调用汇编语言编写的函数,那么可以通过预编译指令“asm”,在C代码中插入汇编代码。
方法是用#pragma语句,具体结构是:
#pragmaasm
汇编行
#pragmaendasm
这种方法是通过asm与endasm告诉C51编译器中问行不用编译为汇编行。
(2)模块间接口
C模块与汇编模块的接口较简单,分别用C51与A51对源文件进行编译,然后用L51连接obj文件即可。
(3)SRC控制
该控制指令将C文件编译生成汇编文件(.SRC),该汇编文件在改名后,生成汇编.ASM文件,再用A51进行编译。
3.2.3C51对标准C语言的扩展
C51语言的特色主要体现在以下几方面:
(1)1虽然继承了标准C语言的绝大部分的特性,而且基本语法相同,但其本身又在特定的硬件结构上有所扩展,如关键字sbit,data,idata,pdata,xdata,code等。
(2)应用C51更要注重对系统资源的理解,因为单片机的系统资源相对PC机来说很贫乏,对于RAM,ROM中的每一字节都要充分利用。
可以通过多看编译生成的.m51文件来了解自己程序中资源的利用情况。
(3)程序上应用的各种算法要精简,不要对系统构成过重的负担。
尽量少用浮点运算,可以用unsigned无符号型数据的就不要用有符号型数据,尽量避免多字节的乘除运算,多使用移位运算等。
1.数据类型
C51具有标准C语言的所有标准数据类型,除此之外,为了更加有效地利用8051的结构,还加入了以下特殊的数据类型。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 交通灯 控制器 设计