通过51单片机控制24个发光二极管形成流水灯效果的亮灭状态
光控流水灯实验报告
光控流水灯实验报告LED流水灯实验报告LED流水灯的设计报告课程名称:LED流水灯设计学院:大数据与信息工程学院专业:姓名:学号:年级:任课教师:一、实验的背景和意义单片机全称叫单片微型计算机,是一种集成在电路芯片,是采用大规模集成电路技术把CPU随机存储器RAM、只读存储器ROM、多种输入输出口、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。
大致可以分为以下几个范畴: 1、在智能仪器仪表上的应用,例如精确的测量设备;2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;5在各种大型电器中的模块化作用,如音乐集成单片机,看是简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。
本系统就是充分利用了8051芯片的I/O引脚。
系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2.掌握汇编语言程序和C语言程序设计方法。
3.培养实践技能,提高分析和解决实际问题的能力。
三、设计任务及要求1.用个发光二极管作为显示电路2.实现LED动态显示3.能连续循环显示四、设计思路LED流水灯实际上是一个带有八个放光二极管的单片机最小应用系统,即为由晶振LED灯、电阻、电容器、电源等电路和必要的软件组成的单个单片机。
51单片机流水灯程序
51单片机流水灯程序51单片机是一种广泛使用的微控制器,具有丰富的IO端口和定时器资源。
流水灯程序是51单片机入门的基础示例之一,通过多个LED灯按照一定顺序逐个亮起或熄灭,形成流水灯的效果。
下面详细介绍51单片机流水灯程序的编写。
一、硬件连接要实现流水灯效果,需要将多个LED灯连接到51单片机的IO端口上。
一般使用P1端口作为输出端口控制LED灯的亮灭,P2端口作为输出口控制LED灯亮起的顺序。
具体连接方式如下:•将LED灯的阳极通过限流电阻连接到VCC。
•将每个LED灯的阴极通过限流电阻连接到P1端口。
•将P2端口的每个引脚依次连接到每个LED灯的阴极。
二、程序实现#include <reg52.h> //包含51单片机头文件#define LED P1 //定义LED为P1端口#define ORDER P2 //定义顺序控制为P2端口void delay(unsigned int t); //延时函数声明void main(){unsigned char i;while(1) //循环控制流水灯效果{for(i=0; i<8; i++) //控制8个LED灯{LED = 0x01<<i; //将第i个LED灯置亮delay(10000); //延时一段时间,使LED灯亮起后延时熄灭LED = 0x01>>(i+1); //将第i个LED灯置灭}}}void delay(unsigned int t) //延时函数定义{unsigned int i, j;for(i=0; i<t; i++){for(j=0; j<1275; j++);}}该程序首先定义了LED和ORDER两个变量,分别对应P1和P2端口的输出口。
在主函数中,使用一个while循环控制流水灯效果。
在循环内部,使用一个for循环控制8个LED灯的状态。
在每次循环中,先将第i个LED灯置亮,延时一段时间后将其置灭,然后进入下一个循环。
51单片机流水灯实验报告
51单片机流水灯实验报告51单片机流水灯实验报告引言:51单片机是一种常用的微控制器,广泛应用于各种电子设备中。
流水灯实验是学习单片机编程的基础实验之一,通过控制多个LED灯的亮灭顺序,可以了解单片机的基本原理和编程方法。
一、实验目的本实验旨在通过使用51单片机,设计并实现一个简单的流水灯电路,加深对单片机原理的理解,掌握基本的单片机编程方法。
二、实验原理51单片机是一种8位微控制器,具有强大的功能和广泛的应用。
流水灯实验中,我们需要控制多个LED灯的亮灭顺序,通过编写程序,将指令发送给单片机,控制LED灯的亮灭。
三、实验器材1. 51单片机开发板2. LED灯若干3. 面包板4. 连接线四、实验步骤1. 将51单片机开发板连接到电脑上,打开开发板的编程软件。
2. 在编程软件中,新建一个工程,选择适合的单片机型号。
3. 编写程序,设置相应的引脚为输出模式,并配置流水灯的亮灭顺序。
4. 将单片机开发板与面包板连接,将LED灯连接到相应的引脚上。
5. 将编写好的程序下载到单片机中。
6. 打开电源,观察LED灯的亮灭顺序是否符合预期。
五、实验结果与分析经过实验,我们成功地实现了一个简单的流水灯电路。
LED灯按照设定的顺序亮灭,形成了流水灯的效果。
通过调整程序中的指令顺序,我们可以改变LED灯的亮灭顺序,实现不同的流水灯效果。
六、实验心得通过这次实验,我对51单片机的原理和编程方法有了更深入的了解。
流水灯实验是一种简单但基础的实验,通过实际操作和编程,加深了我对单片机的理解和掌握。
在实验过程中,我遇到了一些问题,如LED灯连接错误、程序逻辑错误等,但通过仔细检查和调试,最终成功解决了这些问题。
这次实验让我更加熟悉了单片机的应用,为以后更复杂的项目打下了基础。
七、实验拓展在掌握了基本的流水灯实验后,我们可以进一步拓展实验内容。
例如,可以增加控制开关,实现对流水灯的启停控制;可以设计不同的流水灯效果,如闪烁、变速等;还可以与其他传感器、模块进行组合,实现更多功能和效果。
单片机流水灯实验报告
单片机流水灯实验报告单片机流水灯实验报告引言:单片机是一种集成电路,具有微处理器、存储器和输入输出设备等功能,被广泛应用于各个领域。
流水灯是一种常见的实验项目,通过控制单片机的输出端口,使多个LED灯依次亮起,形成流动的效果。
本实验旨在通过搭建流水灯电路,了解单片机的基本原理和操作方法。
实验目的:1. 掌握单片机的基本工作原理;2. 学习使用单片机控制LED灯的亮灭;3. 熟悉流水灯电路的搭建和控制。
实验器材:1. 单片机开发板;2. LED灯若干;3. 连线电缆。
实验步骤:1. 将单片机开发板连接至电源,并接通电源开关;2. 将LED灯连接至单片机的输出端口,确保极性正确;3. 打开单片机开发板上的编程软件,编写流水灯控制程序;4. 将编写好的程序下载至单片机开发板;5. 按下开发板上的复位按钮,观察LED灯是否依次亮起。
实验结果:经过实验,我们成功搭建了单片机流水灯电路,并通过编写程序实现了流水灯的效果。
当按下复位按钮后,第一个LED灯亮起,随后依次是第二个、第三个……最后一个LED灯亮起,然后再从第一个开始循环。
整个过程形成了一个流动的效果。
实验分析:通过本次实验,我们深入了解了单片机的基本工作原理。
单片机通过控制输出端口的电平状态,来控制外部设备的亮灭。
在流水灯实验中,我们通过改变输出端口的状态,实现了LED灯的顺序亮灭。
同时,本次实验也让我们学会了使用单片机开发板上的编程软件。
通过编写程序,我们可以灵活控制单片机的输出端口,实现各种不同的功能。
在流水灯实验中,我们编写的程序控制了LED灯的亮灭顺序,形成了流动的效果。
实验总结:通过本次实验,我们不仅了解了单片机的基本原理和操作方法,还掌握了流水灯电路的搭建和控制。
单片机作为一种重要的集成电路,在各个领域都有广泛的应用。
通过学习和实践,我们可以进一步探索单片机的更多功能和应用。
在今后的学习和工作中,我们可以运用单片机的知识,设计和实现更加复杂和有趣的项目。
51单片机控制LED灯程序设计
51单片机:LED灯亮灯灭程序设计1.功能说明:控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。
程序:01: MOV A , #11111110B ; 存入欲显示灯的位置数据02: MOV P1,A ; 点亮第一只灯03: JMP $ ; 保持当前的输出状态04: END ; 程序结束2.功能说明:单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。
程序:01:START: MOV A , #00010010B ; 存入欲显示灯的位置数据02:MOV P1,A ; 点亮灯03:JMP START ; 重新设定显示值04:END ; 程序结束3.功能说明:单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。
程序:01:START: MOV R0, #8 ;设左移8次02:MOV A, #11111110B ;存入开始点亮灯位置03:LOOP: MOV P1, A ;传送到P1并输出04:RL A ;左移一位05:DJNZ R0, LOOP ;判断移动次数06:JMP START ;重新设定显示值07:END ;程序结束4.功能说明:单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。
程序:01:START: MOV R0, #8 ;设右移8次02:MOV A, #01111111B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出04: ACALL DELAY ;调延时子程序05: RR A ;右移一位06: DJNZ R0, LOOP ;判断移动次数07: JMP START ;重新设定显示值08: DELAY: MOV R5,#50 ;09:DLY1: MOV R6,#100 ;10: DLY2: MOV R7,#100 ;11: DJNZ R7,$ ;12: DJNZ R6,DLY2 ;13: DJNZ R5,DLY1 ;14: RET ;子程序返回15:END ;程序结束5.功能说明:单片机P1端口接8只LED,每次点亮一只,先把右边的第一只点亮,0.5秒后点亮右数的第二只灯,第一只熄灭,再过0.5秒点亮右数的第三只灯,第二只熄灭,…亮灯按此顺序由右向左移动。
基于单片机的彩灯控制器的设计(24个LED灯)
任务书以单片机为核心,设计一个节日彩灯控制器控制24个LED灯:P1.2—开始,按此键则灯开始流动(由上而下)。
P1.3—停止,按此键则停止流动,所有灯为暗。
P1.4—上,按此键则灯由上向下流动。
P1.5—下,按此键则灯由下向上流动。
目录1.引言2.工艺过程3.系统控制要求4.方案论证5.系统电路设计6.系统软件设计7.系统程序设计8.连接调试9.心得10.致谢11.参考文献附录1.引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
特别是每当节日的到来,节日彩灯更是到处都看的到。
节日彩灯已成为生活中不可缺少的装饰物。
它集中地运用了单片机、LED、,自动控制等技术,是典型的基于单片机的电子产品。
本文以AT89C51单片机为控制核心,采用模块化的设计方案,运用LED彩灯、按键等组成电路,实现彩灯在开启时满足不一样的闪亮方法。
按键可以在彩灯使用的时候选择不同的亮法,使彩灯变化多样,键一可以使彩灯依次循环点亮,健二可以使彩灯从左到又从右到左循环点亮,三号键使两端灭,中间亮,再对半交替亮,然后再奇偶亮。
通过按键能方便使用者选择不同样的亮法。
节日彩灯使生活中常常用到的装饰物品,是我国普遍流行的传统的民间的综合性的工艺品。
彩灯艺术也就是灯的综合性的装饰艺术。
在当今的社会里,彩灯已经成为我们生活的一部分,能给我们带来视觉上的享受还能美化我们的生活。
彩灯控制器主要是通过电路产生有规律变化的脉冲信号来实现彩灯的各种变化,它集中地运用了单片机、LED、,自动控制等技术,是典型的基于单片机的电子产品。
本文以AT89C51单片机为控制核心,采用模块化的设计方案,运用LED彩灯、按键等组成电路,实现彩灯在开启时满足不一样的闪亮方法。
按P1.2键使灯开始流动;按P1.3键则停止流动;按P1.4键则灯由上向下流动;按P1.5键则灯由下向上流动。
单片机控制流水灯
单片机控制流水灯前言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁。
LED灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
但目前市场上各式样的LED灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
流水灯是一串按一定的规律像流水一样连续闪亮。
流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,利用移位寄存器实现最为便利。
通常用左移寄存器实现灯的单方向移动;用双向移位寄存器实现灯的双向移动。
本案例利用价格低廉的AT89C52系列单片机控制基色LED灯泡从而实现丰富的变化。
目录前言 (1)1、课程设计的目的和要求 (3)设计目的 (3)设计要求 (4)2、设计方案选择 (4)3、硬件设计 (4)设计思路 (4)流水灯电路原理图 (5)元件清单 (6)硬件电路模块分析 (6)主要元件说明 (10)振荡器特性 (13)芯片擦除 (13)4、软件设计 (14)主程序设计 (14)程序流程图 (14)5、使用keil、proteus软件调试仿真说明 (14)仿真过程 (14)仿真结果 (14)6、结束语 (15)7、参考文献 (16)1、课程设计的目的和要求设计目的近年来随着科技的发展,单片机的应用正在不断走向深入,同时带动传统控制检测日新月异更新,在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象点的软件结合,加以完善。
单片机控制流水灯程序汇编语言
单片机控制流水灯程序汇编语言随着科技的发展和微电子技术的迅猛进步,单片机逐渐成为智能系统与设备中不可或缺的组成部分。
而流水灯作为最基础的应用之一,不仅在学习过程中具有重要意义,同时也在实际工程中发挥着重要作用。
本文将介绍如何使用汇编语言编写单片机控制流水灯程序,并详细讲解其运行原理和实现方法。
一、流水灯原理流水灯是一种由多个LED组成的灯条或灯链,在按照一定次序依次点亮和熄灭的灯光效果。
其原理基于单片机通过控制输出口的电平高低来控制LED的亮灭状态,实现灯光的变化和移动效果。
二、程序设计方法1. 初始化设置在编写流水灯程序之前,我们首先要了解单片机的相应接口和寄存器的使用方法。
在程序开始时,需要进行相应的初始化设置,包括将数据方向寄存器和端口寄存器设置为输出,并将初始值赋予输出口电平。
例如,对于51单片机,可以使用以下汇编语言代码进行初始化设置:MOV P1, #00H ;将P1端口的输出电平置为低电平MOV P1M1, #FFH ;将P1端口的数据方向设置为输出MOV P1M0, #00H2. 主程序在流水灯程序中,需要编写主程序来实现流水灯的效果。
主程序中使用循环结构控制LED的亮灭状态和移动效果。
例如,以下是一个简单的汇编语言代码,实现了由4个LED组成的流水灯的效果:MOV R0, #F0H ;初始亮灭状态MOV R1, #00H ;初始LED位置LOOP: ;循环MOV P1, R0 ;将亮灭状态赋予P1端口的输出电平ACALL DELAY ;延时,形成流水灯效果MOV A, R1SUBB A, #01H ;将LED位置减一MOV R1, AJZ CHANGE ;当LED位置为零时,改变亮灭状态MOV R0, R0SJMP LOOP ;继续循环CHANGE: ;改变亮灭状态CPL R0 ;对亮灭状态进行取反操作SJMP LOOP ;继续循环3. 延时函数为了实现流水灯的移动效果,需要设置一个合适的延时时间来控制LED的亮灭速度。
51单片机实验报告范文
51单片机实验报告范文51单片机实验报告实验一点亮流水灯实验现象Led灯交替亮,间隔大约10ms。
实验代码#include〈reg51、h>voidDelay10ms(unsignedintc);voidmain(){)1(elihwﻩ{ﻩP0=0x00;Delay10ms(50);;ffx0=0Pﻩﻩ;)05(sm01yaleDﻩ}}voidDelay10ms(unsignedintc){unsignedchara,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}}实验原理WWhiile(1)表示一直循环。
循环体内首先将P0得所有位都置于零,然后延时约550*10=500ms,接着0P0位全置于11,于就是DLED全亮了。
接着循环,直至关掉电源..延迟函数就是通过多个forr循环实现得。
实验2流水灯(不运用库函数)实验现象起初led只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程#includemain(){unsignedcharLED;LED=0xfe;while(1){ﻩ;DEL=0PﻩDelay10ms(50);;1〈〈DEL=DELﻩ)00x0==0P(fiﻩ{ﻩ;efx0=DELﻩ}ﻩ}ﻩ}voidDelay10ms(unsignedintc){unsignedchara,b;for(;c>0;c-—){ﻩﻩﻩ)—-b;0〉b;83=b(rofﻩ{;)--a;0>a;031=a(rofﻩ}ﻩ}ﻩ}实验原理这里运用了C语言中得位运算符,,位运算符左移,,初始值得二进制为11111110,之后左移一次变成111111000,当变成000000000时通过fif语句重置1111111110、延迟函数在第一个报告已经说出了,不再多说..实验3流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include〈reg51、h>#include〈intrins、h〉voidDelay10ms(unsignedintc);voidmain(void){unsignedcharLED;;EFx0=DELﻩ)1(elihwﻩ{ﻩP0=LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_=DELﻩ}ﻩ}voidDelay10ms(unsignedintc){ unsignedchara,b;for(;c〉0;c——){ﻩfor(b=38;b〉0;b—-){ﻩﻩ;)-—a;0〉a;031=a(rofﻩ}ﻩ}}实验原理利用头文件中得函数,_crol_(,,),可以比位操作符更方便得进行22进制得移位操作,,比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据,,由此比前一个例子不需要fif语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与A-F。
51单片机-流水灯
51单片机-流水灯这个是原理图,从图中最右边有一个排阻,也就是这里八个电阻封装在一起,这里排阻的特点是八个电阻有一个公共端,然后一个电源VCC 通过跳线与排阻相连。
到达二极管的电流从正极流向负极,如果二极管负极是低电平,则电流流过二极管,发光二极管亮起来。
负极接在单片机的P2 端口上。
也就是说P2 的引脚位低电平时可驱动发光二极管发光。
驱动各个灯闪烁的方法是把各位循环左移,使用函数_crol_。
#include #include unsigned int a;void delay(){ int i,j; for(i = 0; i #include unsigned int dd;sbit key = P1;void delay(){ int i,j; for(i = 0; i 2. #include 3. #define uint unsigned int 4. uint a; 5. 6. void delay(uint t){ 7. int i,j; 8. for(i = 0; i < t; i++) 9. for(j = 0; j < 0xff;j++) 10. ; 11. } 12. 13. void liushui(){ 14. int i,dd; 15. dd =0xfe; //dd = 1111 1110 此时L9 亮16. for(i = 0; i < 8; i++){ 17.P2 = dd; 18. delay(1000); 19. dd = _crol_(dd,1); // 循环左移一位dd = 1111 1101 20. P2 = 0xff; 21. delay(300); 22. } 23. } 24. void main(){ 25. while(1){ 26. liushui(); 27. } 28.}tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析
51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析首先,介绍下原理。
下图为主控芯片和流水灯模块的原理图。
流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。
相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。
要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。
听起来是不是很简单啊!那么下面我们来看下实现流水灯功能的三种常用方法!第一种,总线方法实现流水灯。
这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
C程序如下:#include#define uchar unsigned char#define uint unsigned intcode unsigned char tmpled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义八只LED灯,依次点亮八只LED灯//N毫秒的延时函数delay_ms(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); return 0; }void main(void){unchar i;while (1){for(i=0;i#define uchar unsigned char#define uint unsigned int//N毫秒的延时函数delay_ms(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); return 0; }。
51单片机独立按键控制八路LED亮灭程序代码
//51单片机独立按键控制八路LED灯亮灭程序代码//#include <reg51.h> //调用头文件unsigned int count,count1; //定义两个int类型的变量sbit key=P3^5; //定义按键接入串口sbit key1=P3^4; //定义按键接入串口//以下是一个延时函数,便于后面程序按键的消抖,除了这个用途外,延时函数还有很多用途......//void delay(unsigned int ms){while(ms--);}//以下是一个声明的按键检测函数,在这个函数中通过count及count1两个变量的值来确定按键按下LED的亮灭,我这用了两个按键,不同按键控制LED从不同方向一次点亮,函数中采用了if语句与switch语句相结合,这是关键所在。
//void keysan(){if(key==0){delay(10);if(key==0){count++;switch(count){case 0:P1=0xff;break;case 1:P1=0xfe;break;case 2:P1=0xfd;break;case 3:P1=0xfb;break;case 4:P1=0xf7;break;case 5:P1=0xef;break;case 6:P1=0xdf;break;case 7:P1=0xbf;break;case 8:P1=0x7f;break;case 9:P1=0xff;break;}if(count>=9){count=0;}while(!key);}}delay(10);if(key1==0){delay(10);if(key1==0){count1++;switch(count1){case 0:P1=0xff;break; case 1:P1=0x7f;break; case 2:P1=0xbf;break; case 3:P1=0xdf;break; case 4:P1=0xef;break; case 5:P1=0xf7;break; case 6:P1=0xfb;break; case 7:P1=0xfd;break; case 8:P1=0xfe;break; case 9:P1=0xff;break; }if(count1>=9){count1=0;}while(!key1);}}}void main(){while(1){keysan();}}。
51单片机流水灯实验报告
51单片机流水灯实验报告51单片机流水灯试验一、实验目的1.了解51单片机的引脚构造。
2.根据所学汇编语言编写代码实现LED灯的流水功能。
3.利用开发板下载hex文件后验证功能。
二、实验器材个人电脑,80c51单片机,开发板三、实验原理单片机流水的实质是单片机各引脚在规定的时间逐个上电,使led 灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的p2端口,对8个led灯进展控制,要实现逐个亮灯即将p2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
使用rl或rr a实现位的转换。
a存放器的位经过rr a之后转换如下所示:然后将A存放器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。
四、实验电路图五、通过仿真实验正确性代码如下:ORG 0MOV A,#00000001BLOOP:MOV P2,ARL AACALL DELAYSJMP LOOPDELAY:MOV R1,#255DEL2:MOV R2,#250DEL1:DJNZ R2,DEL1DJNZ R1,DEL2RETEnd实验结果:六、实验总结这次试验我通过Proteus仿真实现对流水灯功能的实现。
受益匪浅,对80c51的功能和构造有了深层次的了解,我深刻的明白,要想完全了解c51还有一定间隔,但我会一如既往的同困难作斗争。
在实验中,我遇到了不少困难,比方不知道怎么将程序写进单片机中,写好程序的却总出错,不知道什么原因,原来没有生成hex文件。
这些错误令我明白以后在试验中要步步细心,防止出错。
51单片机:LED灯亮灯灭程序设计之欧阳文创编
1.功能说明:控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。
程序:01: MOV A , #11111110B ; 存入欲显示灯的位置数据02: MOV P1, A ; 点亮第一只灯03: JMP $ ; 保持当前的输出状态04: END ; 程序结束2.功能说明:单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。
程序:01:START: MOV A , #00010010B ; 存入欲显示灯的位置数据02: MOV P1, A ; 点亮灯03: JMP START ; 重新设定显示值04: END ; 程序结束3.功能说明:单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。
程序:01: START: MOV R0, #8 ;设左移8次02: MOV A, #11111110B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出04: RL A ;左移一位05: DJNZ R0, LOOP ;判断移动次数06: JMP START ;重新设定显示值07: END ;程序结束4.功能说明:单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。
程序:01: START: MOV R0, #8 ;设右移8次02: MOV A, #01111111B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出04: ACALL DELAY ;调延时子程序05: RR A ;右移一位06: DJNZ R0, LOOP ;判断移动次数07: JMP START ;重新设定显示值08: DELAY: MOV R5,#50 ;09: DLY1: MOV R6,#100 ;10: DLY2: MOV R7,#100 ;11: DJNZ R7,$ ;12: DJNZ R6,DLY2 ;13: DJNZ R5,DLY1 ;14: RET ;子程序返回15: END ;程序结束5.功能说明:单片机P1端口接8只LED,每次点亮一只,先把右边的第一只点亮,0.5秒后点亮右数的第二只灯,第一只熄灭,再过0.5秒点亮右数的第三只灯,第二只熄灭,…亮灯按此顺序由右向左移动。
(仅供参考)51单片机实例-控制LED-灯的亮和灭
第一课,了解单片机及单片机的控制原理和DX516的用法,控制一个LED灯的亮和灭本章学习内容:单片机基本原理,如何使用DX516仿真器,如何编程点亮和灭掉一个LED灯,如何进入KEILC51uV 调试环境,如何使用单步,断点,全速,停止的调试方法聂小猛 2006年6月单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需要学习单片机。
可以说,掌握了单片机开发,就多了一个饭碗。
51单片机已经有30多年的历史了,在中国,高校的单片机课程大多数都是51,而51经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。
而国内书店的单片机专架上,也大多数都是51系列。
可以预见,51单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。
作为一个初学者,如何单片机入门?需要那些知识和设备呢?知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。
一般的大学毕业生都可以快速入门,自学过这2门课程的高中生也够条件。
就算你没有学过单片机课程,只掌握了C语言的皮毛,通过本系列的教程,您也会逐渐的进入单片机的大门。
当然在学习的过程中,您还是必须多去研读单片机书籍,了解他们的基本结构及工作方式。
下面以51为例来了解一下单片机是什么东西,控制原理又是什么?在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是1和0。
单片机内部的CPU,寄存器,总线等等结构都是通过1和0两种信号来运作的,数据也是以1或者0来保存的。
单片机的输入输出管脚,也就是IO口,也是只输出或识别1和0两种信号,也就是高电平和低电平。
当单片机输出一个或一组电平信号到IO口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外部的控制。
当外部一个或一组电平信号送到单片机的IO口时,单片机也可以读到这些信号,并进行分析操作,这就是单片机对外部设备信号的读取。
基于51单片机的流水灯控制
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。
因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
其具体硬件组成如图1所示。
图1 流水灯硬件原理图从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
3.软件编程单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。
软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。
下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。
3.1位控法这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩实验名称:单片机系统简单扩展实验
一、实验目的
1、了解单片机系统的扩展方法
2、熟悉8255A在单片机系统扩中的使用方法。
3、熟悉仿真软件Proteus以及编程软件Keil的使用。
二、实验仪器
三、实验内容
四、实验原理
实验报告
五、实验步骤
步骤:
1、根据给定的实验要求,分析实验的目的以及实验要求。
2、通过计算机仿真软件Proteus,根据实验目的设计电路,并且绘制电路原理图。
3、根据自己设计的电路,编写控制程序。
4、调试所编写的控制程序,直至程序没有语法及语意错误,可以通过编译。
5、将所编写的无错误的程序下载至仿真软件,并进行调试,根据仿真结果修改程序。
6、重复上一步骤,知道仿真效果达到实验要求,即可完成。
六、实验程序
#include <reg51.h>
#include<absacc.h>。