基于51单片机的心形流水灯原理图
用单片机设计流水灯的方法和程序编写
用单片机设计流水灯的方法和程序编写-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANS51增强型单片机实验板上有8个高亮度发光二极管(见图1所示),可以用来做单片机流水灯、跑马灯。
等实验,电路原理图见下图3。
图3单片机流水灯设计方法从原理图可以看出,如果我们想让接在口的LED1亮起来,那么我们只要把口的电平变为低电平就可以了;相反,如果要接在口的LED1熄灭,就要把口的电平变为高电平就可以;同理,接在~口的其他7个LED的点亮和熄灭方法方法同LED1。
因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、返回到开始、程序结束。
从上面中文表示看来实现单片机流水灯很简单,但是我们不能说你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。
我们又怎样来使单片机按我们的意思去工作呢为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
在上面主程序中用到了五条汇编语言指令:CLR、ACALL、SETB、LJMP、EN D。
CLR:是将其后面指定的位清为0,程序中使对应端口输出低电平ACALL:是子程序调用指令,程序中调用了DELAY延时子程序SETB:是将其后面指定的位置成1,程序中使对应端口输出高电平AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行END:是程序结束的伪指令,意思是告诉编译器,程序到此结束。
用AT89C51单片机实现流水灯的控制设计[1]
用AT89C51单片机实现流水灯的控制设计[1] 用AT89C51单片机实现流水灯的控制设计当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
1.引言目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。
2.硬件组成按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源: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 灯便会一亮一暗的做流水灯了。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
单片机的应用(1)流水灯
MOV TH1,A
TEST0: JB P32,TEST0 ;检测是否到a点 SETB TR0 ;到a点,TR0 = 1,做好取计时值准备。
T1计数 1
INT 1
解:
复习GATE的用法: GATE = 0时,TRi = 1,即可启动Ti定时 / 计数 GATE = 1时,TRi = 1,且 INTi =1,才启动定时 / 计数。
ORG 0000H
LJMP MAIN ORG 2000H
MAIN:MOV TMOD,#99H ;T0、T1均工作在定时,
ORG 0000H LJMP MAIN
ORG 000BH LJMP INSE1 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H
SETB TR0
SETB ET0 SETB EA
SJMP $
………
INSE1: MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI
小结:1、MCS-51单片机内有几个定时计数器?
如何计数? 2、T0、T1有几种工作方式? 3、编程应用前要事先确定的参数有几个?
定时 / 计数器的应用
复习:
TMOD TCON
GATE C/ T TF1 TR1 M1 TF0 M0 TR0 GATE C / T IE1 IT1 M1 IE0 M0 IT0
T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数 器TL0和TH0。
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单片机。
单片机流水灯原理图pcb
一、设计题目流水灯设计二、设计要求1、通过本次课程设计对80C51单片机对数据的处理和输出显示的认识和理解。
2、能够结合单片机对数据的处理输出显示了解单片机软件的应用。
3、将软、硬件有机地结合,软件系统采用汇编语言编写程序,并在WAVE中调试运行。
三、设计内容功能描述:1.功能要求:程序运行后,将依次循环出现8只LED依次逐个点亮,依次逐个叠加,依次逐个递减,从两边靠拢后分开,从两边叠加递减的流水灯效果。
2.使用说明:总体分三大部分(1)8个发光二极管(2)80C51单片机(3)软件部分按照硬件电路图把8个发光二极管依次连接P1.0~P1.7如图所示,EA (80C51 31脚) 为访问外部程序存储器控制信号,低电平有效当。
当EA端保持高电平时,单片机访问片内程序存储器的程序。
若超出该范围时,自动转去执行外部程序存储器的程序。
当EA端保持低电平时,无乱片内有无程序存储器,均只访问外部程序存储器,所以硬件电路要保持31脚高电平。
18 、19脚是接外部晶振的两脚,根据硬件电路图接上12MHz的外部晶振。
9脚是复位脚即为RESET,该引脚为单片机的上电复位端,当单片机晶体振荡器工作时,该引脚上出现两个机器周期的高电平,就可以实现复位操作,使单片机回复到初始状态。
图9脚就是上电复位电路连接图。
3.基础知识:80C51单片机的寻址方式包括寄存器寻址、直接寻址、寄存器间接寻址、立即寻址以及基址寄存器加变址寄存器间接寻址5种寻址方式。
其中基址寄存器加变址寄存器间接寻址方式一般用于访问程序存储器中的数据表格。
这种寻址方式是以DPTR 或PC作基址寄存器,以累加器作变址寄存器,并以两者内容相加成的16位地址作为操作数的地址,以达到访问数据表格的目的。
即熟悉运用查表指令编写程序。
查表指令可用于复杂代码转换显示,通过查表指令可以实现复杂的显示效果,并可以减少程序代码。
四、程序设计1、程序内容;----------------------------------------------- ;流水灯实例;功能:点亮发光管LED并闪烁;-----------------------------------------------ORG 0000H ;伪指令,指定程序从0000HLJMP MAIN ; 跳转指令,程序跳转到MAIN处ORG 0100H ; 伪指令,指定以下程序从0100H开始存放 MAIN:MOV SP ,#60H ; 给堆栈指针赋初值MOV P1,#0FFH ;给P1赋初值,LED全熄灭;以下为查表程序MOV DPTR,#LED TABLELIGHT :MOV R7, #42LOOP :MOV A , #42SUBB A , R7MOVC A ,@A+DPTRMOV P1 , A ; 输出显示LCALL DELAY ; 调延时子程序DJNZ R7 , LOOPSJMP LIGHT ;跳转,程序继续;延时子程序DELAY :MOV R7 ,#10HDELAY0 :MOV R6 ,#7FHDELAY1 :MOV R5 ,#7FHDJNZ R5 ,$DJNZ R6 ,DELA Y1DJNZ R7 ,DELA Y0RET; 表格数据LED TABLE :DB 0FFH ;全部熄灭DB 0FEH, 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH;依次逐个点亮DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,080H,000H; 依次逐个叠加DB 080H,0C0H,0E0H,0F0H,0F8,0FCH,0FEH,0FFH; 依次逐个递减DB 07EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,07EH;两边靠拢后分开DB 07EH,03CH,018H,000H,000H,018H,03CH,07EH; 两边叠加后递减DB 000H ;全部点亮END六、成员分工七、心得体会这次这个单片机的课程设计我们完成的不太理想,我们小组有四个人。
51单片机爱心流水灯原理及制作
51单片机爱心流水灯原理及制作引言:在现代科技发展的背景下,电子产品已经成为我们生活中不可或者缺的一部份。
而作为电子制作的入门级项目,流水灯因其简单而受到泛博爱好者的爱慕。
本文将介绍使用51单片机制作爱心流水灯的原理及制作过程。
1. 原理介绍:爱心流水灯是一种特殊的流水灯效果,通过控制LED灯的亮灭顺序和时间间隔,形成一个爱心图案在LED灯带上流动的效果。
其原理基于51单片机的GPIO (通用输入输出)口控制LED灯的亮灭,通过改变LED灯的状态来实现流动效果。
2. 材料准备:制作爱心流水灯所需的材料如下:- 51单片机开辟板- LED灯带- 面包板- 杜邦线- 电阻- 电容- 电源适配器3. 硬件连接:首先,将51单片机开辟板和面包板连接起来。
然后,将LED灯带连接到面包板上,确保正极和负极正确连接。
接下来,通过杜邦线将51单片机的GPIO口与LED灯带连接起来。
最后,将电阻和电容连接到电路中,以保护电路免受过电流和过电压的伤害。
4. 软件编程:使用Keil C编译器进行软件编程。
首先,需要定义LED灯带的控制引脚,并初始化为输出模式。
然后,编写程序来控制LED灯的亮灭顺序和时间间隔。
在本例中,我们将使用循环语句和延时函数来实现流水灯效果。
通过改变LED灯的状态和延时时间,可以形成一个爱心图案在LED灯带上流动的效果。
5. 程序调试:将编写好的程序下载到51单片机开辟板上,并连接电源适配器。
打开开关,LED灯带上的爱心流水灯效果就会开始显示出来。
如果浮现问题,可以通过调试程序和检查硬件连接来解决。
6. 制作扩展:如果你对爱心流水灯的效果满意,你还可以进一步扩展你的制作。
例如,你可以添加一个按键来控制流水灯的启停,或者通过蓝牙模块和手机APP来远程控制流水灯的效果。
这些扩展可以增加你的制作的趣味性和创造性。
结论:通过本文的介绍,我们了解了51单片机爱心流水灯的原理及制作过程。
通过硬件连接和软件编程,我们可以制作出一个具有特殊效果的流水灯。
基于单片机的心形流水灯设计
主程序流程图
电路原理总图
PCB板图
实物制作
经过一段时间的不断努力和学习,我在测试部分首先检查 了电路连接是否有错(少接、短路、接错、元件焊接不牢 等问题),可以用万用表来检测电路的导通情况。然后再 检查单片机的最小系统:能否使单片机正常工作等。最后 经过调试,系统整体调试:系统各个模块的测试,能够正 常工作,达到设计预期的目标。
课题要求: 结合C语言编程,使心形环绕LED流水灯实现42种不同形式的闪 烁功能,由快到慢,再由慢到快,在循环往复不断的变化中,给 人带来美的体验。
方案择
方案的选择与论证 基于单片机的新型电动栏杆设计由硬件部分和软件部
分两大部分组成。硬件系统采用STC89C52单片机作为中 央处理器,采用了多路电源供电,结合步进电机驱动电路 ,达到过往车辆数量检测,并结合数码管显示等功能。而 软件系统则采用模块化设计,包括车辆数量记录模块,距 离电机驱动模块、数码管显示模块等等。 主控制器芯片主要是负责控制LED灯的不同变化速度快慢 以及变化效果。主控制器作为整个系统的控制核心部分, 要求其功耗低、数据转换速率快。。
研究概述
研究背景与意义
随着现代科学技术的持续进步和发展和人们生活水平 的不断提高,以大规模、超大规模集成电路为首的电子工艺技术 的使用也越来越广泛,在日常生活中
也普遍常见,结合单片机技术设计的电子电路也层出不穷,像 是基于单片机技术设计的LED流水灯,也越来越满足商业 空间的需求,LED灯的优点主要体现在高节能、绿色环保 、无辐射、使用寿命长等,在商店、酒吧、歌厅、舞台等 许多场所正是由于装饰LED彩灯来照明,来展示店铺主题 形象,塑造空间光形象,从而使消费者产生共鸣和联想, 来建立情感交流,来吸引和引导消费者的目光。
单片机的应用流水灯PPT课件
何降低成本等。
03
应用领域与前景
单片机流水灯控制技术不仅在照明领域有广泛应用,还可应用于广告牌、
舞台灯光、家庭装饰等领域。随着市场的不断扩大和技术的发展,其前
景十分广阔。
展望未来发展
技术升级与创新
未来,单片机流水灯控制技术将继续升级和创新,例如, 通过引入新型材料和工艺,提高流水灯的能效和寿命;通 过智能化技术,实现自适应调节和控制。
单片机的应用流水灯ppt课件
目
CONTENCT
录
• 引言 • 单片机基础知识 • 流水灯的工作原理 • 单片机控制流水灯的实现 • 流水灯的扩展应用 • 总结与展望
01
引言
主题介绍
流水灯是一种常见的电子装置,通过控制LED灯的亮 灭顺序,形成一种视觉上的动态效果。
单片机是一种集成电路芯片,具有微处理器和存储 器等功能,广泛应用于各种电子设备中。
软件编程
编程语言选择
选择适合单片机的编程语言, 如C语言或汇编语言。
程序编写
根据需求编写控制流水灯的程 序,实现LED灯依次亮灭的效 果。
程序调试
通过仿真器或烧录器将程序下 载到单片机中进行调试,确保 程序正确无误。
调试与测试
硬件调试
测试
检查硬件连接是否正确,确保电源、 信号线等连接无误。
在完成硬件和软件调试后,进行整体 测试,观察流水灯效果是否符合要求, 同时检查是否存在其他潜在问题。
软件编程
编写控制程序,使单片应用场景
广告展示
用于商业广告、品牌推 广等场合,吸引顾客注
意力。
舞台灯光
在演出、晚会等场合作 为舞台灯光效果,营造
氛围。
家居装饰
用于家庭装修、节日装 饰等,增添生活情趣。
心形流水灯设计报告
山东英才学院51单片机课程设计心形流水灯学院信息工程学院专业班级本科电子信息工程学生姓名指导教师2019年04月02日设计要求:o设计一个用单片机控制的心形流水灯系统;o LED灯数量为32个;o可以实现循环点亮、依次熄灭的基本功能;o可以实现对角闪亮、间隔闪亮、顺时针闪亮、逆时针闪亮等多种功能(也可自行增加功能)。
学生需要完成的任务:完成心形流水灯电路设计,利用Keil软件编写程序,Proteus软件进行电路功能仿真,并将仿真结果采用录屏形式生成视频,视频类型建议用.mp4格式,大小不超过200M。
目录目录 (3)一、总体方案设计 ................................................................................................................. - 4 -1、单片机的选择 ........................................................................................................... - 4 -2、LED灯控制方式的比较与选择 ................................................................................ - 4 -3、硬件设计 ................................................................................................................... - 4 -二、电路原理图设计 ............................................................................................................. - 5 -1、时钟电路 ................................................................................................................... - 5 -2、复位电路 ................................................................................................................... - 5 -3、显示电路 ................................................................................................................... - 6 -4、电源电路 ................................................................................................................... - 7 -三、程序设计 ......................................................................................................................... - 9 -1、Keil 软件介绍 ........................................................................................................... - 9 -2、程序编写设计 ........................................................................................................... - 9 -3、程序调试 .................................................................................................................- 10 -4、电路功能仿真 .........................................................................................................- 11 - 附件: ...................................................................................................................................- 13 -1、程序代码: .............................................................................................................- 13 -2、小组成员任务分配表 .............................................................................................- 19 -时钟电路复位电路图1-3.1电 源一、总体方案设计1、单片机的选择单片机作为该电路的主要控制器芯片,是整个系统核心部分,主要负责控制LED 灯的亮灭变化的速度以及变化效果。
心形花样LED流水灯(带程序)
心形花样LED 流水灯(带程序)1000146073713使用89C52做的,原理图如下:总共有32个LED灯,4个I/O全部用上了。
我在这里不加有LED保护电阻,用200的也可以晶振用12M的或11.0592M也行,C1,C2用30PF。
PCB图如下:作品效果录像:/programs/view/z0bjKg_3Cd4/程序是用C语言写的;如下:#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭7~0/***********************************************************/void delay(uint t); //延时void zg(uint t,uchar a);//两边逐个亮void qs(uint t,uchar a);//全部闪烁void zgxh(uint t,uchar a); // 逆时针逐个点亮//void zgxh1(uint t,uchar a); // 顺时针逐个点亮void djs(uint t,uchar a); //对角闪void lbzgm(uint t,uchar a);//两边逐个灭//void sszgm(uint t,uchar a); // 顺时针逐个灭void nszgm(uint t,uchar a); // 逆时针逐个灭void sztl(uint t,uchar a);//顺时逐个同步亮void nztl(uint t,uchar a);//逆时逐个同步亮void sztm(uint t,uchar a);//顺时逐个同步灭void nztm(uint t,uchar a);//逆时逐个同步灭void hwzjl(uint t,uchar a); //横往中间亮void hwzjm(uint t,uchar a); //横往中间灭//void swzjl(uint t,uchar a); //竖往中间亮//void swzjm(uint t,uchar a); //竖往中间灭void nzdl(uint t,uchar a); //逆时逐段亮void nzdgl(uint t,uchar a); //逆时逐段一个点亮void jgs(uint t,uchar a); //间隔闪/**********************************************************/void zg(uint t,uchar a)//两边逐个亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;P0=0x7f;delay(t);for(i=0;i<7;i++){P0=table1[i+1];P2=table1[i];delay(t);}P2=0x00;P1=0xfe;delay(t);for(i=0;i<7;i++){P1=table[i+1];P3=table1[i];delay(t);}P3=0x00;delay(t);}}void qs(uint t,uchar a) //全部闪烁{uchar j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;delay(t);P0=P1=P2=P3=0x00;delay(t);}}void zgxh(uint t,uchar a) // 逆时针逐个点亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P0=table1[i];delay(t);}for(i=0;i<8;i++){P1=table[i];delay(t);for(i=0;i<8;i++){P3=table[i];delay(t);}for(i=0;i<8;i++){P2=table[i];delay(t);}}}void nszgm(uint t,uchar a) // 逆时针逐个灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for (i=0;i<8;i++){P0=table3[i];delay(t);}for (i=0;i<8;i++){P1=table2[i];delay(t);}for (i=0;i<8;i++){P3=table2[i];delay(t);}for (i=0;i<8;i++){P2=table2[i];delay(t);}}}/*void zgxh1(uint t,uchar a) // 顺时针逐个点亮{for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P2=table1[i];delay(t);}for(i=0;i<8;i++){P3=table1[i];delay(t);}for(i=0;i<8;i++){P1=table1[i];delay(t);}for(i=0;i<8;i++){P0=table[i];delay(t);}}}*//*void sszgm(uint t,uchar a) // 顺时针逐个灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for (i=0;i<8;i++){P2=table3[i];delay(t);}for (i=0;i<8;i++){P3=table3[i];delay(t);}for (i=0;i<8;i++){P1=table3[i];delay(t);}for (i=0;i<8;i++){P0=table2[i];delay(t);}}}*/void djs(uint t,uchar a) //对角闪{uchar j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}}void lbzgm(uint t,uchar a)//两边逐个灭{uchar i,j;for (j=0;j<a;j++){P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}}void sztl(uint t,uchar a)//顺时逐个同步亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}void nztl(uint t,uchar a)//逆时逐个同步亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}void sztm(uint t,uchar a)//顺时逐个同步灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}}void nztm(uint t,uchar a)//逆时逐个同步灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}void hwzjl(uint t,uchar a) //横往中间亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}void hwzjm(uint t,uchar a) //横往中间灭{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}/*void swzjl(uint t,uchar a) //竖往中间亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table[i];P3=table1[i];delay(t);}}}void swzjm(uint t,uchar a) //竖往中间灭{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table2[i];P3=table3[i];delay(t);}}}*/void nzdl(uint t,uchar a) //逆时逐段亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}void nzdgl(uint t,uchar a) //逆时逐段一个点亮{uchar i,j,k,l;for (j=0;j<a;j++){k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}void jgs(uint t,uchar a) //间隔闪{uchar j;for (j=0;j<a;j++){P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}}void main(){uchar i;while(1){zg(100,1); //两边逐个亮lbzgm(100,1); //两边逐个灭jgs(300,10);djs(100,20); //对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20); //对角闪for(i=0;i<3;i++){zg(100,1); //两边逐个亮lbzgm(100,1); //两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1); //顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1); //顺时逐个同步灭}djs(300,10); //对角闪nzdgl(300,10); //逆时逐段一个点亮jgs(300,10); //间隔闪for(i=0;i<3;i++){nszgm(100,1);}/*for(i=0;i<5;i++){zgxh1(100,1);sszgm(100,1);}*/nzdl(200,3); //逆时逐段亮jgs(50,100); //间隔闪/*///////////////////////////////////////////////////// P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P0=table1[i];delay(200);}for (i=0;i<8;i++){P1=table[i];delay(200);}for(i=0;i<3;i++){P0=P1=0x00;delay(200);P0=P1=0xff;delay(200);}for (i=0;i<8;i++){P2=table1[i];delay(200);}for (i=0;i<8;i++){P3=table1[i];delay(200);}for(i=0;i<3;i++)P2=P3=0x00;delay(200);P2=P3=0xff;delay(200);}*///////////////////////////////////////////////////nzdgl(50,40); //逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}// djs(50,100); //对角闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1); //横往中间亮hwzjm(200,1); //横往中间灭}djs(300,10); //对角闪/* for(i=0;i<10;i++){swzjl(200,1); //竖往中间亮swzjm(200,1); //竖往中间灭}*/for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20); //对角闪zg(300,1);lbzgm(300,1);/*for(i=0;i<5;i++)zgxh1(100,1);sszgm(100,1);}*/for(i=0;i<5;i++){sztl(200,1); //顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1); //顺时逐个同步灭}djs(500,20); //对角闪djs(100,30); //对角闪djs(50,50); //对角闪// djs(10,100); //对角闪delay(1000);}}void delay(uint t){uint x,y;for (x=t;x>0;x--){for (y=120;y>0;y--);}}因为89C52的容量有限,所以还有几个方式注释掉了。
51单片机LED流水灯拖尾效果
高级流水灯--水滴效果(渐变带拖尾效果)实现和讲解简介学习嵌入式第一个例子通常都是控制一个LED亮灭,然后是花样繁多的流水灯,但不管灯的花样如何变化,单个LED的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制LED的亮度。
1 什么是PWM脉冲宽度调制(Pulse Width Modulation,简称PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。
在本章的应用中可以认为PWM就是一种方波。
比如图1:/bbs_upload782111/files_48/ourdev_701979FVHE6E.png(原文件名:120611_0.png) 图1 方波是周期为10ms,占空比为60%的PWM。
占空比:高电平在一个周期之内所占的时间比率。
2 硬件设计在例说51单片机的第三章,我们讲过如何控制开发板上LED的亮灭。
首先译码器输出端LEDS6为低,T10导通,给8个LED供电,然后通过缓冲器8个输出端BD0~BD7的控制LED的亮灭(低亮高灭)。
/bbs_upload782111/files_48/ourdev_701980ZDAXQ9.png(原文件名:120611_1.png) 图2 LED硬件连接如果BD口输出高低不断变化,则LED会闪烁;如果这种高低电平变化非常快,由于人的视觉暂留现象,LED就会出现不同的亮度。
3 软件设计3.1 PWM能否控制亮度下面我们就用实践验证PWM是否能够控制LED的亮度,测试代码如下:程序清单L1:验证PWM能否控制LED的亮度1 #include <reg52.h>2 #include "my_type.h"3 #include "hw_config.h"456 void main(void)7 {8 u8 i = 0;910 //使能独立LED的供电,即LEDS6输出低电平11 LEDEN = 0;12 ADDR0 = 0;13 ADDR1 = 1;14 ADDR2 = 1;15 ADDR3 = 1;17 //第一个LED亮18 P0 = 0xFE;1920 while(1)21 {22 for(i=0; i<250; i++)23 {24 if(i<10)25 {26 P0 &= 0xFD; //第二个灯亮27 }28 else29 {30 P0 |= 0x02; //第二个灯灭31 }32 }33 }34 }L1(22-32):这段代码实现P0.1输出占空比为96%的方波,而P0.0恒为低。
心形流水灯设计报告
山东英才学院51单片机课程设计心形流水灯学院信息工程学院专业班级本科电子信息工程学生姓名指导教师2019年04月02日设计要求:o设计一个用单片机控制的心形流水灯系统;o LED灯数量为32个;o可以实现循环点亮、依次熄灭的基本功能;o可以实现对角闪亮、间隔闪亮、顺时针闪亮、逆时针闪亮等多种功能(也可自行增加功能)。
学生需要完成的任务:完成心形流水灯电路设计,利用Keil软件编写程序,Proteus软件进行电路功能仿真,并将仿真结果采用录屏形式生成视频,视频类型建议用.mp4格式,大小不超过200M。
目录目录 (3)一、总体方案设计 ................................................................................................................. - 4 -1、单片机的选择 ........................................................................................................... - 4 -2、LED灯控制方式的比较与选择 ................................................................................ - 4 -3、硬件设计 ................................................................................................................... - 4 -二、电路原理图设计 ............................................................................................................. - 5 -1、时钟电路 ................................................................................................................... - 5 -2、复位电路 ................................................................................................................... - 5 -3、显示电路 ................................................................................................................... - 6 -4、电源电路 ................................................................................................................... - 7 -三、程序设计 ......................................................................................................................... - 9 -1、Keil 软件介绍 ........................................................................................................... - 9 -2、程序编写设计 ........................................................................................................... - 9 -3、程序调试 .................................................................................................................- 10 -4、电路功能仿真 .........................................................................................................- 11 - 附件: ...................................................................................................................................- 13 -1、程序代码: .............................................................................................................- 13 -2、小组成员任务分配表 .............................................................................................- 19 -时钟电路复位电路图1-3.1电 源一、总体方案设计1、单片机的选择单片机作为该电路的主要控制器芯片,是整个系统核心部分,主要负责控制LED 灯的亮灭变化的速度以及变化效果。
单片机流水灯实验电路图+仿真
八、实验中的问题
1.程序编译问题
初始编程时出现语法错误,后修正
2、循环显示出现问题,循环不能持续。修改程序延时,及数码移位程序片段。
2、在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可
五、C语言源程序
#include <REG51.H>
#define uint unsigned int
#define uchar unsigned char
uchar code DIS_SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
for(cnt = 0; cnt < 8; cnt++) {//点亮数码管0-7
P2 = 0;
P0 = DIS_SEG7[DISP[cnt]];
P2 = ~DIS_BIT[cnt];
delay1ms(1);
}
ttt = DISP[0];
DISP[0] = DISP[1];
DISP[1] = DISP[2];
单片机实验
项目____拉幕式数码显示_______
学号___1204180217_____
专业__能源工程及其自动化__
班级____02____________
姓名___邵鹏程_________
一、实验目的
1,对单片机进一步了解熟悉
2,掌握数码管显示技术及编程
3,巩固理论知识及
二、实验内容
用51单片机8位控制数码管,在数码管上显示“01234567”,并能循环显示。
三、实验原理图
四、程序设计方法
1、动态数码显示技术;如何进行动态扫描,由于一次只能让一个数码管显示,因此,要显示8位的数据,必须经过让数码管一个一个轮流显示才可以,同时每个数码管显式的时间大约在1ms到4ms之间,所以为了保证正确显示,必须每隔1ms,就得刷新一个数码管。而这刷新时间我们采用单片机的定时/计数器来控制,每定时1ms对数码管刷新一次。
基于单片机的心形流水灯毕业设计论文
基于单片机的心形流水灯毕业设计论文此文档为WORD版可编辑修改课程设计(论文)说明书题目:心形流水灯院(系):信息与通信学院专业:通信工程学生姓名:学号:指导教师:职称:X年X月X日摘要本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。
首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。
本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件.关键词:单片机;流水灯;C语言;AbstractThis paper Based on the single chip microcomputer and single chip microcomputer chipAT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。
primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software.Key words:micro-computer;light water ;C programming language目录引言 (1)1 设计方案 (2)1.1 总体设计目标 (2)1.2 总体设计组成框图 (2)2 相关运用与功能................................................................ 错误!未定义书签。
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灯的亮度,可以改变爱心流水灯的效果,使其更加柔和或明亮。
LED点阵心形流水灯单片机设计
河南理工大学开放实验室单片机设计报LED点阵心形流水灯礼品目录0 前言 (1)1系统组成与功能 (1)1.1 系统组成 (1)1.1.1 AT89C51单片机 (1)1.1.2 16乘16点阵 (2)1.2 系统功能 (3)2系统原理 (3)2.1系统仿真图 (3)2.2 实物照片 (4)3程序流程图 (6)4程序代码 (7)5结论 (14)参考文献 (14)基于单片机控制心形流水灯跟点阵0 前言随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。
比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。
本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。
这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。
由于时间紧迫,做的有些仓促,望原谅。
1系统组成与功能1.1 系统组成本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。
1.1.1 AT89C51单片机AT89S51具有如下特点:40个引脚,8kBytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可图1-1 A T89C51引脚图为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
引脚图如图1-1所示。
管脚说明1RST:复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
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单片机LED流水灯拖尾效果
高级流水灯--水滴效果(渐变带拖尾效果)实现和讲解简介学习嵌入式第一个例子通常都是控制一个LED亮灭,然后是花样繁多的流水灯,但不管灯的花样如何变化,单个LED的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制LED的亮度。
1 什么是PWM脉冲宽度调制(Pulse Width Modulation,简称PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。
在本章的应用中可以认为PWM就是一种方波。
比如图1:/bbs_upload782111/files_48/ourdev_701979FVHE6E.png(原文件名:120611_0.png) 图1 方波是周期为10ms,占空比为60%的PWM。
占空比:高电平在一个周期之内所占的时间比率。
2 硬件设计在例说51单片机的第三章,我们讲过如何控制开发板上LED的亮灭。
首先译码器输出端LEDS6为低,T10导通,给8个LED供电,然后通过缓冲器8个输出端BD0~BD7的控制LED的亮灭(低亮高灭)。
/bbs_upload782111/files_48/ourdev_701980ZDAXQ9.png(原文件名:120611_1.png) 图2 LED硬件连接如果BD口输出高低不断变化,则LED会闪烁;如果这种高低电平变化非常快,由于人的视觉暂留现象,LED就会出现不同的亮度。
3 软件设计3.1 PWM能否控制亮度下面我们就用实践验证PWM是否能够控制LED的亮度,测试代码如下:程序清单L1:验证PWM能否控制LED的亮度1 #include <reg52.h>2 #include "my_type.h"3 #include "hw_config.h"456 void main(void)7 {8 u8 i = 0;910 //使能独立LED的供电,即LEDS6输出低电平11 LEDEN = 0;12 ADDR0 = 0;13 ADDR1 = 1;14 ADDR2 = 1;15 ADDR3 = 1;17 //第一个LED亮18 P0 = 0xFE;1920 while(1)21 {22 for(i=0; i<250; i++)23 {24 if(i<10)25 {26 P0 &= 0xFD; //第二个灯亮27 }28 else29 {30 P0 |= 0x02; //第二个灯灭31 }32 }33 }34 }L1(22-32):这段代码实现P0.1输出占空比为96%的方波,而P0.0恒为低。