㈠ 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);
}
}