基于单片机的流水灯系统
毕业设计---基于单片机的流水灯设计

总结
通过这次单片机课程设计,我不仅加深了 对单片机理论的理解,将理论很好地应用 到实际当中去,而且我还学会了如何去培 养我们的创新精神,从而不断地战胜自己 ,超越自己。创新可以是在原有的根底上 进行改进,使之功能不断完善,成为真己 的东西。
9
致谢
系老师三年以来的帮助和教导 同学在生活上的帮助 辩论委员会
11111110〕
MOV P1,ACC
;将ACC的数据送P1口
MOV R0,#7
;将数据再移动7次就完成一个8位流水过程
LOOP: RL
A
;将ACC中的数据左移一位
MOV P1,A
;把ACC移动过的数据送p1口显示
ACALL DELAY
;调用延时子程序
DJNZ R0,LOOP ;没有移动够7次继续移动
5
软件编程
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成
上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写
程序控制单片机管脚电平的上下变化,来实现发光二极管的一亮一灭
。软件编程是单片机应用系统中的一个重要的组成局部。以最简单的
流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控
4
流水灯硬件原理图
从原理图中可以看出,如果要 让接在P1.0口的LED1亮起来,那 么只要把P1.0口的电平变为低电平 就可以了;相反,如果要接在P1.0 口的LED1熄灭,就要把P1.0口的 电平变为高电平;同理,接在P1.1 ~P1.7口的其他7个LED的点亮和 熄灭的方法同LED1。因此,要实 现流水灯功能,我们只要将发光二 极管LED1~LED8依次点亮、熄灭 ,8只LED灯便会一亮一暗的做流 水灯了。在此我们还应注意一点, 由于人眼的视觉暂留效应以及单片 机执行每条指令的时间很短,我们 在控制二极管亮灭的时候应该延时 一段时间,否那么我们就看不到“ 流水〞效果了。
单片机流水灯实验原理

单片机流水灯实验原理
单片机流水灯实验原理是通过使用单片机控制LED灯的亮灭
顺序,实现像水流一样顺序逐个灯泡点亮或熄灭的效果。
具体的原理是首先定义一个存储变量来表示灯泡的状态,将其初始化为一个特定的值,然后通过循环不断地改变存储变量的值,从而改变LED灯的状态。
在流水灯实验中,使用的通常是移位寄存器方法。
首先将存储变量的最低位设置为1,表示第一个灯泡亮起。
然后通过向左
移位的方法不断改变存储变量的值,使得下一个灯泡依次点亮。
当存储变量的最高位被移动到最低位时,循环重新开始,实现灯泡的循环点亮。
为了使灯泡的点亮和熄灭速度可见,可以在每次改变存储变量的值之后,添加一个延时函数,控制灯泡亮灭的间隔时间,从而形成一个流动的效果。
通过编程控制灯泡的亮灭顺序和时间间隔,可以实现不同的流水灯效果,如单方向流水灯、双向流水灯、交替流水灯等。
这些效果的产生都是通过改变存储变量的值和控制亮灭时间来实现的。
单片机流水灯实验原理

单片机流水灯实验原理
单片机流水灯实验原理:
流水灯是一种基本的电子实验,通过使用单片机控制多个
LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。
流水
灯实验原理如下:
1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单
片机的不同输出引脚上。
每个 LED 灯的阴极与电流限制电阻
连接到负极(GND),而阳极连接到单片机的 IO 引脚。
需要
注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。
2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设
置相应的输出引脚作为流水灯的控制引脚。
通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。
3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。
可以使用一个循环来实
现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。
4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。
可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。
通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。
单片机流水灯实验总结

单片机流水灯实验总结引言:单片机流水灯实验是学习嵌入式系统和单片机基础的重要实践环节。
通过设计和搭建流水灯电路,我们可以深入理解单片机的工作机制和时序控制。
本文将总结我在流水灯实验中的心得体会,分享一些有关单片机流水灯设计的经验。
一、实验概述这个实验的目标是设计一个能够连续闪烁的流水灯电路,通过单片机的控制,实现一串灯按照固定的顺序不断亮灭的效果。
我们可以通过改变灯的亮灭时间和顺序,来获得不同的流水灯效果。
二、选材准备在进行单片机流水灯实验之前,我们需要准备一些基本的材料和工具。
首先,我们需要一块单片机开发板,最常用的是STC89C52系列的开发板,该开发板搭载了一颗51单片机。
此外,我们还需要准备串联的LED灯,该灯可以选择常见的5mm直径的LED灯,同时需要配备一定数量的适量电阻用于限流。
三、实验步骤1. 连接电路:首先,需要将电路图中的元件按照连接要求连接好,确保各个元件之间的连接无误且紧固可靠。
2. 编写程序:接下来,我们需要使用Keil等软件编写单片机的程序。
通过学习嵌入式C语言编程,我们可以控制单片机的输入输出,包括控制LED灯的亮灭。
3. 烧录程序:编写完程序后,需要借助烧录器将程序烧录到单片机中。
这样单片机才能按照我们设计的程序来控制灯的状态。
4. 调试与测试:当烧录完成后,可将单片机开发板上的电源与电源线连接,并打开开关,此时,流水灯便会开始闪烁。
通过观察流水灯的灯光变化,我们可以判断我们的程序是否正确。
四、实验心得通过进行单片机流水灯实验,我深刻体会到了嵌入式系统的编程和硬件设计的重要性。
在编写程序时,我们需要仔细思考流水灯的亮灭规律和顺序,以及每个灯亮灭的时间间隔。
这需要我们对嵌入式C语言的基本语法和单片机的时序控制有一定的理解。
另外,在实验过程中,我遇到了一些问题和挑战。
例如,如何控制灯的顺序和亮灭时间,如何调整程序的延时时间等。
在解决这些问题的过程中,通过查阅资料和与同学的讨论,我逐渐积累了解决问题的经验,并在实践中不断调试和优化程序。
基于51单片机的流水灯设计

基于51单片机的流水灯设计51单片机是一种常用的微控制器,它具有高性价比、易于编程和广泛的应用范围。
流水灯是一种常见的电子灯光装置,它通过类似于瀑布般的效果,逐个点亮一系列的灯。
本文将介绍基于51单片机的流水灯的设计。
流水灯的设计过程可以分为硬件设计和软件设计两个步骤。
硬件设计:在硬件设计方面,我们需要准备以下器件和材料:1.51单片机开发板2.杜邦线3.LED灯4.电阻接下来,根据流水灯的设计思路,将多个LED灯连接在一起,形成一个线性的灯带。
为了控制LED灯的亮灭,我们需要使用51单片机的GPIO 口来提供高低电平信号。
通过改变GPIO口的输出信号,我们可以实现各个LED灯的顺序点亮和熄灭。
软件设计:在软件设计方面,我们需要使用到汇编或C语言来编写控制程序。
以下是一个简单的流水灯程序的伪代码:```1.初始化51单片机的GPIO口方向,设置为输出模式2. 定义一个存储灯光模式的数组,比如`light_pattern[] = {0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01}`3.定义一个循环计数器`i`4.进入无限循环5. 通过将`light_pattern[i]`的值写入GPIO口,控制LED灯的亮灭6.延时一定时间(比如几百毫秒)7.更新循环计数器`i`8.如果`i`超过了数组的长度,将其重置为09.结束循环```在程序中,我们可以通过循环计数器`i`来依次点亮和熄灭LED灯。
通过不断更新`i`的值,我们可以实现灯光模式的循环播放。
总结:。
基于51单片机流水灯毕业设计

基于51单片机的流水灯毕业设计方案:一、引言流水灯是一种常见的电子设计项目,适合初学者练习和毕业设计。
通过使用51单片机和少量外围元件,可以实现一个简单而有趣的流水灯效果。
本文将介绍基于51单片机的流水灯设计方案,包括硬件连接、软件程序设计和效果展示等内容。
二、硬件设计1. 材料准备:51单片机(如STC89C52)、LED灯若干(建议4-8个)、电阻、面包板、连线等。
2. 连接方式:将LED灯按顺序连接到51单片机的IO口,每个LED 灯通过一个电阻连接到IO口,确保电流限制。
3. 电源供应:连接电源至电路板,保证正常工作电压和电流。
三、软件设计1. 编程环境:使用Keil C51等集成开发环境进行程序编写。
2. 程序设计:设计一个循环移位的程序,控制51单片机的IO口依次点亮LED灯,形成流水灯效果。
3. 定时控制:通过定时器中断或延时函数控制LED灯的亮灭时间,实现流水灯的效果。
四、效果展示1. 烧录程序:将编写好的程序烧录到51单片机中。
2. 调试测试:连接电路并通电,观察LED灯按顺序点亮并流动的效果。
3. 优化改进:根据实际效果调整程序和硬件设计,优化流水灯的效果和稳定性。
五、注意事项1. 电路连接:确保电路连接正确,避免短路或接反现象。
2. 程序设计:合理设计程序逻辑,确保LED灯的流水效果符合预期。
3. 调试测试:在调试过程中注意观察LED灯的亮暗情况,及时发现问题并进行调整。
六、总结基于51单片机的流水灯设计是一个适合初学者和毕业设计的简单而有趣的项目,通过设计和实现可以提升对单片机编程和电路连接的理解和技能。
希望通过本文的介绍,读者能够顺利完成基于51单片机的流水灯毕业设计,并在实践中不断提升自己的电子设计能力。
单片机流水灯实验报告

单片机流水灯实验报告本实验旨在通过单片机控制LED灯的亮灭,实现流水灯效果。
通过对实验的设计、搭建和调试,我们可以更深入地理解单片机的工作原理和掌握相应的编程技巧。
实验器材和元件:1. 单片机,我们选用了STC89C52单片机作为控制核心;2. LED灯,我们使用8个LED灯作为实验的输出设备;3. 电阻,为了限流,我们使用了适当的电阻;4. 连接线、面包板等。
实验步骤:1. 搭建电路,首先,我们按照电路图将单片机、LED灯和电阻连接在一起,并将电路连接到电源上;2. 编写程序,接下来,我们使用C语言编写单片机的控制程序,实现LED灯的流水灯效果;3. 烧录程序,将编写好的程序通过烧录器烧录到单片机中;4. 调试程序,将烧录好的单片机连接到电路上,进行程序的调试和验证;5. 完善电路,根据实际调试情况,对电路进行必要的调整和完善,确保LED 灯能够按照预期的流水灯效果工作。
实验结果:经过反复调试和完善,我们成功实现了单片机控制LED灯的流水灯效果。
在程序控制下,8个LED灯按照顺序依次亮起并熄灭,形成了流水灯的效果。
整个实验过程非常顺利,取得了预期的效果。
实验心得:通过本次实验,我们对单片机的控制原理有了更深入的理解,也掌握了一定的C语言编程技巧。
在实验的过程中,我们遇到了一些问题,如LED灯未按预期工作、程序逻辑错误等,但通过分析和调试,最终都得到了解决。
实验不仅提高了我们的动手能力,也培养了我们的分析和解决问题的能力。
总结:本次实验不仅让我们熟悉了单片机的控制方法,也让我们体验了从实验设计到调试完善的整个过程。
通过这次实验,我们不仅学到了专业知识,也培养了动手能力和解决问题的能力。
希望在以后的学习和实践中,能够更好地运用所学知识,不断提升自己的能力。
以上就是本次单片机流水灯实验的报告内容,希望对大家有所帮助。
单片机控制左右循环的流水灯设计

单片机控制左右循环的流水灯设计单片机是一种微型计算机芯片,可以用于控制和管理各种电子设备。
流水灯是一种经典的电子元件,通过依次点亮或熄灭一组LED灯来形成流动效果。
本文将设计一个使用单片机控制的左右循环流水灯。
设计思路:1.硬件设计:a.先准备一个单片机开发板、一组LED灯和与LED灯串联的电阻。
b.将LED灯按照循序连接,连接方式可以为并联或串联。
c.通过引脚和外部电路将LED灯与单片机的IO口相连。
每个LED灯与一个IO口相连,并且通过电阻限流。
2.软件设计:a.在单片机上编写控制流水灯的程序。
这可以使用C语言或汇编语言进行编写。
b.程序主要通过循环结构来实现流水灯的效果。
编写一个循环函数,用于控制LED灯的点亮和熄灭。
c.在循环函数中,通过控制IO口输出高电平或低电平来控制LED灯的亮灭。
每次循环,根据需要逐个点亮或熄灭LED灯。
d.为了实现左右循环的效果,可以通过改变点亮或熄灭的顺序来改变流水灯的方向。
可以使用一个变量来控制点亮和熄灭的顺序,每次循环后改变该变量的值。
示例代码:以下是一个使用C语言编写的简单示例代码,来控制左右循环流水灯。
```c#include <reg52.h>//定义LED灯使用的IO口sbit LED1 = P1^0;sbit LED2 = P1^1;sbit LED3 = P1^2;sbit LED4 = P1^3;//控制流水灯循环void lightFlowint i;int direction = 1; // 控制流水灯的方向,1表示向右,-1表示向左//流水灯循环while(1)//控制LED灯的点亮和熄灭LED1=0;LED2=1;LED3=1;LED1=1;LED2=0;LED3=1;LED4=1;LED1=1;LED2=1;LED3=0;LED4=1;LED1=1;LED2=1;LED3=1;LED4=0;//根据方向改变控制顺序if(direction == 1)//向右direction = -1;}elsedirection = 1;}}void mainlightFlow(;```这个示例代码中,使用P1口上的4个IO口来控制4个LED灯的点亮和熄灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1.系统方案选 (x)1.1 设计要求 (x)1.2 方案选择 (x)2 系统的硬件设计与实现 (x)2.1芯片介绍 (x)2.2 电源 (x)2.3 时钟 (x)2.4 I/O线 (x)2.5 晶振电路 (x)2.6 LED电路 (x)2.7按键电路 (x)3 系统的软件设计 (x)3.1 程序流程图 (x)3.2 程序设计 (x)3.3 仿真电路图 (x)3.3.1仿真电路初始化图 (x)3.3.2 仿真结果(设计实现的功能) (x)3.3.3 结论 (x)4.设计心得与体会 (x)5.参考文献 (x)【摘要】:若干个灯泡有规律依次点亮或者依次熄灭叫流水灯,它用在夜间建筑物装饰方面。
例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。
一般情况下单片机的流水灯由若干个LED发光二极管组成,在单片机系统运行时,可以在不同的状态下让流水灯显示不同的组合,作为单片机运行正常的指示,当单片机系统出现故障时,可以利用流水灯显示当前的故障码,对故障做出诊断。
本设计采用一块单片机(AT89C52.BUS)作为流水灯系统的控制核心,通过编程来实现单片机I/O口对LED的控制,使流水灯显示上下流动、停止流动、闪灯等功能,并由按键控制流水灯的不同亮法,LED的工作方式通过键盘的扫描实现。
其中的LED采取共阳极接法,通过依次向连接的LED的I/O口送出低电平来实现LED的点亮。
【关键词】:流水灯按键控制单片机1、方案:1.1设计要求:以单片机为核心,设计一个节日彩灯控制器:P1.2—开始,按此键则灯开始流动(由上而下)。
P1.3—停止,按此键则停止流动,所有灯为暗。
P1.4—上,按此键则灯由上向下流动。
P1.5—下,按此键则灯由下向上流动。
1.2方案选择:根据题目的要求,控制模块需要选择单片机作为核心控件,可以选择的单片机有AT89C51、AT89C52还有各自的总线型号的,而对于按键,可以选择BUTTON,当然用SWITCH来代替也是可以实现的;显示模块的LED发光二极管也有很多颜色可以供选择如红色、蓝色、绿色等。
考虑到题目的要求与电路图布线的问题,经过仔细的分析和论证,最终的方案如下:单片机:AT89C52.BUS、按键:BUTTON发光二极管:LED-RED。
系统的基本框图1.2.1所示,单片机主要用于对流水灯模块(发光二极管)的控制,实现流水灯从上往下流、停止、由下往上流、闪烁的功能,而按键模块控制单片机I/O口的输出电平,间接地控制流水灯模块。
图1.2.1 系统基本框图工作过程:系统开始工作后,按下按键1(由上往下),流水灯模块上循环的显示由上往下流动,放开按键,停止流动;按下按键2,流水灯模块循环的显示由下往上流动,放开按键,流动停止;按下按键3,流水灯模块循环的显示交错闪烁,放开按键,闪烁停止;按下按键4,流水灯模块循环的由上往下全部点亮,全部点亮时,一下子全灭,再由下往上全部点亮;无论按下哪个键,只要再按下按键5,循环停止直到松开按键5为止。
2、系统的硬件设计与实现2.1芯片介绍按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等AT89C52单片机是美国ATMEL 公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:8kB 闪存、256BRAM 、32根I/O 口线、3个16位定时/计数器、6个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V 的电压工作范围和0~24MHz 工作频率,使用AT89C52单片机时无须外扩存储器因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机.从图2.1.1中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口和P2.0~P2.7口的其他15个LED 的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED16依次点亮、熄灭,16只LED 灯便会一亮一暗的做流水灯了。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
单片机 AT89C52按键模块流水灯模块(发光二 极管)图2.1.1 硬件电路图2.2电源VCC - 芯片电源,接+5V。
VSS - 接地端。
用万用表测试单片机引脚电流一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。
2.3时钟XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
2.4 I/O线89C52共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总)。
2.5晶振电路对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒(往往用低电压以求低功耗)的系统。
这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振。
这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡。
在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易。
在振荡回路中,晶体既不能过激励(容易振到高次谐波上)也不能欠激励(不容易起振)。
晶体的选择至少必须考虑:谐振频点,负载电容,激励功率,温度特性,长期稳定性。
89C52单片机的时钟信号通常用凉种电路形式得到:内部振荡和外部振荡方式。
基于晶振的振荡器通常提供非常高的初始精度和较低的温度系数。
相对RC 振荡器能快速启动,但提供的初始精度和温度系数会较差。
图2所示的电路能产生可靠的时钟信号,但其性能受环境条件和电路元件选择以及振荡器布局的影响。
使用时,元件必须根据特定的逻辑系列进行优化。
引脚XTAL1与XTAL2外接晶体振荡器或陶瓷谐振起,构成内部振荡方。
单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。
内部振荡方式第外部电路如图2所示。
在实际应用中通常还需要在晶振的两端和地之间各并上一个小电容图2.2.5中,C1,C2起振荡频率、快速起振的作用。
起值在5-30PF。
晶振频率的典型值是12MHZ,内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。
外部振荡方式是吧外部已有的时钟信号引入单片机内着适用单片机的时钟与外部信号同步。
图2.2.5 内部震荡方式的外部电路图2.6、LED电路LED是一种能够将电能转化为可见光的半导体,它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。
如图2.1.1 LED串联一个220欧姆的电阻后接在5V的电压上。
LED灯电路接在单片机P1口上。
LED灯阳极接电源,阴极接单片机的I/O口,低电平驱动,只要在单片机相应引脚给出低电平,LED 就会发亮2.7、按键电路如图2.1.1单片机的3.[0..4]口分别连接一个按键,按键的另一端共地,当按下按键时,对应的端口输入为0,此时可以驱动对应的亮灯功能。
3、软件设计及仿真3.1程序流程图3.2 程序设计单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。
软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。
以下是本设计的程序代码:#include <REG52.H>#include <stdio.h>#include <INTRINS.H>#define LED_PORT1 P1#define LED_PORT2 P2sbit aSwitch=P3^0;sbit bSwitch=P3^1;sbit cSwitch=P3^2;sbit dSwitch=P3^3;sbit eSwitch=P3^4;int b;int c;int d;void time(unsigned int ucMs); /*延时单位:ms */ void main(void){unsigned char ucTimes;unsigned char temp;#define DELAY_TIME 200 //延时200msint a;a=DELAY_TIME;while (1) //进入死循环{ LED_PORT1 = 0x00; //亮起所有的灯LED_PORT2 = 0x00;while(!aSwitch) //按键a控制子程序{temp=0xfe;d=0x01;c=0x00;for(ucTimes=0;ucTimes<8;ucTimes++){LED_PORT2 = temp;b=c+d;LED_PORT1 = b;time(DELAY_TIME);temp<<=1;c=b;d<<=1;}temp=0xfe;d=0x01;c=0x00;for(ucTimes=0;ucTimes<9;ucTimes++){LED_PORT1 = temp;b=c+d;LED_PORT2 = b;time(DELAY_TIME);temp<<=1;c=b;d<<=1;}while(!eSwitch){LED_PORT1 = 0xff;LED_PORT2 = 0xff;}}while(!bSwitch) //按键b控制子程序{temp=0x7f;d=0x80;c=0x00;for(ucTimes=0;ucTimes<9;ucTimes++) {LED_PORT1 = temp;b=c+d;LED_PORT2 = b;time(DELAY_TIME);temp>>=1;c=b;d>>=1;}temp=0x7f;d=0x80;c=0x00;for(ucTimes=0;ucTimes<9;ucTimes++) {LED_PORT2 = temp;b=c+d;LED_PORT1 = b;time(DELAY_TIME);temp>>=1;c=b;d>>=1;}while(!eSwitch) //按键c控制子程序{LED_PORT1 = 0xff;LED_PORT2 = 0xff;}}while(!cSwitch){LED_PORT1 = 0x55;LED_PORT2 = 0x55;time(a);LED_PORT1 = 0xaa;LED_PORT2 = 0xaa;time(a);while(!eSwitch){LED_PORT1 = 0xff;LED_PORT2 = 0xff;}}while(!dSwitch) //按键d控制子程序{LED_PORT1 = 0xff;LED_PORT2 = 0xff;time(DELAY_TIME);temp=0xfe;for(ucTimes=0;ucTimes<8;ucTimes++) {LED_PORT1 = temp;time(DELAY_TIME);temp<<=1;}temp=0xfe;for(ucTimes=0;ucTimes<8;ucTimes++) {LED_PORT2 = temp;time(DELAY_TIME);temp<<=1;}LED_PORT1 = 0xff;LED_PORT2 = 0xff;time(DELAY_TIME);temp=0xfe;for(ucTimes=9;ucTimes>0;ucTimes--) { temp>>=1;LED_PORT2 = temp;time(DELAY_TIME);}temp=0xfe;for(ucTimes=9;ucTimes>0;ucTimes--) {temp>>=1;LED_PORT1 = temp;time(DELAY_TIME);}while(!eSwitch) //按键e控制子程序{LED_PORT1 = 0xff;LED_PORT2 = 0xff;}}while(!eSwitch){LED_PORT1 = 0xff;LED_PORT2 = 0xff;}}}void delay_5us(void) //延时5us {_nop_();_nop_();}void delay_50us(void) //延时50us{unsigned char i;for(i=0;i<4;i++){delay_5us();}}void delay_100us(void) //延时100us{delay_50us();delay_50us();}void time(unsigned int ucMs)//延时单位:us {unsigned char j;while(ucMs>0){for(j=0;j<10;j++)delay_100us();ucMs--;}}3.3仿真电路图3.3.1、设计初始化的值的显示效果如图3.3.1所示。