基于51单片机的键控花样流水灯
单片机 51 汇编 花样 流水灯—五种花样

**==================花样流水灯=============================**;*********************花样五变流水灯******************************##;##:R7,R6延时;R5延时控制R4,R3 控制循环次数##;##:*HUAYANG* 花样模块开始*BIAOZHI* 花样切换标志##;##:单片机STC89C51 LED花样流水灯五种变化连续汇编基础##;##: 编写:毛毛虫##;*****毛毛虫*************毛毛虫***********毛毛虫****************** ##;--------------------------------------低电位灯亮---------------------------------------------## ORG 0000HSJMP MAINORG 0030H;*****************************************************************##;##——————————————主程序开始—————————————##;##—————————————花样1————————————————##;##***************************************************************##MAIN:LCALL DELAYLCALL HUAYANGYI //调用花样一LCALL BIAOZHI //花样切换标志LCALL DELAYLCALL HUAYANGER //调用花样二LCALL BIAOZHI //花样切换标志LCALL DELAYLCALL HUAYANGSAN //调用花样三LCALL BIAOZHI //花样切换标志LCALL DELAYLCALL HUAYANGSI //调用花样四LCALL BIAOZHI //花样切换标志LCALL DELAYLCALL HUAYANGWU //调用花样五LCALL BIAOZHI //花样切换标志LCALL DELAYAJMP MAIN //跳转到MAIN主函数运行//***************************花样一*********************************HUAYANGYI:MOV A,#0FEH ;给累加器A赋值MOV R3,#05 ;给R3寄存器赋值DEL0:MOV R4,#07 ;给R4寄存器赋值DEL1:MOV P0,A ;累加器A值送至P0口,LED灯亮LCALL DELAY ;延时RL A ;累加器A向左移一位DJNZ R4,DEL1 ;实现L1~L8逐个亮一次即判断循环DJNZ R3,DEL0 ;实现L1~L8灯逐个亮一次,执行7次即判断循环LCALL DELAY ;延时LCALL DELAYMOV A,#0FEH ;累加器A赋值MOV R3,#05 ;寄存器R3 赋值DEL2:MOV R4,#07 ;寄存器R4 赋值DEL3:MOV P0,A ;累加器A传送至p0 口LCALL DELAY ;延时RR A ;累加器A 右移DJNZ R4,DEL3 ;判断循环,实现花样DJNZ R3,DEL2 ;判断循环,实现花样次数LCALL DELAYMOV A,#0FEH ;累加器A 赋值MOV R3,#07 ;寄存器R3 赋值DEL4: MOV R4,#07 ;寄存器R4 赋值DEL5: MOV P0,A ;累加器A 送至P0口LCALL DELAYRL A ;累加器A 左移一位DJNZ R4,DEL5 ;判断循环LCALL DELAYMOV R4,#07 ;赋值DEL6: MOV P0,A ;传送LCALL DELAYRR A ;右移DJNZ R4,DEL6 ;判断循环DJNZ R3,DEL4 ;判断循环LCALL DELAYRET;-----------------------------------------------------------------------------------------------------------##;##****************************花样2××××××××××××××××××××××××××××××××## ;————————————————————————————————————## HUAYANGER:MOV A,#01HMOV R3,#05HYE0:MOV R4,#07HYE1:MOV P0,ALCALL DELAYLCALL DELAYRL ADJNZ R4,HYE1DJNZ R3,HYE0LCALL DELAYMOV R3,#05HYE2:MOV R4,#07HYE3:MOV P0,ALCALL DELAYLCALL DELAYRR ADJNZ R4,HYE3DJNZ R3,HYE2LCALL DELAYMOV R3,#05HYE4:MOV R4,#07HYE5:MOV P0,ALCALL DELAYRLC ADJNZ R4,HYE5MOV R4,#07HYE6: MOV P0,ALCALL DELAYRRC ADJNZ R4,HYE6DJNZ R3,HYE4LCALL DELAYRET;------------------------------------------------------------------------------------------------------------##;##***************************花样3×××××××××××××××××××××××××××××××××## ;————————————————————————————————————## HUAYANGSAN:MOV A,#0FEHMOV R3,#07HYS0:MOV R4,#14HYS1:MOV P0,ALCALL DELAYLCALL DELAYRL ADJNZ R4,HYS1MOV A,#0FCHHYS2:MOV R4,#12HYS3:MOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYRL ADJNZ R4,HYS3MOV A,#0F8H HYS4:MOV R4,#10 HYS5:MOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYRL ADJNZ R4,HYS5MOV A,#0F0H HYS6:MOV R4,#08 HYS7:MOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYRL ADJNZ R4,HYS7MOV A,#0E0H HYS8:MOV R4,#06HYS9:MOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYRL ADJNZ R4,HYS9MOV A,#0C0H HYSA:MOV R4,#04HYSB:MOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYRL ADJNZ R4,HYSBMOV A,#80H HYSC:MOV R4,#02HYSD:MOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYRL ADJNZ R4,HYSDLCALL DELAYLCALL DELAYMOV P0,#00HLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYRET;----------------------------------------------------------------------------------------------------------##;##**************************花样4×××××××××××××××××××××××××××××××××## ;———————————————————————————————————##;===========================查表程序============================## HUAYANGSI:MOV DPTR,#TABLEHYSI0:MOV A,#00HHYSI1:MOVC A,@A+DPTRMOV P0,AMOV R4,#08HYSI2:LCALL DELAYDJNZ R4,HYSI2INC DPTRCJNE A,#0FFH,HYSI1RETTABLE: DB 0FEH,0FEH,0FEH,0FEH,0FEHDB 0FBH,0FBH,0FBH,0FBH,0FBHDB 0EFH,0EFH,0EFH,0EFH,0EFHDB 7EH,7EH,7EH,7EH,7EH,7EHDB 3CH,3CH,3CH,3CH,3CH,3CHDB 0AAH,0AAH,0AAH,0AAH,0AAHDB 55H,55H,55H,55H,55H,55HDB 0E7H,0E7H,0E7H,0E7H,0E7HDB 0C3H,0C3H,0C3H,0C3H,0C3HDB 81H,81H,81H,81H,81H,81HDB 00H,00H,00H,00H,00HDB 0FFH;-----------------------------------------------------------------------------------------------------##;##*************************花样5***********************************## ;——————————————————————————————————## HUAYANGWU:MOV A,#0E7HMOV R3,#03HYW0:MOV R4,#07HYW1:MOV P0,ALCALL DELAYMOV P0,#0FFHLCALL DELAYLCALL DELAYDJNZ R4,HYW1MOV R4,#07HYW2:MOV P0,#0A5HLCALL DELAYLCALL DELAYMOV P0,#0FFHLCALL DELAYLCALL DELAYLCALL DELAYDJNZ R4,HYW2MOV R4,#07HYW3:MOV P0,#24HLCALL DELAYLCALL DELAYLCALL DELAYMOV P0,#0FFHLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYDJNZ R4,HYW3MOV R4,#07HYW4:MOV P0,#00HLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYMOV P0,#0FFHLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYDJNZ R4,HYW4DJNZ R3,HYW0RET//***********************延时******************************************## DELAY: MOV R7,#50 ;延时子程序,延时小于0.1S D1: MOV R6,#125D2: NOPNOPNOPNOPNOPNOPDJNZ R6,D2DJNZ R7,D1RET//***********************花样衔接标志***********************************## BIAOZHI: MOV R4,#20 ;循环次数B1: MOV P0,#00HLCALL DELAYMOV P0,#0FFHLCALL DELAYDJNZ R4,B1 ;判断循环结束RETEND。
基于51单片机的流水灯及点阵设计报告

目录1. 引言 (2)1.1 背景 (2)1.2 设计目的 (2)1.3 参考资料 (2)2. 方案设计与比较论证2.1 设计任务 (2)2.2 设计要求 (2)2.3 方案的选择 (3)3. 总体设计 (3)3.1 开发与运行环境 (3)3.2 系统软件工作流程图 (3)3.3 硬件结构 (4)4. 系统功能测试与整体指标 (6)4.1 系统各模块功能的性能测试 (6)4.1.1 LED小灯模块 (6)4.1.2 点阵模块 (9)4.1.3 按键模块 (10)4.2 系统功能测试 (12)4.3 系统误差与问题分析 (12)5. 总结 (13)附录1;详细程序 (14)1. 引言1.1 背景随着电子技术的飞速发展,电子行业和社会上的各行各业息息相关,从家用电器到航空航天,无一不与电子产业的发展密切相关。
当我们看到大街小巷都是变幻多彩的霓虹灯时,心中是否会感到很新奇?当我们看到绚丽多彩的广告牌时,心中是否会觉得很神奇?这些神奇的流水灯只是电子产业的冰山一角,更多的知识需要我们在以后的道路上慢慢探索。
在单片机上实现流水灯很简单,只需要几条指令就可以完成,大部分学生都可以完成任务。
于是我们就思考一个新的问题,能不能实现一个亮度渐变的、按规律移动的超酷流水灯?这就是本次设计的背景及意义。
1.2 设计目的本次基于51单片机的流水灯设计主要是为了让我们增进对80C51单片机电路的感性认识,加深对理论方面的理解。
了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。
虽然本次设计较为简单,但是涵盖的内容较为丰富,运用了单片机的动态扫描、定时器、中断,用for循环来实现彗星灯的效果,PWM波控制LED的亮灭程度,独立按键的应用等等,另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。
1.3 参考资料【1】单片机原理及应用·马永杰主编·清华大学出版社 2011.8【2】51单片机C语言教程·郭天祥主编·电子工业出版社 2009.12【3】模拟电子技术基础·康华光主编·高等教育出版社 2006.012. 方案设计与比较论证2.1 设计任务(1)基于51单片机实现一个亮度渐变的、按规律移动的超酷流水灯;(2)基于51单片机实现在点阵上动态显示“心”型和依次显示“西北师大”;(3)通过独立按键实现流水灯和点阵显示的切换。
《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图。
3.掌握单片机C语言软件开发以及试验箱使用。
二、实验内容和原理实验内容:1.绘制程序流程图并编写C语言程序2.在实验箱中进行测试,最后提交实验报告三、主要仪器设备Keil4软件、C51单片机实验箱。
四、操作方法与实验步骤4.1 题目要求使用单片机实验箱实现流水灯功能。
4.2 系统设计思路主程序中实现流水灯功能,时间单位采用500ms信号,作为实现流水灯的发光二极管和单片机的P1相连。
4.2 C程序编制(包含详细的文字和程序流程图)#include<intrins.h>#include<reg52.h>#define uchar unsiged char#define uint unsigned intvoid mDelay(uint Delay){int i;for(;Delay>0;Delay--)for(i=0;i<110;i++);}void main(){unsigned char a,i;While(1){a=0x01;for(i=0;i<8;i++){a=-crol-(a,1)P2=amDelay(500);}}4.3 测试分析(包含文字和图像叙述)在KeilC51软件软件中编写好程序并调试好后,连接单片机实验箱,实验结果如下:实验箱上连接的八个灯,每个灯间隔500ms的时间一个接一个的循环闪烁。
五、讨论和心得(不少于100字)通过此次实验,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,试验过程还是比较繁琐,但是还是完成了这次试验,使我对于理解单片机的基本原理更加深刻,将所学知识运用到实践中,在实践中发现问题,强化理论知识。
课程名称:单片机原理及应用实验项目名称(二):定时计数器的应用—按钮控制LED灯四、实验目的和要求1.掌握单片机基本资源使用。
基于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 研究背景及意义现如今,随着集成化芯片的飞速发展,分立元件或数字逻辑电路正逐步被集成电路所取代,而单片机作为一种集成电路,其价格低廉,且可靠性强、控制简单但控制方法多样。
基于C51单片机4按键4种花样流水灯设计

}
if(k4==0){
delay(10);
if(k4==0){
flag1=0;
flag2=0;
flag3=0;
flag4=1;
}
}
}
/**************主程序************************/
void main() {
while(1)
{keyscan();
if(flag1==1){
void delay(uint x)
{
uint i;
while(x--)
for(i=50;i>0;i--);
}
/******************判断按键***********************/
void keyscan()
{ if(k1==0)
{delay(10);
if(k1==0)
{
flag2=0;
基于c51单片机4按键4种花样流水灯设计单片机流水灯电路图单片机流水灯程序单片机流水灯按键控制流水灯单片机按键消抖程序单片机按键程序单片机按键控制led单片机按键电路单片机独立按键程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/************************流水灯花样设计********************/
uchar table1[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfc,0xff};/***从右到左逐一点亮反向灭之**/
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单片机爱心流水灯的原理及制作过程。
通过硬件连接和软件编程,我们可以制作出一个具有特殊效果的流水灯。
基于51单片机的流水灯实验

可以调用C51库函数实现循环左移和循环右移(具 体可以见C:\keil\C51\HLP\C51lib.chm): 1、必须先包含intrins.h 2、i=_crol_(i,1);/*将i循环左移1位*/ 3、i=_cror_(i,1);/*将i循环右移1位*/ 用循环左移编写第三个流水灯程序。[例程]
认识一个For 循环语句
• For (表达式1;表达式2;表达式3) { 语句(内部可为空)} 执行过程: 1.求解一次表达式1. 2.求解表达式2,若其值为真(非0 即为真),则执行 for中语句。然后执行第3步。否则结束for 语句,直接 跳出,不再执行第3步。 3.求解表达式3. 4.跳到第2步重复执行。
了解一下实验板初始化
• 初始化就是把变量赋为默认值,把控件设为默认
状态,把没准备的准备好。 但是如果是整个系统初 始化那就不一样了。在汇编语言中,为变量分配空 间时,初始化过的变量的初值位于可执行文件代码 段数据后,会占用一定空间,不必要的初始化会造 成磁盘空间的浪费。在C语言等高级语言中,为每 一个变量赋初值被视为良好的编程习惯,有助于减 少出现Bugs的可能性。因此,是否对不必要的变量 初始化依情况而定。
程序就是人的思想的反映,编程最重要的就是你的编程思路,有什么样的思 路就会编出什么样的程序。 先看上一讲的点一个发光管程序: 1、思路分析。流程图是整理我们思路的好工具,同时也能保证若干年以后 你还能轻易看懂自己编写的程序。 2、程序讲解(这个程序是利用了位输出操作) 。 宏定义 函数和函数调用 如何熄灭发光管 循环结构,while语句详解、关系运算和逻辑值 如何改变流水灯流动的速度
基于51单片机的流水灯系统设计

1. 设计思路 (2)1.1电源模块 (3)1.2显示模块 (3)1.3花样灯模块 (3)2 单片机花样灯与数码显示系统总体设计........................................................... 错误!未定义书签。
2.1三个模块的阐述2.2单片机花样灯与数码显示控制系统的通行方案设计................................. 错误!未定义书签。
2.3单片机花样灯与数码显示控制系统的功能要求........................................ 错误!未定义书签。
2.4单片机花样灯与数码显示控制系统的基本构成及原理............................ 错误!未定义书签。
3花样灯与数码显示系统的硬件设计 (7)3.1AT89C51单片机简介 (8)3.1.1 AT89C51单片机的主要特性 (8)3.1.2 主要引脚功能 (10)3.2系统硬件总电路构成及原理 (11)3.2.1系统硬件电路构成 (12)3.2.2系统工作原理 (12)4系统软件程序的设计 (15)4.1程序主体设计流程 (15)4.2理论基础知识 (16)4.2.1数组及while、switch等语句................................................................. 错误!未定义书签。
4.2.2软件延时原理 ......................................................................................... 错误!未定义书签。
4.3程序模块设计 ................................................................................................ 错误!未定义书签。
简单的51单片机花样流水灯C语言源代码

简单的51单片机花样流水灯C语言源代码#include<reg51.h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void Delayms(uint x){ //定义延时函数uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void main(){uint i;uchar temp;while(1){temp=0x01; //8个流水灯逐个闪动for(i=0;i<8;i++){P0=~temp;Delayms(50);temp<<=1;}temp=0x80; //8个流水灯反向逐个闪动for(i=0;i<8;i++){P0=~temp;Delayms(50);temp>>=1;}temp=0xfe; //8个流水灯依次全部点亮for(i=0;i<8;i++){P0=temp;Delayms(50);temp<<=1;}temp=0x7f; //8个流水灯依次反向全部点亮for(i=0;i<8;i++){P1=temp;Delayms(50);temp>>=1;}}}//此程序的作者向往未来#include<reg52.h>#include<intrins.h>#define uint unsigned int #define uchar unsigned char uchar z=50,e=0x00,f=0xff; uchar code table1[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};uchar code table2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; uchar code table3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};uchar code table4[]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff}; uchar code table5[]={0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff};uchar code table6[]={0x7e,0x3c,0x18,0x00, 0x18,0x3c,0x7e,0xff}; void delay(uchar); void lsd1();void lsd2();void lsd3();void lsd4();void lsd5();void lsd6();void lsd7();void lsd8();void lsd9();void lsd10();void lsd11();void lsd12();main(){while(1){lsd1();lsd2();lsd3();lsd4();lsd5();lsd6();lsd7();lsd8();lsd9();lsd10();lsd11();lsd12();}}void delay(uchar x) //延时函数{uint i,j;for(i=x;i>0;i--)for(j=250;j>0;j--);}void lsd1() //lsd1 单个流水灯双程模式1 {uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i++) //仅单个灯亮从上往下流{a=_crol_(a,1);P0=a;delay(z);}P0=0xff;a=0xfe;P2=a;delay(z);for(j=0;j<7;j++){a=_crol_(a,1);P2=a;delay(z);}P2=0xff;a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=_crol_(a,1);P3=a;delay(z);}P3=0xff;a=0xfe;P1=a;delay(z);for(l=0;l<7;l++){a=_crol_(a,1);P1=a;delay(z);}a=0xbf;P1=a;delay(z);for(l1=0;l1<6;l1++) //l1==6 仅单个灯亮从下往上流{a=_cror_(a,1);P1=a;delay(z);}P1=0xff;a=0x7f;P3=a;delay(z);for(k1=0;k1<7;k1++) {a=_cror_(a,1);P3=a;delay(z);}P3=0xff;a=0x7f;P2=a;delay(z);for(j1=0;j1<7;j1++) {a=_cror_(a,1);P2=a;delay(z);}P2=0xff;a=0x7f;P0=a;delay(z);for(i1=0;i1<7;i1++) {a=_cror_(a,1);P0=a;delay(z);P0=0xff;}void lsd2() //lsd2 两个灯流水双程模式1 {uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i++){a=_crol_(a,1);P0=a;delay(z);}P0=0x7f;P2=0xfe;delay(z);P0=0xff;a=0xfc;P2=a;delay(z);for(j=0;j<6;j++){a=_crol_(a,1);P2=a;delay(z);P2=0x7f;P3=0xfe;delay(z);P2=0xff;a=0xfc;P3=a;delay(z);for(k=0;k<6;k++) {a=_crol_(a,1);P3=a;delay(z);}P3=0x7f;P1=0xfe;delay(z);P3=0xff;a=0xfc;P1=a;delay(z);for(l=0;l<6;l++) {a=_crol_(a,1);P1=a;delay(z);}P1=0x7f;delay(z);P1=0xff;delay(z);a=0x7f;P1=a;delay(z);a=a>>1;P1=a;delay(z);for(l1=0;l1<6;l1++) {a=_cror_(a,1);P1=a;delay(z);}P1=0xfe;P3=0x7f;delay(z);P1=0xff;a=0x3f;P3=a;delay(z);for(k1=0;k1<6;k1++) {a=_cror_(a,1);P3=a;delay(z);}P3=0xfe;P2=0x7f;delay(z);P3=0xff;P2=a;delay(z);for(j1=0;j1<6;j1++){a=_cror_(a,1);P2=a;delay(z);}P2=0xfe;P0=0x7f;delay(z);P2=0xff;a=0x3f;P0=a;delay(z);for(i1=0;i1<6;i1++){a=_cror_(a,1);P0=a;delay(z);}P0=0xfe;delay(z);P0=0xff;delay(z);}void lsd3() //lsd3 两个灯流水双程模式2 {uchar a,i,j,k,l,l1,k1,j1,i1;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i++) //_crol_与_cror_混合使用{a=_crol_(a,1);P0=a;delay(z);}P0=0x7f;a=0x7f;P2=a;delay(z);P0=f;a=a>>1;P2=a;delay(z);for(j=0;j<6;j++){a=_cror_(a,1);P2=a;delay(z);}P2=0xfe;a=0xfe;P3=a;delay(z);a=a<<1;P3=a;delay(z);for(k=0;k<6;k++) {a=_crol_(a,1);P3=a;delay(z);}P3=0x7f;a=0x7f;P1=a;delay(z);P3=f;a=a>>1;P1=a;delay(z);for(l=0;l<6;l++) {a=_cror_(a,1);P1=a;delay(z);}P1=0xfe;delay(z);P1=f;delay(z);a=0xfe;P1=a;a=a<<1;P1=a;delay(z);for(l1=0;l1<6;l1++) //l1==6 {a=_crol_(a,1);P1=a;delay(z);}P1=0x7f;a=0x7f;P3=a;delay(z);P1=f;a=a>>1;P3=a;for(k1=0;k1<6;k1++){a=_cror_(a,1);P3=a;delay(z);}P3=0xfe;a=0xfe;P2=a;delay(z);P3=f;a=a<<1;P2=a;for(j1=0;j1<6;j1++) {a=_crol_(a,1);P2=a;delay(z);}P2=0x7f;a=0x7f;P0=a;delay(z);P2=f;a=a>>1;P0=a;delay(z);for(i1=0;i1<6;i1++) {a=_cror_(a,1);P0=a;delay(z);}P0=0xfe;delay(z);P0=f;delay(z);}void lsd4() //lsd4{uchar a,i,j,k,l,l1,k1,j1,i1; a=0xfe;delay(z);for(i=0;i<7;i++){a=a<<1; //单个灯依次点亮所有灯,从上往下P0=a;delay(z);}a=0xfe;P2=a;delay(z);for(j=0;j<7;j++){a=a<<1;P2=a;delay(z);}a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=a<<1;P3=a;delay(z);}a=0xfe;P1=a;delafor(l=0;l<7;l++){a=a<<1;P1=a;delay(z);}for(l1=0;l1<8;l1++) //l1==8{P1=table1[l1]; //单个灯依次熄灭所有灯,从下往上delay(z);}for(k1=0;k1<8;k1++){P3=table1[k1];delay(z);}for(j1=0;j1<8;j1++){P2=table1[j1];delay(z);}for(i1=0;i1<8;i1++){P0=table1[i1];delay(z);}}void lsd5() //lsd5{uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i++){a=a<<1;P0=a;delay(z);}for(j=0;j<8;j++) //单个灯依次点亮所有灯,从下往上{P2=table2[j];delay(z);}a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=a<<1;P3=a;delay(z);}for(l=0;l<8;l++){P1=table2[l];delay(z);}for(l1=0;l1<8;l1++) //单个灯依次熄灭所有灯,从上往下{P1=table3[l1];delay(z);}for(k1=0;k1<8;k1++){P3=table1[k1];delay(z);}for(j1=0;j1<8;j1++) //单个灯依次熄灭所有灯,从上往下{P2=table3[j1];delay(z);}for(i1=0;i1<8;i1++){P0=table1[i1];delay(z);}}void lsd6() //每组为单位同亮同灭从左向右再向左{P0=0x00;delay(z);P0=0xff;P2=0x00;delay(z);P2=0xff;P3=0x00;delay(z);P3=0xff;P1=0x00;delay(z);P3=0x00;P1=0xff;delay(z);P2=0x00;P3=0xff;delay(z);P0=0x00;P2=0xff;delay(z);P0=0xff;delay(z);}void lsd7() //lsd7 全亮全灭{uchar i;for(i=0;i<2;i++){P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay(z);P0=0xff;P1=0xff;P2=0xff;P3=0xff;delay(z);}}void lsd8() //每组仅两个灯,从中间往两边再往中间{uchar i;for(i=0;i<8;i++){P0=table4[i];P1=table4[i];P2=table4[i];P3=table4[i];delay(z);}}void lsd9() //每组两个灯引亮所有灯再引灭,从中间带两边再到中间{uchar i;for(i=0;i<8;i++){P0=table5[i];P1=table5[i];P2=table5[i];P3=table5[i];delay(z);}}void lsd10(){uchar a,i,j;a=0xfe;P0=a;P1=a;P2=a;P3=a;delay(z);for(i=0;i<7;i++) //仅单个灯亮从上往下流{a=_crol_(a,1);P0=a;P1=a;P2=a;P3=a;delay(z);}for(j=0;j<7;j++) //仅单个灯亮从上往下流{a=_cror_(a,1);P0=a;P1=a;P2=a;P3=a;delay(z);}P0=f;P1=f;P2=f;P3=f;delay(z);void lsd11() {uchar a,i,j;a=0xfe;P0=a;P1=a;P2=a;P3=a;delay(z);for(i=0;i<7;i++) {a=a<<1;P0=a;P1=a;P2=a;P3=a;delay(z);}for(j=0;j<8;j++) {P0=table1[j];P1=table1[j];P2=table1[j];P3=table1[j]; delay(z);}}void lsd12()uchar a,i,j,k,l;a=0xfe;P0=a;P1=a;delay(z);for(i=0;i<7;i++) {a=a<<1;P0=a;P1=a;delay(z);}a=0x7f;P2=a;P3=a;delay(z);for(j=0;j<7;j++) {a=a>>1;P2=a;P3=a;delay(z);}for(k=0;k<8;k++){P2=table3[k]; P3=table3[k]; delay(z);for(l=0;l<8;l++) {P0=table1[l];P1=table1[l]; delay(z);}while(1);}。
基于51单片机的流水灯的设计与实现

基于51单片机的流水灯的设计与实现摘要:本文基于STC89C52单片机应用为核心,从系统的硬件电路入手,将8位发光二极管通过共阴极接法接到单片机的P0端口,并通过控制P0口的电平高低以达到控制发光二极管,从而实现循环流水灯的设计。
【关键词】发光二极管单片机流水灯在我们的日常生活中,随处可见各种美丽的霓虹灯,这些美丽的霓虹灯将我们的城市装扮的绚丽多彩,霓虹灯广告牌也已经成为各大商家争相竞争的手段。
其实这些霓虹灯是由发光二极管组合而成的,而这些发光二极管的组合多数也是基于单片机设计和制作出来的。
而这些霓虹灯大多电路结构复杂,不容易实现。
我们就以制作一台简易循环流水灯为例来介绍一下它基于51单片机的设计方案。
1 功能需求约定本次设计主要实现8个发光管间隔200ms由上至下,再由下至上,一个轮回后再重复上个轮回,即用单片机来设计循环流水灯,就是实现这十五种状态的循环切换控制。
2 开发方案的设计本文分别从硬件设计方案和软件设计方案两个方面进行分析。
2.1 硬件设计方案根据循环流水灯的十五种运行状态,可以看出,每盏灯的每种状态我们可以做同样的处理,因此在电路设计中,可以在每种状态下,对单片机的对应引脚做同样的输出,这样我们就可以实现基于51单片机最小系统电路(如图1a所示)流水灯模型的硬件设计了,值得说明的是我们这里采用的是共阴极连接方式(如图1b所示),所谓共阴极连接方式即发光二极管的阴极连接在一起形成一个公共端。
如图1b中的D0-D7八个发光二极管就为共阴极连接方式。
在这里每个发光二极管上还串联了一个限流电阻,那此限流电阻的阻值又该如何选取呢?由于单片机上提供的电压一般为+5V,发光二极管的导通压降一般为1.7V左右,需要的电流一般为3mA,所以限流电阻阻值的计算公式为2.2 软件设计方案状态控制码的确定所谓状态控制码,就是要使流水灯工作在某一种状态,我们应该向单片机的控制口所输出的编码,由前面的硬件设计可知,在某一个状态下,当P0口的某一引脚输出为1时,对应的发光二极管点亮,当P0口某一引脚输出为0时,对应发光二极管熄灭,因此我们前方十五种状态所对应的P0口控制码可以依次写出,以状态1D0灯亮为例,我们可以得到00000001的一个状态码,也就是01(十六进制),因此我们只需要为01通过P0口输出就可以实现状态1的显示了。
基于51单片机的流水灯设计报告

自动化技术综合实训报告实训题目:基于单片机的流水灯设计院系:信自学院自动化系专业:自动化班级:自动化XXX班姓名:XXX学号:XXX指导教师:XXX实训地点:XXX开课时间:.1 - 2013.7.12目录1实训目的...............................................................................................................................- 3 -2实训要求...............................................................................................................................- 3 -3绪论.......................................................................................................................................- 4 -引言.......................................................................................................................- 4 -发展状况...............................................................................................................- 4 -数字单片机的技术发展...............................................................................- 5 -内部结构的进步................................................................................- 5 -功耗、封装及电源电压的进步........................................................- 6 -工艺上的进步....................................................................................- 6 -单片机应用的可靠性技术发展...................................................................- 7 -EFT(Ellectrical Fast Transient)技术 ...................................- 7 -低噪声布线技术及驱动技术............................................................- 8 -采用低频时钟....................................................................................- 8 -4基于单片机的流水灯设计功能描述及设计背景...............................................................- 9 -功能描述...............................................................................................................- 9 -设计背景...............................................................................................................- 9 -5基于单片机的流水灯设计系统总体(方案)设计........................................................ - 10 -设计思路............................................................................................................ - 10 -6基于单片机的流水灯设计基本原理分析及设计说明.................................................... - 10 -系统硬件电路图的绘制.................................................................................... - 10 -硬件详细设计:................................................................................................ - 12 -复位电路部分............................................................................................ - 12 -晶振部分.................................................................................................... - 13 -LED显示部分............................................................................................. - 13 -程序流程图:.................................................................................................... - 14 -7软硬件调试、运行结果及分析........................................................................................ - 15 -软件编程............................................................................................................ - 15 -位控法........................................................................................................ - 15 -循环移位法................................................................................................ - 16 -查表法.........................................................................................................- 17 -汇编语法要求、规则................................................................................ - 18 -Proteus仿真......................................................................................................- 20 -8总结与体会........................................................................................................................ - 28 -9谢词.................................................................................................................................... - 29 -10参考文献.................................................................................................................... - 30 -11附录............................................................................................................................ - 31 -电路原理总图.................................................................................................... - 31 -PCB印刷版总图................................................................................................. - 32 -单片机实物总图................................................................................................ - 33 -元器件清单........................................................................................................ - 34 -程序源代码清单................................................................................................ - 35 -基于单片机的流水灯设计杜春香1实训目的1、训练学生综合运用己学课程的基本知识,掌握单片机应用系统的开发设计方法和步骤。
基于51单片机心形流水灯C语言源程序

#include<reg51.h>unsigned int x,y;void delayms(unsigned int z) //延时{unsigned int i,j;for(i=z;i>0;i--)for(j=150;j>0;j--);}void On_all() //开启所有灯{P0=0x00; P1=0x00; P2=0x00; P3=0x00; }void Off_all()//关闭所有灯{P0=0xff; P1=0xff; P2=0xff; P3=0xff;}void ls()//正向流水灯{P0=0x00; delayms(400);P2=0x00; delayms(400);P3=0x00; delayms(400);P1=0x00; delayms(400);P0=0x01; delayms(50);P0=0x02; delayms(50);P0=0x04; delayms(50);P0=0x08; delayms(50);P0=0x10; delayms(50);P0=0x20; delayms(50);P0=0x40; delayms(50);P0=0x80; delayms(50);P0=0x00;P2=0x01; delayms(50); P2=0x02; delayms(50); P2=0x04; delayms(50); P2=0x08; delayms(50); P2=0x10; delayms(50); P2=0x20; delayms(50); P2=0x40; delayms(50); P2=0x80; delayms(50); P2=0x00;P3=0x80; delayms(50); P3=0x40; delayms(50); P3=0x20; delayms(50); P3=0x10; delayms(50); P3=0x08; delayms(50);P3=0x02; delayms(50); P3=0x01; delayms(50); P3=0x00;P1=0x80; delayms(50); P1=0x40; delayms(50); P1=0x20; delayms(50); P1=0x10; delayms(50); P1=0x08; delayms(50); P1=0x04; delayms(50); P1=0x02; delayms(50); P1=0x01; delayms(50); P1=0x00;Off_all();P0=0xfe; delayms(50);P0=0xfb; delayms(50); P0=0xf7; delayms(50); P0=0xef; delayms(50); P0=0xdf; delayms(50); P0=0xbf; delayms(50); P0=0x7f; delayms(50); P0=0xff;P2=0xfe; delayms(50); P2=0xfd; delayms(50); P2=0xfb; delayms(50); P2=0xf7; delayms(50); P2=0xef; delayms(50); P2=0xdf; delayms(50); P2=0xbf; delayms(50);P2=0xff;P3=0x7f; delayms(50);P3=0xbf; delayms(50);P3=0xdf; delayms(50);P3=0xef; delayms(50);P3=0xf7; delayms(50);P3=0xfb; delayms(50);P3=0xfd; delayms(50);P3=0xfe; delayms(50);P3=0xff;P1=0x7f; delayms(50);P1=0xbf; delayms(50);P1=0xdf; delayms(50);P1=0xef; delayms(50);P1=0xfb; delayms(50); P1=0xfd; delayms(50); P1=0xfe; delayms(50); P1=0xff;P0=0xfe; delayms(50); P0=0xfc; delayms(50); P0=0xf8; delayms(50); P0=0xf0; delayms(50); P0=0xe0; delayms(50); P0=0xc0; delayms(50); P0=0x80; delayms(50); P0=0x00; delayms(50); P2=0xfe; delayms(50); P2=0xfc; delayms(50);P2=0xf0; delayms(50); P2=0xe0; delayms(50); P2=0xc0; delayms(50); P2=0x80; delayms(50); P2=0x00; delayms(50); P3=0x7f; delayms(50); P3=0x3f; delayms(50); P3=0x1f; delayms(50); P3=0x0f; delayms(50); P3=0x07; delayms(50); P3=0x03; delayms(50); P3=0x01; delayms(50); P3=0x00; delayms(50); P1=0x7f; delayms(50);P1=0x1f; delayms(50);P1=0x0f; delayms(50);P1=0x07; delayms(50);P1=0x03; delayms(50);P1=0x01; delayms(50);P1=0x00; delayms(50); }void fan_ls()//反向流水灯{Off_all(); delayms(300);On_all(); delayms(300);Off_all(); delayms(300);P1=0x00;delayms(400);P3=0x00;delayms(400);P0=0x00;delayms(400); P1=0x01;delayms(50); P1=0x02;delayms(50); P1=0x04;delayms(50); P1=0x08;delayms(50); P1=0x10;delayms(50); P1=0x20;delayms(50); P1=0x40;delayms(50); P1=0x80;delayms(50); P1=0x00;P3=0x01;delayms(50); P3=0x02;delayms(50); P3=0x04;delayms(50); P3=0x08;delayms(50);P3=0x20;delayms(50); P3=0x40;delayms(50); P3=0x80;delayms(50); P3=0x00;P2=0x80;delayms(50); P2=0x40;delayms(50); P2=0x20;delayms(50); P2=0x10;delayms(50); P2=0x08;delayms(50); P2=0x04;delayms(50); P2=0x02;delayms(50); P2=0x01;delayms(50); P2=0x00;P0=0x80;delayms(50);P0=0x20;delayms(50); P0=0x10;delayms(50); P0=0x08;delayms(50); P0=0x04;delayms(50); P0=0x02;delayms(50); P0=0x01;delayms(50); P0=0x00;Off_all();P1=0xfe; delayms(50); P1=0xfd; delayms(50); P1=0xfb; delayms(50); P1=0xf7; delayms(50); P1=0xef; delayms(50); P1=0xdf; delayms(50);P1=0x7f; delayms(50); P1=0xff;P3=0xfe; delayms(50); P3=0xfd; delayms(50); P3=0xfb; delayms(50); P3=0xf7; delayms(50); P3=0xef; delayms(50); P3=0xdf; delayms(50); P3=0xbf; delayms(50); P3=0x7f; delayms(50); P3=0xff;P2=0x7f; delayms(50); P2=0xbf; delayms(50); P2=0xdf; delayms(50);P2=0xf7; delayms(50); P2=0xfb; delayms(50); P2=0xfd; delayms(50); P2=0xfe; delayms(50); P2=0xff;P0=0x7f; delayms(50); P0=0xbf; delayms(50); P0=0xdf; delayms(50); P0=0xef; delayms(50); P0=0xf7; delayms(50); P0=0xfb; delayms(50); P0=0xfd; delayms(50); P0=0xfe; delayms(50); P0=0xff;P1=0xfc; delayms(50); P1=0xf8; delayms(50); P1=0xf0; delayms(50); P1=0xe0; delayms(50); P1=0xc0; delayms(50); P1=0x80; delayms(50); P1=0x00; delayms(50); P3=0xfe; delayms(50); P3=0xfc; delayms(50); P3=0xf8; delayms(50); P3=0xf0; delayms(50); P3=0xe0; delayms(50); P3=0xc0; delayms(50); P3=0x80; delayms(50);P2=0x7f; delayms(50); P2=0x3f; delayms(50); P2=0x1f; delayms(50); P2=0x0f; delayms(50); P2=0x07; delayms(50); P2=0x03; delayms(50); P2=0x01; delayms(50); P2=0x00; delayms(50); P0=0x7f; delayms(50); P0=0x3f; delayms(50); P0=0x1f; delayms(50); P0=0x0f; delayms(50); P0=0x07; delayms(50); P0=0x03; delayms(50);P0=0x00; delayms(50);Off_all();On_all();Off_all();On_all();Off_all();}void ban_shan()//半边交替闪{Off_all();P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff; delayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00; delayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff; delayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00; delayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff; delayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00; delayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff; delayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00; delayms(50);P1=0x00;P3=0x00;delayms(50);P0=0xff;P2=0xff; delayms(50);P1=0xff;P3=0xff;delayms(50);P0=0x00;P2=0x00; delayms(50);}void shangxia_shan()//上下交替闪{On_all();Off_all();P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff; delayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00; delayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff; delayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00; delayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff; delayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00; delayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff; delayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00; delayms(50);P0=0x00;P1=0x00;delayms(50);P2=0xff;P3=0xff; delayms(50);P0=0xff;P1=0xff;delayms(50);P2=0x00;P3=0x00; delayms(50);}void huayang_shan()//花样闪烁{On_all();delayms(400);P0=0xff;P2=0x00;P3=0x00;P1=0x00;delayms(20 0);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(20 0);0);P0=0x00;P2=0x00;P3=0x00;P1=0xff;delayms(20 0);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(20 0);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(20 0);P0=0xff;P2=0x00;P3=0x00;P1=0x00;delayms(20 0);On_all();delayms(400);P0=0x00;P2=0x00;P3=0x00;P1=0xff;delayms(20 0);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(20 0);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(20 0);0);P0=0x00;P2=0xff;P3=0x00;P1=0x00;delayms(20 0);P0=0x00;P2=0x00;P3=0xff;P1=0x00;delayms(20 0);P0=0x00;P2=0x00;P3=0x00;P1=0xff;delayms(20 0);On_all();delayms(400);Off_all();delayms(400);P0=0x00;delayms(200);P3=0x00;delayms(200);P1=0x00;delayms(200);P2=0x00;delayms(200);On_all();delayms(400);Off_all();delayms(400);P2=0x00;delayms(200);P0=0x00;delayms(200);P3=0x00;delayms(200);On_all();delayms(400);Off_all();delayms(50);On_all();delayms(50);Off_all();delayms(50);On_all();delayms(50);Off_all();delayms(50);}void main(){On_all(); delayms(300);Off_all(); delayms(300);Off_all(); delayms(300);On_all(); delayms(300);Off_all(); delayms(300);ls(); //正向流水fan_ls(); //反向流水ban_shan(); //半边交替闪shangxia_shan(); //上下交替闪烁huayang_shan();// 花样闪烁}。
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单片机的C语言程序设计

基于51单片机的C语言程序设计实训100例第 01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){{P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsignedchar#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
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单片机流水灯设计-

• 以上给大家演示的是位控法。
• 这是一种比较笨但又最易理解的方法,采 用顺序程序结构,用位指令控制P0口的每 一个位输出高低电平,从而来控制相应LED
灯的亮灭。 •
• 循环移位。
• 在上个程序中我们是逐个控制P0端口的每个位 来实现的,因此程序显得有点复杂,下面我们 利用循环移位指令,采用循环程序结构进行编 程。我们在程序一开始就给P1口送一个数,这 个数本身就让P1.0先低,其他位为高,然后延 时一段时间,再让这个数据向高位移动,然后 再输出至P1口,这样就实现“流水”效果
电子工程学院“梦想起航” 科技活动之
基于51单片机的流水灯设计
电子工程学院科协 08/11/8
• 制作流水灯的目的:
• 一,让大家熟悉51单片机基本的IO操作跟 C51的编程方法。
• 二,让大家熟悉Keil3 跟下载线的使用。
一,硬件设计
• 电路原理图:
• 系统板上硬件连线
• 把“单片机系统”区域中的P0.0-P0.7用8芯 排线连接到“八路发光二极管指示模块” 区域中的L1-L8端口上,要求:P0.0对应着 L1,P0.1对应着L2,……,P0.7对应着L8。
二,Keil3与下载线的使用
•
• Keil C51 软件是众多单片机应用开发的 优秀软件之一,它集编辑,编译,仿真 于一体,支持汇编,PLM 语言和C 语言的 程序设计,界面友好,易学易用。
• progisp下载器的使用
• 绿色版,免安装。 • 软件放在“梦想起航” ftp"软件安
装包"文件夹下,内有详细的使用说 明。
• 第三种方法 查表法
• 运用查表法所编写的流水灯程序,能够实 现任意方式流水,而且流水花样无限,只 要更改流水花样数据表的流水数据就可以 随意添加或改变流水花样,真正实现随心 所欲的流水灯效果,看例子。
基于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灯的亮灭。