編程led燈
❶ LED燈需要編程嗎
需要編程實現。
下面給一個小例子來說明如何實現點亮一個LED燈:
#include<reg52.h>//引用52包文件可以理解為命名空間
sbitP1_0=P1^0;//定義P1管腳0
voidmain()//主程序C語言所必需要有的{P1_0=0;//點亮P1第0管腳連接的LED}
❷ 用keil編一個led燈閃爍程序
點亮 小燈的程序我們第二課完成了,就是讓 LED = 0。熄滅小燈的程序也很簡單,就是 LED = 1。點亮和熄滅都會了,那麼如果我們在亮和滅中間加個延時,反復不停的點亮和熄滅小燈,就成了閃爍了。
我們首先復習一下 Keil 寫程序的過程,建立工程-->保存工程-->建立文件-->添加文件到工程-->編寫程序-->編譯-->下載程序。
LED 對於有 C 基礎的同學來說很簡單,那我先寫出來,大家可以先看下。沒有C 語言基礎的同學也可以跟著抄一遍,下節課我會補充部分 C 語言基礎知識,這樣你先抄一遍後,再跟著看 C 語言基礎知識的時候也比較容易理解透徹。
純文本復制
#<reg52.h>
sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
main(){ //void 即函數類型
//以下為聲明語句部分
unsigned int i = 0; //定義一個變數 i,並賦初值 0
//以下為執行語句部分
ENLED = 0; //U3、U4 兩片 74HC138 總使能
ADDR3 = 1; //使能 U3 使之正常輸出
ADDR2 = 1; //經 U3 的 Y6 輸出開啟Q16
ADDR1 = 1;
ADDR0 = 0;
(1){
LED = 0; //點亮小燈
for (i=0; i<30000; i++); //延時一段時間
LED = 1; //熄滅小燈
for (i=0; i<30000; i++); //延時一段時間
}
}
大家把這個程序編譯一下,下載到里,就會發現 LED2 這個小燈會閃爍了。
❸ 編程:控制一盞LED燈的狀態
朋友,你用什麼語言編程?不清楚,就告訴你與單片機的連接和用C語言編寫一個單片機控制LED燈閃爍變化的編程。
這要看Led燈和單片機的連接情況,如果只是控制亮滅,只需要看單片機埠控制即可,關鍵是配置埠的DDRx方向寄存器和PORTx數據寄存器,比如埠A的0引腳控制一個燈,要配置它的輸出高電平或是低電平以達到控制燈的亮滅,那就
燈亮:
DDRA |= BIT(0); //輸出
PORTA |= BIT(0);//高電平
燈滅:
DDRA |= BIT(0); //輸出
PORTA &= ~BIT(0);//低電平
其餘的就看你電路如何連接的,每個埠寄存器的每一位控制一個引腳,你可以查查晶元的數據手冊,上邊有個表格的。
用C語言編寫一個單片機控制LED燈閃爍變化的編程
可以用外部中斷計數,來實現流水燈的正轉、暫停、以及反轉和爆閃。。這是我前幾天寫的一個這樣的程序,樓主可以結合protues 畫圖模擬,注意程序中所用到的IO埠就行了。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
uchar a,b;
void delay(uchar z)
{
uchar i,j,k;
for(i=z;i>0;i--)
for(k=20;k>0;k--)
for(j=110;j>0;j--);
}
void begain()
{
EA=1;
EX0=1;
IT0=1;
}
void main()
{ a=b=0;
P0=0xfe;
begain();
while(1)
{
if(a==1)
{
P0=_crol_ (P0,1);
delay(50);
}
if(a==3)
{
P0=_cror_(P0,1);
delay(50);
}
if(a==4)
{
P0=0x00;
delay(50);
P0=0xff;
delay(50);
P0=0xfc;
}
if(a==5)
{
a=1;
}
}
}
void int0() interrupt 0
{
a++;
if(a==5)
{
a=1;
}
}
❹ LED燈閃爍編程問題
整個邏輯就不對
while(1)
{
led=0;
}
這個程序會在這個循環裡面一直出不去
#include<reg52.h>
sbitled=P1^2;
voidmain()
{
intx,y;
while(1)
{
led=0;//關燈
for(x=100;x>0;x--)//延遲
for(inty=100;y>0;y--)
;
led=1;//開燈
}
}
遇到問題請多分析分析你程序的邏輯。順便多學學基礎知識。。
❺ 8個led燈編程
8個LED流水燈依次循環亮的C語言程序,問題詳細內容為:我用的是PROTUSE做的模擬程序,想讓這8個流水燈依次亮從P0到P7口要它的C語言程序可以在KEILC51裡面運行的,希望在每句C語言後面有個解釋不用WHILE和for語句i高分懸賞我這里有個程序希...我用的是PROTUSE做的模擬程序,想讓這8個流水燈依次亮,從P0到P7口
❻ C語言編程式控制制LED燈亮滅
首先要看Led燈和單片機的連接情況,如果只是控制亮滅,只需要看單片機埠控制即可,關鍵是配置埠的DDRx方向寄存器和PORTx數據寄存器,比如埠A的0引腳控制一個燈,要配置它的輸出高電平或是低電平以達到控制燈的亮滅,那就
燈亮:
DDRA |= BIT(0); //輸出
PORTA |= BIT(0);//高電平
燈滅:
DDRA |= BIT(0); //輸出
PORTA &= ~BIT(0);//低電平
其餘的就看你電路如何連接的,每個埠寄存器的每一位控制一個引腳,你可以查查晶元的數據手冊,上邊有個表格的。
如果你要控制燈的亮暗程度,選擇使用PWM輸出來控制,需要看定時計數器。
❼ 用C語言編寫一個單片機控制LED燈閃爍變化的編程 急用!!!!!!!!!
C語言實現LED燈閃爍控制配套51單片機開發板。
#include //包含單片機寄存器的頭文件
/****************************************
函數功能:延時一段時間
*****************************************/
void delay(void) //兩個void意思分別為無需返回值,沒有參數傳遞。
{
unsigned int i; //定義無符號整數,最大取值范圍65535。
for(i=0;i<20000;i++) //做20000次空循環。
; //什麼也不做,等待一個機器周期。
}
/*******************************************************
函數功能:主函數 (C語言規定必須有也只能有1個主函數)。
********************************************************/
void main(void)
{
while(1) //無限循環。
{
P0=0xfe; //P1=1111 1110B, P0.0輸出低電平。
delay(); //延時一段時間。
P0=0xff; //P1=1111 1111B, P0.0輸出高電平。
delay(); //延時一段時間。
}
}
單片機驅動LED燈的源程序:
#include<reg52.h> //頭文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定義。
void delay_ms(uint);//mS級帶參數延時函數。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延時子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(7)編程led燈擴展閱讀:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料來源:網路-單片機
❽ 求用C語言編程實現51單片機的LED燈移動
#include<reg51.h>
#define uchar unsigned char
sbit c10=P1^0;
sbit c11=P1^1;
sbit c12=P1^2;
sbit c13=P1^3;
uchar led1,led3;
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
uchar keyval=0xff;
led1=0xfe;
led3=0xf8;
while(1)
{
if(c10==0)
{
delay(10);
if(c10==0)
{
while(c10==0);
keyval=0;
}
}
if(c11==0)
{
delay(10);
if(c11==0)
{
while(c11==0);
keyval=1;
}
}
if(c12==0)
{
delay(10);
if(c12==0)
{
while(c12==0);
keyval=2;
}
}
if(c13==0)
{
delay(10);
if(c13==0)
{
while(c13==0);
keyval=3;
}
}
switch(keyval)
{
case 0:
P0=led1;
led1=(led1<<1)|0x01;
if(led1==0xff)led1=0xfe;
delay(100);
case 1:
P0=led1;
led1=(led1>>1)|0x80;
if(led1==0xff)led1=0x7f;
delay(100);
case 2:
P0=led3;
led3=(led3<<1)|0x01;
if((led3&0xf0)==0x30)led3=0x3e;
if((led3&0xf0)==0x70)led3=0x7c;
if((led3&0xf0)==0xf0)led3=0xf8;
break;
case 3:
P0=led3;
led3=(led3>>1)|0x80;
if((led3&0x0f)==0x0c)led3=0x7c;
if((led3&0x0f)==0x0e)led3=0x3e;
if((led3&0x0f)==0x0f)led3=0x1f;
break;
default:break;
}
}
}
❾ 單片機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--);}