第一篇:基于单片机的冰箱温度智能控制系统的设计
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
编号:_______________
商丘工学院
毕业论文(设计)
题 目
冰箱温度控制系统设计
系
别
机电工程学院
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
冰箱温度控制系统设计
专
业
电气自动化
学生姓名
梁子鹏 成绩
指导教师
吴德刚
2012年04月
摘要
单片机即单片微型计算机,是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域。
本课题设计的电冰箱的电控系统主要应用AT89C51单片机作为核心控制元件进行分析和设计,对各部分的软件编程、硬件电路设计、及调试进行了介绍。电冰箱温度控制系统是利用温度传感器DS18B20采集电冰箱冷藏室和冷冻室的温度,通过INTEL公司的高效微控制器MCS-C51单片机进行数字信号处理,从而达到智能控制的目的。本系统可实现电冰箱冷藏室和冷冻室的温度设置、电冰箱自动除霜、开门报警等功能。
本文在第一章介绍了电冰箱的系统组成及工作原理,第二章论述了本控制系统的硬件设计部分。第三章论述了系统的软件设计部分。
通过对直冷式电冰箱制冷系统的改进和采用模糊控制技术,实现了电冰箱的双温双控,使电冰箱能根据使用条件的变化迅速合理地调节制冷量,且节能效应明显。
关键词:AT89C51 单片机 A/DC0809 智能仪器
II
目 录
前言....................................................................III 第一章 电冰箱的系统概述..................................................2 1.1电冰箱的设计原理...................................................2 1.2工作过程的设计....................................错误!未定义书签。1.3冷冻室冷藏室温度检测采样电路......................错误!未定义书签。第二章 硬件部分设计.......................................................4
2.1 系统结构..........................................................4 2.2冷冻室冷藏室温度检测采样原理.......................................4 2.2.1主要特性.........................................................4 2.2.2管脚说明.........................................................5 2.2.3振荡特性.........................................................6 2.2.4计算器...........................................................6 2.3 过欠压保护电路....................................................6 2.4 电压检测装置的设计...............................错误!未定义书签。2.5 功能按键的设计....................................................7 2.6开门报警点路.......................................................8
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。III
冰箱温度控制系统设计
第三章 软件部分的设计.....................................................9
3.1主程序的设计.......................................................9 3.2始化程序的设计.....................................................9 3.3 关闭压缩机的设计.................................................10 结论.................................................................11 参考文献.............................................................12
IV 错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
前言
单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为自动化和各个测控领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其在日常生活中发挥的作用也越来越大。人们对家用电冰箱的控制功能越来越高,这对电冰箱控制器提出了更高的要求。多功能,智能化是其发展方向之一,传统的机器控制,简单的电子控制已经难以满足发展的要求。而采用基于单片机温度控制系统,不仅可大大缩短设计新产品的时间,同时只要增加少许外围器件在软件设计方面就能实现功能的扩展,以及智能化方面的提高,因此可最大限度地节约成本。本文即为基于单片机的电冰箱温度控制系统传统的电冰箱温度一般是由冷藏室控制,冷藏室、冷冻室的不同温度是通过调节蒸发器在两室的面积大小来实现的,温度调节完全依靠压缩机的开停来控制.但是冰箱内的温度受诸多因素的影响,如放入冰箱物品初始温度的高低、存放品的散热特性及热容量、物品在冰箱的充满率、环境温度的高低、开门的频繁程度等.因此对这种受控参数及随机因素很多的温度控制,既难以建立一个标准的数学模型,也无法用传统的PID调节来实现.一台品质优良的电冰箱应该具有较高的温度控制精度,同时又有最优的节能效果,而为了达到这一设计要求采用模糊控制技术无疑是最佳的选择.错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。1
冰箱温度控制系统设计
第一章 电冰箱的系统概述
1.1电冰箱的设计原理
直冷式电冰箱的控制原理是根据蒸发器的温度控制制冷压缩机的启动与停止,使冰箱内的温度保持在设定的温度范围内。一般,当蒸发器温度高至3~5°C时,启动压缩机制冷,当温度低于-10°C~-20°C时,停止制冷。本电冰箱电控系统要完成冷冻室及冷藏室的温度检测和动态显示的功能,霜厚检测及除霜的功能,开门报警功能,温度设置功能,以及电源过欠压保护功能。此设计的电冰箱电控系统是以AT89C51作为主控制芯片,ADC0809为模数转换芯片,AD590温度传感器为温度检测元件,液晶显示器,按键开关等元器件组成,通过软硬件结合实现键盘扫描,液晶显示,I/O口扩展功能。该系统具有简洁,操作简便,实用方便的特点,设计的总框图如下图1-1所示;
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
显示器冷冻室温放度传感器大器冷藏室温放度传感器大器键盘时钟电路复位AT89C51单片机锁存器A/D转换器过欠压保护电源霜厚传感器比较器功放压缩机加热丝
图1-1系统总体设计硬件方框图
直冷式电冰箱的控制原理是根据蒸发器的温度控制制冷压缩机的启、停,使冰箱内的温度保持在设定温度范围内。冷冻室用于冷冻食品通常用于冷冻的温度为-3C~-15C,冷藏室用于相对于冷冻室较高的温度下存放食品,要求有一定的保鲜作用,不能冻伤食品,温度一般为0C~10C,当测得冷冷冻室温度高至-3C ~0C时或者是冷冻室温度高至10C~13C是启动压缩机制冷,当冷冻室温度低于-15C~-18C或都冷藏室温度低
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。3
冰箱温度控制系统设计
于0C~-3C时停止制冷,关断压缩机。采用单片机控制,可以使控制更为准确、灵活。
1.2工作过程的设计
根据冷藏室和冷冻室的温度情况决定是否开压缩机,若冷藏室的温度过高,则打开电磁冷门V1,关闭阀门V2,V3,同时打开压缩机,产生高温高压过热蒸气,经过冷凝器冷凝,干燥过滤器干燥,毛细节流管降压后,在蒸发器汽化制冷,产生低温低压的干燥气体。经过电磁阀门V1 流入冷藏室,使冷藏的温度迅速降低,当温度达到要求时关闭压缩机,同时关闭电磁阀门V1。若是冷冻室的温度过高,则应打开V2关闭V1, V3。电磁阀门V3主要用于冷冻室的化霜。需要化箱时打开V3,从压缩机流出的高温高压气体流经冷冻室可匀速将冷冻室霜层汽化。达到化霜的效果。一般化霜的时间要短,不然会伤存放的食品。
1.3 冷冻室冷藏室温度检测采样电路
利用AD590温度传感器完成温度的测量采样,把转换成电量值的温度值的模拟量送入ADC0809的其中一个通道进行A/D转换,将转换的结果送入单片机内,控制压缩机的开停,并结合软件编程,进行温度值变换之后送入数码管显示。
第二章 硬件部分设计 错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
2.1系统结构
控制系统结构主要由电源开关,电压检测装置,温度传感器,功能按键,单片机,延时电路,显示电路,指示灯电路,除霜装置和故障报警等构成。
2.2冷冻室冷藏室温度检测采样原理
AD590作为温度传感器,安装于冷藏室和冷冻室内的内侧壁。AD590在25℃(298.2K)时,理想输出电流为298.2µA,但实际上存在一定误差,可以在外电路中进行修正。如图3-12所示,将AD50串联了一个可调电阻R12,在已知温度下调整电阻值,使输出电压V0满足1mV/K的关系(如25℃时,V0应为298.2mV)。调整好后,固定可调电阻,即可由输出电压V0读出AD590所处的热力学温度。冷冻室和冷藏室的温度分别经AD590感测并转换为电压量后,通过电压跟随器分别输入ADC0809的两个模拟通道INT0和INT1,进行模拟量到数字量的转换。转换后的数字量送入单片机内,结合编程,控制压缩机的开启于停止工作,并通过转换,在LED中进行温度值的显示。AD590检测采样冷藏室温度电路如图2-1所示:
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。5
冰箱温度控制系统设计
+12VAD590R16 100ΩR17 950Ω
图2-1冷藏室温度检测电路
R1810kΩ+∞-R1910kΩ ADC0809 IN12.2.1 主要特性:
与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM 编程I/O线定位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路
2.2.2 管脚说明
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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门电流,当P上2口被写“1”时,其管脚被内部拉电阻拉高,且作为输入。并因此作为 6 错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
2.2.3 振荡特性
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。7
冰箱温度控制系统设计
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
2.2.4 计算器
(1)算术/逻辑部件ALU:用以完成+、-、*、/ 的算术运算及布尔代数的逻辑运算,并通过运算结果影响程序状态寄存器PSW的某些位,从而为判断、转移、十进制修正和出错等提供依据。
(2)累加器A:在算术/逻辑运算中存放一个操作数或结果,在与外部存储器和I/O接口打交道时,进行数据传送都要经过A来完成。
(3)寄存器B:在 *、/ 运算中要使用寄存器B。乘法时,B用来存放乘数以及积的高字节;除法时,B用来存放除数及余数。不作乘除时,B可作通用寄存器使用。
(4)程序状态标志寄存器PSW:用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。
2.3过欠压保护电路
当电源电压小于176V或大于240V时,压缩机应自动停机并报警显示。为了使电冰箱安全可靠地运行,要求其电源电压在176V~240V之间。因此,采用过压欠压保护以提高电源的可靠性和安全性。温度是影响电源设备可靠性的最重要因素,根据有关资料分析表明电子元器件温度升高,可靠性即会下降。为了避免功率器件过热造成损坏,需要在电源设置电源的过欠压保护电路,电源的过欠压电路如下图2-2所示:
+5VR20 100KΩR21 100ΩTIL113220V~12VC17 +470µ-D2~D5 IN407R2410KΩ1KΩR23-+R2510KΩ∞LEDD6R22 200ΩC180.1µFADC0809 IN2 错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
图2-2电源过欠压采样保护电路
2.4电压检测装置的设计
电压检测装置是为了保护系统的稳定运行,采用WB系列电压越限报警传感器WB系列电压越限报警传感器以电压隔离传感器为基础,增配比较器电路、基准电压设定电路、输出驱动电路组成,用来隔离监测主回路中的交流或直流电压,当被监测的电压超过预先设定的上限值,或低于预先设定的下限值时,给出开关量控制信号。
主要特点:
1.测控一体化,体积小、精度高、反应快; 2.具有瞬态干扰抑制功能,防止误动作; 3.报警界限值可在设定值(±20%)内连续可调; 4.密封式继电器触点输出,触点寿命>30万次;
5.隔离电压:交流监测>2.5kVDC,1分钟;直流监测>1.5kVDC,1分钟 6.输入过载能力:10倍阈值,持续5秒;
2.5 功能按键的设计
因本系统使用的按键数目少,故按键采用硬件去抖。按键电路用两个与非门构成一个RS触发器。当按键未按下时输出为1;刚键按下时输出为0。此时即使用按键的机器性
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。9
冰箱温度控制系统设计
能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原来状态A,双稳态电路的状态不会改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规矩形波。
2.6 开门报警电路
本设计含开门报警功能,当开门延时2min后发声报警,用于提醒使用者关门,以达到节电节能,延长电冰箱的使用时间,其电路图如图2-3所示:
+5v9013T1R309013T2扬声器R291kΩP1.2R311.5KΩC21+10µFAT89C51+5VD7LED门开关KP1.0
图2-3开门报警电路 10 错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
第三章 软件部分的设计
电压源主要用于为AT89C51,ADC0809,8279,光敏二极管,LED,报警电路等器件及电路提供稳压源。电源(Vcc)是整个实验板正常工作的动力源泉。电源电压过大会大大缩短芯片的工作寿命,严重的会烧毁芯片及其它元器件;过小将不能驱动实验板工作电路。因此设定合适的电源电压值非常重要。此实验板主要芯片工作电压均位+5V左右,所以采用7805三端稳压 芯片将+12V整形为+5V直流给整个实验板供电,用LM7805设计的+5V稳压电源电路。
3.1主程序的设计:
主程序由初始化,键盘扫描,显示,温度采集,温度控制和定时化霜子程序组成,为系统软件的主干部分,化霜采用定时化霜,每三十分钟化霜一次,化霜原理见概论电冰箱式作原理部分。
3.2始化程序的设计:
初始化模块主要完成初始化I/O口、中断、内存单元,并读出存放在闪烁存储器上的温度设定值。温度设定值存放在闪烁存储器上即使断电也可保存。程序如下:
INTI1:CLR A
MOV DPTR , #20H MOVC A , @DPTR
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。11
;读取冷藏室温度设定值
冰箱温度控制系统设计
LCALL DLY_100MS MOV 60H , A INC DPTR
;延时确保数据读完
;读取冷藏室温度设定值
MOVC A , @DPTR LCALL DLY_100MS MOV 61H , A MOV 64H , #00H SETB EX0 SETB IT0 SETB EA
;清空各状态位
;允许外部中断0中断
;选择边沿触发方式
;CPU开中断
;延时确保数据读完
3.3关闭压缩机的设计:
关闭压缩机后用定时器0中断计时,做为下次是否开压缩机的依据,因为压缩机不能连续启停。程序如下:
CLOSE:CLR A
CLR P2.4 CLR L3
;关闭压缩机
;关闭压缩机运行指示灯;清空压缩机状态标志 MOV A , 64H CLR ACC.0 MOV 64H , A
MOV TMOD , #01H
MOV TL0 , #0B0H
MOV TH0 , #3CH SETB TR0 SETB ET0 RET
;设置T0工作于模式1
;启动定时器T0;允许T0中断
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
结论
1.本系统运用单片机速度快、体积小、价格低廉的8位MCS51单片机,可以做出可行、可靠性强的自动控制产品---电冰箱温度的控制系统。实现了电冰箱温度的自动控制。
2.在单片机应用环境不是很恶劣的地方,利用软件抗干扰也可以达到精度不高的要求,而且,节省了硬件资源,降低了产品设计成本,有助于产品的推广、民用化。
3.本系统的设计尽量简化电路,提高软件质量。
4.本系统支持多功能模块。如果再加上少许外围器件,如语音芯片,环境温度传感器,在软件方面采用模糊控制技术,可以使电冰箱的智能化大大提高。
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。13
冰箱温度控制系统设计
参考文献
[1] 陈明荧.8051单片机课程设计实训教材 北京:清华大学出版社 2009.8 [2]李军.检测技术及仪表[M].北京: 中国轻工业出版社 2009.4 [3 ]凌玉华.单片机原理与应用系统设计 长沙:中南大学出版社 2009.5 [4] 刘鸣,车立新,陈兴梧,赵煜.温度传感器DS18B20的特性及程序设计方法.电测与仪表 , 2009,10 [5] 周月霞,孙传友.DS18B20硬件连接及软件编程[J].传感器世界 , 2009,10 [6] 刘易雄,刘建雄 DS18B20接口的C语言程序设计.仪器仪表用户,河南科技大学机电工程学院 ,2009,6 错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。
商丘工学院毕业论文(设计)
错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。错误!未指定书签。15
第二篇:基于单片机的交通灯控制系统设计
P10P11P12P13设置键加键减键模式键P00P01P02P03P04P05P06U18765P134P123P112P101P1.7P1.6P1.5P1.4P1.3P1.2P1.1/T2EXP1.0/T2P3.7/RDP3.6/WRP3.5/T1P3.4/T0P3.3/INT1P3.2/INT0P3.1/TXDP3.0/RXDP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0******23222***373839P37P36P35P34P22P23P24D7D4P27P26P25P24P23P22P21P20P07P06P05P04P03P02P01P0098765432110KP27LED-REDD92H1HD1D6P25LED-YELLOWD11P26LED-YELLOWLED-GREENLED-REDC31uF313029EAALEPSEND12P26R0100RP1P25LED-GREENLED-GREENC120PF9RSTD5P00P01P02P03P04P05P06LED-YELLOWD3P27LED-REDX1C220PF12M19LED-REDLED-GREENLED-YELLOWP24P23P22XTAL1AT89C51Q1PNPQ2PNPQ3PNPQ4PNPP34P35657U2SCKSDAWP24C02CA0A1A2123R151R1HR251R2HR351R3HR451R4HP36P37P21P00P01P02P03P04P05P0651R51R51R51R2H1HR19R20R21P20R223H4HXTAL2P00P01P02P03P04P05P0618D2D10D83H4H
#include
//调用单片机头文件
#define uchar unsigned char
//宏定义“uchar”代替“unsigned char”。#define uint unsigned int
//宏定义“uint”用来定义无符号整型数。
//数码管段选定义 0
7
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, //
A B C
D
E
F 不显示
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//断码
uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};uchar smg_i = 4;
//显示数码管的个位数
//数码管位选定义
sbit smg_we1 = P2^0;
//数码管位选定义 sbit smg_we2 = P2^1;sbit smg_we3 = P3^6;sbit smg_we4 = P3^7;
char dx_s = 0;//东西
南北 倒计时变量 sbit dx_red
= P2^4;
//东西红灯 sbit dx_green = P2^3;//东西绿灯 sbit dx_yellow = P2^2;//东西黄灯
sbit nb_red
= P2^7;//南北红灯 sbit nb_green = P2^6;//南北绿灯 sbit nb_yellow = P2^5;//南北黄灯
sbit scl=P3^4;//写24C02时钟
sbit sda=P3^5;//写24C02数据
uchar flag_jtd_mode;//交通灯的模式 根据时间
bit flag_1s = 0;bit flag_500ms;bit flag_dx_nb;uchar flag_5m_value;uchar i;//东西南北模式
uchar flag_alarm;//模式
uchar dx_time = 30,nb_time = 20;
//东西、南北的时间 uchar flag_jdgz;
//交通管制
//---延时函数---// void delay(){;;}
void start()//起始信号 { sda=1;delay();scl=1;delay();sda=0;delay();}
void stop()//停止信号 { sda=0;delay();scl=1;delay();sda=1;delay();}
void respons()//应答信号 { uchar i;scl=1;delay();while((sda==1)&&(i<250))i++;scl=0;delay();}
void init()//初始状态,24C02的数据和时钟线都拉高 { sda=1;delay();scl=1;delay();}
void writebyte(uchar date)//写24C02 { uchar i,temp;temp=date;for(i=0;i<8;i++){
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();} scl=0;delay();sda=1;delay();} uchar readbyte()//读24C02 { uchar i,k;scl=0;delay();sda=1;delay();
for(i=0;i<8;i++){
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();} return k;}
void writeadd(uchar address,uchar date)//写24C02 {
start();//起始信号
writebyte(0xa0);//写入器件地址写 respons();
writebyte(address);//写入存储单元地址 respons();
writebyte(date);//写入数据 respons();
stop();//停止信号 }
uchar readadd(uchar address)//读24C02 { uchar date;
start();//起始信号
writebyte(0xa0);//写入器件地址写
respons();
writebyte(address);//写入读单元地址
respons();
}
start();//起始信号
writebyte(0xa1);//读命令 respons();date=readbyte();//读数据 stop();//停止信号 return date;/***********************数码位选函数*****************************/ void smg_we_switch(uchar i){ switch(i){
case 0: smg_we1 = 0;smg_we2 = 1;smg_we3 = 1;smg_we4 = 1;break;
case 1: smg_we1 = 1;smg_we2 = 0;smg_we3 = 1;smg_we4 = 1;break;
case 2: smg_we1 = 1;smg_we2 = 1;smg_we3 = 0;smg_we4 = 1;break;
case 3: smg_we1 = 1;smg_we2 = 1;smg_we3 = 1;smg_we4 = 0;break;} }
/******************************************************************** * 名称 : delay_1ms()* 功能 : 延时1ms函数 * 输入 : q * 输出 : 无
***********************************************************************/ void delay_1ms(uint q){ uint i,j;for(i=0;i for(j=0;j<110;j++);} /******************************************************************** * 名称 : display()* 功能 : 数码管显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void display(){ uchar i;for(i=0;i P0 = 0xff; //消隐 smg_we_switch(i); //位选 P0 = dis_smg[i]; //段选 delay_1ms(3);} } /*********************定时器0、定时器1初始化******************/ void time0_init() { EA = 1; //开总中断 TMOD = 0X11;//定时器0、定时器1工作方式1 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时 } /*********************交通灯处理函数*********************************/ void jiaotongdeng_dis(){ char dx,nb; if(flag_dx_nb == 0){ dx=dx_s;nb=dx_s-5;if(nb<=0)nb=dx_s;} if(flag_dx_nb == 1){ dx=dx_s-5;nb=dx_s;if(dx<=0)dx=dx_s;} if(flag_1s == 1){ dx_s--;flag_1s = 0; if(dx_s == 0){ if(flag_dx_nb == 1) dx_s = nb_time; //南北时间 else dx_s = dx_time; //东西时间 flag_dx_nb = ~flag_dx_nb; } } dis_smg[0] = smg_du[dx % 10];dis_smg[1] = smg_du[dx / 10];dis_smg[2] = smg_du[nb % 10];dis_smg[3] = smg_du[nb / 10]; /***********************南北时间*********************************/ if(flag_dx_nb == 0) { if(dx_s > 5) { dx_red = 1;//灭 dx_green = 0;//亮 dx_yellow = 1;//灭 nb_red = 0;//亮 nb_green = 1;//灭 nb_yellow = 1;//灭 flag_5m_value = 0; }else if(dx_s <= 5) //当小于5秒时 黄灯要闪了 { dx_red = 1; //灭 } } dx_green = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 if(flag_500ms == 0){ dx_yellow = 0;//亮 } else { } dx_yellow = 1;//灭 /***********************东西时间*********************************/ if(flag_dx_nb == 1) { if(dx_s > 5) { dx_red = 0; //亮 dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 0; //亮 nb_yellow = 1; //灭 flag_5m_value = 0; }else if(dx_s <= 5) //当小于5秒时 黄灯要闪了 { dx_red = 0; //灭 dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 1; //灭 if(flag_500ms == 0) //黄灯闪烁 { } } } nb_yellow = 0;//亮 } else { nb_yellow = 1;//灭 } /********************独立按键程序*****************/ uchar key_can;//按键值 void key()//独立按键程序 { static uchar key_new;key_can = 20; //按键值还原 P1 |= 0x1f; if((P1 & 0x1f)!= 0x1f)//按键按下 { delay_1ms(1); //按键消抖动 if(((P1 & 0x1f)!= 0x1f)&&(key_new == 1)) { key_new = 0;switch(P1 & 0x1f){ //确认是按键按下 case 0x1e: key_can = 1;break;//得到按键值 case 0x1d: key_can = 2;break;//得到按键值 case 0x1b: key_can = 3;break;//得到按键值 case 0x17: key_can = 4;break;//得到按键值 } } } else key_new = 1;} uchar menu_1,flag_s; /********************设置函数*****************/ void key_with(){ if(key_can == 4) //交通管制按键 { flag_jdgz ++; if(flag_jdgz > 5) flag_jdgz = 0; if(flag_jdgz == 1)// 全部亮红灯 { dx_red = 0;//亮 dx_green = 1;//灭 dx_yellow = 1;//灭 } nb_red = 0;//亮 nb_green = 1;//灭 nb_yellow = 1;//灭 if(flag_jdgz == 2)// 东西红灯 南北绿灯 { dx_red = 0;//亮 dx_green = 1;//灭 dx_yellow = 1;//灭 nb_red = 1;//灭 nb_green = 0;//亮 nb_yellow = 1;//灭 } if(flag_jdgz == 3)// 南北红灯 { dx_red = 1;//灭 dx_green = 0;//亮 dx_yellow = 1;//灭 nb_red = 0;//亮 nb_green = 1;//灭 nb_yellow = 1;//灭 } if(flag_jdgz == 4)// 南北绿灯 { dx_red = 1;//灭 dx_green = 0;//亮 dx_yellow = 1;//灭 nb_red = 1;//灭 nb_green = 0;//亮 nb_yellow = 1;//灭 } if(flag_jdgz == 5)// 南北黄灯 { dx_red = 1;//灭 dx_green = 1;//灭 dx_yellow = 0;//亮 nb_red = 1;//灭 nb_green = 1;//灭 nb_yellow = 0;//亮 } } if(key_can == 1) //设置键 { menu_1 ++; 东西绿灯 东西绿灯 东西黄灯 if(menu_1 >= 3){ menu_1 = 0;} } if(menu_1 == 1) //设置东西的时间 { if(key_can == 2){ dx_time ++;//加1 if(dx_time > 99) dx_time = 99;} if(key_can == 3){ dx_time--;//减1 if(dx_time <= 10) dx_time = 10;} dis_smg[0] = smg_du[10];//显示为A dis_smg[1] = smg_du[10];//显示为A dis_smg[2] = smg_du[dx_time % 10];dis_smg[3] = smg_du[dx_time / 10]; writeadd(4,dx_time);//保存数据 } if(menu_1 == 2) //设置南北的时间 { if(key_can == 2){ nb_time ++;//加1 if(nb_time > 99) nb_time = 99;} if(key_can == 3){ nb_time--;//减1 //显示东西设置的时候 if(nb_time <= 10) nb_time = 10;} dis_smg[0] = smg_du[11];//显示为B dis_smg[1] = smg_du[11];//显示为B dis_smg[2] = smg_du[nb_time % 10];dis_smg[3] = smg_du[nb_time / 10]; //显示东西设置的时候 writeadd(2,nb_time);//保存数据 } } /******************************************************************** * 名称 : main()* 功能 : 实现灯的闪烁 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main(){ time0_init(); init();//24C02初始化 nb_time=readadd(2);//读取地址2处一个字节给 dx_time=readadd(4);//读取地址4处一个字节给 if(nb_time>99)nb_time=20; if(dx_time>99)dx_time=30; dx_s = nb_time; //东西时间 while(1){ key(); if(key_can < 20) key_with(); if((menu_1 == 0)&&(flag_jdgz == 0)) } } jiaotongdeng_dis();display();/*********************定时器0中断服务程序************************/ void time0_int()interrupt 1 { } static uchar value; //定时10ms中断一次 TH0 = 0x3c;TL0 = 0xb0; //50ms value ++;flag_5m_value++;if(flag_5m_value % 10 == 0)flag_500ms = ~flag_500ms;if(value >= 20){ value = 0;flag_1s = 1;} 基于单片机的交通灯控制系统设计 摘要:十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制嚣,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮。倒计时剩5秒时黄灯闪烁警示;车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。本系统实用性强、操作简单、扩展功能强。 关键词:单片机;交通灯 单片机技术的发展对社会进步产生了巨大的影响。今天,单片机及其应用技术的发展速度、深度及其广度,在国防、科学研究、政治经济、教育文化等方面几乎无所不及。将之用于交通灯控制系统设计,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。 1、单片机涵义 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入,输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就际=缸单片(单芯片)机,单片机即微控制器(Microniroller μC)有一些单片机中除了上述部份外,还集成了其它部份如AID,DIA,定时计数器,RTC,各种串行接口等。 2、MSC-51芯片简介 2.1 MSC-51结构 8051是MCS-51系列单片机的典型产品,8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时,计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。 2.2 8255芯片简介 8255可编程并行接口芯片有三个输入输出端口,即A口、B口和c口,对应于引脚PAT—PA0、PB7-PB0和PC7-PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。c口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。 8255有两种控制命令字;一个是方式选择控制字;另一个是c口按位置位/复位控制字。 2.3 74LS373简介 SN74LS373。SN74LS374常用的8d锁存器。常用作地址锁存和I/0输出,可以用74he373代换,74H373是高速CMOS器件,功能与74LS373相同,两者可以互换。74LS373内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚c或EN;1脚OUT、CONT、OE)控制。当OE接地时,若G为高电平,741Ls373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。 3、系统硬件 3.1 交通管理的方案论证 东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行。绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两千道的公共停车时问。设东西道比南北道的车流量。 3.2 系统硬件设计 选用设备8031单片机一片选用设备:8031弹片机一片,8255并行通用接口芯片一片,74LS07两片,MAX692‘看门狗’一片,共阴极的七段数码管两个双向晶闸管若干,7805三端稳压电源一个,红、黄、绿交通灯各两个。开关键盘、连线若干。 4、控制器的软件设计 4.1 每秒钟的设定 延时方法可以有两种:一种是利用NCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。 4.2 计数器硬件延时 4.2.1 初值计算 定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为c和计数初值设定为TC。 4.2.2 1秒的方法 我们采用在主程序中设定一个初值为20的软件计数器和使TO定时5O毫秒,这样每当TO到50毫秒时cPu就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,cPu先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。 4.3 计数器软件延时 MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。 4.4 时间及信号灯的显示 4.4.1 8051并行口的扩展 8051虽然有4个8位I/0端口,但真正能提供借用的只有Pl口。因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/0端口,显然8031的端口是不够,需要扩展。 扩展的方法有两种:(1)借用外部RAM地址来扩展I/0端口;(2)采用I/0接口新片来扩充。我们用8255并行接口信片来扩展I/0端口。 4.4.2 8255与8051的连接 用8051的PO口的pO.7连接8255的片选信号,我们用8031的地址采用全译码方式,当pO.7:0时片选有效,其他无效,pO.1用于选择8255端口。 5、结 论 本系统就是充分利用了8051和8255芯片的I/O引脚。系统统采用MSC-51系列单片机Intel8051和可编程并行I/0接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的Pl口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。 参考文献: [1]张毅刚,新编MCS-51单片机应用系统设计[M]哈尔滨:哈尔滨工业大学出版社,2006 [2]王义军,单片机原理及应用习题与实验指导书[M],北京:中国电力出版社,2006 [3]陈明荧8051单片机课程设计实训教材[M],北京:清华大学出版社。2004 交通灯控制系统设计 摘要:本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。关键词:AT89S51,交通规则 一、方案比较、设计与论证 1 电源提供方案 为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案 方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案。2 显示界面方案 该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案: 方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。 方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。 方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。3 输入方案: 题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案: 方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是: 使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。 方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。 二、理论分析与计算 1.交通灯显示时序的理论分析与计算 对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。 先设定一些标号如图2-1 所示。 说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西 路口灯。 图2-2 所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四 的状态为一个周期,循环执行(见图2-3)。 请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在 一定的时间内达到较大的车流量,效率特别高。 依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图 是一样的,所以只需写出相邻路口的灯的逻辑表;根据图2-3 可以看出,相邻路口的灯它 们的状态在相位上相差180°。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。 如表2-1 所示。 表中的“×”代表是红灯亮(也代表逻辑上的0),“√”是代表绿灯亮(也代表逻辑上 的1),依上表,就可以向相应的端口送逻辑值。2.交通灯显示时间的理论分析与计算 东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且 S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分 为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参 考。 三、电路图及设计文件 1.灯控制电路设计 由于32个LED 来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不 能实现,所以本次设计中采用一种新型的电路如图3-1 所示。 图中74LS04的作用是倒相和驱动,它输出的电流大约48mA,实际测试发现足以满足要 求,而且发光管也能达到足够的亮度。 观察图可以看出:两组发光管(一组红、一组绿)由于反相器的作用,其逻辑状态恰恰 相反。 图中和电阻串联的二极管的作用是为了分压,防止因上下两组发光管分压不同导致逻辑 的错误。 共四组和上述相同的电路分别代表东西南北四个方向的红绿灯,使用两片74LS04 作为 驱动。 2.倒计时显示电路设计 前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管 作为倒计时的显示;同时为了节省口资源,采用串口显示的方式驱动数码管。见图3-2 所 示。 四、程序设计思路与流程图 1.主程序流程图 主程序中主要是一个死循环,不停的循环四个状态,如图4-1 所示。 2.按键子程序流程图 它包含倒计时调整和紧急状态两个状态。 主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子 程序处理。当检测到K2键按下的时候就自动返回到主程序。当出现紧急的情况的时候,按下K3或者K4 就切换到紧急状态,当紧急事件处理完毕 的时候,按下K2,就可以返回正常状态。 五、测试、数据及结果分析 1.状态灯显示测试 当电路连接完毕后,将写好的测试程序刷写到芯片内,K1 和K2分别给端口送高电平和 低电平,通电即可检测。2.数码管的测试 将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。 3.整体电路测试 系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,默认140 秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。 六、总结 由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。 但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅 速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。附录 系统总体电路图 1.满足南北向红绿灯亮,东西向红灯亮,占25秒——南北向黄灯亮,东西向红灯亮,占5秒——南北向红灯亮,东西向绿灯亮,占25秒——南北向红灯亮,东西向黄灯亮,占5秒。如此循环,周而复始。2.十字路口要有数字显示,提示行人把握时间:当某方向绿灯亮时,置显示器为24,然后以每秒减1计数方式工作,直到减为0,绿灯灭,黄灯亮。黄灯灭,红灯亮时,再次置显示器为29,并开始减计数,直到为0,十字路口红绿灯交换,完成一次工作循环。 3.可手动调整和自动调整,夜间为黄灯闪耀。下面是一个单片机交通灯程序 /* ****************************************************************************************** * * * Keil C 89S51 交通信号控制程序 * *(C)版权所有 Dai_Weis@hotmail.com * * * ****************************************************************************************** */ #include “reg51.h” #define UINT unsigned int #define ULONG unsigned long #define UCHAR unsigned char /* 信号灯变量 南北方向绿灯 sbit n_bike_g = P1^0;//自行车 sbit n_right_g = P1^1;//右转 sbit n_up_g = P1^2;//直行 sbit n_left_g = P1^3;//左转 调头 南北方向红灯 sbit n_bike_r = P1^4;//自行车 sbit n_right_r = P1^5;//右转 sbit n_up_r = P1^6;//直行 sbit n_left_r = P1^7;//左转 调头 南北方向黄灯 sbit n_bike_y = P3^0;//自行车 sbit n_right_y = P3^1;//右转 sbit n_up_y = P3^2;//直行 sbit n_left_y = P3^3;//左转 调头 东西方向绿灯 sbit e_bike_g = P2^0;//自行车 sbit e_right_g = P2^1;//右转 sbit e_up_g = P2^2;//直行 东西方向红灯 sbit e_bike_r = P2^4;//自行车 sbit e_right_r = P2^5;//右转 sbit e_up_r = P2^6;//直行 东西方向黄灯 sbit e_bike_y = P3^4;//自行车 sbit e_right_y = P3^5;//右转 sbit e_up_y = P3^6;//直行 */ //延时 void delay(UINT t, UINT s){ while(t){ UINT i; for(i = 0;i < s;i++){ } t--;} } //信号灯状态 void time_x(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3){ P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(150, 65535);} void time_s(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3, UCHAR P_P11, UCHAR P_P22){ UINT i; for(i = 0;i < 3;i ++){ P1 = P_P1;P2 = P_P2;delay(5, 65535);P1 = P_P11;P2 = P_P22;delay(5, 65535);} P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(10, 65535);} //主程序 void main(){ P1 = P2 = P3 = 0x0;while(1){ time_x(0xA5, 0x38, 0x0); time_s(0xA4, 0x38, 0x1, 0xA5, 0x38);time_x(0x96, 0x52, 0x0); time_s(0x92, 0x52, 0x4, 0x96, 0x52);time_x(0x5A, 0x52, 0x0); time_s(0x50, 0x50, 0x2A, 0x5A, 0x52);time_x(0xF0, 0x25, 0x0); time_s(0xF0, 0x24, 0x20, 0xF0, 0x25);time_x(0xD2, 0x16, 0x0); time_s(0xD0, 0x10, 0x62, 0xD2, 0x16);} } 给你一个定时控制的信号系统,我只做的简单的测试,至于延时我用的软件,你自己想办法。^_^ Dai_Weis 于 2005-5-4 13:43:23 重新给你说明 /* *********************************************************************************** * * * Keil C AT89S51 交通信号控制程序 * *(C)版权所有 Dai_Weis@hotmail.com * * * *********************************************************************************** 开发说明: 固定时间信号变换,南北设置调头、左传、直行、右转、自行车。 东西设置左传、直行、右转、自行车。 时序状态: 红 绿 红 绿 序号 左 前 右 自 左 前 右 自 前 右 自 前 右 自1 0 1 0 0 1 0 1 1 1 1 0 0 0 2 1 0 0 1 0 1 1 0 1 0 1 0 1 0 3 0 1 0 1 1 0 1 0 1 0 1 0 1 0 4 1 1 1 1 0 0 0 0 0 1 0 1 0 1 5 1 1 0 1 0 0 1 0 0 0 1 1 1 0 */ 另外修正个错误 while(1){ time_x(0xA5, 0x70, 0x0);time_s(0xA4, 0x70, 0x1, 0xA5, 0x70); 材料: 1、89S51 11.0592M 晶振 1K电阻、10UF电容 12个灯,红、黄、绿各四个,12个1K电阻 ,十字路口嘛。蜂鸣器一个。 按键一个,按键复位 采用AT89s51型号的单片机,由于交通十字路口的对称性,所以一个引脚可以同时控制两个灯,将发光二极管分别接到P1各个引脚,在其中加入一个时振荡当电路,来控制时间,在P3.0引脚接入蜂鸣器只黄灯亮的时候发出声响,这里我们让每次黄灯亮的时候发出六声响,通过C程序的控制就可以实现,每次循环是10秒。2、9cm*15cm万用板 1片 单片机及IC座 1套 12M晶振 1只 22P电容 2只 10uF电容 1只 10K电阻 1只 1K排阻 1只 两位一体数码管 2只 DC座 1只 自锁开关 1只 发光二极管红绿黄 各4只 按键 7只 USB电源线 1条 导线 若干 1、基于51系列单片机(型号:STC89C52、AT89C51/C52、AT89S51/S52,随机选择,如有特 殊要求请与店主讨论)设计实现。(以上几种单片机全部为51系列单片机,除了名字不一样外,功能及应用完全一样,互相 兼容) 2、两个两位一体数码管显示东西、南北方向时间。 3、四方向各有红绿黄三颗灯。 4、七个按键操作,分别是:禁止通行、东西通行、南北通行、时间加、时间减、切换方向、确认。 目 录 摘 要...........................................................2 第一章 概述.....................................................3 1.1交通灯的发展及现状...........................................3 1.2 单片机说明.................................................3 第二章 智能交通灯的设计原理.....................................6 2.1 智能交通灯的设计框图........................................6 2.2智能交通灯的设计方案及改进措施...............................6 第三章 智能交通灯电路设计.......................................6 3.1控制器的系统框图.............................................7 3.2智能交通灯控制系统电路图.....................错误!未定义书签。3.3工作原理....................................................8 第四章 智能交通灯软件系统设计..................................14 4.1 智能交通灯的软件设计流程图.................................14 4.2 程序源代码.................................................14 第五章 智能交通灯方案的仿真....................................14 小结...........................................................18 致谢词.........................................................18 参考文献.......................................................18 附 录..........................................................21 附录A:智能交通灯控制程序:....................................21 摘 要 本文介绍的是一个基于PROTEUS的智能交通灯控制系统的设计与仿真,系统根据交通十字路口双车道车流量的情况控制交通信号灯按特定的规律变化。 本文首先对智能交通灯的研究意义和智能交通灯的研究现状进行了分析,指出了现状交通灯存在的缺点,并提出了改进方法。智能交通灯控制系统通常要实现自动控制和在紧急情况下能够手动切换信号灯让特殊车辆优先通行。本文还对AT89C51单片机的结构特点和重要引脚功能进行了介绍,同时对智能交通灯控制系统的设计进行了详细的分析。最后利用PROTEUS软件,通过其平台对交通灯控制系统进行了仿真,仿真结果表明系统工作性能良好。 关 键 词:PROTEUS、AT89C51单片机、智能交通灯; 第一章 概述 1.1交通灯的发展及现状 中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适应改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。 目前设计交通灯的方案有很多,有应用CPLD设计实现交通信号灯控制器方法;有应用PLC实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。 1.2 单片机说明 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。 1.2.1 AT89C51单片机硬件结构 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的单片机芯片,它采用静态CMOS 工艺制造8位微处理器,最高工作频率位24MHZ。AT89C5外形及引脚排列如图1所示: 图1 1.2.2管脚说明 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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)这是由于上拉的缘故。 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端保持高电平时,此间内部程序存储器。 XTAL1和XTAL2:反向振荡放大器的输入及内部时钟工作电路的输入。 第二章 智能交通灯的设计原理 2.1 智能交通灯的设计框图 2.2智能交通灯的设计方案及改进措施 交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。 针对道路交通拥挤,交叉路口经常出现拥堵的情况利用单片机控制技术提出了软件和硬件设计方案及两点改进措施。 1、根据各道路路口车流量的大小自动调节通行时间。 2、考虑特殊车辆通行情况,设计紧急切换开关。 AT89S51单片机有2计数器,6个中断源,能满足系统的设计要求。用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯。 第三章 智能交通灯电路设计 根据设计任务和要求,可画出该控制器的原理框图, 为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。 3.1控制器的系统框图如图3所示 图3 3.2智能交通灯控制系统电路图 智能交通灯电路图如图4所示: 图4 交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。 3.3工作原理 绿灯的放行时间与车辆通过数量不成正比。比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。因为这有一个起步的问题,还有一个黄灯等待问题。也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。我们来计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。通过一辆车的平均时间是1.25秒。如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。通过一辆车的平均时间只需1秒。显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。我设定了绿灯通行时间的上限为40秒。在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。当交叉路口双方车辆较多时通行时间设为40秒。3.3.1车检测电路 用来判断各方向车辆状况,比如:20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒,依此类推。绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。因为路上的车不可能突然增多,塞车都有一个累积过程。这样控制可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间延长而使等候的时间变长,但比塞车等候的时间短得多。本系统的特点是成本低,控制准确。十字路口车辆通行顺序如图5所示: 图5十字路口车辆通行顺序 由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表1。 表1 显示时间选择 车辆情况 本次该方向通行时间 20秒 20秒 20秒 20秒 20秒 20秒 20秒 20秒 下次该方向通行时间 20秒 40秒 40秒 40秒 20秒 40秒 40秒 40秒 本次该方向通行时 间 40秒 40秒 40秒 40秒 40秒 40秒 40秒 40秒 本次该方向通行时间 20秒 40秒 40秒 40秒 20秒 40秒 40秒 40秒 南往北少车,北往南少车 南往北少车,北往南多车 南往北多车,北往南少车 南往北多车,北往南多车 东往西少车,西往东少车 东往西少车,西往东多车 东往西多车,西往东少车 东往西多车,西往东多车 3.3.2信号灯电路 信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图6。每个路口的信号的的转换顺序为:绿—>黄—>红 绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。红灯表示禁止通行。绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。 图6交通信号灯运行状态 3.3.3时间显示电路 在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图7所示。 图7 数码管连接方法 下面我们用这种方法显示交通灯的时间,南北方向要显示20秒,东西方向要显示25秒,那么我们先给P0口送2的共阴极码即5BH,让第一位2要显示的 位码GND段为低电平,其它三位的控制端都接高电平,那么第一位就显示2,其它三位不亮。让其显示1MS后再给P0口送0的共阴极码即3FH,让第二位要显示0的位码GND段为低电平,其它三位的控制端都接高电平,那么第二位就显示0,其它三位不亮。依此类推分别送完第一位2,第二位0,第三位2,第四位5,每一位点亮1MS一个扫描周期为4MS,一秒时间就要扫描250次其程序如下: MOV R6,#250;显扫描次数 LOOP: MOV P0,#5BH;送2的共阴极码 CLR P2.0;第一位显示2 ACALL D1MS;延时1MS SETB P2.0;灭第一位 MOV P0,#3FH;送0的共阴极码 CLR P2.1;第二位显示0 ACALL D1MS;延时1MS SETB P2.1;灭第二位 MOV P0,#5BH;送2的共阴极码 CLR P2.2;第三位显示2 ACALL D1MS;延时1MS SETB P2.2;灭第三位 MOV P0,#6DH;送5的共阴极码 CLR P2.3;第四位显示5 ACALL D1MS;延时1MS SETB P2.3;灭第四位 DJNZ R7,LOOP;不够一秒,继续扫描 NEXTNUMBER;到一秒显示下一个数 D1MS:;1MS延时程序 STAT1:MOV R4,#2 MOV R3,#250 DJNZ R3,$ DJNZ R4,STAT1 RET 3.3.4紧急转换开关电路 一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。 1、Mcs—51的中断源 8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序 11 入口地址如表2所示: 表2 中断源程序入口 中断源的服务程序入口地址 中断源 外中断0 定时/计数器0 外中断1 定时/计数器0 串行口中断 2、中断的处理流程 CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述: 1)现场保护和现场恢复: 中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。中断开始前需将有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,单片机不能正常工作。 2)中断打开和中断关闭: 在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。 3)中断服务程序: 既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。 4)中断返回: 入口地址 0003H 000BH 0013H 001BH 0023H 执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。 5)交通灯中的中断处理流程:(1)现场保护和现场恢复: 有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。 (2)中断打开和中断关闭: 为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。 (3)中断服务程序: 有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。 (4)中断返回: 执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。 第四章 智能交通灯软件系统设计 4.1 智能交通灯的软件设计流程图 智能交通灯的软件设计流程图如图8所示: 图8交通灯的软件设计流程图 4.2 程序源代码 见附录 第五章 智能交通灯方案的仿真 PROTEUS嵌入式系统仿真软件在设计时已经注意到和单片机各种编译程序的整合了,如它可以和Keil ,Wave6000等编译模拟软件结合使用。由于Wave6000使用方便,具备强大的软件仿真和硬件仿真功能。把Proteus和Wave6000结合起来调试硬件就方便多了,这里就是采用“Proteus+Wave6000”的仿真方法,具体步骤如下: 1)首先运行PROTEUS VSM 的ISIS,选择Source→Define Code Generation Tool 菜单项,将出现如图8所示定义代码生成工具对话框。 图9 定义代码生成工具对话框 在Tool下拉列表框中选择代码生成工具,在这一示例中,电路中的微处理器为8051系列单片机,因此选择ASEM51, 单击Browse按钮,选取Wave6000的安装路径。单击OK按钮,结束代码生成工具的定义。 选择Source→Add/Remove Source File 菜单项,将出现Add/Remove Source Code Files对话框,如图10所示: 图10添加/删除源文件对话框 2)在Code Generation Tool 选项区,单击下三角按钮,选择ASEM51工具 单击New按钮,将出现如图11所示对话框。 图11 创建源代码对话框 选择用Wave6000创建好的AA.ASM文件,即完成了文件的创建。就这样当用Wave6000对AA.ASM 文件进行更改时每一次运行PROTEUS VSM 的ISIS对电路进行仿真时Wave6000都会对AA.ASM进行编译,AA.HEX文件也会随时更新。 电路图绘制完成后, 再添加AT89C51 的应用程序。将鼠标移至AT89C51 上, 单击鼠标右键使之处于选中状态, 在该器件上单击左键, 打开如图12所示的对话框。在 Program File 栏添加编译好的十六进制格式的程序文件AA.hex(可以接受3 种格式的文件),给AT89C51输入晶振频率,此处默认为12MHZ,单击OK 按钮完成程序添加工作, 下面就可以进行系统仿真了。单击主界面下方的按钮开始系统仿真。PROTEUS VSM 所进行的是一种交互式仿真, 在仿真进行中可以对各控制按钮、开关等进行操作, 系统对输入的响应会被真实的反映出来如图13。 图12 AT89C51添加程序文件 图13 交通灯仿真界面 小 结 在毕业设计的整个过程中,我深切地体会到:实践是理论运用的最好检验。毕业设计是对我们3年所学知识的一次综合性测试和考验,无论是在动手能力方面还是理论知识的运用能力方面,都使得我有了很大的提高。 经过总结和分析,我意识到在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。本次毕业设计为我的大学生活画上了圆满的句号,为我即将的工作和生活奠定了坚实的基础。 致谢词 在整个毕业设计中,我得到了学校电子实验室的大力支持,为我提供了各种所需的仪器设备。感谢学校为我们安排了本次毕业设计,让我们的理论知识和实际操作经验更加紧密的结合了在一起;同时又拓展了我们的知识面。同时十分感激夏老师对我的悉心指导和帮助,使我能够顺利的完成此次毕业设计。此次毕业设计让我从中受益匪浅,最后再次感谢老师对我的培养和教育! 参考文献 [1] 徐爱钧 《智能化测量控制仪表原理与设计》(第二版)[M].北京:北京航空航天大学出版社,2004年; [2] 吴金戌、沈庆阳、郭庭吉 《8051单片机实践与应用》[M].北京:清华大学出版社,2002年; [3] 谢自美 《电子线路设计·实验·测试》(第三版)[M].武汉:华中科技大学出版社,2006年; [4] 谢维成、杨加国 主编 《单片机原理与应用及C51程序设计》[M].北京:清华大学出版社,2006年; [5] 杨立、邓振杰、荆淑霞 《微型计算机原理与接口技术》[M].中国铁道出版社,2006年; [6] 黄智伟 《全国大学生电子设计竞赛技能训练》 [M].北京:北京航空航天大学出版社,2007年 [7] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003; [8] 华成英、童诗白 主编,《模拟电子技术基础》(第四版)[M].高等教育出版社,2006年.[9] 黄海萍、陈用昌 编 《微机原理与接口技术实验指导》[M].北京:国防工业出版社,2004年 [10] 黄智伟: 《凌阳单片机设计指导》,北京: 北京航空航天大学出版社,2007年 附 录 附录A:智能交通灯控制程序: ORG 0000H A_BIT EQU 20H;用于存放南北十位数 B_BIT EQU 21H;用于存放南北十位数 C_BIT EQU 22H;用于存放东西十位数 D_BIT EQU 23H;用于存放东西位数 TEMP1 EQU 24H;用于存放第一二南北状态要显示的时间 TEMP2 EQU 25H;用于存放第一二东西状态要显示的时间 TEMP3 EQU 26H;用于存放第三第四南北状态要显示的时间 TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间 LJMP MAIN ORG 0003H;外部中断0入口 LJMP INT0;跳转到外部0中断 ORG 0013H;外部中断1入口 LJMP INT1;跳转到外部1中断 INT0: MOV A,P1;外部0中断 PUSH ACC MOV A,P2;中断保护 PUSH ACC MOV P1,#0FFH;清除先前状态 MOV P2,#0FFH CLR P1.0 CLR P1.4;南北通行,东西禁止通行 CLR P1.6 CLR P2.3 JNB P3.2 ,$;判断是否还在中断状态 POP ACC MOV P2,A;返回中断前状态 POP ACC MOV P1,ACC RETI;中断返回 INT1:MOV A,P1;外部1中断 PUSH ACC;中断保护 MOV A,P2 PUSH ACC MOV P1,#0FFH;清除先前状态 MOV P2,#0FFH CLR P1.2 CLR P2.1 CLR P1.3;东西通行,南北禁止通行 CLR P1.5 JNB P3.3 ,$;判断是否还在中断状态 POP ACC MOV P2,A;返回中断前状态 POP ACC MOV P1,A RETI;中断返回 MAIN: ORG 0100H;初始情况 MOV P1,#0FFH MOV P2,#0FFH;灭所有灯 MOV TMOD,#55H;计数方式方式1 MOV IE,#85H;开中断 MOV TEMP1,#20;MOV TEMP2,#25 MOV TEMP3,#25 MOV TEMP4,#20 STAR: MOV P1,#0FFH MOV P2,#0FFH;灭所有灯 MOV A,24H;将显示时间送A CJNE A,#20,T40T;判断时间,选初始值 T20T:;南北通行要显示的时间为20的计数器初始值 CLR TF0;清TF0 CLR TF1;清TF1 MOV TH1 ,#0FFH;送20秒时的初始值 MOV TL1 ,#0FCH;在些设计20秒6辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP20;跳到20秒 T40T:;南北通行要显示的时间为40的计数器初始值 CLR TF0;清TF0 CLR TF1;清TF1 MOV TH1,#0FFH;送40秒时的初始值 MOV TL1 ,#0F8H;在些设计40秒8辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP40;跳到40秒 TEMP20:;TEMP1=20情况 SETB TR0;开始计数 SETB TR1 CLR P1.2 CLR P2.1;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#20;南北要显示的时间,MOV TEMP2,#25;东西要显示的时间 STLOP: ACALL DISPLAY1;调用显示 DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT;若显示时间不为0保持现在状态 LJMP STAR2;若显示时间为 0跳到第二状态 NEXT: LJMP STLOP STAR2:;状态1 SETB P1.2 CLR P1.1;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05;南北要显示的时间,MOV TEMP2,#05;东西要显示的时间,STLOP2: ACALL DISPLAY1;调用显示 DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT2;若显示时间不为0保持现在状态 JB TF1 ,T40;判断南北是否多车 JB TF0 ,T40;判断北南是否多车 MOV TEMP1,#20;少车下次显示时间为20秒 LJMP STAR3;跳到状态3 T40: MOV TEMP1,#40;多车下次显示时间为40秒 LJMP STAR3;若显示时间为 0跳到第三状态 NEXT2:LJMP STLOP2 TEMP40:;TEM=40 程序 SETB TR0;开始计数 SETB TR1 CLR P1.2 CLR P2.1;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#40;南北要显示的时间,MOV TEMP2,#45;东西要显示的时间 STLOP11: ACALL DISPLAY1;调用显示 DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT11;若显示时间不为0保持现在状态 LJMP STAR22;若显示时间为 0跳到第二状态 NEXT11: LJMP STLOP11 STAR22:;状态1 SETB P1.2 CLR P1.1;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05;南北要显示的时间,MOV TEMP2,#05;东西要显示的时间,STLOP22: ACALL DISPLAY1;调用显示 DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT22;若显示时间不为0保持现在状态 JB TF1 ,T401;判断是否多车 JB TF0 ,T401 MOV TEMP1,#20;少车下次显示时间为20秒 LJMP STAR3 T401:MOV TEMP1,#40;多车下次显示时间为40秒 LJMP STAR3;若显示时间为 0跳到第三状态 NEXT22:LJMP STLOP22 STAR3: MOV A,26H CJNE A,#25,T40T1;判断时间,选初始值 T20T1:;南北通行要显示的时间为20的计数器初始值 CLR TF0;清溢出位 CLR TF1 MOV TH1 ,#0FFH;给初值 MOV TL1 ,#0FCH MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP320 T40T1:;南北通行要显示的时间为40的计数器初始值 CLR TF0;CLR TF1 MOV TH1,#0FFH;给初值 MOV TL1 ,#0F8H MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP340 TEMP320:;状态三 SETB TR1;南北停止计数 SETB TR0;东西开始计数 SETB P1.1;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#25;南北要显示的时间,MOV TEMP4,#20;东西要显示的时间,STLOP33: ACALL DISPLAY;调用显示 DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT33;若显示时间不为0保持现在状态 LJMP STAR34;若显示时间为 0跳到第四状态 NEXT33:LJMP STLOP33 STAR34:;状态四 SETB P2.3 CLR P2.2 SETB P1.6;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05;南北要显示的时间,MOV TEMP4,#05;东西要显示的时间,STLOP34: ACALL DISPLAY;调用显示 DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT34;若显示时间不为0保持现在状态 JB TF1 ,T402 JB TF0 ,T402 MOV TEMP3,#25 LJMP STAR T402: MOV TEMP3,#45 LJMP STAR NEXT34: LJMP STLOP34 TEMP340 : SETB TR1;南北停止计数 SETB TR0;东西开始计数 SETB P1.1;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#45;南北要显示的时间,MOV TEMP4,#40;东西要显示的时间,STLOP43: ACALL DISPLAY;调用显示 DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT43;若显示时间不为0保持现在状态 LJMP STAR44;若显示时间为 0跳到第四状态 NEXT43:LJMP STLOP43 STAR44:;状态四 SETB P2.3 CLR P2.2 SETB P1.6;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05;南北要显示的时间,MOV TEMP4,#05;东西要显示的时间,STLOP44: ACALL DISPLAY;调用显示 DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP3 CJNE A,#0,NEXT44;若显示时间不为0保持现在状态 JB TF1 ,T403 JB TF0 ,T403 MOV TEMP3,#25 LJMP STAR T403: MOV TEMP3,#45 LJMP STAR NEXT44: LJMP STLOP44;显示 DISPLAY1: MOV A,TEMP1;将南北要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV B_BIT,A;将A放到20H MOV A_BIT,B;将B放到21H MOV A,TEMP2;将东西要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV C_BIT,A;将A放到22H MOV D_BIT,B;将B放到23H MOV DPTR ,#NUMT;MOV R0,#2;R0=2 DPL11: MOV R1,#250;R1=250 DPLOP1: MOV A,A_BIT;将南北要显示的10位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7;灭南北10位数 MOV A,B_BIT;将南北要显示的个位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示南北个位数 CLR P2.6 ACALL D1MS;延时1MS SETB P2.6;灭南北个位数 MOV A,C_BIT;将东西要显示的10位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示东西10位数 CLR P2.5 ACALL D1MS;延时1MS SETB P2.5;灭东西10位数 MOV A,D_BIT;将东西要显示的个位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示东西东西位数 CLR P2.4 ACALL D1MS;延时1MS SETB P2.4;灭东西个位数 DJNZ R1,DPLOP;循环扫描 DJNZ R0,DPL1 RET;;等待1秒返回 显示 DISPLAY: MOV A,TEMP3;将南北要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV B_BIT,A;将A放到20H MOV A_BIT,B;将B放到21H MOV A,TEMP4;将东西要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV C_BIT,A;将A放到22H MOV D_BIT,B;将B放到23H MOV DPTR ,#NUMT;MOV R0,#2;R0=2 DPL1: MOV R1,#250;R1=250 DPLOP: MOV A,A_BIT;将南北要显示的10位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7;灭南北10位数 MOV A,B_BIT;将南北要显示的个位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示南北个位数 CLR P2.6 ACALL D1MS;延时1MS SETB P2.6;灭南北个位数 MOV A,C_BIT;将东西要显示的10位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示东西10位数 CLR P2.5 ACALL D1MS;延时1MS SETB P2.5;灭东西10位数 MOV A,D_BIT;将东西要显示的个位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示东西东西位数 CLR P2.4 ACALL D1MS;延时1MS SETB P2.4;灭东西个位数 DJNZ R1,DPLOP;循环扫描 DJNZ R0,DPL1 RET;等待1秒返回 D1MS: MOV R7,#250;1MS延时程序 DJNZ R7,$ RET; 1到10对应电路图数码管表 NUMT: DB 7EH,48H,67H,6BH,59H DB 3BH,3FH,68H,7FH,7BH 中英文摘要---目录---引言----研究现状---背景----思路---整体原理---部分电路介绍--程序介绍----总结---------------谢词==参考文献===附件 可以联系我,有程序。仿真,原理图,等 .南北方向绿灯和东西方向绿灯不能同时亮,如果同时亮,则立刻关闭信号灯系统,并报警。同理,东西向绿灯与南北向转弯灯也不能同时亮。 2.南北及南北转弯红灯亮并保持40秒,同时东西绿灯亮,但只保持35秒,到35秒时东西绿灯闪3次(每周期为1秒)后熄灭,继而东西黄灯亮,并保持2秒,到2秒后,东西黄灯灭,东西红灯亮,同时南北红灯熄灭和南北绿灯亮;南北转弯红灯继续亮着。 3.东西及南北转弯红灯亮并保持30秒,同时南北绿灯亮,但只保持25秒,到25秒时南北绿灯闪亮3次(每周期1秒)后熄灭,继而南北黄灯亮,并保持2秒,到2秒后,南北黄灯灭,南北红灯亮,同时南北向转弯红灯灭,绿灯亮。 4.南北向转弯绿灯亮25秒,同时南北向和东西向红灯亮并保持25秒,待南北向转弯绿灯亮25秒后,红灯亮起,东西向红灯灭,绿灯亮,并保持35秒,南北向红灯继续亮着,后接2.中继续循环。 5.各灯能手动控制也能自动转换,并且能周而复始的进行工作。绪论 1.1 道路交通控制的发展背景 随着经济发展,城市化速度加快,机动车辆占有量急剧增加,由此引发出日益严重的交通问题:交通拥挤甚至堵塞,交通事故频繁,空气和噪声污染严重,公共运输系统效率下降等。解决这一问题通常有两种办法,一种是修路造桥,这对道路交通状况的改善是一种最直接的办法,但它需要巨额的投资,且在城市中心区受拆迁的限制,很难实施.另一种是在现有的道路交通条件下,实施交通控制和管理,充分发挥现有道路的通行能力,大量事实已经证明这种方法的有效性。 通常,一个经验丰富的交通警察能在极短的时间内把一个交叉路口的交通阻塞缓解或解除,但他的作用范围往往局限于单个交叉路口。而现代的道路交通非常复杂,常常是几个或几十个甚至是成百上千个路口互相关联,在这种情况下,任何一个经验丰富的交通警察都无能为力了.因此,人们越来越关注把先进的科学技术用于交通管理,从而促进了交通自动控制技术的不断发展。 1.2 道路交通控制的目的和作用 道路交通控制的目的可定义为:在确定的行政规定约束下,采用合适的营运 方法来确保公共和私人运输方式具有最佳的交通运行状态。围绕这一目的研制出的道路交通控制系统,把受控对象看成一个整体,采用对交通流科学地时间分割的方法,最大限度地保证交通流运动的连续性,使受控区域的交通流减少冲突,同时平稳地、有规则地运动。道路交通控制的作用主要表现为以下几个方面: (1)改善交通秩序,增加交通安全。 (2)减少交通延误,提高经济效益。 (3)降低污染程度,保护生态环境。(4)节省能源和土地消耗。 1.3 我国城市交通特点分析 人、车、路是构成城市交通的三大要素,要探讨我国城市交通特点,必须从分析这三大要素的基本特点着手。 1.3.1 人的交通素质 人是交通的主体,与世界发达国家相比,我国人的社会交通意识还没有真正形成,少数领导部门交通观念淡薄,对城市交通建设在国民经济建设中的重要性认识不足,交通政策时有失误。机动车驾驶员文化水平低,又缺乏系统训练,尤其缺乏心理素质,感知能力和判断能力的培养,因而,对人,车的运动特征不能很好掌握。行人与非机动车驾驶员普遍不懂,甚至漠视交通法规。交通管理人员交通工程和心理学知识贫乏,感知,分析交通信息和处理特发性事件的能力不强。总的来看,我国人的交通素质距离现代化城市交通要求还相差甚远,而交通与人密切相关,城市交通中出现的问题几乎都离不开人的因素,因此,想方设法提高全社会的文化素质,健全交通法规,加强交通宣传教育,增强人的社会交通意识,培养良好的交通习惯,使参与交通的每个人都认识到交通的重要性,自觉顺应交通规律,是建立我国城市交通控制系统,使之有效运行的前提条件。 1.3.2 城市道路状况 路是交通的物质基础,有路才能通车,行人。我国是一个文明古国,许多城市已有上千年的历史,城市布局和道路结构是在漫长的历史进程中逐步形成的,近几年虽然作了些改建和扩建,但毕竟还难以冲破原来的基本格局。我国城市道路普遍存在的弊端是: (1)路网密度低 (2)交通干道少 (3)路口平面交叉 1.3.3 我国城市交通的特殊性 道路状况与车辆状况的综合作用形成了我国城市交通的特殊性,主要表现是: 城市路网稀,干道少,间距大,市区人口稠密,出行需求集中,迫使车辆集中于少数干道上行驶。至于中小城市,干道特征更为明显,往往只有一两条干道贯穿全市,而其他支路上交通量极小。从流量变化情况来看,除外围过境干道外,都是有一定规律的,高峰小时基本上都集中在几个时段内。 我国城市机动车车种繁杂,从50年代的老式车到80年代的新型车,从大货车到小轿车 30 都在一个平面上行驶,不少城市拖拉机还是一种主要运输工具,前面一辆旧车挡道,尾随的新型车只能跟着爬行,过交叉口时经常出现启动慢的车挡住启动快的车,使交通工程师精心设计的交通配时方案不能很好发挥效益。 1.4 我国城市交通控制策略探讨 本着不盲目照搬现成系统的经验,或一味追求控制策略与原理的新颖性,而是根据我国城市交通的实际情况,从简从易,逐步完善的原则,我国城市交通控制策略宜采取: (1)根据干道特征明显的特点,系统以线控制为主。 (2)根据干线上交通流有规律可循的特点,系统以定时控制为主。 (3)根据车种混杂和路网稀,路口间距相差悬殊,难以建立精确交通预测模型的特点,系统应加强路口应变能力,强化感应控制功能。 (4)根据机非混合交通特点,系统要处理好自行车交通,常用的方法有: 1)实现自行车与机动车的分离 自行车与机动车的突出矛盾在于混行,要在我国现有道路基础上,开辟出规模庞大的自行车道路网是不现实的,但各城市确有许多小街小巷可利用,对它们进行合理规划,造成自行车专用道,消除或减少自行车与机动车的相互干扰是可能的。 2)增设左转相位 对机动车干扰最大的是 左 转自行车,在自行车高峰时,对左 转自行车流较大的路口增设 左 转相位,时间不需很长便可利用自行车启动,疏散快的特点,使左转自行车基本通过。 3)控制信号分时使用 自行车与机动车高峰出现时间是交错的,在自行车高峰期间,自行车是构成交通流的主体,系统进行信号配时优化时,可优先考虑自行车。 (5)可能的系统结构 确定系统的硬件结构主要是依据系统控制策略要求,系统成本分析和城市的财政承受能力,同时也要受到系统管理维护人员技术水平的制约。纵合考虑,我国城市采用两级控制结构为宜,即由中心计算机和终端——交通信号控制器组成,信号配时方案存于终端中,终端将处理好的检测器数据和交叉口工作状态数据定时传送至中心计算机,中心计算机经优化计算后给出下一个配时方案指令,由交通信号控制器执行。这种结构形式的突出优点是: 1)减少数据传输量,控制中心与终端间只需低容量传输系统即可有效地进行数据通信。 2)主要控制和处理功能由终端——交通信号控制器完成,大大减轻了中心计算机的负担,只要配置功能稍强的微机系统即可建成一个相当规模的控制系统。 按上述设想建立起来的将是一个旨在解决机非混合交通问题,以线控制为主,方案选择型实时自适应城市交通控制系统。 (6)可能出现的动向 1)系统功能的缩小 我国建制市370多个,绝大多数还难以投入足够的资金建立一个功能齐备的控制系统,从几个引进系统的实施情况来看,并不需要,实际上也没有用到这些系统的全部功能,因此,系统发展的一个可能趋势是系统功能的缩小,国外也提出了基本系统的概念,基本系统不以交通应答作为基本设计依据,只是按照一天内划分的时段或根据控制中心的人工干预执行简单的时间表,因而不需车辆检测器和大量的数据处理。功能缩小后的系统不需配置动态地图显示板等外围设备,便于控制中心主机微机化,耗资少,使用方便,对我国大中城市有很吸引力。 2)交通信号控制器微机化、系列化 我国有2000多个县,每个县都有几个城镇,计算机区域控制目前对这些小城市来说是不现实的,以微机为基础的交通信号控制器功能灵活,便于实现无电缆协调控制,必将成为小城市交通控制的主体。大中小城市对信号控制器的使用要求不同,对交通信号控制器的微机化,系列化势在必行。 本论文正是以此为出发点,对单片机控制的交通信号灯模型作了较详尽的介绍。第三篇:基于单片机的交通灯控制系统设计
第四篇:单片机:交通灯控制系统设计
第五篇:毕业论文---智能交通灯控制系统设计