51单片机按键控制花样灯
51单片机控制LED灯程序设计
51单片机控制LED灯程序设计首先,我们需要明确要使用到的硬件资源和引脚连接情况。
假设我们使用的是STC89C51单片机,LED灯的正极连接到单片机的P1口,负极通过电阻连接到地。
接下来,我们需要了解一些基本的汇编指令和编程规范。
在编写51单片机程序时,需要使用到一些特定的寄存器和指令。
首先是P1寄存器,它用来控制P1口的输出和输入状态。
然后是MOV指令,这是一个用来将数据从一个寄存器复制到另一个寄存器的指令。
最后是一个延时函数,可以利用循环来实现延时。
首先,我们需要初始化P1口为输出状态。
在51单片机中,IO口可以被配置为输入(1)或输出(0)。
我们可以使用MOV指令将0赋值给P1寄存器,将其配置为输出。
此外,我们还需要一个简单的延时函数,来控制LED灯的亮灭时间。
下面是一个基本的51单片机控制LED灯的程序:```assemblyORG0;程序的起始地址MOVP1,;初始化P1口为输出状态LOOP:;主循环MOVP1,;将P1的状态置为0,LED灯灭ACALLDELAY;调用延时函数,延时一段时间MOVP1,;将P1的状态置为1,LED灯亮ACALLDELAY;调用延时函数,延时一段时间JMPLOOP;无限循环DELAY:;延时函数MOVR3,;初始化循环计数器为250LOOP1:MOVR2,;初始化循环计数器为250LOOP2:MOVR1,;初始化循环计数器为250LOOP3:DJNZR1,LOOP3;内层循环DJNZR2,LOOP2;中层循环DJNZR3,LOOP1;外层循环RET;返回主程序```以上是一个简单的51单片机控制LED灯的汇编程序。
程序中通过不断切换P1口的状态来实现LED灯的亮灭。
同时,通过调用延时函数来实现亮灭的时间间隔。
在主循环中,LED灯会亮和灭各一段时间,然后无限循环。
为了将以上汇编程序烧录到单片机中,需要将其汇编为二进制文件。
通常可以使用Keil C等开发工具进行汇编和烧录操作。
单片机控制的花样彩灯设计
课程设计报告书题目: 花样彩灯控制系统专业:电气工程学号: 0401100102学生姓名:杜世会指导教师:赵阳日期:2012-6-22河南工业职业技术学院课程设计(论文)任务书电气工程系电气自动化 1001 学生:杜世会指导教师:赵阳助理指导教师(并指出所负责的部分):教研室:教研室主任:目录1引言 (4)2 设计原理 (5)2.1MCS51 (5)2.2 LED (6)2.3中断指令 (8)2.4硬件接原理图 (9)3程序流程图 (11)3.1主流程图 (11)3.2流水灯子流程图 (12)3.3中断程序流程图 (13)4汇编程序 (14)4.1主程序 (14)4.2一秒钟定时程序 (17)5小结 (18)参考文献 (19)1.1引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。
但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
课程设计是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练,是培养学生工程意识和创新能力的重要环节。
进一步巩固和加深“单片机”课程的基本知识,了解单片机设计知识在实际中的应用。
综合运用“单片机”课程和先修课程的理论及生产实际知识去分析和解决电路设计问题,进行单片机电路设计的训练。
学习单片机设计电路的一般方法,了解和掌握单片机电路的设计过程和进行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体电路设计能力。
推荐-51单片机多模式彩灯控制器 精品
20XX届单片机课程设计题目:按键多模式彩灯控制器班级:电气1001组别:第十组指导老师:日期:6.11-6.20目录摘要本文介绍了一种简易LED彩灯控制系统的软硬件设计过程,本方案以AT89C51单片机作为主控核心,按键控制电路、彩灯显示电路以及单片机最小系统等模块组成的核心主控制电路。
利用软件编程烧录程序到单片机来实现对LED彩灯进行控制,本系统亮灯模式多,用户根据操作提示可以随意变换想要的闪烁方式和控制彩灯的闪烁频率。
本系统具有电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,具有一定的实用和参考价值。
关键词LED彩灯;彩灯控制系统;闪烁方式第1章方案设计随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响彩灯效果,因此有必要对现有的彩灯控制器进行改进。
1.1设计方案彩灯控制器大致可分为两种方案实现。
一种是利用电子电路装置控制,另一种是采用单片机控制。
方案一:根据设计任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡电路、计数/时序分配电路、移位位寄存器和彩灯显示五部分组成。
其框图如图1-1所示。
图1-1彩灯循环控制器硬件框图方案二:本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求。
其硬件构成框图如图1-2所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源电路组成。
单片机的花样彩灯设计
课程设计报告书题目: 单片机控制的花样彩灯设计专业:电气工程及其自动化(1)班学号:学生姓名:指导教师:2010年12 月 1 日南昌工程学院课程设计(论文)任务书一、课题设计(论文)题目:基于单片机控制的花样彩灯设计二、课程设计(论文)使用的原始资料(数据)及设计技术要求:设计要求:以MCS51单片机为核心,辅以外围接口电路,设计一个由键盘控制的四种花样LED闪烁彩灯,使八个LED实现流水灯(跑马灯)、逐点点亮、间隔点亮、逐点熄灭四种花样。
要求采用键盘查询方式(非中断方式)实现花样转换。
在当前花样循环显示时,按下相应的花样选择按钮,能立即转换至对应的闪烁花样(但必须在去干扰或消除抖动之后)。
四个按钮S1、S2、S3、S4分别对应花样1、花样2、花样3、花样4。
程序开始运行时自动执行花样1(流水灯)。
时间间隔采用定时/计数器控制为1S左右(误差不超过10%)。
1、单片机控制系统硬件电路设计,包括单片机时钟和复位电路的设计、LED驱动和键盘设计等。
2、控制软件设计与调试,包括1S定时功能的实现、键盘响应程序和显示控制程序等。
三、课程设计(论文)工作内容及完成时间:1、查找相关文献,进行方案选择。
2天 11.22---11.232、系统硬件电路设计,绘制电路原理图。
3天 11.24---11.263、绘制软件流程图,编写与调试软件。
3天 11.29---12.14、完成课程设计报告,答辩。
2天 12.2---12.3四、主要参考资料:1、《单片机原理及应用》,李建忠,西安电子科技大学出版社,2002年2、《单片微型计算机与接口技术》,李群芳等,电子工业出版社,2002年3、《单片微型计算机原理与接口技术》,陈光东等,华中科技大学出版社,1999年4、《单片机实验与实践》,周立功等,北京航空航天大学出版社,2004年5、《开放式综合实验/仿真系统MCS51实验分册》,伟福公司电气与电子工程系 07电气工程电力系统专业 1 班学生:王文虎日期:自 2010 年 11 月 22 日至 2010 年 12 月 3 日指导教师:章彧助理指导教师(并指出所负责的部分):教研室:电气工程教研室主任:目录1引言 (4)2 设计原理 (5)2.1MCS51 (5)2.2 LED (6)2.3中断指令 (8)2.4硬件接原理图 (9)3程序流程图 (11)3.1主流程图 (11)3.2流水灯子流程图 (12)3.3中断程序流程图 (13)4汇编程序 (14)4.1主程序 (14)4.2一秒钟定时程序 (17)5小结 (18)参考文献 (19)1.1引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
51单片机爱心流水灯原理及制作
51单片机爱心流水灯原理及制作一、引言爱心流水灯是一种常见的电子制作项目,它使用51单片机控制LED灯的亮灭顺序,形成一个流动的爱心图案。
本文将详细介绍51单片机爱心流水灯的原理及制作过程。
二、原理介绍1. 51单片机51单片机是一种非常常见的单片机,具有广泛的应用领域。
它具有强大的计算能力和丰富的外设接口,非常适合用于控制LED灯的亮灭。
2. LED灯LED灯是一种半导体发光二极管,具有低功耗、长寿命和高亮度等特点。
在爱心流水灯中,我们使用红色的LED灯来形成爱心图案。
3. 流水灯原理流水灯是一种常见的电子灯光效果,通过控制LED灯的亮灭顺序,形成一个流动的效果。
在爱心流水灯中,我们将多个LED灯按照特定的顺序亮灭,形成一个流动的爱心图案。
4. 原理图以下是51单片机爱心流水灯的原理图:(在此处插入原理图)三、制作材料准备在开始制作爱心流水灯之前,我们需要准备以下材料:1. 51单片机开发板2. LED灯(红色)3. 电阻4. 面包板5. 连接线6. 电源四、制作步骤1. 连接电路首先,将51单片机开发板和面包板连接起来。
然后,根据原理图连接LED灯、电阻和51单片机的引脚。
确保连接正确且稳固。
2. 编写程序使用C语言编写51单片机的程序。
程序的主要功能是控制LED灯的亮灭顺序,形成一个流动的爱心图案。
以下是一个简单的示例程序:(在此处插入示例程序)3. 烧录程序将编写好的程序烧录到51单片机中。
可以使用专业的烧录工具,也可以使用通用的USB转串口模块进行烧录。
4. 测试将电源接入电路,打开电源开关,观察LED灯的亮灭情况。
如果一切正常,LED灯将按照程序中设定的顺序亮灭,形成一个流动的爱心图案。
五、注意事项在制作爱心流水灯时,需要注意以下几点:1. 连接线的接触要牢固,确保电路的稳定性。
2. 程序的编写要准确无误,确保LED灯按照预期的顺序亮灭。
3. 使用适当的电阻限流,以保护LED灯和51单片机。
51单片机技术应用教程(C语言版)项目八PC机远程控制花样霓虹灯设计与制作
8.1.2 51单片机串行通信基础知识
串行接口控制寄存器SCON
76 5 4 3 2 1 0 SCON(98H) SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0、SSMM12::多串机行通接信口R控E4N种制:允工位许作,串方用行式于接选方收择式位位2和。。方由式软3件。置1或清
通信方式
并行通信:数据的各位同 时传输
串行通信:数据逐位顺序 传输
8.1.1串行通信的基本原理 串行通信制式
单工(simplex) :数据只能按照一 个固定的方向传输,如广播
设备A
设备B
半双工(half duplex) :2个方向上 的数据传输不能同时进行,只能一 端发送,一端接收,如对讲机
全双工(full duplex) : 2个方向可 以同时发送和接收,如电话机
76 5 4 3 2 1 0 SCON(98H) SM0 SM1 SM2 REN TB8 RB8 TI RI
TB8:发R送B数8:据接T的收I:第数发9据送R位I的中:。接第断在收9标方位中志式。断位2工标和。作志方在在位式方方。3式中式在0,2时方和由,式方发0式中送3,时完接,8位收数完8位数
1 0 为方0式还2 是为1,11位T帧I、格R式I都以正常fo方sc/6式4或被fosc激/32活。 1 1 在方方式3式1时,11如位果帧格S式M2=1,可则变只(由有定收时到器控有制效)的停止位后,RI置1。
在方式0时,SM2必须为0。
8.1.2 51单片机串行通信基础知识
串行接口控制寄存器SCON
SM0 SM1 工在作方方式式 2和方0。式功R3E能处N于=1接时收,时允,许如接波果收特S率;MR2=E1N,=0而时且,接收到的第9位数据RB8
基于51单片机的花样流水灯设计
摘要摘要计算机技术的飞速发展和提高,把我们带入了崭新的时代,现在,计算机的应用已经深入到千家万户。
单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机。
单片机在现在社会有着广泛的应用,小到人们的日常电子用品,大到航天飞机、宇宙飞船,上面都有单片机的广泛应用。
单片机具有体积小、功能强大、低功耗、应用广泛等特点。
以AT公司的芯片AT89C51 单片机来实现流水灯的设计。
本系统由单片机控制,I/O口接LED的负极,而LED的正极则直接与5V电源相连。
通过I/O口输出的低电平点亮LED灯。
因此可以通过控制单片机的I/O口的电平高低以达到控制LED,从而实现不同花样的流水灯的目的。
关键词:LED,单片机,高低电平变化ABSTRACTThe rapid development of computer technology and improving, bring us to the new era, now, the application of computer has been deep into the thousands. Single chip microcomputer is made on an integrated circuit chip computer, hereinafter referred to as single chip microcomputer. SCM has been widely used in the present society, small to People's Daily electronic products, big to aerospace aircraft, spacecraft, above has the wide application of single-chip microcomputer. SCM has small volume, powerful function, low power consumption, wide application, etc. AT the company's chip AT89C51 single-chip microcomputer to realize the water lamp design. This system controlled by single chip microcomputer, I/O ports connect the LED the cathode, and LED the anode is directly connected to 5V power supply. Through the I/O port output low level light leds. So you can single chip microcomputer control through the I/O ports to control LED, the level of high and low so as to realize the purpose of the different pattern of flowing water light.Key words:LED , MCU ,High and Low output leve目录第1章引言 (1)1.1 研究背景及意义 (1)1.2 国内外研究现状以及本系统的重点问题 (1)1.3 本文章节安排 (2)第2章系统设计方案论证 (3)2.1 控制器模块方案论证 (3)2.2 键盘模块方案 (4)2.3 电源模块方案 (4)第3章系统硬件设计方案 (5)3.1 系统设计框图 (5)3.2 硬件电路设计 (5)3.2.1 电源电路 (5)3.2.2 单片机89C52最小系统 (6)3.2.3 按键电路 (13)3.3.4 LED灯电路 (13)第4章程序设计及软件仿真 (15)4.1 软件设计框图 (15)4.2 软件开发平台选择 (15)4.3 软件系统功能模块 (16)4.3.1 初始化模块 (16)4.3.2 延时函数 (17)4.3.3 定时器控制模块 (17)4.3.4 键盘扫描模式 (17)4.3.5 LED灯输出控制模块 (18)4.4 程序调试仿真 (19)4.4.1 仿真平台介绍 (19)4.4.2 仿真测试 (19)第5章硬件调试 (21)5.1 硬件设计 (21)5.2 硬件调试 (21)5.2.1 下载功能调试 (21)5.2.2 LED电路测试 (21)5.2.3 模式选择功能调试 (22)5.2.4 速度加减功能调试 (22)5.2.5 复位电路调试 (22)5.2.6 稳定性测试 (22)总结 (23)致谢 (25)参考文献 (26)附录 (27)附录一:原理图 (27)附录二:硬件实物 (28)附录三:程序代码 (29)第1章引言第1章引言1.1 研究背景及意义现如今,随着集成化芯片的飞速发展,分立元件或数字逻辑电路正逐步被集成电路所取代,而单片机作为一种集成电路,其价格低廉,且可靠性强、控制简单但控制方法多样。
基于51单片机的四花样彩灯课程设计报告全解
课程设计说明书课程设计名称:专业综合课程设计课程设计题目:基于单片机的综合系统设计学院名称:信息工程学院专业:计算机科学与技术班级:学号:姓名:评分:教师:20 年 1月 20 日目录1.摘要 .................................................................................................................................... - 3 -2、系统设计 ....................................................................................................................... - 3 -2.1 设计任务与要求 ..................................................................................................... - 3 -2.1.1 设计任务 ....................................................................................................... - 3 -2.1.2 设计要求 ....................................................................................................... - 4 -2.2 方案的选择与论证 ................................................................................................. - 4 -2.2.1 总体设计方案 ............................................................................................... - 4 -3 、系统硬件设计 ............................................................................................................... -4 -3.1 控制器模块 ............................................................................................................. - 5 -3.2 按键模块 ................................................................................................................. - 7 -3.3LED显示模块 .......................................................................................................... - 7 -3.4硬件元件清单 .......................................................................................................... - 8 -4、软件设计 ......................................................................................................................... - 8 -4.1主程序设计 .............................................................................................................. - 9 -4.2 编译器简介 ........................................................................................................... - 10 -4.3 结果 ....................................................................................................................... - 10 -4.4 系统调试 ................................................................................................................ - 11 -4.5 误差分析 ................................................................................................................ - 11 -5、总结 ............................................................................................................................... - 12 - 参考文献 ............................................................................................................................. - 13 -附录(代码).................................................................................................1.摘要本次试验为大学期间的综合设计,主要特点是软硬件结合。
51单片机彩灯控制器的设计
51单片机彩灯控制器的设计一、引言彩灯控制器是一种用于控制多个彩灯的设备,可以通过控制器改变灯光的亮度、颜色和闪烁等效果。
本文将介绍使用51单片机设计的彩灯控制器。
二、设计目标与需求1.控制多个彩灯:控制器需要具备控制多个彩灯的能力,能够同时控制彩灯开关、亮度和颜色等。
2.节约成本:设计需要尽量简化硬件电路,减少成本。
3.方便使用:控制器需要易于操作,提供用户友好的界面和操作方式。
三、硬件设计1.单片机选择:本设计选择了常用的51单片机作为主控芯片,其具备较强的计算和控制能力。
2.输入设备:采用4x4矩阵键盘作为输入设备,通过矩阵键盘可以方便地输入控制指令和参数。
3.输出设备:使用数字电路和三极管驱动电路实现对多个彩灯的控制,通过PWM技术控制灯光的亮度。
4.通信接口:设计可选装串口通信接口,以便将控制器与其他设备连接。
四、软件设计1.系统框图:彩灯控制器的软件框图如下:```主程序├4x4矩阵键盘扫描功能├彩灯控制函数├开关控├亮度控└颜色控└串口通信功能(可选)```2.矩阵键盘扫描功能:通过扫描矩阵键盘,获取用户输入的按键信息,并根据按键信息触发相应的彩灯控制功能。
3.彩灯控制函数:实现对彩灯开关、亮度和颜色等参数的控制。
-开关控制:根据用户输入的指令,控制彩灯的开关状态。
-亮度控制:使用PWM技术控制彩灯的亮度,根据用户输入的亮度参数设置对应的PWM占空比。
-颜色控制:根据用户输入的颜色参数,控制彩灯的颜色。
可以通过RGB色彩模型实现颜色变化。
4.串口通信功能(可选):通过串口通信接口,实现与其他设备的通信,可以通过串口发送控制指令和接收反馈信息。
五、总结本文介绍了使用51单片机设计的彩灯控制器。
通过合理的硬件设计和软件设计,实现了对多个彩灯的控制。
控制器具备控制开关、亮度和颜色等功能,简化了硬件电路,节约了成本。
同时,控制器还提供了用户友好的界面和操作方式,方便使用。
设计还可选装串口通信接口,实现与其他设备的通信。
基于51单片机的花样流水灯设计
156本文以AT89C51单片机芯片为核心,通过硬件设计工作和软件设计工作,实现控制8个发光LED二极管的闪烁,即使LED二极管按照某种位置放置,按照时间先后和间隔顺序进行发光与熄灭的实现,也称流水灯控制系统。
该系统的设计主要分为三部分,即系统框架设计、硬件设计以及系统软件设计。
1 系统框架设计本设计的目的主要是为了能够控制8个LED发光二极管的闪烁工作,对于一般的基于单片机技术的控制系统开发而言,需要实现系统供电、系统驱动、系统复位以及功能扩展。
为了简化系统设计,减少系统开发工作量,因此本设计的系统框架搭建主要分为单片机最小工作系统模块、灯光控制模块、以及LED发光二极管电路模块3部分,而单片机最小工作系统模块中又分为时钟电路模块和复位电路模块,以及单片机芯片。
2 AT89C51单片机单片机全称为单片微型计算机,又被称为单片微控制器,经过不断的技术迭代和改进,如今的单片机已将一个基本完整的、能够实现计算机基本功能的器件集成于一块微型芯片当中。
开发人员在开发各种控制系统时,常常将单片机作为系统的核心,通过其接口来扩展和实现其他功能,通过向单片机内烧录已经制定好的程序来实现系统自动控制。
AT89C51型单片机是51系列单片机众多款型中最为的经典的单片机之一。
该单片机以其低廉的价格、可靠的性能、良好的扩展和兼容性占据了广大的单片机市场,获得了许多电子工程师的应用。
2.1 单片机最小工作系统要想驱动一块单片芯片正常工作,需要为其提供合适的工作电压,需要能够提供时钟脉冲信号来控制单片机内部各个指令的有序执行和操作的时钟电路,以及能够控制系统复位操作的复位电路三部分。
它们是实现单片机正常工作的最小条件,在单片机芯片的接口上也具有专门的接口来实现这些条件。
2.1.1 工作电压单片机在封装过程中提供了正负极两个独立的引脚,以便外部供电电源的接入。
AT89C51型单片机的标准电压为+5V,因此只需将电源+5V接口接入单片机正极,而单片机的负极则接地便可实现单片机的正常供电条件。
51单片机彩灯控制器的设计
51单片机彩灯控制器的设计51单片机作为一种非常常见的微控制器,被广泛应用于各种控制系统中。
彩灯控制器是一种常见的应用,通过控制51单片机的IO口来控制彩灯的颜色和亮度,实现彩灯的闪烁、呼吸、渐变等效果。
本文将介绍51单片机彩灯控制器的设计过程。
首先,我们需要明确彩灯控制器的功能需求。
常见的彩灯控制器一般需要具备以下功能:1.控制彩灯的颜色和亮度;2.实现多种灯效,如闪烁、呼吸、渐变等;3.可以通过外部设备(如按钮、遥控器等)进行控制;4.响应外部输入(如声音、光线等)来控制彩灯;5.具备存储功能,保存用户设定的彩灯模式。
根据上述功能需求,我们可以着手进行彩灯控制器的设计。
下面将从硬件设计和软件设计两个方面进行详细介绍。
1.硬件设计:硬件设计包括电路设计和PCB设计两个方面。
电路设计主要是根据51单片机的引脚功能,选择合适的元器件连接到相应的引脚上,以实现各功能模块的电路连接。
常见的彩灯控制器电路包含以下模块:电源供应模块、单片机控制模块、彩灯输出模块、外设接口模块等。
PCB设计则是将电路布板到PCB板上,保证电路的稳定性和可靠性。
2.软件设计:软件设计是51单片机彩灯控制器的核心。
通过编写程序代码,控制单片机的IO口来实现控制彩灯的颜色和亮度,以及各种灯效。
软件设计需要掌握51单片机的编程方法,了解该单片机IO口的使用方法和特点。
在软件设计中,需要通过编程实现以下功能:-通过外部设备输入控制信号,如按钮、遥控器等,来控制彩灯的开关、亮度等;-通过外部输入信号,如声音、光线等,来触发彩灯的相应效果;-实现各种彩灯效果,如闪烁、呼吸、渐变等,通过控制IO口输出信号实现。
除了基本的功能设计,彩灯控制器还可以扩展一些附加功能。
例如,可以通过添加存储模块,实现保存用户设置的彩灯模式,下次开机时可以快速恢复设置。
还可以通过添加无线通信模块,实现远程控制彩灯,或者通过添加传感器模块,实现根据环境变化自动调节彩灯等。
用51控制8个LED灯的亮灭
用51控制8个LED灯的亮灭本来以为这个程序很简单的,没想到写了快三个小时。
哎学艺不精啊。
贴出来给你研究吧。
我不想做过多的解释了,我是按我理解的你出的题目做的,可能和你的本意不是很一样,1、依次亮,依次灭:从一个灯亮到全亮,再到全灭,每次改变一个灯亮灭2、奇偶号灯间隔亮灭:隔一个灯亮一个灯亮灯时间为1s,没有灯全灭的时候3、依次闪烁、切换时间为3秒,闪烁时间为2秒,我理解的是,没三秒钟有一个灯在闪烁,其中有一秒钟是灭灯状态程序中使用了P1口与8个发光二极管相连,具体电路图你百度一下吧,还有使用了一个按键,该按键与P3.7相连,低电平为按下状态。
程序如下:#include#include/*变量声明:i、j、k都是记录计时器溢出次数的变量,stat是记录当前显示状态的变量,由按键key控制temp是状态2中保护P1口状态的变量*/unsigned char i=0,j=0,k=0,stat=0,temp;bit flag=1; //状态1处于灭灯还是亮灯状态的变量,1为依次亮灯,0为依次亮灯sbit key=P3^7; //按键控制void init(); //初始化函数void delay(unsigned int N); //延时函数void keyscan(); //键盘扫描函数void main(){init();while (1){switch (stat){case 0: //0方案if(i==20&&flag){i=0;P1=P1<<1; //依次亮灯temp=P1;if(temp==0){flag=0;}}if(i==20&&!flag){i=0;if(P1==0xff){flag=1;P1=0xfe;}if(!flag){P1=P1<<1; //依次灭灯temp=P1;P1=temp+1;}}break;case 1: //2方案if(i==20){i=0;P1=~P1; //去反后亮灯状态为灭灯,P1初值取0x55或0xaa,奇偶交替亮灯}break;case 2: //3方案if(j==60){P1=temp;P1=_crol_(P1,1);temp=P1; //保护P1口亮灯状态k=0;j=0;}//闪烁部分,应该可以优化if(k<5){P1=0xff;}else if(k>=5&&k<10){P1=temp;}else if(k>=10&&k<15){P1=0xff;}else if(k>=15&&k<20){P1=temp;}else if(k>=20&&k<25){P1=0xff;}else if(k>=30&&k<35){P1=temp;}else if(k>=35&&k<40){P1=0xff;}//----------------------------------- break;}keyscan();}}void init(){TH0=0x3c; //定时器赋初值定时时间50ms TL0=0xB0;TMOD=0x01; //设置定时器工作方式为方式1 EA=1; //开总中断ET0=1; //开中断允许位TR0=1; //定时器计数P1=0xfe; //这里假设led灯与P1口相连并且//低电平有效}void delay(unsigned int N){int i,j;for (i=0;i<n;i++);for (j=0;j<110;j++);}void keyscan(){if(!key){delay(10); //消抖if(!key); //确认有键按下stat++;if(stat==3){stat=0;}//右键按下复位i=0;j=0;k=0;TH0=0x3c;TL0=0xB0;switch (stat){case 0:P1=0xfe;flag=1;stat=0;break;case 1:P1=0x55;break;case 2:P1=0xfe;temp=P1;break;}//-----------------------------------while(!key) //此循环中的函数和主函数中的显示函数是同一个//用于长按键的显示,可以去掉,去掉长按键不会正常显示,松开按键后正常{switch (stat){case 0:if(i==20&&flag){i=0;P1=P1<<1;temp=P1;if(temp==0){flag=0;}}if(i==20&&!flag){i=0;if(P1==0xff){flag=1;P1=0xfe;}if(!flag){P1=P1<<1;temp=P1;P1=temp+1;}break;case 1:if(i==20){i=0;P1=~P1;}break;case 2:if(j==60){P1=temp;P1=_crol_(P1,1); temp=P1;k=0;j=0;}if(k<5){P1=0xff;}else if(k>=5&&k<10) {P1=temp;}else if(k>=10&&k<15)P1=0xff;}else if(k>=15&&k<20){P1=temp;}else if(k>=20&&k<25){P1=0xff;}else if(k>=30&&k<35){P1=temp;}else if(k>=35&&k<40){P1=0xff;}break;}}}}void timer0() interrupt 1 {TH0=0x3c;TL0=0xB0; //溢出后重新赋初值//定时器中断时间为50msi++; //20次中断时间为1s j++; //40次中断时间为2s k++; //60次中断时间为3s }</n;i++);。
51单片机_LED指示灯控制
{
delay_ms(300);//亮300毫秒
P1=_crol_(P1,1);//左移位使次低位为低电平点亮,依次循环
}
}
//2、实现LED指示灯从高到低、从弟到高、以及从两边向中间、从中间向两边逐个点亮#include<reg52.h>
#include<intrins.h>
voiddelay_ms(intn)//延时n毫秒
点亮
}
for(i=0; i<7; i++)
{
p1=_crol_(p1,1);
p0=_cror_(p0,1);
Hale Waihona Puke p=p1&p0;delay_ms(100);
P1=p;
P0=p;
}
}
}//让P1口对应的第一排灯从低到高逐个点亮//让P1口对应的第一排灯从高到低逐个点亮//第一排灯从低到高,第二排从高到低//让P1口对应的第一排灯从低到高逐个点亮//同时,让P0口对应的第二排灯从高到低逐个//让LED灯从两边向中间点亮
左移位使次低位为低电平点亮依次循环实现led指示灯从高到低从弟到高以及从两边向中间从中间向两边逐个点亮includereg52hincludeintrinshvoiddelaymsint延时n毫秒voidmainunsignedcharp10xfe
《
此程序使用单片机89SC52
//1、实现LED指示灯逐个点亮
{
inti,j;
for(i=0;i<n;i++)
for(j=0;j<110;j++);
}
voidmain()
{
inti;
51单片机爱心流水灯原理及制作
51单片机爱心流水灯原理及制作爱心流水灯是一种常见的电子制作项目,它利用51单片机控制LED灯的亮灭顺序,形成一个动态的爱心图案。
下面将详细介绍爱心流水灯的原理及制作过程。
一、原理介绍1. 51单片机:51单片机是一种常用的微控制器,具有较强的控制能力和广泛的应用领域。
2. LED灯:LED灯是一种半导体发光器件,具有低功耗、长寿命和丰富的颜色选择等特点。
3. 流水灯原理:流水灯是利用多个LED灯按照一定的顺序依次亮灭,形成一个动态的流动效果。
二、制作材料准备1. 51单片机开发板:用于编写和烧录控制程序。
2. LED灯:选择红色LED灯,数量根据实际需要确定。
3. 电阻:用于限流,根据LED灯的工作电流和电压确定合适的电阻值。
4. 连接线:用于连接单片机和LED灯。
三、制作步骤1. 连接电路:将LED灯按照心形的形状连接在面包板上,每个LED灯之间通过连接线连接。
2. 连接单片机:将51单片机开发板与面包板上的电路连接,确保每个LED灯的正极连接到单片机的输出引脚。
3. 编写程序:使用C语言编写控制LED灯亮灭的程序,并将程序烧录到51单片机中。
4. 供电测试:将电路连接到电源上,通过控制程序使LED灯按照设定的顺序亮灭,观察是否形成了爱心流水灯效果。
5. 优化调整:根据实际效果对程序进行优化和调整,使得爱心流水灯效果更加流畅和美观。
四、注意事项1. 电路连接:在连接LED灯的过程中,注意正负极的连接,确保LED灯正极连接到单片机的输出引脚。
2. 电阻选择:根据LED灯的工作电流和电压确定合适的电阻值,以保护LED 灯不受过电流的损坏。
3. 程序编写:编写程序时,注意控制LED灯的亮灭顺序和时间间隔,以达到预期的流水灯效果。
4. 安全用电:在进行供电测试时,确保使用稳定可靠的电源,并注意电路的绝缘和防触电措施。
五、扩展应用1. 调节亮度:通过调整LED灯的亮度,可以改变爱心流水灯的效果,使其更加柔和或明亮。
51单片机流水灯程序
char code table4[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//P0123 一个灯走动
char code table5[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,};//P0123 两个灯走动
char code table6[]={0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,};//P0123 三个灯走动
for(j=0;j<8;j++)//P0123 一条龙一个灯走动
{ P0=table4[j];
delay(5);
} P0=0xff;
for(j=0;j<8;j++)//P0123 一条龙一个灯走动
{ P2=table4[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<7;j++)//P0123 两个灯走动
{ P0=table5[j];
P1=table5[j];
P2=table5[j];
P3=table5[j];
for(j=1;j<7;j++)//P0123 一条龙两个灯走动
{ P2=table5[j];
delay(5);
{ P0=table10[j];
P1=table10[j];
P2=table10[j];
P3=table10[j];
delay(5);
} P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay(5);
51单片机爱心流水灯原理及制作
电路原理图:原件清单:1、51单片机x1、40Pin 座x12、LED x32(建议用5mm 七彩的)3、电阻470Ωx334、晶振12MHz x15、10uf 电解电容x1、谐振瓷片电容30pf x26·其他的可以看自己的爱好去加7、其实也可以不用那么多的电阻,用几个排阻就OK了。
效果展示:作品程序:#include<reg52.h>#define uchar unsigned charuchar flag=200;///////////////////////////////////////////////////////////////////////uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移向下uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移向上uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移向下uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移向上uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移向下uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff};////////////////////////////////////////////////////////////////////uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff};uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};uchar code Tab6[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff};uchar code Tab7[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code Tab8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; ////////////////////////////////////////////////////////////////void shansuo();void xl();///////////////////////////////////////////////////////////////void delay(void){unsigned char m,n;for(m=0;m<flag;m++)for(n=0;n<250;n++);}///////////////////////////////////void hy1(void) //点亮状态逆时针旋转90度(一个一个灭){unsigned char i;for(i=0;i<8;i++){P0=Tab11[i];P1=Tab22[i];P2=Tab11[i];P3=Tab22[i];delay();}for(i=0;i<8;i++){P0=Tab44[i];P1=Tab55[i];P2=Tab44[i];P3=Tab55[i];delay();}}///////////////////////////////////////////void hy2(void) //暗中逆时针转360。
51单片机技术应用教程(C语言版)项目四 花样霓红灯的设计与制作
函数 atoi atol atof strtod strtol strtoul
rand srand calloc free init_mempool
malloc realloc
功能 将字符串sl转换成整型数值并返回这个值 将字符串sl转换成长整型数值并返回这个值 将字符串sl转换成浮点数值并返回这个值 将字符串s转换成浮点型数据并返回这个值 将字符串s转换成long型数值并返回这个值 将字符串s转换成unsigned long型数值并返回这个值
5.请写出二维数组的格式,并举例说明。
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
4.1 C51库函数
知识 链接
4.2 用户自定义函数 4.3 C51数组
【知识点4.1】 C51库函数
• 函数有库函数和自定义函数两类。 • C51的库函数由C51的编译器提供,每个库函数的原型放
使单片机程序产生延时 对字节中的一位进行测试
【知识点4.2】用户自定义函数
• 1.用户自定义函数的形式
• (1)无参数函数。此种函数被调用时,既无参数输入,也不返回结果给调用函数,它 是为完成某种操作过程而编写的。
• (2)有参数函数。在定义此类函数时,必须定义与实际参数一一对应的形式参数,并 在函数结束时返回结果给调用该函数的程序使用,函数的返回值是通过函数中的return 语句获得的。调用时必须提供实际的输入参数。
如果P1口接了8个LED灯,该程序的功能是:
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
【引导学习】
2. 请接合第1题程序,请写出有参与无参、形参与实参的含义。
3.请用字符型数组定义LED,存放流水灯8种显示状态,存放在程 序存储器中。 4.请用一维数组定义LED数码管的0-9的显示编码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机按键控制花样灯时间:2018-09-10 13:50:11 来源:51hei 作者:/***************************************************** 本程序实现用按键控制花样灯。
** 当K1按下时,灯从0xfe向左跑一遍;** 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;** 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。
* * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。
** 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。
*******************************************************/*************************************************连接方法:P0接独立按键JP5。
P2接LED灯接口JP1 ************************************************************/#include <reg52.h> //头文件,函数声明#include <intrins.h>//定义按键所在位sbit K1=P0^0。
sbit K2=P0^1。
sbit K3=P0^2。
sbit K4=P0^3。
sbit K5=P0^4。
unsigned char led。
unsigned char j。
void delayms(unsigned char ms> // 1ms标准延时{while(ms-->{for(j=0。
j<110。
j++>。
//还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确}}void main(>{ //P2=led。
unsigned int i。
while(1>{/********************************************** 当K1按下时,灯从0xfe向左跑一遍; **********************************************/if(K1==0>delayms(10>。
//消除键盘抖动if(K1==0>{led=0xfe。
for(i=0。
i<7。
i++> //i可以去8的倍数,表示本电路执行多少次{//led=0x7f。
// P端口的初定义要在循环外面,不然会使效果错乱P2=led。
//因为这里已经初设一个灯,所以for里面要加上这一个delayms(100>。
//起初这里设置500MS,使按键每按一下灯彩走一个,不能达到要求。
led=_crol_(led,1>。
P2=led。
delayms(100>。
}while(!K1>。
//这里强调松开就没再次执行程序P2=led。
//说明执行完上面的程序的最后状态} //P2=led。
// 如果把本行放在这里,虽然在开头中没有说明程序烧写好之后就先显示一个灯,但因为本行在if外面,所有最后还是会显示/************************************************************当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置 * ***********************************************************/if(K2==0>delayms(10>。
if(K2==0>{led=0x7f。
for(i=0。
i<7。
i++>{P2=led。
delayms(100>。
led=_cror_(led,1>。
P2=led。
delayms(100>。
}while(!K1>。
P2=led。
delayms(100>。
for(i=0。
i<7。
i++>{led=_crol_(led,1>。
P2=led。
delayms(100>。
//跑回去怎么就那么快呀?} //此时led=0x7f}/******************************************************当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。
* *************************************************/if(K3==0>delayms(10>。
//消除抖动if(K3==0>{led=0xfe。
delayms(200>。
for(i=0。
i<7。
i++>{P2=led。
delayms(200>。
led=led<<1。
// 备注led=_crol_(led,1)等于led<<1||led>>7。
P2=led。
delayms(200>。
if(led==0x00>break。
//这里一定要有个break,跳出循环,然后别忘了此时的状态是00,而不是7f}while(!K1>。
led=0x7f。
P2=led。
delayms(200 >。
for(i=0。
i<7。
i++>{led=led>>1。
P2=led。
delayms(200>。
}}/*****************************************************当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。
*****************************************************/if(K4==0>delayms(10>。
//消除抖动if(K4==0>{for(i=0。
i<4。
i++> //执行四次{ led=0xf0。
P2=led。
delayms(500>。
led=0x0f。
P2=led。
delayms(500>。
}}/*********************************************************当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。
* ********************************************************/if(K5==0>delayms(10>。
if(K5==0>P2=0xff。
}}/**** */时钟+秒表+流水灯的单片机汇编程序时间:2018-09-10 13:49:42 来源:作者://HJSMSY-V1.0单片机开发板测试程序//---------------------------------------------// <<电脑钟>>//---------------------------------------------//=======主函数================================== ORG 0000HLJMP MAINORG 000BHLJMP T00// ORG 001BH// LJMP T11ORG 0030H//=======程序初始化============================= MAIN:MOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV TH1,#0F0HMOV TL1,#0B0HSETB EASETB ET0// SETB ET1SETB TR0// SETB TR1CLR P3.4MOV R7,#00H 。
秒值MOV 30H,#00H 。
秒个位值MOV 31H,#00H 。
秒十位值MOV 32H,#00H 。
分个位MOV 33H,#00H 。
分十位MOV 34H,#00H 。
时个位MOV 35H,#00H 。
时十位MOV 44H,#00H 。
秒表毫秒十位MOV 45H,#00H 。
秒表秒毫秒百位MOV 46H,#00H 。
秒表秒个位MOV 47H,#00H 。
秒表秒十位MOV 48H,#00H 。
秒表分个位MOV 49H,#00H 。
秒表分十位MOV P2,#0F0H 。
P2口按键初始化MOV 40H,#01H 。
数码管休眠值 /流水灯/秒表开关数MOV 41H,#08H 。
流水灯循环值MOV 42H,#00H 。
秒表暂停// ACALL T11//----------------------------------------------- MAIN1:MOV P0,#0FFHMOV P1,#0FFHMOV R0,40HCJNE R0,#01H,ACL1ACALL MAIN2 。
时钟显示ACL1:CJNE R0,#02H,ACL2ACALL MAIN3 。
秒表ACL2:CJNE R0,#03H,ACL3ACALL LED 。
流水灯ACL3:ACALL KEY 。
按键扫描// ACALL BAO 。
定时报警LJMP MAIN1//=======报警子程序============================BAO:MOV R4,33HCJNE R4,#03H,YY1CLR P3.2ACALL KEYLJMP YY2YY1:CJNE R4,#05H,YY2SETB P3.2ACALL KEYYY2:RET//======时钟扫描子程序=======================MAIN2:MOV A,30HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.0ACALL DELAYMOV A,31HMOV DPTR,#TABMOVC A,@A+ DPTRMOV P0,ACLR P1.1SETB P1.0ACALL DELAYMOV A,32HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.2SETB P1.1ACALL DELAYMOV A,33HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.3SETB P1.2ACALL DELAYMOV A,34HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.4SETB P1.3ACALL DELAYMOV A,35HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.5SETB P1.4ACALL DELAYMOV P0,#7FHMOV P1,#0EBHACALL DELAYMOV P1,#0FFHRET//========秒表扫描子程序========================= MAIN3:MOV A,44HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.0ACALL DELAYMOV A,45HMOV DPTR,#TABMOVC A,@A+ DPTRMOV P0,ACLR P1.1SETB P1.0ACALL DELAYMOV A,46HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.2SETB P1.1ACALL DELAYMOV A,47HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.3SETB P1.2ACALL DELAYMOV A,48HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.4SETB P1.3ACALL DELAYMOV A,49HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.5SETB P1.4ACALL DELAYMOV P0,#7FHMOV P1,#0EBHACALL DELAYMOV P1,#0FFHRET//=======定时器T0中断服务======================== T00:MOV TH0,#0D8HMOV TL0,#0F0HINC R7CJNE R7,#64H,AAMOV R7,#00H//-------时钟跑值-------------------------------- TK1:INC 30H 。