A. 單片機怎麼寫才能讓led燈每隔5秒亮下一個並且數碼管一直從5到0顯示倒計時
設為共陽極七段數碼管;
char segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //共陽極七段碼
char bitCode[]={0x01,0x02,0x04,0x08,0x10,0x20} //共陽極6位位碼,高電平有效
/***在指定位顯示數據***/
// m為待顯示的七段碼數據
// k為指定的位顯示數據
void show(char m,char k)
{ char dat;
dat = segCode[m]; // m=0,1,2,3,4,5,6,7,8,9
HC573(dat,1); //輸出段碼
dat = bitCode[k]; // k=0,1,2,3,4,5
HC573(dat,2); //輸出位碼
}
sbit segm = P2^6; //段鎖存
sbit bitc = P2^7; //位鎖存
/*** HC573 接收鎖存數據***/
void HC573(char dat,char nub)
{
P0=dat;
if(nub==1)
{ segm=1;segm=0;} //輸出段鎖存信號
if(nub==2)
{ bitc = 1;bitc = 0;} //輸出位鎖存信號
}
bit intflag;
void main()
{ char times;
intflag=0; times=5;
P1=0xff;
initime0() ; //初始化定時器0
while(1)
{ if(intflag)
{ intflag=0 ;
show(times,0) ; // 因為僅有一位顯示,不考慮位掃描問題
times--;
if(times==0) { times=5; P1=~P1; }
}
}
}
B. 用單片機中斷控制LED閃爍
假設counter3每秒計數一次,並且一直不斷的 自身加1
bit f; ///定義一個標志位,0表示亮,1表示滅
f=0;
if(100<m&&m<125) ///我不清楚你這個m變化的過程,有可能會影響以下代碼的執行
{
if(f==0)
{
if(counter3==3)
{
f=1;
led2=1; // LED2亮燈3秒後熄燈
counter3=0;
}
}
if(f==1)
{
if(counter3==4)
{
f=0;
led2=0; // LED2熄燈4秒後亮燈
counter3=0;
}
}
}
C. 單片機控制單個LED閃爍五下的c程序,希望能加講解,謝謝啦
c語言程序很簡單:
#include<reg51.h>//包含頭文件
sbit LED=P1^0;//位變數定義
void main()//主程序
{
unsigned char i;//聲明一個變數
for(i=0;i<5;i++)/循環5次
{
LED=0;//亮
delayms(500);//延時
LED=1;//滅
delayms(500);//延時
}
while(1);//停止不動
}
延時子程序隨便搜一個,如果時間差別太大,可調某些參數
D. 在52單片機上實現:點亮任意一個LED,先以1HZ的頻率閃爍5秒,再以100HZ的頻率閃爍5秒,以此循環.
大體思路:設P0^0控制LED的亮滅,當P0.0=0時燈點亮。有兩種閃爍方式,可以讓1HZ的在main()函數里閃爍。然後開個定時器,讓100HZ的在定時器中斷里閃爍,就行了。
1HZ就是1S亮一次,100HZ是10ms亮一次
#include<reg52.h>
void delay(int x)
{
時間是5ms;
}
void timer1()interrupt 1 定時器0中斷
{
static unsigned int a;
unsigned int b;
if(++a==5) 看是否到了5S
{
TR0=0;先把定時器關了,防止在送段運行時再次進入中斷。
a=0;
for(b=1000;b>0;--b)
{
P0.0=0; 讓燈亮滅的間隔為5MS。一共閃5S
delay(1);
p0.0=~p0.0;
delay(1);
}
}
TH0=XX; 再次 設置好定時器,讓它每隔1S進一次中斷;
TL0=XX;
TR0=1;
}
void main()
{
TH0=XX; 設置好定時器,讓它每隔1S進一次中斷;
TL0=XX;
TR0=1;
while(1)
{
P0.0=0; 燈開始以500ms為間隔開始亮滅。
delay(100);
p0.0=~p0.0;
delay(100);
}
}
E. 用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--);
}
(5)用單片機控制一個led燈閃爍五秒擴展閱讀:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料來源:網路-單片機
F. 51單片機怎麼只控制一顆LED燈閃爍
1、新建項目,如圖所示。
注意事項:
很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。
G. 51單片機led燈亮一秒停五秒程式怎麼寫
void delay_s(unsigned char t);
void main()
{
while(1)
{
led = 1;//led 亮
delay_s(1);//延時1s
led = 0;//led 暗
delay_s(5);//延時5s
}
}
這是主循環,你要把delay_s()這個延時函數補充進去,另外,led亮和暗的電平你得根據你得具體電路看是1亮還是0亮。
H. 求單片機c51的C語言編程:設當開關為1時,控制2個led交替閃爍,閃爍時間為5秒
#include#,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==0xff)l