基于80C51单片机的交通灯设计
51单片机交通灯设计要点

摘要交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。
适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。
交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。
分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制技术日益更新。
接下来将介绍基于单片机控制的交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机80C51和芯片74LS245为中心器件来设计交通灯控制系统。
、关键字:单片机,信号灯,控制前言道路交通信号灯是交通安全产品中的一种类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。
适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。
最早的时候只有红、绿两种颜色,后来经过改良后,增加了一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。
之所以采用这三种颜色,一方面是三原色,其他颜色也是在此基础上调出来的,另一方面,用这三种颜色作为交通讯号也和人们的视觉结构和心理反应有关。
人的视网膜含有杆状和三种锥状感光细胞,杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。
由于这种视觉结构,人最容易分辨红色与绿色。
虽然黄色与蓝色也容易分辨,但因为眼球对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。
交通信号灯是交通信号指挥中的重要组成部分,是道路交通的基本语言。
交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。
分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。
基于单片机的交通灯控制器设计

摘要随着生活水平的提高,汽车越来越普及。
因此,红绿灯安装在各个道口上,也渐渐成为了疏导交通车辆最常见和最有效的手段。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
本系统采用80C51单片机为中心器件来设计交通灯控制器,实现了实时显示当前通行剩余时间;按东西道红灯和南北道绿灯亮22秒后东西道、南北道黄灯闪烁3秒,再东西道绿灯和南北道红灯亮27秒,之后黄灯闪烁3秒的规律控制东西和南北方向的交通灯;能手动设置通行方向3种功能。
4位数码管显示剩余通行时间,2位显示东西方向通行剩余时间,2位显示南北方向通行剩余时间。
本系统实用性强、操作简单、扩展功能强。
关键词:单片机交通灯动态扫描自动控制手动设置1交通灯控制器的功能规划本次设计的交通灯控制器有2种工作模式,分别是正常状态下的自动控制模式和紧急情况下的手动控制模式。
自动控制模式是在单片机的控制下实现东西道与南北道红绿灯循环点亮,倒计时剩3秒时黄灯闪烁警示,并且实时显示当前通行剩余时间。
手动控制模式是在有按键按下的时候相应的通道置于绿灯,另外一个通道置于红灯,直到有返回键按下之后自动返回到自动控制模式。
2方案设计2.1 硬件方案设计本次课程设计所使用的单片机为STC89C51,STC89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用STCMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的STC89C51提供了高性价比的解决方案。
STC89C51主要功能特性:1、兼容MCS—51指令系统,4k可反复擦写(>1000次)Flash ROM2、32个双向I/O口,可编程UARL通道3、两个16位可编程定时/计数器,全静态操作0-24MHz4、1个串行中断,128x8bit内部RAM5、两个外部中断源,共6个中断源6、可直接驱动LED,3级加密位7、低功耗空闲和掉电模式晶振采用11.0592MHZ提供定时脉冲。
80c51单片机交通灯课程设计报告1.pdf

80C51单片机交通灯课程设计报告目录第一章引言 (3)第二章单片机概述 (4)第三章芯片介绍 (6)3.1AT89S51单片机介绍 (6)3.1.1简介 (6)3.1.2主要管脚介绍 (6)3.274LS164介绍 (8)3.3共阳数码管介绍 (8)3.3.1分类简介 (8)图3.3LED数码管引脚定义 (9)3.3.2驱动方式 (9)3.3.3主要参数 (10)3.3.4应用范围 (10)第四章系统硬件设计 (11)4.1硬件设计要求 (11)4.2硬件设计所用元器件 (11)4.3硬件设计图 (11)4.4设计流程图 (12)第五章系统软件设计 (13)5.1流程图 (13)5.2程序设计 (14)第六章结论 (16)参考文献 (18)第一章引言在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国。
这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。
基于80C51单片机的交通灯C语言源程序

#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit SH_CP=P2^0;sbit DS=P2^1;sbit ST_CP=P2^2;uchar temp;uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void NB_tong();void DX_tong();void NBY_show();void DXY_show();sbit RED_A=P1^0;//A代表NB南北sbit YELLOW_A=P1^1;sbit GREEN_A=P1^2;sbit RED_B=P1^3;//B代表DX东西sbit YELLOW_B=P1^4;sbit GREEN_B=P1^5;sbit K1=P3^0;sbit K2=P3^1;sbit K3=P3^3;sbit SPK=P3^7;//蜂鸣器uchar time=0,Count=0;//--------------------------------//延时//--------------------------------void DelayMS(uint x){uchar t;while(x--) for(t=0;t<120;t++);}//---------------------------------------//74HC595的驱动//---------------------------------------void In_595(){uchar i;for(i=0;i<8;i++){temp<<=1;DS=CY;SH_CP=1;_nop_();_nop_();SH_CP=0;}void Out_595(){ST_CP=0;_nop_();ST_CP=1;_nop_();ST_CP=0;}//---------------------------------------//T0定时器定时及各种情况下灯亮的调用//---------------------------------------void Timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;Count++;time=time%60;if(Count==20){time++;Count=0;}if(time<=30) NB_tong();if((time>30)&&(time<=35)) NBY_show();if((time>35)&&(time<=55)) DX_tong();if((time>55)&&(time<=60)) DXY_show();}//------------------------------------//按键处理//------------------------------------void EX_INT0() interrupt 0{if(K1==0) //K1按下强制NB南北通行,倒计时黑屏暂停;断开继续以前动作。
51单片机交通灯毕业设计方案

51单片机交通灯毕业设计方案
以下是一个基于51单片机的交通灯设计方案:
1. 硬件设计:
- 使用51单片机作为主控制器。
- 使用红黄蓝三个LED作为信号灯的显示器件。
- 使用按钮作为手动触发信号灯切换的输入设备。
- 使用数码管显示当前信号灯状态的计时器。
- 使用适当的电阻、电容、继电器等连接单片机和LED、按钮、数码管等。
2. 软件设计:
- 配置51单片机的I/O口,将LED、按钮和数码管连接到正
确的引脚。
- 编写主程序,设置中断或轮询等方式读取按钮状态,并根
据按钮状态切换信号灯状态。
- 通过控制LED引脚的输出电平,实现红黄蓝三个信号灯的
闪烁、亮灭和切换。
- 使用定时器计时,实现信号灯的定时控制。
根据交通规则,红灯、黄灯、绿灯的显示时间可以根据需要设定。
- 使用数码管显示当前信号灯的状态和剩余时间,方便车辆
和行人了解交通灯变化。
3. 功能设计:
- 根据交通规则,设置交通灯的变换顺序和时间,确保道路
的交通流畅和安全。
- 根据需要加入手动触发信号灯切换的功能,允许人工控制,
例如紧急情况下的交通调节。
- 可以考虑加入流量检测、车辆和行人优先等功能,提高交
通效率和安全性。
- 可以通过串口或无线通信模块,实现与其他设备的联动,
例如与车载导航系统、交通监控系统等的数据交换和协同控制。
以上是一个基本的51单片机交通灯设计方案,可以根据具体
需求进行进一步调整和优化。
基于51单片机的交通灯控制系统设计

目录一引言 (2)二概要设计 (2)2.1 设计思路 (2)2.2总体设计框图 (3)三硬件设计 (3)3.1LED循环电路设计 (3)3.1.1 89cs51单片机概述 (3)3.1.2 LED循环说明 (5)3.2 倒计时显示电路 (6)3.2.1 74LS164芯片 (6)3.2.2 共阴极数码显示管 (7)3.2.3 倒计时电路 (7)3.2.4 急通车电路 (7)四软件按设计 (8)4.1 程序流程图: (8)4.2 LED红绿灯显示 (9)4.3倒计时显示 (10)4.4 急通车控制 (10)4.5程序代码 (10)五总结 (10)参考文献 (10)附录一: (10)附录二: (11)基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。
关键词:交通灯,单片机,自动控制一引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。
基于80C51的交通灯

单片机课程设计题目51单片机的交通灯控制系统设计学院名称指导教师班级学号学生姓名2010年6月19日摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
交通灯控制系统由80C51单片机、键盘、LED显示、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。
关键词:交通灯,单片机,自动控制Abstract: in the daily life, the use of traffic lights, traffic management, and to be effective, improve road relieves traffic flow capacity, reduce the number of traffic accidents has obvious effect. 80C51 SCM by traffic control system, the keyboard, the LED display, traffic delays. Besides the basic traffic system function outside, still have time to set, the LED display function effectively, city traffic control.Keywords: light, SCM, automatic control目录一、引言 (4)二、概要设计 (5)2.1 设计思路 (5)2.2总体设计框图 (5)三、硬件设计 (6)3.1LED循环电路设计 (6)3.1.1 89cs51单片机概述 (6)3.1.2 80C51单片机的时钟 (9)3.1.3 80C51的封装和引脚 (11)3.2.1LED循环灯的说明 (14)四软件按设计 (15)4.1 程序流程图: (15)4.2 LED红绿灯显示 (17)五总结 (17)参考文献 (18)附录一:程序源代码 (18)附录二:PCB图 (24)基于51单片机的交通灯控制系统设计一、引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。
(完整版)基于单片机的交通灯控制电路设计毕业设计

毕业论文(设计)论文题目:基于单片机的交通灯控制电路设计学生:董仁龙学号:所在院系:电气信息工程学院专业名称:自动化届次:2011 届指导教师:井田目录摘要: (1)1.设计任务要求及目的 (2)1.1设计任务 (2)1.2基本要求 (2)1.3设计目的 (2)2.设计思路 (3)2.1设计原理: (3)2.2设计方案及其总体设计框图 (3)3.交通灯控制系统的硬件设计 (4)3.1系统硬件电路构成及外部硬件件的选取 (4)3.2系统工作原理 (5)3.3单片机小系统的基本组成及硬件图 (8)3.4外围电路工作原理及系统硬件图 (8)4.系统软件程序的设计 (14)5.课程设计心得体会 (15)6.参考文献 (13)7.附录: (14)8.致谢 (19)基于单片机的交通灯控制电路设计学生:董仁龙(指导老师:井田)(淮南师范学院电气信息工程学院)摘要:实现这井然秩序靠的是交通信号灯的自动指挥系统的交通信号灯控制方式很多。
本系统采用MSC-51系列单片机ATSC51和可编程并行IO接口芯片80C51为中心器件来设计交通灯控制器,完成对A 、B道上均有车辆要求通过时各自顺时放行;在一道有车而另一道无车和有紧急车辆要求通过时,系统做出正确应急控制。
本系统实用性强、操作简单、扩展功能强。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,本系统还应根据具体硬件结构软硬件结合加以完善。
关键词: MSC-51系列单片机ATSC51;交通灯控制器;IO接口芯片1.设计任务要求及目的1.1设计任务(1)单片机最小系统的焊制并以其为核心,设计并制作一个交通灯控制系统。
(2)按设计要求学习并使用Proteus软件绘制电路图。
(3)编写相应程序,按要求实现相应的控制。
(4)已编写的程序用Proteus仿真,对程序进行反复测试。
(5)按要求撰写毕业设计报告。
1.2基本要求(1)A 通道和B通道上均有车辆要求通过时,A、B通道轮流放行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于80C51单片机的交通灯设计班级:电信1101姓名:XXXX学号:0703110107一、设计说明及材料清单(一)设计说明:本交通灯的设计简化了十字路交通灯,只将东西和南北两个路向的交通灯情况表示出来,但也做了很多改进,设计了针对不同时间段不同的控制方案,并且采用串口通讯可将不同的控制方案下载到芯片中,外接掉电保存程序的非易失性存储芯片和掉电仍可计时的时钟芯片,以保证计时的正确性。
(二)材料清单:二、电路原理图设计本设计共用到四款主要芯片,分别为单片机芯片80C51、EEPROM芯片AT24C02、时钟芯片DS1302和转串口芯片MAX232。
(一)下图为80C51单片机芯片的管脚图,80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口即I/O口。
80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。
(二)下图为AT24C02芯片的原理图,该芯片是一种带有I2C总线结构的EEPROM芯片,通过SDA和SCL端口与总线连接,具有非易失性,掉电仍可保存程序。
其管脚功能如下:管脚名称功能说明A0、A1、A2 器件地址选择本设计全部接地SDA 串行数据、地址与单片机的P1.6连接进行数据、地址的传输SCL 串行时钟与单片机的P1.7相连,串行时钟信号输入WP 写保护WP=1,只能对其读,写禁止,所以令WP=0VCC +1.8V~6.0V工作电压电源输入GND 地接地引脚(三)下图是时钟芯片的电路原理图,DS1307是一款低功耗,地址和数据通过两线双向的串行总线的传输,节省单片机资源,该芯片可以提供秒,分,小时等信息,芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能,本设计中需要其停电后继续计时。
其中的7引脚是方波的输出端,可接入单片机的可引起中断的端口,利用引脚7产生的方波引起中断,从而显示时间的变化。
(四)下图是MAX232芯片的原理图,因为设计要求与电脑有串口通讯,就是将交通灯不同时间段程序控制方案通过串口下载到单片机里,单片机上有一个全双工的串行通讯口,但电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,所以采用了专用芯片MAX232进行转换,下图中的7、8端口分别和电脑上的RS232端口的2、3连接,芯片的9和10端口与单片机的串口相连,如下图所示:(五)下图为交通灯的总体原理图(不包括上述芯片原理图),根据要求选择六只LED灯作为东西和南北方向的红绿黄交通灯,并且每个方向上有时间计数提示,每个方向有两位数码管动态显示,最大为99,采用共阴极7段数码管,单片机通过驱动器SN7404的放大电流驱动每位数码管。
P1.0至P1.5控制六只LED灯,数码管由P0.0至P0.6控制进行段选,P2.0至P2.3控制位选。
三、程序设计(一)系统框图:(二)主程序如下:#include"reg51.h"#include<intrins.h>#define EW_H 0#define EW_L 1#define SN_H 2#define SN_L 3//函数声明void EW_NONE();void EW_RED();void EW_YELLOW();void EW_GREEN();void SN_NONE();void SN_RED();void SN_YELLOW();void SN_GREEN();void LED_INIT();void LED_WRITE(int dat,int con); //根据原理图定义交通灯的引脚sbit EW_LED_RED = P1^0;sbit EW_LED_YELLOW = P1^1;sbit EW_LED_GREEN = P1^2;sbit SN_LED_RED = P1^3;sbit SN_LED_YELLOW = P1^4;sbit SN_LED_GREEN = P1^5;//定义P2^0-P2^3=LED数码管控制sbit EW_weixuan_H = P2^0;sbit EW_weixuan_L = P2^1;sbit SN_weixuan_H = P2^2;sbit SN_weixuan_L = P2^3;//定义P0^0-P0^7=LED数码管段选引脚sbit LED_DATA_A = P0^0;sbit LED_DATA_B = P0^1;sbit LED_DATA_C = P0^2;sbit LED_DATA_D = P0^3;sbit LED_DATA_E = P0^4;sbit LED_DATA_F = P0^5;sbit LED_DATA_G = P0^6;sbit SCL = P1^6;sbit SDA = P1^7;//变量声明unsigned char counter,ew_sign,sn_sign,ew_time,sn_time,hour//定义段码code char LED_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*main函数开始*/main(){counter = 3;//计数器,每3600s查询一次当前hourew_sign = 0;//东西标志位,0代表红灯,1代表绿灯,2代表黄灯sn_sign = 0;//南北标志位,0代表红灯,1代表绿灯,2代表黄灯ew_time = 3;//东西时间sn_time = 3;//南北时间hour = 24;//当前hourunsigned ew_total_time[24] = {1,1,1,1,1,30,30,30,30,30,30,30,60,60,60,60,30,30,30,30,30,30}//东西各时间段绿灯亮总时间unsigned char sn_total_time[24] = {1,1,1,1,1,30,30,60,60,60,60,60,30,30,30,30,30,30,30,30,30,30}//南北各时间段绿灯亮总时间LED_INTI();EW_RED();SN_RED();while(1){if(counter == 0){hour = GET_HOUR();counter = 3600;switch(hour){case 5:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 7:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 12:ew_time = 60;sn_time = 63;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 18:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;default:break;}}if(ew_time == 0){switch(ew_sign){case 0:ew_sign = 1;ew_time = ew_total_time[hour];EW_GREEN();break;case 1:ew_sign = 2;ew_time = 3;EW_YELLOW();break;case 2:ew_sign = 0;ew_time = sn_total_time[hour] + 3;EW_RED();break;}}if(sn_time == 0){switch(sn_sign){case 0:sn_sign = 1;sn_time = sn_total_time[hour];SN_GREEN();break;case 1:sn_sign = 2;sn_time = 3;SN_YELLOW();break;case 2:sn_sign = 0;sn_time = ew_total_time[hour] + 3;SN_RED();break;}}LED_WRITE(ew_time/10,EW_H);LED_WRITE(ew_time%10,EW_L);LED_WRITE(sn_time/10,SN_H);LED_WRITE(sn_time%10,SN_L);}//main函数到此结束,以下是所用到函数的定义/*所用函数的定义*/void LED_INIT(){LED = 0x00;EW_weixuan_H = 1;EW_weixuan_L = 1;SN_weixuan_H = 1;SN_weixuan_L = 1;}void LED_WRITE(int dat,int con){EW_weixuan_H = 0;EW_weixuan_L = 0;SN_weixuan_H = 0;SN_weixuan_L = 0;if(dat < 10){LED = LED_CODE[dat];switch(con){case EW_H:{EW_weixuan_H = 1;break;}case EW_L:{EW_weixuan_L = 1;break;}case SN_H:{SN_weixuan_H = 1;break;}case SN_L:{SN_weixuan_L = 1;break;}}}void timer_int() interrupt 0{EA = 0;counter--;switch(hour){case 0:case 1:case 2:case 3:case 4:EW_YELLOW();SN_YELLOW();EW_NONE();SN_NONE();break;default:ew_time--;sn_time--;if(ew_sign == 1 && ew_time <= 3 && ew_time > 0){EW_GREEN();EW_NONE();}if(sn_sign == 1 && sn_time <= 3 && sn_time > 0){SN_GREEN();SN_NONE();}break;}EA = 1;}/* 延迟函数定义*/void DELAY2(){_nop_();_nop_();}//延迟2usvoid DELAY4(){DELAY2();DELAY2();}//延迟4usvoid DELAY8(){DELAY4();DELAY4();}//延迟8us//void IIC_WRITE( unsigned char dat) {unsigned char temp;for(temp = 0; temp < 8; temp++){SCL=0;if((dat << temp) & 0x80){SDA=1;}else{SDA=0;}DELAY2();SCL=1;DELAY4();SCL=0;}DELAY4();SDA = 1;DELAY2();SCL = 1;DELAY4();SCL = 0;}unsigned char GET_HOUR(){//STARThour = 0;unsigned char temp;SDA = 1;DELAY8();SDA = 0;DELAY8();//WRITEIIC_WRITE(0XD0);//HOURADDRESSIIC_WRITE(0X02);//RESTARTSDA = 1;SCL = 1;DELAY8();SDA = 0;DELAY8();//READIIC_WRITE(0XD1);//READHOURSDA = 1;for(temp = 0; temp < 8; temp++){hour = hour << 1;SCL=1;DELAY2();if(SDA == 1){hour++;}SCL=0;}//SENDNOACKSDA = 1;SCL = 1;DELAY4();SCL = 0;//STOPSDA = 0;DELAY8();SDA = 1;DELAY4();SCL = 0;return hour;}四、心得体会通过这次的实验设计,我深入了对单片机的了解,也明白了日常生活中处处有自动控制的例子,其中不乏有各种系列的单片机,同时我也认识到对单片机的学习应该更加深入才能得心应手,虽然只是一个芯片而已,但是如果你具备足够的知识,就可以充分利用,根据自己的设想就可以做出各种实用的东西,而我现在发现自己基本还处于初级阶段,需要更加努力,特别是编程能力,当然也有收获,首先我对protel的使用更有信心了,又发现了其中的一些功能,同时我也了解了一些其它芯片,比如EEPROM存储芯片AT24C02的非易失性,DS1302时钟芯片可以精确的计时,为了与电脑进行串口通讯必须采用转串口芯片比如MAX232,从而实现单片机的TTL电平到RS232电平的转换。