《微机原理及应用课程设计高速公路警示灯的设计.doc》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计高速公路警示灯的设计.doc(28页珍藏版)》请在三一办公上搜索。
1、PCB图,仿真 语言程序 原理图等全套设计,联系153893706课程设计说明书课 程 名 称: 微机原理及应用课程设计 课 程 代 码: 题 目: 高速公路警示灯的设计 年级/专业/班: 09汽电 3班 学 生 姓 名: 学 号: 开 始 时 间: 2012 年 07 月 02 日完 成 时 间: 2012 年 07 月 06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日目 录摘要 21 引言 3 1.1 问题的提出 3 1.2 任务与分析 32 方案设计 5 2.1
2、系统设计方案 5 2.2 系统总体框图 6 3 系统硬件设计 7 3.1 89C5单片机7 3.2 光敏电阻 94系统软件设计 12 4.1 proteus软件环境介绍 12 4.2 Keil C51开发系统基本知识 13 4.3 protel软件环境介绍 14 4.3系统软件分析 15 4.4 程序流程图 16 5 系统调试过程 19结论 25致谢 26参考文献 27摘 要现在,随着微电子技术和集成电路技术的快速发展,单片机技术无处不在。单片机作为计算机科学与技术的重要组成部分,作为嵌入式系统的先头兵,片上系统的先行者,已经被广泛应用到了各行各业,尤其是与控制相关的领域,极大的提高了产品的智
3、能化程度和技术水平,已经成为了当今社会十分重要的技术领域。随着社会需求和单片机应用领域的不断扩展,各类智能产品、控制系统都是以单片机技术为核心来进行开发设计的。本系统采用MSC51系列单片机89C51和相关的光电检测设备及设计智能路灯控制器,实现了能根据实际光线条件通过8051芯片的P3.7口控制高速公路警示灯的开关功能,并且实现对亮灯规律的控制。随着社会文明的不断发展,高速公路的警示灯已不简单是为了给司机朋友提神,更应该是一种美的享受。关键词:警示灯 单片机技术 规律 设计1 引 言1.1 问题的提出随着我国加入世界贸易组织(WTO),为了创造一个良好的投资环境,塑造一个美丽的国际化城市,更
4、好的与国际接轨,全国各大城市的市政建设步伐都逐步加快,高速公路系统蓬勃发展,因此为公路提供更高安全可能的警示灯工程得以迅猛发展。由于单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉等优点,因此在路灯警示灯的工程中被广泛应用。近年来随着计算机在社会领域的渗透,单片机的应用正在不断走向深入。单片机技术中的计时系统是单片机的一个典型的应用。随着城市化进程的加快,城市之间高速公路的增多,为防止司机过于疲劳驾驶,减小在高速公路上发生意外的可能,特别是司机疲劳驾驶时发生意外的可能性更大,通常要开启警示灯以确保安全。本系统采用MSC-51系列单片机89C51和相关的光电检测设备及继电设备来设
5、计智能光控路灯控制器,实现了能根据实际光线条件通过8051芯片的P3.7口控制路灯开关的功能。为提高警示效果,警示灯尽量工作在闪烁状态。本次设计的是一款太阳能警示灯,电路采用太阳能电池板,具有手控和光控两种功能。自动控制状态下,天黑以后该电路能控制警示灯自动开启,并使其工作在闪烁状态,而在白天又能将警示灯自动关闭。也可采用手动控制,白天也可使其工作,便于调整,成本低廉,使用方便。利用51系列单片机可编程控制八位逻辑I/O端口实现路灯的智能化,达到节能,自动控制的目的。1.2任务与分析本次设计的系统的控制中心是89C51单片机。首先,在Protel软件环境中进行硬件电路图的设计。然后在8051软
6、件环境中进行系统的软件编程,并进行程序源文件的编译和调试,最后生成.hex文件。此.hex文件是硬件电路运行实现的源代码来源。把.hex文件加载到AT89C51单片机芯片,然后在Proteus软件环境中运行硬件电路,警示灯就可以正常工作了。 本设计的系统主要由:AT89C51为中央处理芯片,用于数据的处理和初值的设定。光敏电阻为本例的核心模块,由他提供外界环境的信息并传递给89C51用于处理,处理后的信号传递给警示灯。 本系统可分为以下三大模块:1、AT89C51模块:用于数据处理,和外围的时钟芯片通信,并控制时钟传输过程,采集时间信息并予以处理。2、光敏电阻模块:用于实现对外界环境的解读,并
7、且传递外界的信号给89C51,这是一种简单的传递方式,在现实生活中也比较的适合。3、程序:包括单片机控制时钟芯片的接口程序(实现单片机和时钟芯片之间的数据传输过程)和单片机控制和输入信号的接口程序,以及用于控制警示灯闪烁的程序。2.1 系统设计方案通过查阅相关的资料,设计初期我主要从是通过外界环境控制还是人为控制做了一定的纠结,最后将两个控制系统都添加进去了,由于警示灯的闪烁频率是由系统的程序设定出的,为此,我专门在网上查找了很多资料,最后确定了红灯闪烁5下,蓝灯闪烁5下,然后共同闪烁的循环工作方式。 设计的时候有两种方案供我选择,分别是采用方案一:使用光敏电阻直接提供给51单片机输入信号,并
8、进行相应的后续程序操作;方案二:使用光敏电阻和三极管联合驱动的方式,提供给单片机输入传感信号。(1)使用光敏电阻直接提供给51单片机输入信号,并进行相应的后续程序操作此系统的硬件部分主要是由89C2051单片机,74LS48芯片,ULN2003芯片所组成。该系统硬件结构简单,但是难以实现且不符合系统在现实生活中的实用性等原则。(2)使用光敏电阻和三极管联合驱动的方式,提供给单片机输入传感信号。 此系统的硬件部分主要是由89C51单片机和其他一些时钟控制系统组成的。系统结构简单,接口较多,既能实现需要的功能,同时也可以在其基础上扩展出更多的。软件设计的部分,程序也比较简单,符合设计要求。最后确定
9、设计的方案采用第二种。2.2 系统总体框图时钟芯片复位电路光控电路XTALRST P1.0AT89C51单片机 P1.1 P3.7警示灯(红警示灯(蓝人工控制图2.1 系统总体框图 当程序启动后,程序进入初始化阶段。单片机将从光控电路中读出的光照强度,并经转化后形成高低电平送入单片机中,并控制警示灯的闪烁。当需要人工调节警示灯的开关时,只需要按下人工控制电路的开关即可;如果需要调节光照强度对警示灯的控制情况,只需要调节光控电路中的调节变阻器即可调节,电阻越小,警示灯开始工作的时间越早。3 系统硬件电路设计3.1 89C51单片机AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPER
10、OMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图3.1 89C51单
11、片机引脚图89C51单片机与早期Intel的8051/8751/8031芯片的外部引脚和指令系统完全兼容,只不过用Flash ROM 替代了ROM/EPROM而已3。89C51单片机内部结构如图所示。图3-2 89C51单片机内部结构示意图89C51单片机包含中央处理器、数据存储器(RAM)、程序存储器(ROM)、定时/计数器、并行接口、串行接口和中断系统的几大单元及数据总线、地址总线和控制总线等三大总线,现在加以说明: 中央处理器(CPU): 中央处理器(CPU)是整个单片机的核心部分,是八位数据的处理器,能处理八位二进制数据或者代码,CPU负责控制,指挥和调度整个单元系统协调的工作,完成运
12、算和控制输入输出功能等操作。数据存储器(RAM): 89C51内部有128个8位用户数据存储单元和128个专用寄存器单元,他们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据。所以,用户使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户的定义的字形表。程序存储器(ROM):程序存储器是用来存放已调试完成的程序和常数表格的。为了提高系统的可靠性,应用程序通常固化在片内ROM中。CPU设置了一个专用寄存器程序计数器PC,用以存放将要执行的指令地址。PC的长度为16位,故程序存储器的寻址范围为64KB(0000HFFFFH),也就是说,51系列单片
13、机具有64KB的程序存储器空间。定时/计数器(ROM): 89C51单片机有两个16位定时器/计数器,通过对机器周期计数达到定时的目的,通过对外部事件计数达到计数之目的。并行输入输出(I/O)口: 89C51共有四组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。数据在整个传输过程中,并排前进,有多少个数据线就能同时传送多少位数据。并行通信的特点是硬件连线多、传送速率高,一般适用于近距离、高速率的通信领域。如:计算机主板与硬盘、打印机等之间的通信。双全双工串行口:89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位
14、器使用。数据在传输过程中一位一位的串行传输,硬件连接比较简单。最简单时只需3根连线即可实现串行通信,相对于并行通信来讲其通信速率低,一般适用于短距离数据通信。在单片机应用系统中常采用串行通信方式。3.2 光敏电阻介绍光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入
15、射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达110M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.40.76)m的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。通常,光敏电阻器都制成薄片结构,以便吸收更多的光能。当它受到光的照射时,半导体片
16、(光敏层)就激发出电子空穴对,参与导电,使电路中电流增强。为了获得高的灵敏度,光敏电阻的电极常采用梳状图案,它是在一定的掩膜下向光电导薄膜上蒸镀金或铟等金属形成的。光敏电阻器通常由光敏层、玻璃基片(或树脂防潮膜)和电极等组成。光敏电阻器在电路中用字母“R”或“RL”、“RG”表示。其结构如图2.4所示:图3-3 光敏电阻的结构图在光敏电阻两端的金属电极之间加上电压,其中便有电流通过,受到适当波长的光线照射时,电流就会随光强的增加而变大,从而实现光电转换。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也可以加交流电压。光敏电阻是采用半导体材料制作,利用内光电效应工作的光电元件。它在
17、光线的作用下其阻值往往变小,这种现象称为光导效应,因此,光敏电阻又称光导管。用于制造光敏电阻的材料主要是金属的硫化物、硒化物和碲化物等半导体。通常采用涂敷、喷涂、烧结等方法在绝缘衬底上制作很薄的光敏电阻体及梳状欧姆电极,然后接出引线,封装在具有透光镜的密封壳体内,以免受潮影响其灵敏度,如图2.5所示。在黑暗环境里,它的电阻值很高,当受到光照时,只要光子能量大于半导体材料的禁带宽度,则价带中的电子吸收一个光子的能量后可跃迁到导带,并在价带中产生一个带正电荷的空穴,这种由光照产生的电子空穴对增加了半导体材料中载流子的数目,使其电阻率变小,从而造成光敏电阻的阻值下降。光照愈强,阻值愈低。入射光消失后
18、,由光子激发产生的电子空穴对将逐渐复合,光敏电阻的阻值也就逐渐恢复原值。4 系统软件设计4.1 Proteus软件环境介绍本系统的硬件设计首先是在Proteus软件环境中仿真实现的。Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是互动的。针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。如果有显示及输出,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,还能
19、看到运行后输入输出的效果。Proteus建立了完备的电子设计开发环境,尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果 Proteus是目前最好的模拟单片机外围器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件.)。其实Proteus 与 multisim比较类似,只不过它可以仿真MCU,当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是初学者拥有它们的可能性比较小。当然,硬件实践还是必不可
20、少的。在没有硬件的情况下,Proteus能像pspice 仿真模拟/数字电路那样仿真MCU及外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也是很有必要的。Proteus软件主要具有以下几个方面的特点:1、设计和仿真软件Proteus 是一个很有用的工具,它可以帮助学生和专业人士提高他们的模拟和数字电路的设计能力。2、它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。3、它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。4、它可以仿真目前流行的单片机,如PICS, ATMEL-AVR, MOTOROLA,
21、 8051 等。5、在设计综合性方案中,还可以利用ARES开发印制电路板。4.2 Keil C51开发系统基本知识Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的
22、优势。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通
23、过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51开发系统基本知识Keil C51开发系统基本知识1. 系统概述Keil C51是美国K
24、eil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,如图
25、(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真
26、器时,注意事项:仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。4.3系统软件分析 任何一个应用系统,它们都有着自己的硬件系统和软件系统,少了任何一个部分都不可能称之为一个完整的应用系统,它们之间是相互依存的一个整体,硬件系统是软件系统的一个基础和前提,为软件系统提供了一
27、个操作平台;而软件系统是硬件系统的灵魂,它对硬件系统起到扩充和完善的作用。可想而知软件系统与硬件系统同等重要,下面为系统软件设计过程:1 警示灯的闪烁频率这是通过延时函数来控制灯的闪烁频率,延时函数和系统本身的机器周期有着密切的关系,延时函数是在51单片机的最小系统的晶振的控制之下来实现功能的。2.警示灯的闪烁规律警示灯在高速公路上,通过它的灯光闪烁来提醒周围司机谨慎驾驶,而警示灯的闪烁规律对司机的提醒程度是不同的,找到一个有效地闪烁规律是很有必要的。所以通过程序的让警示灯同程度的闪烁就可以达到上面的效果。3.警示灯光控和手控光控是通过扫面与光敏电阻相连的IO口的高低电平的变化来控制警示灯的亮
28、灭。然而在现实生活中往往会出现某些特殊情况,白天也需要警示灯的闪烁,所以就设置了一个手动控制开光。4.4 程序流程图(1)主程序流程图NY.开始背景光检测初始化警示灯亮背景光强低于预设值图4.1 程序流程图主程序流程图说明: 因为警示灯的开启条件是在需要没有光照的条件下进行,既是在黑暗的条件下。程序的初始化以后就是对接口P3.7的一个检查过程,由于P3.7口会输出一个高电平,所以应该使得在P3.7口为低电平的时候,警示灯亮,这就是光敏电阻电路所需要实现的一个功能,既判断背景光的亮度是否低于预设值,是的话,就开启警示灯。(2)人工调节警示灯的开启流程图。YN灯警示灯关等待响应初始化警示灯亮自动控
29、制开关是否开启图4.2 警示灯人工控制开关流程图人工控制警示灯开关流程图说明: 当未按下控制开关时,警示灯受到光感电路控制,在白天的时候熄灭,晚上的时候亮起,在按下开关以后,系统为P3.7口提供一个低电平,用于实现控制警示灯的闪烁,按下开关以后,警示灯无条件开启,实现白天的对警示灯的开关控制。(3)警示灯闪烁控制警示灯开启红灯闪烁5次,蓝灯关闭蓝灯闪烁5次,红灯关闭两灯同时闪烁3次警示灯是否关闭程序终止YN 图4.3 警示灯闪烁控制流程图警示灯闪烁控制说明:警示灯通过开关开启过后,就应该有一定的闪烁规律使其能够得到一定的效果,我们这次的设计以红蓝交替闪烁为起点,循环往复闪烁,直到警示灯被芯片控
30、制关闭。(4)人工控制开关优先级高于光控电路开关。 警示灯关闭人工控制开关是否开启YN光照是否不足警示灯开启YN图4.4 人工控制与光控电路光照控制的优先级人工控制与光控电路光照控制的优先级说明: 由于人为控制灯光开关的时间是随时的,而光控电路通过光照控制时间是有限的,所以从追求功能更完善的角度来说,应当优先考虑是否人工控制,然后再考虑光控是否成功。这也是控制功能中比较重要的一步,它决定了警示灯是否能够在白天或者任何时刻工作的能力。5 系统调试过程通过上面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进
31、行下一步的修改。(1) 在Protel 99 SE中,对硬件电路图进行ERC电气规则检查。图5.1警示灯原理图程序经过调试显示“0错误,0警告”。表示程序调试通过。图5.2程序调试结果(2) protues调试图5.3警示灯仿真图 (3)电路板的规划图5.4 警示灯PCB板结 论本次设计在对警示灯的光感控制方面的基本要求之外,加入了更多趣味性元素,比如灯的闪烁频率、次数、个数等控制方面,还能对警示灯进行自动控制,这是一个很有意义的题目,感谢我的指导老师陈飞老师为我提供了一个这么好的题目。我在本次设计首次采用了DS1302时钟芯片,此芯片稳定性好,并且功能强大。而主要的芯片AT89C51单片机,
32、在系统中作为一个处理装置,一口接受到外界给予的控制信号,并对其作出判断识别,并且执行相应的处理;本系统采用的是硬件和软件共同组合的办法,其最大特点是:软件设计独特、可靠,硬件电路简单,安装方便易于实现,相对也比较简单,没有太多的危险。 这次的设计很有意思,也和汽车相关的知识有一定的关系,希望将来能够在这里面学到更多的知识,并且应用于汽车的内部,进一步学习到汽车内部的电子器件。 致 谢 这次课程设计在指导老师陈飞老师的带领下,我顺利完成了这次的微机原理课程设计。在陈飞老师的精心指导下,我才能够一步一步的从选择我感兴趣的题目,到做出设计的框架,到最后的完成,我这次的课程设计离不开陈飞老师的指导,相
33、信他也为这次设计付出了很多的心血,在这里,真心感谢我的陈飞老师。同时,也很感谢其他指导老师给我的很多帮助,也很感谢我的同学们在我做设计的过程中给我的灵感和帮助,同时也让我懂得了团队的重要性,只有相互帮助,才能够更快更好的取得想要的结果,团结的力量永远是最大的。从开始进入课题到课程设计的完成,有多少可敬的老师、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意! 最后,再次对关心、帮助我的老师们,尤其是陈飞老师表示真诚的感谢!参考文献1Protel99SE EDA 技术及应用徐峥颖编著,北京:机械工业出版社,20052单片机系统的protues设计与仿真张靖武编著,北京:电子工业出版社,200
34、73单片机原理及接口技术李朝青编著,北京:北京航空航天大学出版社,20054MCS-51单片机应用开发实用子程序边春远编著,北京:人民邮电出版社,2005附录1程序:#include#define uchar unsigned charsbit W=P37; sbit red=P10;sbit blue=P11;sbit RET=RSTvoid delay(uchar x);void close();void start()void shanshuo();void main()if(W=0)shanshuo();if(W=1) red=1; blue =1; if(RET=0) Start()
35、; If(RET=1) close() void delay(uchar x)uchar y,z;for(y=x;y0;y-)for(z=55;z0;z-);Void close()uchar d=1;while(d-)red=1bule=1Void start()Uchar e=1While(e-)red=1bule=1void shanshuo() uchar a=5,b=5,c=3;while(a-) red=0;blue=0delay(1);red=1;blue=1delay(1);while(b-)blue=0;red=0delay(1);blue=1;red=0delay(1);while(c-)red=0;blue=0;delay(8);red=1;blue=1;delay(4);