❶ 單片機三種亮燈方式,時間間隔1秒,用到中斷
非精確延時控制
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit led P1^0;
void delay(uint x)
{
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void main()
{
P1=0xff;
while(1)
{
led=0;
delay(1000);
led=1;
delay(1000);
}
}
定時器控制
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint num;
sbit led=P1^0;
void main()
{
uchar counter;
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
if(TF0==1)
{
TR0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
counter++;
}
if(counter==20)
{
counter=0;
led=~led;
}
中斷控制,來一個中斷就跳轉到中斷里的程序
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
IT0=1;
EX0=1;
EA=1;
}
void main()
{
uchar i,temp;
temp=0xfe;
init();
while(1)
{
for(i=0;i<8;i++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
}
}
void timer1() interrupt 0
{
uchar i;
for(i=0;i<6;i++)
{
P1=0x00;
delay(1000);
P1=0xff;
delay(1000);
}
}
沒有用keil運行了,純手打,看了看,應該是沒有問題的
❷ 51單片機亮燈問題
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
void delay(void)
{
unsigned char a,b,c;
for(c=50;c>0;c--)
for(b=140;b>0;b--)
for(a=16;a>0;a--);
_nop_();
}
void main(void)
{
int i,j;
P1=0x00;
for(i=0;i<10;i++)//奇偶閃爍,間隔1s
{
P1=0xAA;
delay();
P1=0x55;
delay();
}
P1=0x00;
P1=0x01;
for(j=0;j<10;j++)//10次從左到右流水燈
for(i=0;i<8;i++)
{
delay();
P1=_crol_(P1,1);
}
P1=0XFF;
while(1);
}
❸ 關於51單片機的一個亮燈程序
不知道你說的是啥板子,但是就現象而言,如果P0=0xff全滅而P0=0x01時只有數碼管亮,那麼很可能你送P0=0xfe就只有燈亮了,因當P0=0x01=0000 0001時恰好是前7位得電點亮一個8字。
❹ 單片機c語言按鍵亮燈
這個應該不用加按鍵消抖吧,而且你的意思是按下P5^0後變為P5=0x4f嗎?是的話,改成這樣:
void main ()
{
Init_Device();
do
{
P5=0x3f;
while (P5^0==0)
P5=0x4f;
} while(1);
不過這加入死循環了,不過應該可以實現上述功能。
❺ 單片機c語言LED燈奇數亮燈。
//LED低電平點亮
//LED1-LED8分別接P2.0-P2.7
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
void delay(unsigned char a) //延時
{
unsigned char i;
while(a--)
for(i=100;i>0;i--);
}
void main(void)
{
uchar i;
P2=0XFF;
while(1)
{
for(i=0;i<8;i=i+2)
{
P2=~(1<<i);
}
}
}
❻ 單片機亮燈系統
這里給你給個單片機控制P1口的8個LED分別亮的程序。如果你需要點亮的不是LED,那就加一個ULN2003A,然後加一個繼電器,然後驅動220V的電燈工作。
#include<reg52.h>
unsignedchardis_num[4]={0x05,0x0a,0x50,0xa0};
unsignedcharled_flag=0,led_on;
unsignedchartime_1s=0;
voidmain()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
P1=0x00;
while(1)
{
if(led_flag==1)
{
led_flag=0;
P1=dis_num[led_on];
}
}
}
voidtimer0_isr(void)interrupt1using1
{
time_1s++;
if(time_1s==20)
{
time_1s=0;
led_flag=1;
led_on++;
if(led_on==4)led_on=0;
}
}
///圖片是這個程序中proteus下模擬運行的截圖,希望對你有用
❼ 單片機工作狀態LED指示燈
我最近做了個測溫電路,通過串口傳到上位機
led不亮表示溫度過低,
長滅短亮表示偏低
常亮表示正常
長亮短滅表示偏高
用定時器計數實現閃爍。一般不用延時,盡量用定時中斷。
❽ 怎麼用一個LED指示燈用來顯示單片機是否正常工作
仿照看門狗的處理方法,零點幾秒,能夠喂狗一次,這就說明單片機在正常工作。
喂狗的操作,如果沒有出來,就說明單片機沒有正常工作。
那麼,喂狗同時,令 LED 取反,於是,就可以顯示出,喂狗在正常進行。
LED 閃動,也就可以說明單片機在正常工作。
LED 靜止發光,說明不了單片機正常工作。
只能說明電源,沒有掉而已。
❾ 單片機亮燈程序怎麼讓8盞燈亮10次然後不亮
用51單片機來簡單說明一下:
用8隻LED代表8盞燈(D1~D8),限流電阻用一個9腳排阻RP1,原理圖如下:
以上僅供參考。