『壹』 c語言控制LED燈
//!沒有硬體方案,以下只包含邏輯
intpush_count=0;//記錄按鈕按下次數
//!處理亮燈
voidlight(intled_num)
{
switch(led_num)
{
case1:
{
;//點亮燈1
}break;
case2:
{
;//點亮燈1
}break;
default:
;//滅所有燈
break;
}
}
//!處理按鍵中斷
voidpush_interrupt()
{
//判斷按鍵是否有效
push_count++;
if(1==push_count)
{
light(1);
}
elseif(2==push_count)
{
light(2);
}
elseif(8==push_count)
{
light(0);
push_count=0;
}
}
『貳』 用c語言實現發光二極體間隔500ms先奇數亮再偶數亮,循環三次
#include<reg51.h>
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++);
}
main()
{
int i;
for(i=0;i<3;i++)
{
P0=0xaa;
delay(500);
P0=0x55;
delay(500);
}
while(1);
}
『叄』 C語言編寫按下圖點亮LED燈按如下順序點亮D1-D2····D8···D1循環點亮並一直循環下去 間隔500ms
寫流水燈程序調用#include<intrins.h>
中的code函數 比較簡單
『肆』 求51單片機c語言代碼,LED燈閃爍(500ms閃爍一次),6秒後(用T0定時)流水燈全部關閉,
//LED1接P2.0,LED2接P2.1,低電平點亮
#include
void _delay_ms(unsigned int c) //誤差 0us
{
unsigned char a,b;
for(;c>0;c--)
for(b=199;b>0;b--)
for(a=1;a>0;a--);
}
void main(void)
{
while(1)
{
P2|=(1<<0)&(1<<1);
_delay_ms(300);//300MS
P2|=~((1<<0)&(1<<1));
_delay_ms(300);//300MS
}
}
『伍』 單片機C語言編程點亮LED燈
可以通過左移函數_crol_()和右移函數_cror_()來實現LED等的來迴流動。 具體實現方法可以參考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){ P1=0xfe; while(1) { // 向左循環點亮LED for(i=0; i<7; i++) { P1=_crol_(P1,1); // 左移一位,點亮下一位LED delay(55); } // 向右循環點亮LED for(i=0; i/ 右移一位,,點亮上一位LED delay(55); } }}// 延時函數,延時a毫秒void delay(uint a){ uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}
『陸』 利用C51自帶的庫函數_crol_,以間隔500ms實現10個LED燈亮滅循環的C語言程序
先發一個8 個燈的。
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num;
void delay(uint);
void main()
{
temp=0xfe;
while(1)
{
for(num=0;num<8;num++)
{
P1=temp;
delay(100);
temp=_crol_(temp,1);
P1=0xff;
delay(100);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************************************************************************
再發一個10個燈的,不過函數是IROL
*******************************************************************************/
_crol_不好實現,我用_irol_實現的。
//P2低兩位,P1全部8位分別接LED,共十隻LED
#include <reg51.h>
#include <intrins.h>
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main()
{
unsigned int j;
unsigned char i;
while(1)
{
j=0xfffe;
for(i=0;i<10;i++)
{
P2=j/256;
P1=j%256;
delay(500);
j=_irol_(j,1); //整數循環左移
}
}
}
『柒』 用簡單的C語言程序控制LED燈的點亮
初始化部分你要自己根據晶元資料寫,數碼管部分可以根據數碼管的資料做數組xs[10]={0x3b……}要看數碼管引腳定義了,看原理圖看不出來的,可以做個200MS的定時器,然後計數5次就是1S
直接給數碼管的IO口附數組的值,如P1=xs[5];要看你給的是哪個IO口了,我這邊看不清你的原理圖,LED亮200MS後就換動作太快,看不出效果,可以把時間加長
『捌』 單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)
單片機流水燈C語言程序的源代碼如下:
#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8個流水燈反向逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8個流水燈依次反向全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp>>=1;
}
void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(8)c語言500毫秒led燈擴展閱讀
51單片機流水燈的源代碼如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
『玖』 單片機第一個led燈間隔500ms閃爍的程序
用C語言比較簡單
sbit LED1=P1^0;
while(1)
{
LED1=0;
delay_ms(500);
LED1=1;
delay_ms(500);
}
延時子程序隨便找一個,延時時間不要求很准
『拾』 單片機流水燈的C語言編程
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define led P1
uint delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=110;y>0;y--);
}
}
void main()
{
uint i,temp,j;
for(i=0;i<3;i++)
{
led=0xAA;
delay(300);
led=0x55;
delay(300);
}
for(i=0;i<3;i++)
{
temp=0xfe;
for(j=0;j<8;j++)
{
led=temp;
delay(300);
temp=_crol_(temp,1);
}
temp=0xbf;
for(j=0;j<6;j++)
{
led=temp;
delay(300);
temp=_cror_(temp,1);
}
}
for (i=0;i<3;i++)
{
led=0x7e;
delay(300);
led=0xbd;
delay(300);
led=0xdb;
delay(300);
led=0xe7;
delay(300);
}
for (i=0;i<3;i++)
{
led=0xe7;
delay(300);
led=0xdb;
delay(300);
led=0xbd;
delay(300);
led=0x7e;
delay(300);
}
for (i=0;i<3;i++)
{
led=0xff;
delay(300);
led=0x00;
delay(300);
}
led=0xff;
while(1);
}
現象說明:
8個燈,間隔300ms先奇數亮再偶數亮,循環三次;一個燈上下循環
三次;再分別從兩邊往中間流動三次;再從中間往兩邊流
動三次;8個全部閃爍3次;關閉發光管,程序停止。
晶振為11.0592MHz