第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。C程序如下:[cpp] view plain copy include
程序如下:include
RL A MOV P1,A ;1秒一变的花样流水灯。T0E:RETI END
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
一、点亮一个LED灯 程序:MOV A,#00FEH MOV P1,A JMP $ END 图:二、点亮1、3、5、7LED灯 程序:MOV A,#00AAH MOV P1,A JMP $ END 图:三、尝试让一个LED灯闪烁 程序:STRAT:MOV A,#00FEH MOV P1,
ACALL DELAY_05s;延时0.5s MOV P0,#0FBH;P0.2灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0F7H;P0.3灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0EFH;P0.4灯亮 ACALL DELAY_05s;延时0.5s MO
LED流水灯编程
51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:;假设晶振12MHZ,P1控制8个LED低电平亮 ;
这个流水灯程序最好用数组定义8个状态的灯,这样用for循环就可以实现了。简洁明了,易读性强,也容易理解。include
P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=
led8 = 0;//点亮剩余的灯 //省略……while(1);}
proteus电路图 画法依旧不说,给出元件清单,其实都差不多,与上篇一致51单片机 电容 瓷片电容 晶振 红色二极管 电阻 电路图如图 程序清单 说明:流水灯的闪亮方法肯定不是唯一的,按照各种形式都可以写出所需的程序,这里只用
我们在Proteus里面双击单片机,加载单片机流水灯程序 并把晶振改为12Mhz 我们点击下面那个三角形符号就可以允许仿真了 仿真的时候引脚接口会有电压颜色显示,可以看到流水灯已经在走了
51单片机流水灯程序
单片机流水灯C语言程序的源代码如下:include //51系列单片机定义文件 define uchar unsigned char //定义无符号字符 define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void){ uint
可以用for循环试试unsingned char i;for(i=0;i<5;i++)//流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-
delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
程序如下:include
单片机流水灯代码:#include
流水灯单片机程序代码
控制电路设计 控制电路由AT89C51单片机作控制器,显示屏由4个16×16点阵LED模块组成,每个16×16点阵LED模块由4个8×8点阵LED模块组成,用户可根据需要扩展增加任意多个16×16点阵LED模块。8×8点阵LED模块结构如图1所示,共
我们得出在不同LED小灯被点亮的时候,P1端口输出的状态程序流程图还是比较简单的,P1口在间隔一段时间之后,输出不同的值,然后返回到程序执行的起点,重新开始执行,这样就会循环往复不断地出现流水的效果。
单片机一块,电池二节,led小灯若干,电阻若干,晶振一个,电容2个,面包板一块,导线若干,这些就可以了
//P0口灯由高位向低位依次灭(前一位不亮),最后仅剩最低位亮灯。0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0x7F,//P0口以两个亮灯为单位,由低位向高位逐位移动,最后移至最高位,仅剩最高位亮灯。0xFF,0xFF,0x
使能定时器1中断SETB TR1;启动定时器1SETB EA;开总中断 MOV P1,LED;初始化流水灯LOOP:JMP LOOP;循环等待中断T1INT:PUSH PSW;定时器1中断程序PUSH ACC;保护现场MOV TH1,#3CH;定时时间=50mSMOV TL1,#0B0H;INC YSJS;
define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动 { P0=~temp;delay(100);
51单片机89c51rc,怎么设计心形流水灯?led至少30个,?求电路图,和程序!步骤要具体
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,定
led8 = 0;//点亮剩余的灯 //省略……while(1);}
我们在Proteus里面双击单片机,加载单片机流水灯程序 并把晶振改为12Mhz 我们点击下面那个三角形符号就可以允许仿真了 仿真的时候引脚接口会有电压颜色显示,可以看到流水灯已经在走了
/*P1口LED流水灯实验 */ /*目标器件:AT89S51 */ /*晶振:11.0592MHZ */ /*编译环境:Keil 7.50A */ /***/ include
求超炫单片机心形流水灯的keil程序,要完整的。834540212,谢谢!
;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时60秒
1、亮4个灯、暗4个灯,1亮1暗均匀分布且稳 定不变; 2、亮1个灯,暗7个灯,从上到下轮流点亮每 一个灯,每次只亮一个灯,循环间隔约2秒; 3、亮2个灯,暗6个灯,一个灯从上往中间轮 流点亮,另一个灯从下往
;启动入口 ORG 0000H;复位启动 LJMP START;ORG 000BH;T0中断 LJMP T0INT;ORG 0100H;LJMP START;;;主控程序 START:MOV SP,#80H;初始堆栈值 MOV TMOD,#01H;定时器0工作于方式1,50毫秒@12.000MHz MOV TH0,#03CH
像这种需要用到全部4个P口的流水灯,用移位的方法比较好实现。示范一下:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P0,#0FEH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH SETB C LOOP:MOV A,P0 RLC A MOV P
求帮忙编一个心形流水灯的汇编语言程序。。。就像这样的
焊接的挺漂亮,用心了,祝你成功!!流水灯(理论+编程)
亲 你的心形流水灯汇编程序和原理图能让我用下吗,,江湖救急啊亲~~~
百度吧,一般人不会存这样的程序的
朋友,这方面的你还要的不
673358729 可以帮你做
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下: ORG 0000H ;复位启动AJMP START ;ORG 001BH ;T1中断AJMP T1INT ; ;定义变量========================YSJS EQU 30H;延时计数器LED EQU 31H;LED控制缓冲器 ;主程序==========================START: MOV LED,#0FEH ;初始化数据MOV YSJS,#0 ;MOV TMOD,#10H ;定时器1工作于方式1,16位定时器MOV TL1,#0B0H ;设置定时初值MOV TH1,#3CH ;定时时间=50mSSETB ET1 ;使能定时器1中断SETB TR1 ;启动定时器1SETB EA ;开总中断 MOV P1,LED ;初始化流水灯LOOP: JMP LOOP ;循环等待中断T1INT: PUSH PSW ;定时器1中断程序PUSH ACC ;保护现场MOV TH1,#3CH ;定时时间=50mSMOV TL1,#0B0H ;INC YSJS ; PUSH ACC ;保护ACCMOV A,YSJI ;CJNE A,#2,QT1 ;50mS*2=100mSMOV P1,LED ;MOV A,LED ;RL A ;累加器A的值循环左移1位MOV LED,A ;MOV YSJS,#0 ;QT1: POP ACC ;恢复现场POP PSW ;RETI ;返回主程序END ;汇编程序结束 扩展资料: 实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。 第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。 第三种,库函数实现流水灯。利用左移函数进行。
程序如下,仿真见附件。有问题请追问。#include #define uchar unsigned char#define uint unsigned intbit flag_1s=0;uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]//uchar code tab[8]={0x05,0x0a,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小题用这个表]void InitTimer1(void){ TMOD = 0x10; TH1 = 0x3C; TL1 = 0x0B0; EA = 1; ET1 = 1; TR1 = 1;}void main(void){ static uchar j; InitTimer1();P0=0;P1=0;P2=0;P3=0;flag_1s=1;while(1){if(flag_1s==1){flag_1s=0;P2=tab[j];j++;if(j>=8) j=0;}}}void Timer1Interrupt(void) interrupt 3{ static uchar i; TH1 = 0x3C; TL1 = 0x0B0; //add your code here! i++; if(i>=20)//50ms*20=1000ms { i=0; flag_1s=1; }}
这是正确程序 ,望采纳。最好采用低电平触发 ,否则,单片机在上电的瞬间所有的LED灯会闪一下。 #include #include void Delay10ms(unsigned int c); main() { unsigned char i; while (1) { P0=0x00; P2=0x00; while(1) { P2 = 0x02; Delay10ms(50); P2 = P2 >>1; Delay10ms(50); if (P2 == 0x01) { P2 = 0x00; P0=0x80; Delay10ms(50); for(i=0;i<7;i++) { P0=P0>>1; Delay10ms(50); } if(P0==0x01) P0=0x00; } } } } void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } }
16进制代码0xfe转换为二进制就是11111110,0xfd就是11111101。1可以代表高电平,0代表低电平,这样,在你程序里面P3口的低电平位置就流动起来了。而LED在P3口有低电平的时候会点亮。