左右来回循环的流水灯
- 格式:wps
- 大小:36.19 KB
- 文档页数:5
青 岛 科 技 大 学微机原理与接口技术综合课程设计(报告)题 目 __________________________________指导教师__________________________ 学生姓名__________________________ 学生学号_________________________________________________________院(部)____________________________专业________________班______年 ___月 ___日直流电机控制综合实验 周艳平宋雪英 01信息科学技术学院 计算机科学与技术0961 2012 12 27摘要 (2)1、单片机概述 (2)2、仿真软件介绍 (2)3、需求分析 (3)一、课程设计目的 (3)二、课程设计要求 (4)三、实验内容 (4)1、设计任务与要求 (4)2、系统分析 (4)1).硬件电路设计(画出原理图、接线图) (5)2)软件框图 (7)3、用keil建项目流程 (8)4、程序清单 (9)4、系统调试 (11)四、设计总结(结论) (12)摘要近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。
而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。
能够通过按键控制8个LED小灯从左到右依次点亮。
关键字:单片机、LED流水灯1、单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
青 岛 科 技 大 学微机原理与接口技术综合课程设计(报告)题 目 __________________________________指导教师__________________________ 学生姓名__________________________ 学生学号_________________________________________________________院(部)____________________________专业________________班______年 ___月 ___日直流电机控制综合实验 周艳平宋雪英 01 信息科学技术学院计算机科学与技术0961 2012 12 27摘要 (2)1、单片机概述 (2)2、仿真软件介绍 (2)3、需求分析 (3)一、课程设计目的 (3)二、课程设计要求 (4)三、实验内容 (4)1、设计任务与要求 (4)2、系统分析 (4)1).硬件电路设计(画出原理图、接线图) (5)2)软件框图 (7)3、用keil建项目流程 (8)4、程序清单 (9)4、系统调试 (11)四、设计总结(结论) (12)摘要近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。
而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。
能够通过按键控制8个LED小灯从左到右依次点亮。
关键字:单片机、LED流水灯1、单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
目录前言 (2)第一章多功能流水灯的设计方案 (3)1.多功能流水灯的设计方案及框图 (3)1.1 基本要求设计方案 (3)1.2 提高设计方案 (3)1.3 设计框图 (3)第二章多功能流水灯设计方案单元模块电路设计 (4)2.多功能流水灯电路的设计 (4)2.1 多功能流水电路 (4)2.2 多功能流水灯的提高电路 (5)第三章试验的调试与分析 (6)第四章结论 (7)后记 (8)参考文献 (8)附录 (9)前言随着社会的不断发展,人民生活水平的提高,流水灯在现实生活中所起的作用越来越重要。
流水灯简易轻巧,外貌美观,能闪现多彩的颜色,在现实生活中起到了广泛的应用。
在繁忙的交通路段,闪烁着的流水交通灯,提醒着人民要遵守交通规则;在繁忙的大街上,闪烁的流水灯无不吸引过路人的眼球,甚至在自动门上都装有自动流水灯,告诉人们现在的时间和日期。
流水灯无处不在,所以说多功能流水灯电路的设计可以使我们进一步了解流水灯,感受流水灯给我们生活带来的美感。
多功能流水灯的设计要求在预定的时间到来时,会产生一个控制信号控制彩灯的流向、间歇等,彩灯流向可以随着电路的改变而改变,并具有自控、手控、流向控制等功能。
主要考察了数字电路中计数器的原理、NE555定时器的作用等相关知识。
在设计的过程中需要了解相关芯片(CD4017、NE555)的具体功能,如引脚图、内部框图和真值表等。
连接好设计电路,由于最后流水灯的流向十分的顺畅和稳定,所以所得的结果十分的简洁并且很成功。
经过资料的查阅,小组的讨论,以及几种方案的比较,选定方案参考如下:整个流水灯的电路由振荡电路、译码电路和光源电路组成,振荡电路的组成包括3个电容、一个电阻器和一个电位器及NE555定时器构成;译码电路的组成包括芯片CD4017;光源电路的组成包括若干电阻个若干二极管。
第一章多功能流水灯的设计方案1.多功能流水灯的设计方案及框图1.1 基本要求设计方案1) 设计一个多功能彩灯流水控制电路。
数电课程设计一课程课题:流水灯设计二课程任务:设计一个可以循环移动的流水灯,灯总数为8盏,具体要求如下: -1,5亮,其余灭,右移三次后全灭-4,8亮,其余灭,左移三次后全灭-4,5亮,其余灭,各向两边移三次后全灭-1,8亮,其余灭,各向中间移三次后全灭三课程设计原理:①译码器74139 将Y10N-Y23N 分别命名为led1-led8,利用2-4译码,采用A1,B1,A2,B2分别控制,Y10N-Y23N 为低电平时led 等亮,否则灭。
根据设计任务,结合译码器,可得到循环状态图为:②计数器74169计数器74169 译码器74139序列信号产生74194由于led1-led4和led5和led8的移动方向不尽相同,故采用两个计数器来控制,以led1-led4为例,A1,B1由Q0,Q1决定,则通过UP/DN 可控制Q0,Q1是由00-01-10-11,还是由11-10-01-00,即灯的移动方向。
结合灯的移动方向,取led1-led4的控制端UP/DN为s1,led5-led8的为s2,则s1应为1001序列,s2为1010序列。
③序列产生74194利用74x194产生序列信号s1,s2,来控制下一段的计数器的升降UP/DN,进而控制灯的循环顺序。
功能表:四课程设计方案:①电路图:②仿真波形:学习数电以来,都是一些题目化问题的设计,但这次课程设计却和实际联系紧密,牵扯到很多芯片的原理,链接,是一次很好的实践,原理图的设计是理论与实践的交叉点,原理图设计好之后,我们可以利用仿真软件进行仿真,这样便可以验证我们设计的正确性;积累了经验并且熟练地掌握了软件的基本使用方法和一些快捷键的用途,并体会到数电和实际生活的联系,是不错的开始。
电子课程设计——多功能流水灯学院:太原爆炸学校专业、班级:爆炸122201H班姓名:金金金学号:20122205xxx指导老师:big bang2014年12月多功能流水灯一、设计任务与要求1.要求彩灯有单向流水效果。
2.彩灯的流向可以改变。
可以正向流水,也可以逆向流水。
灯流动的方向可以手控,也可以自控,自控往返变换时间为5秒钟。
3.彩灯可以间歇流动,10秒钟间歇一次,间歇时间为一秒。
4. 彩灯的流速以人眼看清为准。
二.总体框图(一)设计思路:彩灯流水控制电路,其主要部分是实现定时功能,即在预定的时间到来时,产生一个控制信号来控制彩灯的流向,间歇等,可利用中规模集成器件可逆计数器和译码器来实现正,逆流水功能,利用组合电路实现自控,手控方向控制等.利用555定时器组成一个多谐振荡器,发出连续脉冲,作为计数器的时钟脉冲源。
彩灯流向可以改变,应该选用加减计数器,但考虑到加减计数器无法实现时间间歇,所以不考虑。
计数器的输出接译码器以实现流水的效果。
如图(1-1)所示:图(2-1)多功能流水灯总体框图根据题目要求,利用试验箱上的脉冲信号,发出连续脉冲,作为计数器的时钟脉冲源。
为了实现灯流向的可控,可以选用加减可逆计数器,计数器的输出接译码器以实现流水的效果。
在选择流向和间歇控制电路时有两种设计方法,第一种是在设计一个脉冲源,使其频率是主脉冲的整数倍。
但这种方法解决不了同步的问题。
第二种方法是利用分频得到所需要的控制信号,显然这种方法优于第一种方法三.选择器件:器件名称 数量 功能说明 74LS190 一片 加减计数器 74LS42 一片 二位十进制译码器 555定时器 一片 构成多谐振荡器74LS04 十一片 非门 74LS160 三片 分频器 74LS32 一片 二输入或门 小灯泡十个观察效果(一)计数74LS190该电路所要实现的功能为当CP 有效时,若U/D 为低电平时,计数器进行加法计数,计数初值为0000;若U/D 为高电平时,计数器进行减法计数,计数初值为1001。
课程设计报告书设计题目:双灯点亮循环控制流水灯设计课程名称:单片机原理与应用系部:专业:班级:组别:姓名:学号:成绩:2008年 6 月 20 日一、系统功能要求设计以AT89C51为核心并用它来控制发光二极管双灯点亮循环的实验装置,用AT89C51单片机控制8个发光二极管发光,实现亮点以12HZ频率又高到低位两两循环移动。
通过PROTEUS软件设计、仿真,并能从中掌握通过软件控制发光二极管的思路和技巧。
二、系统硬件电路设计(一)设计思路本系统电路由四部分组成:时钟电路、复位电路、输出部分、89C51芯片首先介绍一下我设计的电路图,如图1所示:图1其中主要部分电路功能如下图所示:①时钟电路用于产生单片机工作时所需的时钟信号,在芯片的外部通过19脚、18脚接晶体振荡器和微调电容,形成反馈电路,构成一个稳定的自激振荡器。
电路中的C1、C2 一般取30pF左右,而晶体振荡器的频率范围通常是1.2-12MHZ,晶体振荡器的频率越高,震荡频率就越高。
②本部分电路起上电复位的作用。
③输出部分采用红、绿、蓝、黄四种颜色的二极管,让流水灯在移动的时候色彩鲜明、便于观察,该系统采用8个发光二极管,两两从高位到地位流水移动。
RN1排阻的作用是保护二极管,向它提供较小的电流,防止二极管因为电流过大而烧毁。
④在设计图中,89C51芯片是核心,P0,P1,P2,P3口均可以作为I/O口使用。
本电路中使用P1口作为输出口。
(二)单片机原理8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
流水灯的工作原理
流水灯是一种常见的装饰灯具,其工作原理是通过控制电源交替给各个LED灯泡供电来实现灯光的闪烁效果。
流水灯通常由一串串的LED灯泡组成,这些灯泡通过电路连
接在一起。
每颗LED灯泡都有正负两个引脚,其中正极与负
极分别连接在电源的两个输出端。
在流水灯中,每组LED灯泡被分为多个段,每段由若干个灯
泡组成。
每一段的LED灯泡按照特定的顺序依次点亮,形成
类似“流水”的效果。
流水灯的控制电路通常采用计数电路或定时器等元件来控制,具体原理如下:
1. 首先,当电源接通时,流水灯的第一段LED灯泡会被点亮。
2. 然后,计数电路或定时器会发出脉冲信号,控制电源接通下一段LED灯泡。
3. 随着脉冲信号的持续发出,LED灯泡会依次点亮,形成流
水般的效果。
4. 当脉冲信号终止时,电源将停止供电,灯泡熄灭,流水灯进入待机状态。
5. 当需要重新开始流水效果时,电路会重新发出脉冲信号,重复上述过程。
总的来说,流水灯的工作原理基于电路控制LED灯泡的供电,
通过控制脉冲信号的发出来实现不同LED灯泡的点亮顺序,从而形成流水灯的炫彩效果。
《单片机原理及应用课程设计》报告——控制左右循环的流水灯设计专业:电子信息工程班级:电子1111姓名:荀威学号:1120106106指导教师:肖金球2014年6月11日1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2.课程设计要求2.1认真研究设计任务书,明确设计要求、条件、内容和步骤;复习课程有关内容,熟悉有关单元电路的设计方法和步骤;搜集、分析、消化相关资料、软件等;掌握微型计算机应用系统软件设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等2.2系统总体及功能设计,制定总体方案及元器件的选择;2.3硬件设计,完成硬件结构图设计、系统电路图设计和绘制及电路模块的连接;2.4软件设计,完成软件流程图的设计、程序设计;2.5使用Proteus与Keil软件仿真运行;3.硬件设计3.1元件清单3.2 单片机AT89C51该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的基础上进行一些扩展。
单片机的结构如下:图1单片机引脚图在使用时VCC接电源电压,GND接地。
P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。
XTAL1和XTAL2接复位电路。
这些可以在硬件设计部分体现出来3.3.单片机的时钟电路单片机内部有在一个振荡器,本设计采用内部时钟方式,以12MHZ 石英晶体振荡器和两个30PF的片电容组成外部电容的大小对振荡频率有微小影响,可起调节作用。
振荡器,如图所示。
片内的高增益反向放大器通过XTAL1和XTAL2外接,作为反馈元件的外部晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。
Verilog实现双向流⽔灯 实现⼀个双向流⽔灯,从右往左流动,到最左边时,再从左边往右流动,然后再从右边开始流动,如此不断反复。
灯亮、间隔时间都为0.2s,本实验共有四个LED灯,从左到右依次为LED[3]、LED[2]、LED[1]、LED[0],FPGA输出低电平点亮。
实现思路:1. 定义⼀个0.2s的计数器2. LED[3]、LED[0]作为边界标志位,在被点亮时,切换流向,即LED[3]、LED[0]为低电平时,要进⾏⽅向转换,所以要定义⼀个1bit reg变量存储标志实验代码:1//灯亮、间隔时间都为0.2s的双向流⽔灯2module flow_led(3input clk,4input rst_n,5output reg [3:0]led6 );78parameter SYS_FRQ = 50; //时钟输⼊频率,50MHz9parameter LED_FLOW_TIME = 18'd200_000; //LED流⽔灯亮间隔时间,单位us,这⾥是0.2s10parameter LED_FLOW_CNT_TIME = LED_FLOW_TIME * SYS_FRQ; //LED流⽔灯,每个灯亮的时钟周期数1112reg [23:0] flow_cnt; //0.2s计数器13reg flow_flag; //流向标志,0----从右往左,1----从左往右141516//流⽔灯每个灯亮时间计数器17always @(posedge clk or negedge rst_n)18if(!rst_n)19 flow_cnt <= 24'b0;20else if(flow_cnt == LED_FLOW_CNT_TIME - 1'b1)21 flow_cnt <= 24'b0;22else23 flow_cnt <= flow_cnt + 1'b1;242526//流⽔⽅向边界,分别为四个LED灯的两边,即LED[0]、LED[3],在这两个地⽅需要转换标志,以改变其流向27always @(posedge clk or negedge rst_n)28if(!rst_n)29 flow_flag <= 1'b0;30else if(led[0] == 1'b0)31 flow_flag <= 1'b0;32else if(led[3] == 1'b0)33 flow_flag <= 1'b1;34else35 flow_flag <= flow_flag;363738//流⽔效果实现39always @(posedge clk or negedge rst_n)40if(!rst_n)41 led <= 4'b1110; //FPGA输出低电平时,点亮LED42else if(flow_flag == 1'b0) //从右往左43begin44if(flow_cnt == LED_FLOW_CNT_TIME - 1'b1)45 led <= {led[2:0], led[3]};46else47 led <= led;48end49else if(flow_flag == 1'b1) //从左往右50begin51if(flow_cnt == LED_FLOW_CNT_TIME - 1'b1)52 led <= {led[0], led[3:1]};53else54 led <= led;55end56else57 led <= led;585960endmoduleView Code。
void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255Delay(50000);P1=0xfe; //赋初始值while (1) //主循环{for(i=0;i<8;i++) //加入for循环,表明for循环大括号中的程序循环执行8次{Delay(50000);P1<<=1;P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1}P1=0xfe; //重新赋初始值//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255Delay(50000);P1=0x7f; //赋初始值while (1) //主循环{for(i=0;i<8;i++) //加入for循环,表明for循环大括号中的程序循环执行8次{Delay(50000);P1>>=1;P1=P1|0x80; //右移后,最左端自动赋值0,所以需要该语句赋值1}P1=0x7f; //重新赋初始值//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}。
左右来回循环的流水灯设计要求8个发光二极管LEDO〜LED7经限流电阻分别接至P1 口的P1.0〜P1.7引脚上,阳极共同接高电平。
编程实现制作左右来回循环的节日彩灯,显示规律如下图所示。
£——►8个LED依次左移点亮------ ►&个LED依次右移点亮------题37图节日彩灯的花样显示的规律为了使显示效果更加绚丽多彩,P1端口8个引脚分别接有不同颜色的发光二极管。
具体如题37表所示。
题37表 P1 口 8个引脚的不同颜色的发光二极管使用C51编流水灯程序以及设计相应的硬件电路十分简单,且有多种方法。
本方案力求程序最简化最清晰原则,用NS图(盒图)表示算法如下:程序中设置中间变量 temp 用来给P1 口赋值,命令_crol_和_cror_用于使temp 左移或右 移,例如当 temp=11111110B 时,执行 _crol_(temp,1)之后 temp=11111101 ,应用此两条 语句必须把头文件vintrins.h >包含进来。
全部代码如下:#in clude<reg51.h>#in clude< intrin s.h> un sig ned char temp;LED 的P1 口赋值 int a;void delay(void);void mai n()temp=0xfe;// 给 temp 赋初值//定义字符变量 temp,temp 左移或右移并给连接II 定义延迟函数delay()P1=temp; //temp 赋值给 P1 口,第一个 LED (红色)点亮while(1) //主程序,括号中的程序将一直循环for(a=0;a<7;a++) //左移部分, LED 从左到右依次点亮{temp=_crol_(temp,1); //_crol_ 语句控制变量 temp 左移delay(); //每个灯点亮之后延迟一会在点下一个灯P1=temp;}for(a=0;a<7;a++) //右移部分, LED 从右到左依次点亮{temp=_cror_(temp,1); //第 8 个灯点亮后开始右移程序, LED 从右向左点亮delay();P1=temp;}}}//延时子程序void delay()for(i=200;i>0;i--)for(j=1;j<150;j++);电路连接如下:R 」恨-MT&TR2: ■Ik-//i,j 不断计数占用CPU 时间,达到延时目的U1IR3:1k--R4: ■1k»』 *T €XTR5.帕,■ .■ TEXT30pFi「・nl i ■ i<T .EXT > I —I XI ... CRYfiT^_-30pF. L . <TEXT> ,R7.RE^TE A TL-I A TEXT !RB-・Ik盘TEXT*L D年TEX一 Fr>.氐r>.弓TEXr.---- (* --I1----- (吠 TALIPO.O/ADO P0.1/O1PO-2/AD2XTAL2P0.3/AC3FX 心PO.5/j2iD5P0.6/AD6 RSTPOJ/AD7P2.0ifiePZ 诫P2.2#VI0 PSENP2.3AM1 ALE P2.4A12EAP2…0J A14P2.7A15 P1D P3.0/RXDP1.1P3.1HXD P12 P32/IMT0 P13 P3:-P1.4 P3.4fT0 P1J 5 ps.sai P1J3 P3.6/WRP1.7P3.7/Rb191894 6. 6. 7. 311 1pe :::::: IfeeittP-YELWW … r>.订EW .……A :635212217THANKS !!!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考。
轮流变换方向的流水灯实验器件:
ocrobot mango控制板(Arduino兼容)一块
面包板跳线一盒
面包板一块
LED发光二极管六个
220欧姆电阻六个
USB数据连接线一根
接线图:
程序:
/*
作者:***
时间:2012年9月23日IDE版本号:1.0.1
作用:让六个led依次点亮熄灭
*/
void setup()
{
pinMode(12,INPUT);
for (int i=2; i<=7; i++) //通过循环的方式设置2-7号引脚为输出状态
{
pinMode(i,OUTPUT);
}
}
void loop()
{
for (int x=2; x<7; x++) //通过循环的方式依次让每个引脚的led 在1秒内完成明灭,从2到7
{
digitalWrite(x,HIGH);
delay(500);
digitalWrite(x,LOW);
delay(500);
}
for (int x=7;x>2;x--) //通过循环的方式依次让每个引脚的led在1秒内完成明灭,从7到2
{
digitalWrite(x,HIGH);
delay(500);
digitalWrite(x,LOW);
delay(500);
}
}
如果,利用一个微动开关来控制流水灯的方向,则程序如何修改?。
(大作业题目)报告
单片机控制左右循环的流水灯
学生学号:
学生姓名:
同组学号:
同组姓名:
指导老师:
设计目的:
1)学习P1口的使用方法;
2)学习延时子程序的编写
3)了解简单单片机应用系统的设计方法。
4)掌握应用编译源汇编程序的操作方法。
5)熟练掌握AT89c51型开发板的使用方法和注意事项。
设计要求:
8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳极共同接高电平。
编程实现制作左右来回循环的节日彩灯,显示规律如下图所示。
依次实现红蓝绿黄红蓝绿黄的循环亮灭。
设计步骤:1.按照电路图在proteus7.5的环境下进行仿真连接,在keilc3的环境下进行c环境的编译,然后下载到单片机内运行进行仿真,观察发光二极管的运行状态。
要注意的的,实验中一定要再p1口接上拉电阻或是一个74HC245的芯片,以提高单片机的P口驱动,以使LED灯亮。
如果使用74HC245,则引脚OE要接地,DIR要接高电平。
2.实现单片机工作的最小系统:电源电路﹑时钟电路﹑复位电路。
3.因为LED灯是共阳极接入,编程实现灯亮的时候,要使语句取反。
设计电路图:
左右来回的流水灯.PDF
源程序:左右来回的流水灯.C
流程图:开始
判断P口电平
高电平低电平
变向P口加1
延时
设计总结:1.实验中连接电路后运行发现等没有亮,检查程序,看接相应灯的P口输出语句是否取反了;如果没有循环,看控制方向的语句是否写对;检查上拉电阻的取值是否正确,一定要有上拉电阻。
2.通过本次设计试验,我了解了单片机是如何实现控制功能的,设计中会遇到错误的结果,要仔细分析错误,然后一一去改进,试验,直到没有错误为止。
三、/*
*左右来回的流水灯*
*/
#include<reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
void delay(uint16 x)
{
uint8 i,j;
for(i = x; i > 0; i --)
for(j = 114; j > 0; j --);
}
void main()
{
uint8 b = 0, way = 0; //移动位数变量及移动方向变量while(1)
{
if(way == 0) //根据way选择左移还是右移P0 = ~(0x01 << b); //最低位的0被左移b位 else
P0 = ~(0x80 >> b); //最高位的0被右移b位
if( ++b == 8) //如果移动到左端或右端
{
b = 0; //b归0
way = !way; //改变方向
}
delay(200);
}
}。