基于51单片机的路灯控制系统学士学位论文Word文档格式.docx
- 文档编号:17300367
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:34
- 大小:621.05KB
基于51单片机的路灯控制系统学士学位论文Word文档格式.docx
《基于51单片机的路灯控制系统学士学位论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的路灯控制系统学士学位论文Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
(一)系统程序流程图如图6-1所示14
(二)设计流程图如图6-2所示14
(三)程序的执行表达表如表6-3所示15
第七章Proteus仿真图及各单元电路16
1.程序正常仿真中如图7-2所示16
2.时钟震荡电路16
3.复位电路17
4.紧急情况17
附录一:
C程序源代码19
附录二:
原理图27
附录三:
元件清单表28
附录四:
主要参考文献28
第一章设计任务
交通灯的硬件和软件设计,本设计是交通灯的控制实验,必须要先了解实际交通灯的变化规律。
假设一个路口为东西南北走向,即十字路口,初始状态零为东西南北灯都熄灭并且都有5秒的准备时间。
然后转状态一东西绿灯通车,南北为红灯。
过段时间转状态二,东西黄灯闪几次转红灯,延时几秒,南北仍为红灯。
再转状态三南北绿灯通车,东西红灯。
过段时间转状态四南北绿灯闪几次转黄灯,延时几秒,东西仍为红灯。
最后循环至状态一。
交通信号灯模拟控制系统设计利用单片机的定时器定时,控制十字路口红绿灯交替点亮和熄灭,并且用LED数码管显示时间,但由于时间及水平的不足,在此实验中不显示。
用十二个发光二极管代替交通灯进行实验设计。
这次设计是《单片机应用技术(C语言版)》课程的综合训练,我们通过理论学习,课题选择,资料查阅,软、硬件设计,系统调试等环节,巩固所学的知识及提高应用水平.在此我们要学会从提出问题,观察与分析问题,到最终解决问题科学方法.提高自己的思维能力和动手能力,在设计中获得一些实操经验,更是要培养我们的工作作风和工作态度。
为今后的毕业设计、及从事单片机控制系统的设计与维护奠定坚实的基础。
这次课题设计的意义在于通过具体的控制系统的设计,掌握单片机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。
使我们能在实践教学环境中累积设计经验,开拓思维空间,全面提高个人的综合能力
第二章设计目的
课程设计是本专业集中实践环节的主要内容之一。
训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。
学生通过所做课题,熟悉单片机应用系统开发研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。
例如组成系统、编程、调试、绘图等。
使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
通过本课程设计,主要达到以下目的:
1.使学生增进对单片机的感性认识,加深对单片机理论方面的理解。
2.使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
3.使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础
第三章设计思路
交通灯的变化规律
按照常规我们假设一个十字路口为东西(主干道)南北(支干道)走向。
初始状态为状态1:
东西(主干道)方向红灯,南北(支干道)方向红灯。
经过过一段时间(5S)转换状态2:
东西(主干道)方向转为绿灯,南北(支干道)方向红灯。
并延时一段时间(25S)。
再转换到状态3:
东西(主干道)方向黄灯闪烁,南北(支干道)方向红灯。
过一段时间(5S)转换到状态4:
东西(主干道)方向红灯,南北(支干道)方向绿灯。
并延时一段时间(25S)转换到状态5:
东西(主干道)红灯,南北(支干道)黄灯闪烁,并延时一段时间(5S)后回到状态2。
在这些状态下,都有时钟倒数计时。
第四章STC-51芯片简介
STC-51单片机内部结构如图4-1所示,8051是STC-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图4-1
程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的STC-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
STC-51的引脚说明:
STC-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
STC-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图4-2是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
图4-2
Pin9:
RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位,见下图4。
此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
Pin30:
ALE/
当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
如果单片机是EPROM,在编程其间,
将用于输入编程脉冲。
Pin29:
当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
Pin31:
EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对内部无程序存储器的8031,EA端必须接地。
在编程时,EA/Vpp脚还需加上21V的编程电压。
第五章基础知识
(一)管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
8951是片内无程序存储器的供应状态芯片.因此,其最小应用系统必须在片外扩展EPROM.外接程序存储器的地址线A8-A15由P2口提供;
A0-A7由P0口通过地址锁存器提供.地址锁存器的锁存信号为ALE.指令数据由P0口读入.程序存储器
(二)定时器/计数器
定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用,并复习如何使用散转程序。
首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与注意点。
(三)定时器/计数器的概念
1.89C51单片机内有两个可编程的定时器/计数器T0、T1
当定时器/计数器用作“定时器”时,每经过1个机器周期(12个时钟周期),计数器加1。
当定时器/计数器用作“计数器”时,计数器在对应的外部输入管脚(T0为P3.4引脚,T1为P3.5引脚)上每发生一次1到0的跳变时加1。
使用“计数器”功能时,外部输入每个机器周期被采样一次。
当某一周期管脚状态采样为高电平而下一周期采样为低电平时,计数器加1。
由于检测下降沿跳变需要两个机器周期(24个时钟周期)的时间,所以技术频率最大值只能为时钟周期的1/24。
计数器对外部输入信号的占空比并无限制,但为了保证给定的电平信号在其改变之前至少被采样一次,外部输入信号必须至少保持一个完整的机器周期。
2.定时器/计数器的相关寄存器
与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD)、定时器/计数器控制寄存器(TCON)。
TCON已经在2.5节受控输出实例中介绍过,因此,在本例中主要介绍TMOD寄存器。
定时器/计数器工作方式寄存器(TMOD),字节地址89H,不可进行位寻址。
定时器/计数器工作方式寄存器(TMOD)的8位分为两组,高4位控制T1,低4位控制T0。
TMOD每一位的功能如下。
GATE:
门控位。
GATE=0,仅由运行控制位TRX(X=0,1)=1来启动定时器/计数器运行;
GATE=1,由运行控制位TRX(X=0,1)=1和外部中断引脚上的高电平共同来启动定时器/计数器运行。
C/T:
定时器模式和计数器模式选择位。
C/T=0,为定时器模式;
C/T=1,为计数器模式。
M1、M0:
工作方式选择位。
M1、M0的4中编码对应4种工作方式,对应关系见表5-1所示。
(四)定时器/计数器的4种工作方式
定时器/计数器的4种工作方式下的逻辑结构如表5-1所示。
M1
M2
工作方式
方式0,为13位定时器/计数器
1
方式1,为16位定时器/计数器
方式2,为初值自动重装的8位定时器/计数器
方式3,仅T0有效,将T0分为两个8位定时器/计数器
表5-1
1.方式0
定时器/计数器的工作方式0称为13位定时器/计数器的。
它由TLX的低5位和TLX的8位构成13位的计数器,此时TLX的高3位未使用。
改工作方式是为了和48系列单片机兼容而设计的一种工作方式,一般情况不使用方式0进行定时/计数。
方式0的控制方式与方式1完全相同,下面重点介绍方式1的控制方式。
2.方式1
定时器/计数器的工作方式1称为16位定时器/计数器。
它由TLX和THX构成,TLX计数溢出向THX进位,THX计数溢出置位TCON中溢出标志位TFX。
GATE位的状态定时器/计数器运行控制取决于TRX一个条件还是TRX和INTX引脚这两个条件。
当GATE=0时,则只要TRX被置为1,定时器/计数器即被允许计数(定时器/计数器的计数控制仅由TRX的状态确定,TRX=1计数,TRX=0停止计数)。
当GATE=1时,定时器/计数器是否计数由INTX输入的电平和TRX的状态共同确定:
当TRX=1,且INTX=1时,才允许定时器/计数器计数(定时器/计数器的计数控制由TRX和INTX两个条件控制)。
3.方式2
定时器/计数器的工作方式0和方式1再计数溢出后,计数器的值为0,需要通过程序重新装入计数初值。
定时器/计数器的工作方式1称为初值自动重装的8位定时器/计数器。
在该工作方式下,TLX作为计数器,当TLX计数溢出时,在置1溢出标志TFX的同时,还自动的将THX中的常数送至TLX,使TLX从该常数开始重新计数。
这种工作方式可以省去用户软件中重装常数的程序,简化定时常数的计算方法(确定计数初值),可以相当精确地确定定时时间。
4.方式3
工作方式3仅对定时器/计数器0有效,在该工作方式之下,定时器/计数器的0被拆成2个独立的定时器/计数器:
TL0、TF1。
TL0使用T0的状态控制C/T、GATE、TR0、INT0,而TH0被固定位一个8位定时器(不能作外部计数方式),并使用定时器/计数器1的状态控制位TR1、和TF1,同时占用定时器T1的中断源。
此时,定时器/计数器1可设定为方式0、方式1和方式2,作为串行口的波特率发生器。
(五)定时器/计数器的编程
1.定时器/计数器的初始化
定时器/计数器的初始化编程包括以下几个部分。
根据要求给定时器/计数器方式寄存器(TMOD)送一个方式控制字,以设定定时器/计数器的工作方式。
根据需要给TH和TL寄存器送初值,以确定需要的定时时间或计数的初值。
根据需要给中断允许寄存器(IE)送中断控制字,以开放相应的中断和设定中断优先级。
给TCON寄存器送命令字以启动或禁止定时/计数器的运行。
2.定时器/计数器初值的计算
计数器初值:
设计算器的模值位M,所需的计数值为C,计数初值设定为TC,则TC=M-C(M等于2的13次方,16次方,8次方)。
定时器初值:
设定时器的模值为M,需要的定时时间为T,定时器的初值设定为TC,则TC=M-T/t(M等于2的13次方,16次方,8次方)。
第六章主程序设计
(一)系统程序流程图如图6-1所示
图6-1
(二)设计流程图如图6-2所示
图6-2
(三)程序的执行表达表如表6-3所示
状态
持续时间/S
东西(主干道)
南北(支干道)
红
黄
绿
5S
亮
灭
2
25S
3
闪亮
4
5
6
循环状态二
表6-3
第七章Proteus仿真图及各单元电路
1.程序正常仿真中如图7-2所示
图7-1
2.时钟震荡电路
时钟震荡电路为单片机提供基本时钟,在MCS-51系列单片机内部有一个高增益反相放大器,其输入引脚为XTAL1,其输出端引脚为XTAL2。
只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自激励振荡器如图7-2所示
图7-2
3.复位电路
无论是在单片机刚开始接上电源时,还是在断电后或者发生故障后都要复位。
单片机复位是使CPU和系统中的其他功能部件都能恢复到一个确定的初始状态,并从这个状态开始工作,例如复位后PC=000H,使单片机从程序存储器的第一个单元取指令执行。
单片机复位的条件是:
必须使RST(第9引脚)加上两个机器周期以上的高电平。
复位电路如图7-3所示:
图7-3
4.紧急情况
外部中断0显示子程序P(3.0口),当出现突发交通状况时,必须使东西南北方向都为红灯以便于交警处理。
所以在设计中设置了外部中断0的显示子程序,当INT0接地时就触发了外部中断0,就执行紧急情况的子程序LED_ON()。
第八章总结
此次课程设计历时一个月,在此期间查阅了出课本以外的很多资料,当然了也包括对课本的全面复习,是我对这两年多以来所学的知识有了一个系统的连贯、全面的复习。
很多以前不太了解的知识都得到了进一步的理解和认知。
通过这次长达一个月的电子产品课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统锻炼的机会。
使我在单片机的基本原理、单片机应用系统开发过程,单片机控制过程以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面和Proteus程序仿真都向前迈了一大步,这件为我的成长注入更大的活力,坚定了我步入社会的信心。
由于本人的水平有限,设计中难免会有一些不合理的部分,系统的稳定性还有待提高。
最后,对在这个专周帮助我的所有同学和各位指导老师再次表示衷心的感谢!
C程序源代码
/*****************************************************************
*第一个状态:
主干道、支干道均亮红灯5S*
*第二个状态:
主干道亮绿灯30S、支干道亮红灯*
*第三个状态:
主干道黄灯闪3秒转亮红灯、支干道亮红灯3S*
*第四个状态:
主干道亮红灯、支干道亮绿灯25S*
*第五个状态:
主干道亮红灯、支干道黄灯闪3次转亮红灯3S*
*返回到第二个状态*
*
***************************************************************/
/*11.0952M晶振*/
#include<
reg51.h>
//头文件
intrins.h>
#definecharunsignedchar//宏定义
#defineintunsignedint//宏定义
sbitRED_ZHU=P1^0;
sbitYELLOW_ZHU=P1^1;
sbitGREEN_ZHU=P1^2;
sbitRED_ZHI=P1^3;
sbitYELLOW_ZHI=P1^
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 路灯 控制系统 学士学位 论文