资源描述
广西工学院理学院电科专业2012届毕业设计论文 基于单片机的交通信号灯控制系统的设计
1 绪论
今天,红绿灯安装在各个路口上,已经成为指挥交通车辆最普遍的交通技术。但是这种技术早在19世纪就已经出现了。
世界上最早的交通信号灯出现于1858年,在英国伦敦道口上安装了以燃煤气为光源的红,蓝两色的机械扳手式交通信号灯,用以指挥车辆的通行。接着1868年,在英国伦敦威斯敏斯特区的议会大厦前的广场上,出现了世界上最早的煤气红绿灯。 再到20世纪初,美国出现了以电气启动的红绿灯,这种红绿灯由红黄绿三种颜色圆形的投光器组成。红灯亮表示禁止车辆通行,绿灯亮表示允许车辆通行,黄灯闪烁表示警告。到了20世纪中期相继出现了带有各种红外线的红绿灯、压力探测红绿灯、扩音器红绿灯等各种交通信号灯。
交通信号灯的出现,使交通规则得到了很大的改善,对于车辆的管理和通行,交通事故的发生得到了明显的减少。1968年,联合国《道路交通和道路标志信号协定》对各种交通信号灯做了明确的规定。绿灯表示通行,在绿灯下,车辆向相应的方向行驶,除非另一种标志禁止某一种转向。红灯表示禁止,在红灯下,车辆必须在相应的停车线后停车。黄灯表示警告,在黄灯下,已经穿越停车线的车辆和行人应继续向前,而为超出停车线的车辆在停车线后等待。对于左转和右转的车辆在通过道口时,应先让在道口上行驶的车辆或者人行道行走的行人优先通行。
随着经济的快速发展,交通运输中出现了一些传统方法难以解决的问题。如:道路拥堵、塞车、交通事故等现象越来越严重,直接造成的经济损失也越来越大,而且还在以一定的速率在不断的增长。由于人民生活水平的提高,人们对交通安全也提出了更高的要求。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,提高交通的管理质量和服务要求,同时也提高了交通运输的安全性。并在一定程度上尽可能的降低由道路拥堵造成的经济损失,同时也大大的降低了人力资源的消耗。
中国是世界人口大国,而中国的车辆也在不断的增加,交通灯的管理控制更是起着重要的作用,而智能交通灯的出现更是发挥了他举足轻重的低位。它不仅可以替代了更多的人力资源,从而也带来了更多的经济和社会效益,为创造美好城市发挥着更大的作用。
2 课题的设计要求和设计方案
2.1 设计要求
2.1.1题目概述
道路交通信号灯是道路交通安全的产品,它可以加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。它适用于各种十字、丁字等交叉路口,由道路交通信号灯控制,指导车辆和行人安全而有序地通行。
2.1.2 设计任务
设计一种交通信号灯的控制系统。要求直观,简单。能够满足十字路口交通等的使用需求。
2.1.3 设计要求
1. 交通路口为十字路口。
2.马路为双向六车道,即要有左转灯,直行灯,右转灯。
3.要考虑人行横道的信号灯。
4.有显示设备可以显示通信时间。
5.要求通行时间可调。
2.2 设计方案
2.2.1 供电方案
系统要在正常而稳定的状态下工作,必须要有可靠的电源。而本次基于单片机的设计需要显示的芯片较多,电源供应量大,因此本次设计了如下三种方案。
方案一:利用独立的稳压电源供电。优点是可提供稳定而可靠电源,而且可以利用220V电压转化,不受各种因素的限制;缺点是各模块都采用独立电源,会增加本次设计的难度,而且对其他电路还会造成一定的干扰。
方案二:采用USB转接口5V电压供电,这样简单明了,但是单单一个5V电源供电可能会显得电源不足,而无法满足实际的需要。
方案三:采用USB转接口5V双电源电压供电,这样把本次设计分为两大模块,一是交通信号灯控制系统,二是万年历系统,采用双电源供电,一个为交通信号灯控制系统提供电源,另一个为万年历系统提供电源。这样即简单而又可提供稳定的电源。
考虑到实际情况和电路的简洁,本设计采用了第三套方案,此方案在电路的设计上可以把系统分为两大模块,使系统设计简单化,从而又可以提供稳定而可靠电源。而且在单电源断电的情况下不影响另一模块的工作。
2.2.2 输入方案
该系统要求能手动及智能控制改变交通信号灯的通行时间和万年历时间的调整。
方案一:采用8155扩展I/O 口及键盘、显示等。该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在I/O口线上接上按键开关。该方案优点是:编程更加简洁,使用更加简单,且成本更低。缺点就是功能有限。
综合考虑本设计的实际需要,在使用输入的时候不需要过于复杂的功能,因此直接在I/O口线上接上按键开关足以满足本次系统设计的需要,故采用方案二。
2.2.3 显示界面方案
本设计涉及到倒计时、状态灯、时间、温度等显示功能。基于功能需求,本设计考虑如下四种方案:
方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法胜任功能需求。
方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:采用LCD1602液晶显示,这种显示比较乐观,但是工作量大,而且设计复杂,再加上需要到的LCD1602较多,从经济上也不划算。
方案四:采用数码管、LED与LCD1602相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出,同时还要显示出年、月、日、时、分、秒、星期和温度。为了方便观看并考虑到实际情况,用数码管显示交通信号灯的倒计时,用LED显示交通灯的状态灯、用LCD1602显示年、月、日、时、分、秒、星期和温度。这种设计方案既满足系统功能要求,又减少了系统实现的复杂度。
2.2.4交通灯方案
2.2.4.1交通灯规则方案
本设计的交通灯以十字路口为模型,在实现基本的功能前提下增加了时间及温度的液晶显示。从而还增加了路口高峰期的智能化人工管理机制。
实际生活中交通信号灯的规则千变万化,在不同的路口上看到的交通信号灯的规则不一样,但是总体还是相差不大,也有一些根据实际的需要而设置不同的交通规则,本次系统交通规则的设置是根据现实生活中的交通规则和多加考虑各种现实因素结合起来而制定了以下交通规则。
下图所示为一种红绿灯规则的状态图:
图2.2 状态S2南北左拐通行
图2.1 状态S1南北直行通行
图2.4 状态S4东西左拐通行
图2.3 状态S3东西直行通行
共四种状态,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期,循环执行如下图所示:
图2.5 交通灯状态循环图
依据上述车辆行驶的状态图,可以列出正常模式下各个路口交通信号灯的逻辑表如下表所示(其中逻辑值“1”表示直行通行,逻辑值“0”表示禁止通行,逻辑值“L”表示左转通行):
表2.1 正常模式下工作表
S1的状态
E
S
W
N
逻辑值
0
1
0
1
显示时间
正常模式下为40S
S2的状态
E
S
W
N
逻辑值
0
L
0
L
显示时间
正常模式下为20S
S3的状态
E
S
W
N
逻辑值
1
0
1
0
显示时间
正常模式下为40S
S4的状态
E
S
W
N
逻辑值
L
0
L
0
显示时间
正常模式下为20S
程序就是在上述四种状态下循环转化的,而每种状态下又包括绿灯通行和黄灯闪烁警告状态。系统在正常模式下循环一个周期所需要的时间为120S,数码管显示的工作模式为半周期60.
2.2.4.2各种模式下通行时间
本系统结合实际的需要,而在上述四种状态的每种状态下再细分为绿灯通行、黄灯闪烁两种状态,总共八种工作状态。系统在正常工作模式下又可分为三种工作模式,分别为:正常模式、繁忙模式和特殊模式。各种模式下的时间分配如下表2.2:
表2.2 各模式下时间分配表
S1
S2
S3
S4
S5
S6
S7
S8
周期
正常模式
35S
5S
15S
5S
35S
5S
15S
5S
120S
繁忙模式
25S
5S
10S
5S
25S
5S
10S
5S
90S
特殊模式
50S
5S
15S
5S
50S
5S
15S
5S
150S
2.2.5 万年历设计方案
电路设计框图
本系统的电路系统框图如图2.6所示。AT89C51单片机对DS1302和DS18B20写入控制字并读取相应的数据,继而控制LCD1602作出对应的显示,同时也向交通信号灯外部发出定时中断,从而改变交通信号灯的工作模式。
LCD1602液晶显示模块
AT89C51
主控模块
键盘控制模块
DS18B20温度模块
定时外部中断模块
DS1302时钟模块
图2.6统硬件框图
3 芯片的介绍及应用
3.1 AT89C51单片机介绍及应用
单片微型计算机简称单片机,同时又称为微控制器、嵌入式微控制器等,它属于第四代电子计算机。它把各种芯片电路集成在一块芯片上,因此它具有体积小、抗干扰能力强、功耗低、可靠性高以及低廉的价格。它广泛应用于工业过程控制、测控系统及各种智能仪器仪表等。因此国际上逐渐采用微控制器(MCU)代替单片微型计算机(SCM)这一名称。微控制器可以更准确的反应出单片机的本质,但单片机这一名称以为大多数人所接受,所以单片微型计算机即是单片机,同时又称为微控制器。
3.1.1单片机的引脚及功能
AT89C51单片机的 引脚图如图3.1 所示
图3.1 AT89C51单片机引脚图
VCC:电源电压
GND:地
P0口:P0口是一个漏极开路型8位双向I/0口,即数据/地址总线的复用口。当它作为输出端口使用时,每位能驱动8个TTL逻辑门电路。
P1口:Pl 口是一个带内部上拉电阻的8位双向I/O口,Pl口的输出缓冲级能驱动4个TTL逻辑门电路。当我们对端口写入“1”时,通过内部上拉电阻来把端口拉到高电平,此时P1口可做为输入端口。当P1口做为输入口时,由于内部存在上拉电阻,当被外部引脚拉低时会输出数据。P1口除了以上功能外,最重要的是它的第二功能如表3.1所示。
表3.1 P1口引脚的第二功能
端口引脚
第二功能:
P1.5
MOSI(用于ISP编程)
P1.6
MOSI(用于ISP编程)
P1.7
MOSI(用于ISP编程)
P2口:P2口也是一个带有内部上拉电阻的8 位双向I/O 口。P2 的输出缓冲级也能驱动4 个TTL逻辑门电路。当我们对端口写入“1”时,通过内部上拉电阻来把端口拉到高电平,此时P2口可做为输入端口。当P2口做为输入口时,由于内部存在上拉电阻,当被外部引脚拉低时会输出数据。当访问外部程序存储器或16位地址外部数据的存储器时,P2口输出高8位数据地址。当访问8 位外部数据存储器地址时,P2口的内容在整个访问过程将不会改变。
P3 口:P3 口也是一个带有内部上拉电阻的8 位双向I/0 口。P3 口输出缓冲级也能驱动4 个TTL逻辑门电路。当我们对端口写入“1”时,通过内部上拉电阻来把端口拉到高电平,此时P3口可做为输入端口。当P3口做为输入口时,由于内部存在上拉电阻,当被外部引脚拉低时会输出数据。P3口除了以上用途外,最重要的是它的第二功能如表3.2所示。
表3.2 P3口引脚的第二功能
端口引脚
第二功能:
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
/INT0(外中断0)
P3.3
/ INT1(外中断1)
P3.4
T0(定时/计数器0外部输入)
P3.5
T1(定时/计数器1外部输入)
P3.6
/ WR(外部数据存储器写选通)
P3.7
/ RD(外部数据存储器读选通)
P3口还可用于接收一些Flash闪速存储器的编程及程序的校验控制等。
RST:复位输入引脚。振荡器在工作时,RST引脚将会出现两个或两个以上的机器周期高电平来使单片机进行复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。
ALE/PROG(————):在访问外部数据存储器或程序存储器时,ALE(地址锁存)主要是利用输出脉冲来锁存地址低8位字节。ALE还可以用于对外输出时钟信号或定时功能,因为ALE时刻以时钟振荡器的1/6频率输出固定的脉冲信号。
值得注意的是:当我们在访问外部数据存储器时将会跳过一个ALE脉冲。在F1ash存储器编程期间,该引脚还可用于输入编程脉冲。还可以通过特殊的功能寄存器中的8EH单元的D0位置来禁止ALE工作。执行该操作后,需要通过MOVX和MOVC指令ALE才能被激活,从而恢复工作状态。在执行单片机外部程序时,ALE应设置为无效。
PSEN(————)程序的储存是在(PSEN(————))允许输出外部程序存储器时进行,当单片机需要进行读写数据时,此时该引脚在每个周期下就会两次有效,从而发出两次脉冲,当访问外部的数据存储器时,则是发出一次脉冲信号。
EA(——)/VPP:外部访问允许。当EA端设置为低电平时,CPU可单独访问外部程序存储器(即:0000H-FFFFH地址)。
XTAL1:振荡器的反相放大器和内部时钟发生器的输入端。
3.1.2单片机最小系统的设置
本次基于单片机交通信号灯控制系统的设计的单片机最小系统设置的如下图所示:
图3.2 AT89C51单片机最小系统图
3.2 LCD1602芯片介绍及应用
3.2.1 液晶显示器的介绍
液晶显示器有多种分类方法,通常按显示的方式分可分为字符式、段式、点阵式等。液晶显示器即可显示黑白又可显示多彩色灰度,因此可分为黑白显示器和彩色显示器。如果按驱动方式分,它又可以分为单纯矩阵驱动(Simple Matrix)、静态驱动(Static)和主动矩阵驱动(Active Matrix)三种。液晶显示器它具有厚度薄、体积小,适用于大规模集成电路的驱动等特点,目前已广泛应用在数字摄像机、便携式电脑、MP3、MP4、PDA移动通信工具等领域。
3.2.2 液晶显示器各种图形的显示原理
液晶显示器是利用液晶的物理特性,通过高低电压来控制显示的区域,高电平则亮,低电平则灭,这样就可以显示出图形。液晶显示器图形的显示是通过N*M个液晶显示单元构成,通过控制各个显示单元的亮暗而达到显示图形的目的。例如一个液晶显示器有64行显示屏,而每行有128列,每字节又由8列组成,因此每行可显示16个字节,即整个显示器可显示1024个字节。最后通过控制液晶显示相应位置的亮暗从而显示出每字节上的内容。
3.2.3 LCD1602的基本参数及引脚功能
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,本次设计采用16脚(带背光)来显示年、月、日、时、分、秒、星期和温度。各引脚接口说明如表3.3所示:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL是显示器对比度调整端,当接地信号时液晶对比度最高,当接正电源时对比度最弱,对比度的高低将会影响液晶显示器的显示,对比度过高时会产生“鬼影”。因此我们通常接一个10K的电位器来调节。
第4脚:RS是寄存器的选择,高电平表示数据寄存器、低电平表示指令寄存器。
第5脚:R/W是信号线的读写,当高电平时表示正在进行读操作,当低电平时表示正在进行写操作,如果RS和R/W同时为低电平时可进行显示地址或写入指令,如果RS为低电平且R/W为高电平时可进行读取信号,如果RS为高电平R/W为低电平时可进行写入数据。
第6脚:E端是使能信号端,当E端由高电平变化为低电平时,液晶模块命令开始执行。
第7~14脚:D0~D7是8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
表3.3引脚接口说明表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
3.2.4 LCD1602的指令说明及时序
LCD1602内部液晶显示模块控制器指令共11条,如表3.4所示:
LCD1602的读写操作、光标操作以及屏幕显示等都是通过各种指令程序而实现的,具体说明如下:(注:1为高电平,0为低电平)
指令1:清显示,指令码由01H复位到00H位置。
指令2:光标复位,执行时光标将返回到00H位置。
指令3:光标以及显示模式的设置。光标的移动方向为:高电平表示右移,低电平则表示左移。S:屏幕文字是否进行右移或者进行左移。高电平表示有效,低电平表示无效。
指令4:显示控制开关。B:光标闪烁的控制,高电平表示闪烁,低电平则表示不闪烁。
C:光标开关的控制,高电平表示有光标,低电平则表示无光标 。D:整体显示的开关控制,高电平表示打开显示,低电平则表示关闭显示。
指令5:光标或者显示移位 S/C的控制。高电平表示文字移动的显示,低电平表示光标的移动。
指令6:功能命令的设置。DL为高电平表示4位总线,低电平则表示8位总线。F: 低电平表示显示5x7的点阵字符,高电平表示显示5x10的点阵字符。 N:低电平表示单行显示,高电平表示双行显示
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址的设置。
指令9:光标地址和读忙信号。 BF:表示忙标志位,高电平时表示忙,此时模块不能进行命令或者数据的接受,低电平则表示不忙。
指令10:写数据。
指令11:读数据
表3.4 控制命令表
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数据到CGRAM或DDRAM)
1
0
写入的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
LCD1602液晶显示器有多种,其中市场上最常见的是HD44780。HD44780内置了DDRA(80字节),CGRAM(64字节,用来存放用户自定义字符,每个字符需要用到8个字节,所以以一共可以存放8个用户自定义字符),CGROM(内存了160个字符,包括了标准的ASCII码表上的字符等)。与HD44780相兼容的芯片时序表如表3.5所示:
表3.5 基本操作时序表
读状态
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
输入
RS=L,R/W=L,D0—D7=指令码,E=高脉冲
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
D0—D7=数据
写数据
输入
RS=H,R/W=L,D0—D7=数据,E=高脉冲
输出
无
读写操作时序如图3.3和3.4所示。
图3.3 读操作时序
图3.4写操作时序
LCD1602液晶显示是一个慢显示器件,所以每次在执行指令时一定要先进行确认模块的忙标志位是否为低电平,否而指令将会失效。要进行字符的显示,首先要进行输入显示字符的地址,实际就是输入显示的内容。LCD1602内部显示地址如图3.5所示。
图3.5 1602LCD内部显示地址
对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标将会自动右移。液晶模块在繁忙状态下将不能输入指令。
3.2.5 LCD1602液晶显示模块原理图
LCD1602显示模块电路,首先VSS接地信号,VDD接5V高电平,VEE接10K的变阻器,变阻器两端分别接5V电压和大地。接着RS、RW和E是数据信号线分别接单片机的P2.5、P2.6和P2.7引脚。最后D0到D7接单片机的P0.0到P0.7引脚,要接排阻。而实际的LCD1602还有两个背光调节引脚,分别是BLA和BLK接5V电压和大地。
P2.5
P2.6
A P2.7
T
8 P0.0
9 P0.1
C P0.2
5 P0.3
1 P0.4
P0.5
P0.6
P0.7
VSS VEE VDD
RS L
RW C
E D
1
D0 6
D1 0
D2 2
D3
D4
D5
D6
D7
5V
10K
图3.6 LCD1602显示电路
3.3 DS1302芯片介绍及应用
DS1302是美国 DALLAS 公司推出的一种高性能、低功耗的时钟芯片,它采用 SPI 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送一个或多个字节的时钟信号和 RAM数据。它可提供年、月、日、星期、时、分、秒的计时显示,各月天数它可进行自动的调整,同时还具有闰年的补偿功能。工作电压范围为2.5~5.5V。DS1302芯片采用双电源供电,即有主电源和备用电源。同时还可设置备用电源的充电方式,提供了对备用电源进行电流充电的能力。DS1302也可用于数据的记录, 特别是对于某些特殊意义的数据点的记录上,它能实现数据和数据出现的时间同时记录,因此在各种测量系统中得到广泛的应用。
3.3.1 DS1302引脚功能
DS1302芯片的外部引脚分配如图3.7所示。
图3.7 DS1302的外部引脚分配
Vcc1:表示主电源;Vcc2:表示备份电源。如果 Vcc2>Vcc1+0.2V, 则 Vcc2向 DS1302供电,如果 Vcc2< Vcc1,由则Vcc1向 DS1302供电。
SCLK:串行时钟,输入,控制数据的输入与输出。
I/O:三线接口时的双向数据线。
CE:输入信号。DS1302在进行读写数据时,此位必须为高。该引脚有两个功能:首先是CE 开始控制字进行访问移位寄存器的逻辑控制;其次是CE 提供结束单字节或者多字节数据的传输方法。
3.3.2 DS1302读写说明
DS1302是 SPI 总线方式来驱动。它不仅需要向寄存器写入控制字, 同时还需要读取相应寄存器的数据。
1:DS1302的读写寄存器
DS1302的时间寄存器总共有12个,其中读寄存器(81H-8DH)和写寄存器(81H-8DH)是以BCD码格式进行数据的存取。
表3.6 DS1302的读写寄存器
写寄存器
读寄存器
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
80H
81H
CH
10秒
秒
82H
83H
10分
分
84H
85H
12/24
0
10
时
时
AM/PM
86H
87H
0
0
10日
日
88H
89H
0
0
0
10月
月
8A
8BH
0
0
0
0
0
星期
8C
8DH
10年
年
8E
8FH
WP
0
0
0
0
0
0
0
DS1302小时寄存器(84H、85H)的位7应用于DS1302是运行的模式。即12小时制还是24小时制。当位7为1时,表示12小时模式,此时相应的寄存器位5为高时表示AM,为低时表示PM。当位7为0时, 表示24小时模式。
DS1302秒寄存器(80H、81H)的位7应用于时钟暂停标志(CH)位。当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
DS1302 控制寄存器(8EH、8FH)的位7是写入保护位,其它7位均为0。当WP位为0时可以开始进行对时钟和RAW进行写入,当WP位为1时,禁止对寄存器的写入操作。
2:DS1302中静态RAM地址
DS1302在静态工作模式下的RAW地址如表3.7所示。
表3.7 静态 RAM 的地址表
读地址
写地址
数据范围
C1H
C0H
00-FFH
C3H
C2H
00-FFH
C5H
C4H
00-FFH
.
.
.
.
.
.
.
.
.
FDH
FCH
00-FFH
3:DS1302的工作模式寄存器
DS1302的工作模式寄存器又分为时钟突发模式寄存器、RAW突发模式寄存器等。突发模式是指一次传送多个字节的时钟信号和 RAM 数据。 突发模式寄存器如表3.8所示。
表3.8突发模式寄存器
工作模式寄存器
读寄存器
写寄存器
时钟突发模式寄器
CLOCK BURST
BFH
BEH
RAW突发模式寄存器
RAW BURST
FFH
FEH
4:DS1302控制字符表
DS1302的控制字最高位(位7)必须是1,才能进行数据的写入,否则不能写入数据;次高位(位6)表示RAW数据或者时钟日历的存取,当为1时表示RAW数据存取,为0则表示时钟日历的存取;接着是数据操作地址(位5-位1);最后是位0表示数据的读写操作,当为1时表示读操作,为0表示写操作。如表3.9所示。
表3.9 控制字(即地址及命令字节)
5:DS1302的读写时序
DS1302数据的读写规则是在控制字的基础上从低位到高位的输出,每当控制字指令输入后下一个SCLK脉冲上升沿到来时,数据就会被写入到DS1302中,数据从最低位开始写入,下一个SCLK脉冲的下降沿到来时,就会读出DS1302里面的数据,读出的规则也是从低位到高位。
图3.8 数据读写时序
3.3.3 DS1302时钟采集模块原理图
A
T P1.5
8
9 P1.6
C
5 P1.7
1
X1 D X2
CE S
1 VCC2
I/0 3
0 VCC1
SCLK 2
GND
3V
5V
32.768MHz
图3.9 DS1302原理图
此图为DS1302时钟芯片模块采集原理图,X1和X2接的是时钟晶振,,大小为32.768MHz,VCC1和VCC2分别接3V和5V电压,I/O、SCLK和ST分别接单片机的P1.6、P1.7和P1.5引脚。
3.4 DS18B20芯片介绍及应用
DS18B20数字温度计是DALLAS公司生产的One-Wire,即单总线器件,它具有体积小而且线路简单的优点。它只有三个引脚,分别是接高电源、地信号和一条数据信号线,设计简单而又方便。因此它广泛应用于温度的测温系统。
DS18B20除了体积小、线路设计简单优点外,它在实际应用中不需要其它外部任何器件即可实现温度的测温功能,测量温度范围为-55—+125 °C 之间,如超出检测的温度,DS18B20将会发出报警信号。数字温度计的读取可以从9位到12位选择。可用数据线供电,供电范围+3.0-5.5V电压。
3.4.1 DS18B20引脚功能
DS18B20器件的封装引脚排列及引脚功能的描述如图3.10和表3.10。
图3.10(底视图)
表3.10 DS18B20引脚功能
序号
名称
引脚功能描
1
GND
地信号
2
DQ
数据输入/输出引脚。开漏单总线接口引脚。当被用在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。
3.4.2 DS18B20的应用及原理图
DS18B20采用的是one-Wire总线协议方式连接,实际就是在一根数据线进行数据的双向传输,,然而对于51单片机在硬件上并不支持单总线协议方式的连接,因此我们采用软件的方法来模拟单总线的协议方式来完成对DS18B20温度芯片的访问。
DS18B20的读写是在一根I/O线上进行,因此,对数据的读写有着严格的要求。DS18B20的通信协议也有着严格的要求来确保数据传输的正确性和完整性。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该通信协议又细分了几种信号的时序,即:初始化时序、读时序、写时序。然而在这几种时序的工作下都是以主机作为主设备,单总线器件作为从设备。数据的传输是在主机先启动读入时序,读出数据后进入写时序命令,从而启动读写时序功能,完成数据的传输。数据和命令的传输都是低位在先。下面为DS18B20在本次设计的温度采集模块原理图3.11所示。
VCC
DQ DS18B20
GND
A
T
8
9
C
5
1
VCC
P1.0
图3.11 DS18B20温度采集原理图
温度采集模块图主要是由DS18B20芯片进行,通过AT89C51单片机进行数据的传输和接受,从而再送到LCD1602,从LCD1602显示出来。DS18B20只有三个引脚,分别是VCC为正电源接5V电压,GND地信号接大地,最后是DQ数据输入/输出引脚连接AT89C51单片机的P1.0引脚。
4 程序的设计流程
4.1 交通灯程序设计的流程
4.1.1倒计时显示的理论分析
利用定时器中断,设置 TH0= (65536-50000)/256,TH1=(65536-50000)%256,即每0.05秒中断一次。每到第20次中断即过了20*0.05秒=1秒时,使时间的计数值减1,便实现了倒计时的功能。
4.1.2状态灯显示的理论分析
黄灯闪烁同样可以利用定时器中断。每到第10次中断即过了10*0.05秒=0.5秒时,使黄灯标志位反置,即可让黄灯1秒闪烁一次。
4.1.3 交通灯主程序设计流程
交通灯系统在正常模式下工作的
1. 首先,正常进入系统开始运行,交通灯在默认正常模式下工作,数码管显示时间为60。
2. 交通信号灯开始正常工作,右转弯为常亮灯(绿色)。南北直行方向绿灯亮,其它方向亮红灯,数码管开始倒计时,南北方向从40倒计,东西方向从60倒计。
3. 35S后,南北直行方向灭绿灯,闪烁黄灯,闪烁时间为5S。
4. 40S后,南北直行方向亮红灯,左转方向亮绿灯,亮时15S,同时数码管从20倒计,其它不变。
5. 55S后,南北左转方向灭绿灯,闪烁黄灯,闪烁时间为5S。
6. 60S后,南北左转方向黄灯灭,亮红灯,数码管从60倒计,东西直行方向亮绿灯,数码管从40倒计,其它不变。
7. 95S后,东西直行方向灭绿灯,闪烁黄灯,闪烁时间为5S。
8. 100S后,东西直行方向灭黄灯,亮红灯,左转方向亮绿灯,亮时为15S,同时数码管从20倒计,其它不变。
9. 115S后,东西左转方向灭绿灯,闪烁黄灯,闪烁时间为5S。
10. 120S后,东西左转方向灭黄灯,亮红灯,数码管从60倒计。南北直行亮绿灯,数码管从40倒计。
开始
南北直行通行东西禁止
南北左转通行东西禁止
AT89C51初始化
南北直行黄灯闪烁
南北左转黄灯闪烁
通行35秒
Y
N
闪烁5秒
Y
N
通行15秒
Y
N
闪烁5秒
Y
N
东西黄灯闪烁
东西直行通行南北禁止
东西左转通行南北禁止
东西直行黄灯闪烁
通行35秒
Y
N
闪烁5秒
Y
N
通行15秒
Y
N
闪烁5秒
Y
N
图4.1 程序设计流程图
4.2万年历的设计流程
万年历的设置一方面可以更好的显示时间和温度,其次可以对交通信号灯系统的控制,定时向交通信号灯控制系统发出外部中断,从而该变当前工作模式,以致在实际中更具有实用性。
图4.2 万年历主程序流程图
此次万年历的设计功能主要是两个,一个是通过LCD1602显示时间和温度,另一个则是为交通信号灯提供外部定时中断,从而改变当前的工作模式。而万年历的设计流程和普通设计的一样,开始先是对各种芯片的初始化,接着是从DS1302、DS18B20读取时间和温度信息,从而传送到AT89C51单片机进行时间、温度的分离转化,再传送到LCD1602显示出来,其次是时间的调整和校正,通过调整按键可以对秒、分、时、星期、日、月和年进行加减1的修改。最近是定时发出外部中断,利用IF语句进行判断,适合条件则输出低电平到交通信号灯,否则为高电平。从而达到了实验的目的。
4.3万年历时间的调整流程
本次万年历系统的设计只是采用DS1302进行时间的扫描和读取,而没用进行掉电保存电路的设计,因此在每次硬件的开启,系统都是进入初始化设置,以致要进行时间的调整和校正。
开始
控制调整切换键
加按键
减按键
秒加1
秒减1
控制调整切换键
加按键
减按键
分加1
分减1
控制调整切换键
加按键
减按键
时加1
时减1
控制调整切换键
加按键
减按键
星期加1
星期减1
控制调整切换键
加按键
减按键
日加1
日减1
控制调整切换键
加按键
减按键
月加1
月减1
控制调整切换键
加按键
减按键
年加1
年减1
退出时间
调整按键
结束
图4.3 时间调整控制图
时间的调整程序设计。首先,系统在正常工作下,由DS1302时钟芯片进行时间的读取,传递到AT89C51单片机进行对时间进行分离和转化,最后由LCD1602显示出来。在进行时间的调整和校正时,先进
展开阅读全文