拨码开关控制流水灯实作报告
- 格式:doc
- 大小:243.50 KB
- 文档页数:2
流水灯控制实验报告及程序实验三流水灯控制实验姓名专业通信工程学号成绩一、实验目的1.掌握Keil C51软件与protues软件联合仿真调试的方法;2.掌握如何使用程序与查表等方法实现流水效果;3.掌握按键去抖原理及处理方法。
1、实验仪器与设备1.微机1台2. Keil C51 集成开发环境3. Proteus 仿真软件二、实验内容1.用Proteus设计一流水灯控制电路。
利用P1 口控制8个发光二级管L1 —L8。
P3.3 口接一按键K1。
参考电路如下图所示。
其中74LS240为八反响三态缓冲器/线驱动器。
2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。
若用KEY表示按键的次数,则其对应的流水效果如下:①KEY=0: L1-L8 全亮;②KEY=1 : L1-L8先全灭,然后自右向左单管点亮,如此循环;③KEY=2 : L1-L8先全灭,然后自右向左依次点亮,如此循环;④KEY=3 : L1-L8先全亮,然后自左向右依次熄灭,如此循环;⑤KEY=4 : L1-L8先全灭,然后整体闪烁,如此循环;⑥KEY=5 :自行设计效果。
以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。
四、实验原理1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如下图所示。
由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动。
抖动时间的长短由按键的机械特性决定,一般为5?10ms按键抖动会引起一次按键被误读多次。
为了确保CPU寸键的一次闭合仅做一次处理,必须去除按键抖动。
在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。
按键的抖动,可用硬件或软件两种方法消除。
常用软件方法去抖动,即检测到按键闭合后执行一个5?10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。
流水灯实验报告总结一、实验目的本次流水灯实验的主要目的是通过实际操作,深入理解数字电路中时序逻辑电路的工作原理,掌握基本的硬件电路设计和编程方法,提高我们对电子电路的实践操作能力和问题解决能力。
二、实验原理流水灯是通过控制一系列发光二极管(LED)依次点亮和熄灭,从而产生一种流动的视觉效果。
其实现的核心原理是利用计数器和译码器来控制 LED 的亮灭状态。
在数字电路中,计数器可以对输入的时钟脉冲进行计数,从而产生不同的计数值。
译码器则将计数器输出的计数值转换为对应的控制信号,使得相应的 LED 点亮或熄灭。
例如,使用常见的 74LS161 四位二进制同步计数器和 74LS138 三线八线译码器,可以构建一个简单的八路流水灯电路。
计数器在时钟脉冲的驱动下不断计数,译码器根据计数器的输出值依次选通不同的输出端口,从而实现 LED 的顺序点亮。
三、实验设备及材料1、数字电路实验箱2、 74LS161 计数器芯片3、 74LS138 译码器芯片4、发光二极管(LED)若干5、电阻、电容等基本电子元件6、杜邦线若干7、数字万用表8、示波器四、实验步骤(一)电路设计1、根据实验原理,在实验箱上规划好芯片的布局和连线方式。
2、使用杜邦线将计数器、译码器和 LED 等元件按照设计好的电路连接起来。
3、注意连接的正确性,避免短路和断路现象。
(二)硬件搭建1、仔细对照电路设计图,将芯片插入实验箱的相应插槽中。
2、确保芯片引脚与插槽接触良好,无松动现象。
(三)编程与调试1、使用数字电路实验箱提供的编程工具,对计数器和译码器进行编程设置。
2、例如,设置计数器的计数模式、初始值等参数。
3、打开电源,观察 LED 的亮灭情况。
4、如果流水灯效果不符合预期,使用数字万用表和示波器等工具检测电路中的信号和电压,排查故障。
五、实验中遇到的问题及解决方法(一)LED 不亮1、问题描述:接通电源后,所有 LED 均不亮。
2、排查过程:首先检查电源是否正常,然后使用万用表测量芯片引脚的电压,发现计数器芯片没有正常工作。
课程实验报告学院:专业: 2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称GPIO输出-流水灯1.实验目的通过一个经典的跑马灯程序,了解 STM32F1的IO口作为输出使用的方法。
通过代码控制开发板上的4个 LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
3.实验环境Windouws10 Keil uVision5 4.实验方法和步骤(含设计)(1)实验硬件连接图四个led灯如图连接到GPIO的6~9引脚上。
(2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为 50MHz。
(3)实验步骤①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。
②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。
③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。
(4)原函数5.程序及测试结果6.实验分析与体会如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);改为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);实验日期: 2018 年 10 月 18 日成绩评定教师签名:年月日Welcome To Download欢迎您的下载,资料仅供参考!。
一、任务分析1、了解 CPU 对 I/O 口的操作方法。
2、学会使用 51 系列单片机 I/O 口的基本输入、输出功能。
3、连接实验系统上的单片机 I/O 口、开关及 LED 灯,设计一个简易流水彩灯。
拨动开关 K1、K0 分别实现 4 种不同的流水彩灯工作方式:二、设计思路1、先对P3.0和P3.1口置1;2、将P3.0和P3.1的值读入寄存器A中;3、判断P3.0和P3.1口的值,由于两个按键有四种组合方式,所以P3.0和P3.1的值分别为00、01、10、11;通过JB跳转程序来判断哪个按键按下;按键按下的不同分别跳转到不同的子函数中;4、通过P3.0和P3.1的值分别跳转到设置P1口工作状态的四个子程序中;5、四个子程序中分别是LED灯闪烁的四种方式,用SETB P1.X 的方式来让LED灯点亮,还应写有Delay函数,Delay函数中设置延时为0.5ms;用CLR的方式来让LED灯灭。
若要让LED全亮或全灭,则对P1口整体赋值。
三、程序流程图图一程序流程图四、实验程序ORG 0030Hmain:SETB P3.0SETB P3.1;未按下按键MOV A, P3ANL A ,#03HMOV R0, #7;MOV R1 ,#7;MOV R2, #7Delay:MOV R6, #1000LP2:MOV R7,#500LP:DJNZ R7,LPDJNZ R6, LP2;延时程序CJNE A,#00H,Moshi1;不等跳到Moshi1,相等则顺序往下执行Moshi0Moshi0:MOV A,#80H ;10000000Next:RR A ;左循环MOV P1,A ;00000001ACALL DelayDJNZ R0,Next ;循环七次Next0:RL AMOV P1,AACALL DelayMOV R0, #7DJNZ R0, Next ;循环七次MOV A, P3 ;A的值改变了要赋值回来,判断语句ANL A ,#03HCJNE A,#01H,Moshi2 ;相等才往下执行,Moshi1:CJNE A,#01H,Moshi2 ; 相等则顺序往下执行MOV A,#01H ;0000 0001MOV P1,#01HNext1:RL A ;0000 0010ORL A,P1 ;或:0000 0011MOV P1,A ;A和P1与完之后结果放到P1里面MOV R0,#07HDJNZ R0, Next1 ;循环七次MOV P1 ,#00HMOV A, P3 ;A的值改变了要赋值回来,判断语句ANL A ,#03HCJNE A,#10H,Moshi1 ;相等才往下执行,Moshi2:MOV P1, 0FFHACALL DelayACALL DelayMOV P1, 0FEH ;11111110ACALL DelayMOV A,P1 ;A 11111110Next2:RL A ; A 11111101ANL A,P1 ;A 11111100MOV P1,ADJNZ R0,Next2 ;循环操作 A 11111100左移后11111001&P1:11111100=11111000;循环9次以后应该需要再判断一次状态。
单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。
每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。
2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。
三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。
第1篇实验名称:流水灯实验实验日期:2021年10月25日实验地点:实验室实验者:张三一、实验目的1. 了解流水灯的原理和组成;2. 掌握流水灯的制作方法;3. 培养动手能力和团队合作精神。
二、实验原理流水灯是一种通过改变电路中各个灯泡的连接方式,实现灯光顺序变化的电子装置。
其原理是利用555定时器产生一个周期性的方波信号,通过控制方波信号的占空比,实现不同灯泡的顺序点亮。
三、实验器材1. 555定时器1个;2. 集成电路板1块;3. 灯泡4个;4. 电阻4个;5. 电池1节;6. 导线若干;7. 万用表1个;8. 电烙铁1把;9. 剪线钳1把。
四、实验步骤1. 制作电路板:将555定时器、电阻、灯泡等元件焊接在电路板上。
2. 连接电路:将电池的正负极分别连接到电路板的电源端,将555定时器的输出端分别连接到灯泡的正极,将灯泡的负极分别连接到电路板的GND端。
3. 测试电路:使用万用表测量555定时器的输出电压,确保输出电压在正常范围内。
4. 调整占空比:通过改变电阻的阻值,调整555定时器的占空比,实现不同灯泡的顺序点亮。
5. 验证实验:观察流水灯的运行情况,确认实验是否成功。
五、实验结果与分析1. 实验成功:通过调整电阻的阻值,实现了4个灯泡的顺序点亮,实验成功。
2. 分析:在实验过程中,我们发现调整电阻的阻值可以改变555定时器的占空比,从而改变灯光的顺序。
当电阻阻值增大时,占空比减小,灯光点亮速度变慢;当电阻阻值减小时,占空比增大,灯光点亮速度变快。
六、实验结论通过本次流水灯实验,我们掌握了流水灯的原理和制作方法,提高了动手能力和团队合作精神。
实验结果表明,通过调整电阻的阻值,可以实现不同灯泡的顺序点亮,达到流水灯的效果。
七、实验反思1. 在实验过程中,我们发现电路板焊接过程中容易出现短路现象,因此在焊接过程中要仔细检查,确保电路板焊接正确。
2. 在调整电阻阻值时,要注意观察灯光的变化,以便找到最佳的电阻阻值。
多功能流水灯实验报告第一篇:多功能流水灯实验报告课程设计报告设计课题:多功能流水灯专业班级:学生姓名:指导教师:设计时间:题目多功能流水灯一、课程设计目的1、掌握数字系统的设计方法和测试方法。
二、课程设计题目(问题)描述和要求设计一个四模式三路彩灯(红、绿、黄三种颜色)显示系统。
该系统的显示模式由外部输入Z、Y控制,要求开机自动置入初态后便按规定模式循环运行。
设各路彩灯均为8个(红灯序号为r1-r8,绿灯序号为g1-g8,黄灯序号为y1-y8),各模式规定如下: XY=00时,系统的显示模式在以下六个节拍间循环:第一节拍,依次点亮奇号红灯(r1亮→r1、r3亮→r1、r3、r5亮→r1、r3、r5、r7亮),其余灯均灭。
第二节拍,依次点亮偶号红灯,其余灯均灭。
第三节拍,依次点亮奇号绿灯,其余灯均灭。
第四节拍,依次点亮偶号绿灯,其余灯均灭。
第五节拍,依次点亮奇号黄灯,其余灯均灭。
第六节拍,依次点亮偶号黄灯,其余灯均灭。
XY=01时,系统的显示在第一、二节拍间循环。
XY=10时,系统的显示在第三、四节拍间循环。
XY=11时,系统的显示在第五、六节拍间循环。
三、系统分析与设计根据课程设计题目问题描述和要求,完成:主要器件:绘制电路原理图:确定选用的元件及其封装形式,完善电路。
原理图设计过程:进行电子电路设计时,首先要有一个设计方案,而将电路设计方案表达出来的最好方法就是画出清晰、正确的电路原理图。
根据设计需要选择出元器件,并把所选用的元器件和相互之间的连接关系明确地列出,直观地表达出设计概念。
电路原理图的基本组成是电子元器件符号和连接导线,电子元器件符号包含了该元器件的功能,连接导线则包含了元器件的电气连接信息,所以电路原理图设计的质量好坏直接影响到PCB印制电路板的设计质量。
绘制原理图的两大原则:首先应该保证整个电路原理图的连线正确,信号流向清晰,便于阅读分析和修改;其次应该做到元器件的整体布局合理、美观、实用。
实验四指示灯和拨码开关控制实验报告姓名:郑永翔班级:通信1103 学号:201103110330实验目的1. 了解 ICETEK-VC5509-A 板在 TMS320VC5509DSP 外部扩展存储空间上的扩展。
2. 了解 ICETEK-VC5509-A 板上指示灯和拨码开关扩展原理。
3. 学习在 C 语言中使用扩展的控制寄存器的方法。
实验内容指示灯实验①拨码开关控制实验②指示灯实验①的程序和原理分析指示灯控制寄存器地址为400001h通过外部存储器(EMIF)接口寻址在0x400001上的4个led单元的值(控制字,逐位置1: 0001B 0010B 0100B 1000B),当led对应位置1时led等亮起,通过控制正向和反向的写入控制字来循环点亮led灯。
#include"func.h"// 定义指示灯寄存器地址和寄存器类型#define LBDS (*((unsigned int *)0x400001))// 子程序接口void Delay(unsigned int nDelay); // 延时子程序main(){unsigned int uLED[4]={1,2,4,8}; // 控制字,逐位置1: 0001B 0010B 0100B1000Bint i;PLL_Init(72); // 初始化DSP运行时钟SDRAM_init(); // 初始化EMIF接口while ( 1 ){for ( i=0;i<4;i++ ){LBDS=uLED[i]; // 正向顺序送控制字Delay(256); // 延时}for ( i=3;i>=0;i-- ){LBDS=uLED[i]; // 反向顺序送控制字Delay(256); // 延时}}}void Delay(unsigned int nDelay){int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<1024;jj++ ){kk++;}}}拨码开关控制实验②的程序和原理分析指示灯控制寄存器地址为0x400001拨码开关控制寄存器地址为0x4000020x400002为扩展地址,四位拨码器开关闭合时该地址对应位置0,打开置1 取0x400002内容后复制给0x400001地址控制led灯,原理如同①#include"func.h"// 定义指示灯控制寄存器地址和寄存器类型#define LBDS (*((unsigned int *)0x400001))// 定义拨码开关控制寄存器地址和寄存器类型#define DIPS (*(unsigned int *)0x400002)main(){// PLL_Init(12); // 初始化DSP运行时钟SDRAM_init(); // 初始化EMIF接口while ( 1 ){LBDS=DIPS; // 读取拨码开关状态直接送指示灯显示}}实验结论1. 映射在扩展存储器空间地址上的指示灯寄存器在设置时是低4 位有效的,数据的最低位对应指示灯D1,次低位对应D2,...依次类推。
北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。
2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。
三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。
所有这些I/O口都是双(有的为3)功能复用的。
其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。
这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。
每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。
I/O口的工作方式和表现特征由这3个I/O口寄存器控制。
AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。
流水灯控制的实验报告
《流水灯控制的实验报告》
实验目的:通过对流水灯控制的实验,掌握流水灯的原理和实现方法,加深对
电子电路控制的理解。
实验设备:Arduino开发板、LED灯、面包板、导线等。
实验步骤:
1. 连接电路:将LED灯连接到Arduino开发板的数字引脚上,通过面包板和导
线连接。
2. 编写代码:使用Arduino IDE编写代码,实现流水灯的控制逻辑。
代码中需
要包括LED灯的引脚定义、控制流水灯的循环逻辑等。
3. 上传程序:将编写好的代码上传到Arduino开发板上,进行实际的控制操作。
4. 测试效果:观察LED灯的亮灭情况,检验流水灯控制的效果。
实验结果:通过实验,成功实现了对流水灯的控制。
LED灯按照设定的流水灯
效果进行亮灭,实现了预期的控制效果。
实验分析:流水灯控制实验是一种常见的电子电路控制实验,通过这个实验可
以加深对Arduino开发板以及LED灯的控制原理的理解。
同时,通过编写代码
实现流水灯的控制,也可以提高对编程逻辑的理解和掌握。
实验总结:通过本次实验,我对流水灯的控制原理和实现方法有了更深入的了解,同时也加深了对电子电路控制和编程的理解。
这对我今后的学习和实践都
有很大的帮助。
结语:流水灯控制的实验报告告诉了我们,通过实际操作和实验,我们可以更
深入地理解和掌握电子电路控制的原理和方法。
这对我们的学习和实践都有着
重要的意义。
一、实验目的1. 熟悉流水灯控制电路的原理和设计方法;2. 掌握使用单片机控制LED灯流水灯的方法;3. 培养动手实践能力和创新意识。
二、实验原理流水灯是一种常见的LED灯控制方式,通过单片机对LED灯进行控制,使LED灯按照一定的规律依次点亮和熄灭,形成动态的流水效果。
本实验采用51单片机作为控制器,通过编程实现对LED灯流水灯的控制。
流水灯的控制原理如下:1. 将LED灯连接到单片机的P0口,每个LED灯对应一个P0口的引脚;2. 编写程序,使单片机依次对P0口的引脚进行赋值,从而控制LED灯的亮灭;3. 通过延时函数实现LED灯的流水效果。
三、实验器材1. 51单片机实验板;2. 8个LED灯;3. 电阻(阻值约为220Ω);4. 连接线;5. 编程器;6. 示波器(可选)。
四、实验步骤1. 将LED灯按照电路图连接到实验板上,确保每个LED灯的正极连接到单片机的P0口对应引脚,负极连接到GND;2. 编写程序,实现LED灯流水灯的控制。
程序如下:```c#include <reg51.h>void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 120; j++); }void main() {while (1) {P0 = 0x01; // 第一个LED灯亮 delay(500);P0 = 0x02; // 第二个LED灯亮 delay(500);P0 = 0x04; // 第三个LED灯亮 delay(500);P0 = 0x08; // 第四个LED灯亮 delay(500);P0 = 0x10; // 第五个LED灯亮 delay(500);P0 = 0x20; // 第六个LED灯亮 delay(500);P0 = 0x40; // 第七个LED灯亮 delay(500);P0 = 0x80; // 第八个LED灯亮delay(500);P0 = 0xFF; // 所有LED灯亮delay(500);P0 = 0x00; // 所有LED灯灭delay(500);}}```3. 将编写好的程序烧录到单片机中,并上电运行;4. 观察LED灯流水灯的效果,分析程序运行过程。
实验二:利用8255A实现拨动开关和LED流水点亮实验安全0901 王宇航 09283020实验报告1.实验目的:该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。
掌握使用8255并行接口连接拨动开关,控制LED显示输出的技术。
2.实验步骤:按图3-2将8255端口A与8位拨动开关连接,8255端口B与8位LED连接,选择8255 为方式0工作,编程序完成LED实时显示开关状态的功能,即每位LED对应一位开关状态。
开关往下拨动,对应LED灭,开关往上拨动,对应LED点亮。
当执行程序后LED按K1-K8初始设定的值点亮,并向右流动(8255A工作在方式0)。
同时在6位数码管显示:8255-1编程涉及8255端口地址有四个,由于8255片选信号线与地址译码区的200~2FH连接,即8255的I/O偏移地址为0~3,加上前一个实验所获知的I/O基址,两者相加之后才是最终访问8255的I/O地址。
注意,该地址一定是一个16位数,所以I/O操作要使用IN AL,DX 和OUT DX, AL指令。
3.实验代码:code segment ;定义代码段assume cs:codestart:;初始化,设置A口B口的工作方式mov dx,203h ;8255命令口地址mov al,10010000b ;控制字out dx,al;让数码管显示8255-A;显示A口输入的数并循环移位xor ax,ax ;将ax清零mov bl,0lop:;自定义的标号mov dx,200h ;给dx赋值(送到寄存器中)in al,dx ;将200h送给寄存器al;m ov dx,201h;o ut dx,al ;把al的值送给dx端口;j mp lop ;段内转移cmp al,ah ;al和ah进行比较jz next ;跳转到nextmov ah,almov bl,ahrol bl,1 ;不带进位循环左移1位next:ror bl,1 ;不带进位循环右移1位mov al,blmov dx,201hout dx,almov cx,3fffhlp: ; 从lp到最后都是表示显示8255-A这个字,它的作用是实现灯的延时,即保证灯的闪烁时间不至于过快,如果去除的话在人眼的视觉暂留情况下将可能产生连续不断的灯光闪烁,使得间隔时间太短。
流水灯控制实验报告一、引言流水灯是一种常见的电子实验和电路设计项目,它通过控制一组LED灯的亮灭顺序和时间间隔来呈现出一种流动的效果。
本实验旨在通过搭建一个流水灯电路,学习并掌握流水灯的原理和控制方法。
二、实验原理1.流水灯电路的组成本实验采用的流水灯电路是由多个LED灯组成的,LED灯的正极与电源相连,负极通过电阻连接到单片机的输出端口。
通过控制单片机输出高低电平来控制LED灯的亮灭。
2.流水灯的工作原理流水灯电路通过单片机的输出端口控制LED灯的亮灭顺序和时间间隔,实现流动的效果。
在一个循环中,每个LED灯按顺序依次亮起,然后熄灭,接着下一个LED灯亮起,如此循环往复,形成了流水灯的效果。
三、实验器材和元件1.单片机:选用STC89C52RC型单片机;2. LED灯:选用红色5mm直径的共阳极LED灯4个;3.电阻:选用220Ω的电阻4个;4.面包板、导线等。
四、实验步骤1.连接电路将单片机、LED灯和电阻等元件按照电路图,通过面包板和导线连接起来。
2.编写程序使用C语言编写程序,在单片机上控制LED灯的亮灭顺序和时间间隔。
通过设置单片机输出端口的高低电平,控制LED灯的亮灭。
3.烧写程序将编好的程序通过编程器烧写到单片机中,使其能够执行程序。
4.测试实验将电路连接到电源,并接通电源。
观察LED灯的亮灭情况,检查流水灯效果是否符合预期。
五、实验结果分析经过反复测试,流水灯电路能够正常工作,LED灯按照预设的顺序亮灭,形成了流动的效果。
六、实验总结通过本次实验,我学习了流水灯电路的原理和控制方法,并成功搭建了一个流水灯电路。
通过编写程序,我掌握了如何通过单片机控制LED灯的亮灭。
在实验过程中,我深刻理解了流水灯电路的工作原理,培养了动手实践和问题解决的能力。
七、实验改进措施1.可以通过调整LED灯的亮灭顺序和时间间隔,改变流水灯的效果和速度;2.可以使用其他颜色的LED灯,增加流水灯的变化效果;3.可以将流水灯电路与其他电子元件结合,设计更复杂的电路和效果。
流水灯实验报告
今天,我们进行了一个有趣的实验 - 流水灯实验。
首先,让我们来谈一谈流水灯的原理。
简单来说,流水灯是一
组LED灯,它们像水一样从一端流向另一端,每个灯的状态依次
更改。
然后,我们开始制作流水灯。
首先,我们需要一块电路板和一
些LED灯。
我们将LED灯焊接在电路板上,并使用一些导线连接它们。
然后,在一端添加一个电缆,以便将电路板连接到电源。
接下来,我们需要使用一个可编程芯片来控制LED灯的闪烁
模式。
我们使用了Atmel AVR芯片作为我们的控制器,并编写了
一些简单的程序来控制LED灯的行为。
我们将程序上传到芯片中,然后将电路板连接到电源。
最后,我们观察了流水灯的行为。
在阳光明媚的白天,我们试
图让它在室内工作。
我们发现,在光线充足的情况下,灯的亮度
有些微弱,但在较暗的照明条件下,流水灯效果比较明显。
在实验中,我们学会了如何制作和控制流水灯。
这为我们了解电子设备的原理和工作方式提供了一个很好的机会。
我们也体会到了在实验过程中需要耐心和细心的重要性。
总的来说,这是一个乐趣和收获并存的实验。
我们期待着在将来的实验中探索更多有趣和有用的东西。
一、实训目的1. 熟悉51单片机的I/O口编程,掌握按键输入和LED输出控制的基本方法。
2. 学习单片机程序设计的基本思路,提高编程能力。
3. 培养动手实践能力,提高电路焊接和调试水平。
二、实训原理1. 单片机I/O口编程:51单片机的I/O口可以编程设置为输入或输出模式。
在本实训中,我们将I/O口配置为输出模式,用于控制LED灯的亮灭;同时,将I/O口配置为输入模式,用于检测按键状态。
2. 按键输入:当按键未被按下时,单片机通过检测I/O口输入电平,判断按键是否处于高电平状态;当按键被按下时,单片机检测到低电平状态。
3. LED输出:单片机通过编程控制I/O口输出电平,从而控制LED灯的亮灭。
在本实训中,我们通过依次点亮LED灯来实现流水灯效果。
4. 流水灯控制逻辑:根据按键状态,单片机在无限循环中不断检测按键状态,并改变流水灯的方向。
三、实训步骤1. 准备工作:准备51单片机开发板、按键、LED灯、电阻等元器件,以及相关编程软件。
2. 电路连接:按照电路图连接好51单片机、按键、LED灯和电阻等元器件。
3. 编程:使用Keil C51集成开发环境编写程序,实现按键控制流水灯功能。
4. 调试:将编写好的程序烧录到单片机中,进行电路调试。
5. 测试:验证按键控制流水灯功能是否正常。
四、程序设计1. 初始化I/O口:将P1口配置为输出模式,用于控制LED灯;将P3口配置为输入模式,用于检测按键状态。
2. 按键检测:在主循环中,不断检测P3口状态,判断按键是否被按下。
3. 流水灯控制:根据按键状态,控制LED灯依次点亮,实现流水灯效果。
4. 延时函数:为了使流水灯效果更加明显,使用延时函数控制LED灯点亮时间。
5. 按键状态处理:当检测到按键被按下时,改变流水灯方向。
五、实训结果与分析1. 实训结果:通过编程和调试,成功实现了按键控制流水灯功能。
2. 分析:(1)I/O口编程:通过编程将51单片机的I/O口配置为输入或输出模式,是实现流水灯功能的基础。
摘要PLC的功能强大,在生产生活中的应用广泛,其中西门子S7—200PLC在实际生产中最为常见。
本次专业综合实训主要是针对西门子S7—200PLC挂屏集成模块进行的。
本次专业综合实训主要内容有:PLC挂屏集成模块的插线,电气原理图的绘制,流水灯、交通信号灯、运动小车的多段速控制、A/D数模转换的程序编写与调试、相应的触摸屏程序的编写以及变频器参数的设置等。
实训一流水灯控制实验一、实训目的:设计流水灯控制系统。
二、实训要求:要求实现流水灯的依此循环亮,时间间隔为1s。
能够实现随时启动随时停止。
三、实训内容:利用外部按钮和编辑触摸屏界面,分别实现流水灯的启动和停止。
四、实现方法:根据实训课题要求,编程思路如下:1、首先用触点M1.3和M1.4分别控制中间继电器M0.2的得电和失电,按动M1.3,M0.2和Q0.6得电,触点M0.2和Q0.6动作,第一个灯亮,并将输出Q0.6自锁,同时启动定时器T33;2、1S后触点T33闭合,点亮第二个灯并启动定时器T34,触点Q0.7动作,将输出Q0.7自锁并使Q0.6失电,第一个灯灭,触点Q0.6和T33断开;3、1S后触点T34闭合,点亮第三个灯并启动定时器T35,触点Q1.0动作,将输出Q1.0自锁并使Q0.7失电,第二个灯灭,触点Q0.7和T34断开;4、1S后触点T35闭合,重新点亮第一个灯并启动定时器T33,触点Q0.6动作,将输出Q0.6自锁并使Q1.0失电,第三个灯灭,触点Q1.0和T35断开,如此循环下去;5、当按动M1.4,输出M0.2失电,M0.2断开,输出全部失电,灯熄灭,定时器清零。
I/O表如下:五、实训结果:1)流水灯控制界面:按动启动按钮,三个灯依次循环点亮;按动停止按钮,流水灯熄灭。
2)流水灯控制程序:实训二交通灯控制实验一、实训目的:设计交通灯控制系统。
二、实训要求:1.能够实现总停止和总启动;2.红灯亮灯时间为25s,绿的为20s,黄灯闪烁5s;3.在触摸屏上显示各个灯的倒计时间。
流水灯实验小结
流水灯实验是一种基础的电路实验,通过控制LED灯的亮灭
顺序,形成一种类似流水的效果。
本次实验中,我学到了很多关于电路和电子元件的知识,并且成功地完成了流水灯的搭建和调试。
在实验过程中,我首先准备了所需的材料和工具,包括LED 灯、电阻、电源和面包板等。
然后,我按照实验步骤搭建了一个流水灯电路。
我将多个LED灯依次连接在一起,通过电阻
限流,并接入电源。
然后,我使用开关控制电流的流动方向,从而实现LED灯的顺序亮灭。
在调试过程中,我遇到了一些问题。
最初,我发现LED灯并
没有按照预期的顺序亮灭。
经过检查,我发现连线的接触不良,导致电流无法顺利地流动。
我经过调整和重新连接,最终解决了这个问题。
通过这次实验,我不仅了解了流水灯电路的基本原理,还学会了使用面包板进行电路搭建和调试。
我也意识到了电路中连线的重要性,一个小小的接触不良都可能导致整个电路功能失效。
因此,在今后的实验中,我将更加注意细节,提高搭建和调试的准确性。
此外,通过实验,我还发现了实际电路与理论知识之间的差距。
在课本上,流水灯的原理非常简单,但在实际搭建和调试过程中,却需要不断地调整和排除故障。
这让我意识到理论知识只是建立在实践基础之上的,只有通过实际操作,才能真正理解
和掌握电路的原理和运行过程。
总的来说,通过流水灯实验,我不仅学到了电路和电子元件的知识,还提高了实际操作和解决问题的能力。
在今后的学习和实践中,我将继续努力,不断探索和积累更多关于电路和电子方面的知识,为将来的科学研究和工程应用打下坚实的基础。
《拨码开关控制流水灯》实作报告
班级:姓名:
一、任务描述:
利用一只拨码开关控制流水灯的流动方向。
拨码开关往上拨动时,流水灯自左往右流动,拨码开关往下拨动时,流水灯自右往左流动。
流动速度不限。
往上拨动
往下拨动
二、要完成本次任务,你需要把以下问题搞清楚:
1、硬件连接:
根据任务描述,共需要根导线连接LED灯,根导线连接拨码开关。
共需要根导线。
2、程序设计:
(1)实验箱上拨码开关往上拨动时输出电平,用数字来表示。
往下拨动时输出电平,用数字来表示。
(2)本例程序(需要/不需要)导入头文件<reg51.h>?
提示:是否用到了I/O口,P0、P1、P2或P3
)本例程序(需要<intrins.h>?
提示:是否需要移位,有要求做流水灯效果吗?
)本例程序(需要
(5)本例程序对流水灯流动速度不作要求,(需要/不需要)延时子函数。
(6)本例程序(需要/不需要)对某些引脚进行位定义(单独使用)?有的话,是哪些脚?
(7)利用(if/while/for)基本语句和逻辑运算符来判断拨码开关当前状态是往上拨动,还是往下拨动;利用(if/while/for)基本语句来反复扫描拨码开关的状态。
(8)流水灯的三要素是:P1=a;
yanshi(数值);数值大小决定的led的
a=_cror_(a,1);或=_crol_(a,1);
3、把程序补充完整(假定拨码开关接P2.0脚,LED接P1脚)
#include< > //导入头文件,方便寻址//
# include< > //导入头文件,便于使用移位指令//
#define unsigned int //宏定义,简化程序//
void yanshi(uint); //声明子函数//
sbit k= ; //位定义单独使用的引脚//
uint a=0x ; //设置流水灯初值//
void main() //主函数//
{
(1) //死循环//
{
if(k= = ) //判断拨码开关状态//
{
P1= ; //将a值送给P1口//
yanshi( ); //延时//
a=_crol_(a,1); //a向左移动一位//
}
if(k= = ) //判断拨码开关状态//
{
P1= ; //将a值送给P1口//
yanshi( ); //延时//
a=_cror_(a,1); // a向右移动一位//
}
}
}
void yanshi(uint x) //延时子函数//
{
uint i,j;
for(i=x;i>0;i--)
for(j= ;j>0;j--);
}。