A. 單片機八個燈同時亮程序
摘要 在STM8S003單片機上,PB5口接LED燈負極,循環給PB5口賦0和1,控制LED燈閃爍。
B. 單片機控制8個led燈交替點亮的程序
#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //點亮第一個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //點亮第二個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //點亮第三個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //點亮第四個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //點亮第五個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //點亮第六個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //點亮第七個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //點亮第八個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}
或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循環點亮LED
w<<=1; //點亮燈的位置移動,最低位補0
w=w|0x01; //將最低位置1
delay(500); //延時
}
}
}
或:
#include "reg51.h"
//程序中使用_crol_函數,所以要包含頭文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延時
temp=_crol_(temp,1); //點亮LED的位置循環左移一位
}
}
C. 設計一個具有8個LED燈,要求從右向左依次點亮一秒後熄滅,循環往復的單片機程序。跪求
#include"reg52.h"//此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16;//對數據類型進行聲明定義
typedef unsigned char u8;
//LED燈命名
sbit leda=P0;
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit led6=P0^5;
sbit led7=P0^6;
sbit led8=P0^7;
void delay(u16 i)
{
while(i--);
}
void main()
{
while(1)
{
leda=1;//全部燈亮
//從左到右依次熄滅
led1=0;
delay(50000);//大約延時450ms
led2=0;
delay(50000);//大約延時450ms
led3=0;
delay(50000);//大約延時450ms
led4=0;
delay(50000);//大約延時450ms
led5=0;
delay(50000);//大約延時450ms
led6=0;
delay(50000);//大約延時450ms
led7=0;
delay(50000);//大約延時450ms
led8=0;
delay(100000);//大約延時900ms
//從右到左依次點亮
led8=1;
delay(50000);//大約延時450ms
led7=1;
delay(50000);//大約延時450ms
led6=1;
delay(50000);//大約延時450ms
led5=1;
delay(50000);//大約延時450ms
led4=1;
delay(50000);//大約延時450ms
led3=1;
delay(50000);//大約延時450ms
led2=1;
delay(50000);//大約延時450ms
led1=1;
delay(50000);//大約延時450ms
leda=1;//全部燈亮
}
}
main()應用:
1、C++中的main函數
C++繼承了C語言的大部分特性,因此保留了「程序總是從main函數開始執行,且總是默認從main函數的return語句或結尾處結束運行」這一傳統,
但是要注意,C++中的main函數要想作為程序執行的出入口,必須寫在全局(Global)范圍,不能寫成某個結構體或某個類的成員。
雖然main函數可以作為結構體或者類的成員函數,但相應地會失去作為程序出入口的功能。
C++中全局main函數的書寫格式與C語言完全相同,功能也完全相同,且同一C++程序同樣只能有一個全局main函數。
2、java中的main函數
Java同樣是以main函數作為程序執行出入口的,但Java作為「更純潔」的面向對象語言,它的main函數與C/C++有很大的不同。
首先,返回值的概念淡化,在Java Application中main不允許返回值,因此int main是被禁止的,必須使用void main,int main僅限在JavaBean中使用。
其次,Java中所有的函數必須屬於類,沒有什麼全局函數一說,因此main函數不能是全局成員,必須是某個類的成員。
第三,由於main函數變成了類的成員函數,因此要想直接被系統調用,還必須使用public static使其成為靜態函數並具有公開許可權。
第四,main函數的參數被簡化,只需要提供字元串數組即可,不需要提供參數個數(這是由於Java的數組具有下標檢查功能的原因)
Java Application中的main函數一般格式如下(類名可以自定義,但保存為Java源碼時,主文件名必須與類名相同,否則可能無法運行)
public class MainDemo{
public static void main(String[]args){
//TODO:在此處寫入主函數的內容
}
}
Java Applet的運行機制與Java Application完全不同,因此不需要main函數
3、C#中的main函數
C#中的main函數與Java大同小異,同樣必須是類成員,同樣使用字元串數組作唯一參數,同樣是靜態函數,同樣的void main,
與之不同的是:main的首字母變成了大寫,即"Main函數「,且是否限定為public級別已經無所謂了(默認沒有public,但某些場合可能還是需要public)
另外,需要注意的是,C#中不再有」類名必須與主文件名同名「的限制,即使類名不和主文件名相同,程序照樣可以運行。
C#應用程序中的main函數默認是這樣的(注意main的首字母已是大寫)
C#和C/C++、java不同的是C#不在拘泥於必須從main()函數開始執行,C#是屬於事件觸發。
class Program{
static void Main(string[]args){
//TODO:在此處寫入主函數的內容
}
}
D. 怎麼用單片機做出8個LED同時亮,但亮度不同的流水燈
假如說,第一個燈肯定比第二個燈亮的話,可以直接把8個LED燈的限流電阻弄成不同阻值的。就像樓上說的那樣。
但如果想隨便變換不同的燈都能有不同的亮度話,硬體電路可以不變,限流電阻都一樣。可以在程序里這樣寫:
首先,例如你要最亮的燈先點亮,隔幾十微秒後點亮第二個燈,再相隔同樣時間點亮第三個燈……依次類推間隔一定時間點亮八個燈。但間隔時間不要太大,超過十幾毫秒就不行了。
然後再間隔相同的時間一次性把燈全關了,再間隔幾十微秒回到上面的狀態依次點亮燈。……一直這樣循環。
這樣的話因為人的視力有一定的滯回效果,只要間隔時間不大,你就能看到八個燈不是閃的,而是同時亮,但亮度又不一樣。
這是單片機設計中,PWM控制的思路。
E. 51單片機怎麼編寫程序同時點亮8個LED燈
首先,你的電路圖沒有給出來,管腳是什麼? 其次,我建議還是自己嘗試寫一寫,這個不難,我給你個思路 首先定義變數類似於P1_2 = P1^2這種,先把這八個管腳全部定義好,之後給個for循環,讓P1(假設的你LED燈連接的是P1口)口的P1^0~P1^7相關標
F. 單片機C語言,將8個燈依次點亮(被點亮的繼續亮),然後再依次熄滅,(在沒有熄滅完時熄滅的保持滅)
其次,我建議還是自己嘗試寫一寫,這個不難,我給你個思路
首先定義變數類似於P1_2 = P1^2這種,先把這八個管腳全部定義好,之後給個for循環,讓P1(假設的你LED燈連接的是P1口)口的P1^0~P1^7相關標志位依次等於0或者1(0還是1需要看你在LED等上給的是高電位亮還是低電位亮),之後再給個for循環,五次的循環,全部P1口置為1(假設高電平LED亮),之後設置P1口全為1,再讓P1口的相關標志位置為0,再置為0的時候可以加個延時
G. 51單片機如何控制8個led程序
#include<reg51.h> 包含單片機專用頭文件
#include<intrins.h> 這個是什麼俺也不知道,但這個程序不需要這個頭文件
void Delay10ms(unsigned int c); 自定義的延時函數聲明
main() 主函數
{
unsigned int LED; 建立一個數值型變數,變數名 LED
LED=0xfe; 給這個變數賦值,0xfe 換成二進制數為 1111 1110
while(1) 主循環
{
P2=LED; 點亮發光管,即先點亮右邊的第一個
Delay10ms(50); 延時一段時間
LED=LED<<1; 點亮的發光管,向左移動一位
if (P2==0x00) 判斷是否8個全部點亮了
{
LED=0xff; 如果全部點亮,則將全部發光管熄滅
}
}
}
void Delay10ms(unsigned int c)延時函數主程序
{
unsigned char a, b;建立兩個變數 a b
for(;c>0;c--)循環語句,不斷改變變數數值,已達到延時目的
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
給你翻譯了,希望能幫到你
H. 求單片機設計8個led燈同時閃爍的程序,
請設計一個8個led同時全部閃爍的程序
#include <reg51.h>
main ()
{int i;
while (1)
{for (i=0;i<=30000;i++);
P1=~P1;
}
}