㈠ 51单片机流水灯,一开始全亮然后逐个熄灭,怎么编程序,大一c语言
#include<reg51.h>
void delay(int a)
{
while(a--);
}
main()
{
unsigned char i;
while(1)
{
P0=0xff;
for(i=0;i<8;i++){P0=P0<<1;delay(30000);}
P0=0x00;
for(i=0;i<8;i++){P0=(P0>>1)|0x80;delay(30000);}
}
}
㈡ 单片机c51流水灯一亮一闪依次左移编程
下面是采用定时器定时1S(时钟晶振是11.0592MHz)的流水灯程序。采用左移函数_crol_(),此函数包含在intrinsic.h的头文件内。有不懂得再问,需要汇编的话,留言,再写给你。
#include<reg52.h>
#include<intrins.h>
unsigned
int
a,temp;
void
main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
temp=0xfe;
while(1)
{
if(a==20)
{
a=0;
P1=temp;
temp=_crol_
(temp,1);
}
}
}
void
T0_time0()interrupt
1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
a++;
}
㈢ 请运用位移法利用单片机的P2口实现的8个LED流水灯功能。要求:1.流水的顺序是从左到右 2.每次只亮一盏灯
用红色的替换对应语句,即可得反方向了,去试试吧;
㈣ 51单片机编程:先循环一遍流水灯,然后熄灭后蜂鸣器响三下停止
就拿三个灯来说吧
#include"reg52.h"
#include"intrins.h"
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;//led灯
sbit ring=P2^3;//蜂鸣器
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main(){
led1=0;led2=0;led3=0;//初始化为零
//下面开始
goto B:
A:while(1){;}//跑完一遍程序后执行死循环
B:
led1=1;Delay1000ms();led1=0;
led2=1;Delay1000ms();led2=0;
led3=1;Delay1000ms();led3=0;//流水灯
ring=1;Delay1000ms();ring=0;
ring=1;Delay1000ms();ring=0;
ring=1;Delay1000ms();ring=0;//蜂鸣
goto A;//跳转到死循环执行
}
㈤ 单片机,让流水灯逐个灭怎么办
你流水灯都写好了
全亮全灭还不简单啊,设置
p0=0x00
(假设低电平亮,高电平灭)
在延迟一下
在p0=0xff
在延时
不就ok了
把这几个指令打包下放到一个子程序里
你用按键控制的时候就让按键执行这个子程序
如果是
主程序循环的
话就放进主程序
㈥ 单片机,流水灯
下图为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
基于单片机的流水灯介绍_51单片机流水灯的五种实现方法
基于单片机的流水灯介绍_51单片机流水灯的五种实现方法
实现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高、返回到开始、程序结束。
1、通过改变赋值实现流水灯
void main()
{ while(1) {
P2=0xfe;
delay1ms(500); P2=0xfd; delay1ms(500); P2=0xfb;
delay1ms(500); P2=0xf7; delay1ms(500); P2=0xef; delay1ms(500); P2=0xdf;
delay1ms(500); P2=0xbf; delay1ms(500); P2=0x7f;
delay1ms(500); } }
2、通过公式运算实现流水灯
void main() {
while(1) {
uinta,b=1; P2=0xfe; delayms(500); for(a=0;a<7;a++)
P2-=b; // P2=P2-b delayms(500); b=b*2; //都化为同一类型进制运算 } } }
3、通过操作符<<与“|”实现流水灯 (通过移位实现流水灯)
void main() {
uchara,i;
while(1) {
a=0xfe; //点亮第一位LED灯 for(i=0;i<8;i++)
{ P2=a;
a=a<<1; //左移一位
a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); } } }
4、通过库函数_crol_(字符左移)实现流水灯
void main()
{
uint a; a=0xfe; while(1) {
P2=a;a=_crol_(a,1); delay_ms(500); } }
5、采用数组实现流水灯
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void) {
uchari;
while (1) {
for(i=0;i<8;i++) //循环点亮8只LED灯 {
P2=table[i];
delay_ms(500); //延时500毫秒 } } }
㈦ 51单片机,16个灯依次点亮后依次熄灭,跪求!!!
#include "REG52.H"
#define LEDH8 = P1;//所有LED 阳极接电源
#define LEDL8 = P2;//所有LED 阳极接电源
u8 LED_Status = 0xfe; // LED灯指示状态
u8 LED_bit = 0; //LED指示灯位 0-15
void Init_GPIO()
{
LEDH8 = 0xff; LEDL8 = 0xff; //熄灭所有LED
}
void Delay( u16 dat )
{
u16 i, j ;
for( i = dat; i>0; i-- )
for( j=100; j>0; j--);
}
int main ()
{
Init_GPIO();
while(1)
{
switch (LED_bit)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7: LEDL8 &= LED_Status ; break ;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15: LEDH8 &= LED_Status ; break ;
default : break;
}
Delay( 1000);
LED_bit++;
LED_Status = (LED_Status <<1);
}
}
㈧ 51单片机控制16个led灯,要求16个灯依次点亮后依次熄灭
假设16个灯接P0和P1,高电平点亮,每次亮一个灯
程序大致这样:
uint b;//16位变量对应16个灯
uchar i;
while(1)
{
for(i=0;i<16;i++)
{
b=0x01<<i;
P0=b;//自动取低8位
P1=b<<8;//取高8 位
delayms(200);
}
}