51单片机流水灯通过按键控制流水灯的流向

作者&投稿:芒畏 (若有异议请与网页底部的电邮联系)
51单片机定时器实现流水灯,并用按键外部中断控制改变流水灯的流向,这个程序怎么写?最好有注释,谢谢~

bit flag;//声明一个位变量
EA=1;//开总中断
EX0=1;//开外部中断0
IT0=1;//下降沿触发
while(1)
{
if(flag==0)
{
for(i=0;i<8;i++)
{ P0=0X01<<i;delayms(500); }
}
if(flag==1)
{
for(i=0;i<8;i++)
{ P0=0X80>>i;delayms(500);}
}
}
中断程序
void zhongduan() interrupt 0
{ flag=!flag; }

while(1)
{ P1=aa;

delayms(1000);
aa=_crol_(aa,1);
}
这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了
if(key1==0)
{
P1=0x7e;

for(b=2;b<6;b++)
{
if(key_on())

OutData2=_cror_(OutData,b);
else
OutData2=_crol_(OutData,b);
P3=OutData2;
P2=0xff;
delay1s();



单片机实验 编写程序
单片机实验,其实这就是典型的流水灯电路,P1口接8个流水灯,每个灯点亮1秒。用定时器T1定时50ms,中断20次就为1秒,可用_crol_()移位函数实现。仿真效果如下图所示。

如何用单片机简单制作一个流水灯
工具:STC系列51单片机、串口转换器(USB转TTL 或232转TTL)材料:实验板一块(可以买现成的,也可以买面包板自己搭建),电阻、LED灯 若干,5V电源等。以下程序可以直接用Keil C 直接编译执行。\/\/可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。\/\/具体实现方法可以参考如下程序...

单片机中如何利用开关SW控制流水灯的启动和停止?
在单片机的某个IO脚上接一个开关SW,主程序检测开关的状态,当开闭合,引脚为低电平,流水灯就停止。当开关开启,引脚为高电平,则启动流水灯流动。

流水灯闪烁是怎么回事
1、这个写程序的时候就给6个I\/O输出高电平或低电平就行了。2、先让6个I\/O口输出高电平或低电平,这个要看你的是什么单片机,51单片机都是默认的是高电平是亮,然后延时一会再让它输出低电平就行了,就这样一直循环。

在做一个单片机的水滴效果流水灯,想问下这个电路图里面的两个开关可以...
既然是开发板,那就是开发板设计就有两个开关,可用于写不同程序时使用。这个流水灯程序可以不用开关,就不用管呗,可以不写开关程序。那是板上就有的,也不能去掉啊,也不用去掉的,不写程序就得了。

跪求 单片机 按键控制流水灯,要求按一下按键第一个灯亮,按两下第二个...
如果你不会写程序,给你了也没用 给你个思路:预先定于一个寄存器KEYNUM,首先有按键检测程序,每检测到一次按键,KEYNUM+1。在显示程序里判断KEYNUM是几,如果是1则第一个灯亮,其他的灭,依次类推,如果KEYNUM=8,第八个灯亮,同时清除KWENUM....

单片机可控制流水灯汇编程序 要求:按一下亮一个,再按一下第二个亮,第...
sbit LED_2=P1^1;\/ 延时函数***\/ void Delay(int del){ int i,j;for(i=0;i<=42;i++)for(j=0;j<=del;j++) ;} void main(){while(1){ if(Key==0){ Delay(10); \/\/软件防抖,延时10ms if(Key==0){ LED_1=0; \/\/第一个灯亮 LED_2=1; \/\/ Key=1;Delay(...

单片机 请问流水灯程序一个按键单次按下控制改变 P0.0到P0.7不断循环...
我说一个可行的吧,但是不一定是最好的。定义一个位变量 bit fangxiang=1 ; \/\/1表示一个方向,0表示另一个方向。用定时器自动控制灯移动。主循环里面这样写 while(1){ 检测P10按键;如果有按键;fangxiang=!方向;} 定时器函数里这样写 { if(方向==1){ 右移;} else { 左移;} } ...

汇编语言 51单片机,外部中断控制流水灯?
LSDBM: DB 11111110B,11111101B,11111011B,11110111B ; 流水灯的编码1 DB 11101111B,11011111B,10111111B,01111111B DB 01111111B,10111111B,11011111B,11101111B DB 11110111B,11111011B,11111101B,11111110B DB 11111100B,11111001B,11110011B,11100111B ; 流水灯的编码2 DB ...

单片机的8位流水灯的问题,
P1口共有8个IO控制口,分别控制8个LED灯,你的目的是做流水灯,也就是让其依次循环点亮,第一次点亮第一个灯,即:P1.0=0,其余为1即P=0xfe;第二次点亮第二个灯,即:P1.1=0,其余为1即P=0xfd;依次类推。=_crol_(a,1)实现的功能就是循环左移,相当于汇编语言的RL A;这样就可以...

河池市19348403249: 51单片机,按键控制流水灯程序,懂的进!八个LED灯与单片机P1口连,按键key1与单片机P32连.该程序是完成以下工作:单片机上电,流水灯每一秒移一... -
夫雅托恩:[答案] 假如,你的程序在执行key_scan();是触发了两次中断导致num>20,你的显示函数将永远被跳过,你应该写成 if(num>20) { num=0; display(); } 这是一个比较直观的错误,其他的没细看,你在试试

河池市19348403249: 51单片机程序:按键控制流水灯 -
夫雅托恩: 低电平点亮 START:MOV R0,#8 MOV R1,#8 SETB C MOV A,#0FEH MOV P1,A S1:RLC A CALL DELAY MOV P1,A DJNZ R0,S1 SETB C MOV A,#0FEH MOV P2,A S2:RLC A CALL DELAY MOV P2,A DJNZ R1,S2 AJMP START DELAY:MOV R5,#0FFH //改变值变延时时间 LOOP2: MOV R4,#0FFH//改变值变延时时间 LOOP1:DJNZ R4,LOOP1 DJNZ R5,LOOP2 RET END

河池市19348403249: 51单片机摁键控制流水灯? -
夫雅托恩: 用4个按键控制流水灯,P1口接8个LED流水灯,P3.4~P3.7接有4个按键,仿真图如下.

河池市19348403249: 求一个51单片机程序,要求用一个按键控制流水灯的启停,按一下流水启 -
夫雅托恩: #include <reg51.h> typedef unsigned char uint8; typedef unsigned int uint16; it anjian = P1

河池市19348403249: 51单片机如何用键盘控制流水灯,做到按哪个键盘则有相应序号的流水灯在亮? -
夫雅托恩: 很简单,按键全部接P1口,低电平有效 , 灯全部接P2口 ,低电平点亮!#include <reg51.h> void main(void) { P1 = 0XFF ; P2 = 0XFF ; while(1) { if(P1!=0XFF) { P2 = P1 ; } } }

河池市19348403249: 51单片机双键控制八位流水灯C程序 -
夫雅托恩: #include<reg51.h>#define uchar unsigned char uchar num,flag=0; sbit K1=P1^0; sbit K2=P1^1; void t0isr() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num>=20){num=0;flag=1;} } main() { uchar LED; TMOD=0x...

河池市19348403249: 51单片机定时器实现流水灯,并用按键外部中断控制改变流水灯的流向,这个程序怎么写?最好有注释,谢谢 -
夫雅托恩: bit flag;//声明一个位变量 EA=1;//开总中断 EX0=1;//开外部中断0 IT0=1;//下降沿触发 while(1) { if(flag==0) { for(i=0;i<8;i++) { P0=0X01<<i;delayms(500); } } if(flag==1) { for(i=0;i<8;i++) { P0=0X80>>i;delayms(500);} } } 中断程序 void zhongduan() interrupt 0 { flag=!flag; }

河池市19348403249: 51单片机中怎样用一个按键控制三种模式的流水灯,如控制流水灯流水速率(每按一下加速,到三后返回和第一次 -
夫雅托恩: #include <reg51.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit anjian = P1^0; //按键位 void delay(uint16 h) //延时程序 { while(h--); } main() { uint8 k = 0 , i = 0;P0 = 0xff; anjian = 1; while(1) {P0 = ~(1<<k++);if(anjian == 0) { delay...

河池市19348403249: 求教大婶们~51单片机单个按键控制流水灯C程序 -
夫雅托恩: 很简单啊,只提供一个简单思路, 所以只提供简单的程序,自己理解 char flag=0;viod main() { while(1) { if(key==0 ) //假设0 按下按键 { flag=~flag; } if(flag==0) { leds(); //流水灯函数 } } }

河池市19348403249: 51单片机用独立按键控制不同流水灯,那个流水灯的循环放哪里?我放流水灯里,不能正常工作?求大神指教 -
夫雅托恩: 重点是你要在 “那个流水灯的循环放” 里 放上检测按键的语句,没按键正常循环,有按键要根据按键的值 去做别的(例如转到另外一种流水灯的循环,或者是改变流水模式,具体咋样与你的程序编写方式有关)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网