用c语言编程 控制LED流水灯1到8盏灯间隔0.5秒流水一次
#include
#include
void delay(unsigned int z );
void main()
{
unsigned int a;
unsigned char b=0xfe;
for(a=0;a<8;a++)
{
P1=b;//P1口接8个LED灯
delay(200);
b=_crol_ (b,1);
}
}
void delay(unsigned int z)
{
unsigned int i;
for(;z>0;z--) //延迟时间自己算吧
for(i=110;i>0;i--);
}
用汇编写这个容易点
main: mov a,#0feh
mov r0,#8
loop: mov p1,a
acall delay
rl a
djnz r0,loop
delay:mov r6,#0ffh
loop1: mov r7,#01h
djnz r7,$
djnz r6,loop1
ret
end
好像是这样,延迟时间可能不太准,也是P1口接8个LED灯
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。
2、#include "reg51.h"首先写出单片机的头函数。
3、#include "intrins.h"输入位移函数。
4、unsigned int count=0,led;定义函数。
5、输入主函数,定义单片机的端口,写入延时函数。
6、中断跳转,使流水灯运行起来。
其次,我建议还是自己尝试写一写,这个不难,我给你个思路
首先定义变量类似于P1_2 = P1^2这种,先把这八个管脚全部定义好,之后给个for循环,让P1(假设的你LED灯连接的是P1口)口的P1^0~P1^7相关标志位依次等于0或者1(0还是1需要看你在LED等上给的是高电位亮还是低电位亮),之后再给个for循环,五次的循环,全部P1口置为1(假设高电平LED亮),之后设置P1口全为1,再让P1口的相关标志位置为0,再置为0的时候可以加个延时
菜宇骨刺: 首先,你的电路图没有给出来,管脚是什么? 其次,我建议还是自己尝试写一写,这个不难,我给你个思路 首先定义变量类似于P1_2 = P1^2这种,先把这八个管脚全部定义好,之后给个for循环,让P1(假设的你LED灯连接的是P1口)口的P1^0~P1^7相关标志位依次等于0或者1(0还是1需要看你在LED等上给的是高电位亮还是低电位亮),之后再给个for循环,五次的循环,全部P1口置为1(假设高电平LED亮),之后设置P1口全为1,再让P1口的相关标志位置为0,再置为0的时候可以加个延时
民乐县18275268307: 51单片机用C语言如何写四个数码管的流水灯程序? - ?
菜宇骨刺: 用个移位处理就行了 set(void) {static char cnt = 0;P1 = 0x01 << cnt; cnt ++;if (cnt == 4) {cnt = 0; } }
民乐县18275268307: keil软件用单片机控制8个LED流水灯来回点亮(C语言程序) - ?
菜宇骨刺: #include "reg51.h"main(){unsigned int i,j;while(1){P1=0xfe; //点亮第一个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfd; //点亮第二个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfb; //点亮第三个LEDfor(i=200;i>0;i--)for(j=500;j>...
民乐县18275268307: 单片机C语言编程:控制流水灯 - ?
菜宇骨刺: T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次. k3触发外部中断0,级别高于计时器中断,故暂停. #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit k1=P1^0; //左循环按钮 ...
民乐县18275268307: 用c语言编写流水灯. - ?
菜宇骨刺: C语言流水灯程序是学习的基础,一定要搞懂!给你发两个! (一) #include<reg51.h> //51系列单片机定义文件 #define uchar unsigned char //定义无符号字符 #define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void ...
民乐县18275268307: C语言二个开关控制八个led流水灯分别从左到右,从右到左 - ?
菜宇骨刺: 什么两个开关? 最起码两位控制8个灯,2*2*2 000 001
民乐县18275268307: 单片机流水灯的程序怎么打(C语言)?顺便解释解释. - ?
菜宇骨刺: 你的事C语言 回答的是汇编 如下 //led显示程序,简单地显示led的程序 //展示了如何控制端口的方法 //现象 : led 8个灯从左到右,然后从右到左显示;#include <8051.h>void delay(unsigned char times);void main() {int k,m;P0 = 0; //关闭数码显...
民乐县18275268307: 求89C52单片机控制32个LED流水灯的C语言程序 - ?
菜宇骨刺: #include<reg51.h>#define uchar unsigned char uchar led1,led2,led3,led4; void delay(uchar a) { uchar i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } main() { uchar num; unsigned long int led; P0=0xff;P0=0xff;P0=0xff;P0=0xff;delay(200);while(1){led=0...
民乐县18275268307: 用C语言编写按键控制流水灯的程序 - ?
菜宇骨刺: 1灭).编译器keil C代码如下: #include<reg51.h> #include<intrins.h> //包含循环左移函数 _cro_l头文件 unsigned char tmp; //中间变量 ////////////////////////////////////////////////////////////////////////////////////////////////// // 延时子程序 //////////////////////////////////////////////////////////////////...
民乐县18275268307: 单片机如何控制流水灯的程序 - ?
菜宇骨刺: 灯的亮灭是通过控制IO口数据来实现的;程序大体如下:#define led0 P1^0#define led1 P1^1#define led2 P1^2#define L 0 //亮#define M 1 //灭 void init() { led0 = M; led1 = M; led2 = M; } main() { init(); while(1) { delay_S(1); led0 = L; delay_S(1); led...