導航:首頁 > 操作系統 > 51單片機定時器亮一下

51單片機定時器亮一下

發布時間:2022-06-19 01:20:50

『壹』 51單片機如何使用定時器讓LED亮一會滅一會

用定時器定時20ms,再用軟體計數25次,計滿後用一條口線執行一條CPL指令即可,比如說:CPL P1.0。
如有幫助請採納,或點擊右上角的滿意,謝謝!!

『貳』 怎樣用51單片機定時器點亮一個led燈

sbit LED =P1^0;//定義LED管腳
uchar a=0;//計中斷次數的變數
void main(void)
{
TMOD=0x10; //定時器1工作在定時方式1
TH1=(65536-50000)/256; //定時50毫秒
TL1=(65536-50000)%256;
ET1=1;EA=1;
TR1=1;
while(1);
}
void timer1(void) interrupt 3//中斷子程序
{
TH1=(65536-50000)/256; //定時50毫秒
TL1=(65536-50000)%256;
a++;
if(a==20){a=0;LED=!LED;}//20次是1s LED亮滅
}

『叄』 51單片機如何用一個定時器當多個延時電路用, 就是按下開關一 ,亮三秒。 按下開關二,燈泡亮五秒。

沒想法就不會有創新,你的想法就很好。像這種亮燈的程序,對時間要求不是那麼嚴格(如果極其嚴格就沒法實現),那麼可以採用如下方法實現你的要求:
//假設晶振12MHZ,按鍵輸入P1.0,P1.1,P1.2;LED控制P2.0,P2.1,P2.2,都是低電平有效
#include "reg51.h"
unsigned int YSJS1=0;
unsigned int YSJS2=0;
unsigned int YSJS3=0;
sbit KEY1=P1^0;按鍵
sbit KEY2=P1^1;按鍵
sbit KEY3=P1^2;按鍵
sbit LED1=P2^0;燈
sbit LED2=P2^1;燈
sbit LED3=P2^2;燈
void Timer1Init(void) //500微秒@12.000MHz
{
AUXR &= 0xBF; //定時器時鍾12T模式
TMOD &= 0x0F; //設置定時器模式
TMOD |= 0x10; //設置定時器模式
TL1 = 0x0C; //設置定時初值
TH1 = 0xFE; //設置定時初值
TF1 = 0; //清除TF1標志
ET1 = 1; //使能定時器1中斷
TR1=1; //定時器1開始計時
EA =1; //開總中斷
}
void main(void)
{
LED1=1;
LED2=1;
LED3=1;
KEY1=1;
KEY2=1;
KEY3=1;
Timer1Init()
while(1)
{
if(KEY1==0)
{
YSJS=6000;
LED1=0;
}
if(KEY2==0)
{
YSJS=10000;
LED2=0;
}
if(KEY3==0)
{
YSJS=16000;
LED3=0;
}
}
}

void TIMER1(void) interrupt 3 //定時器1中斷函數使用默認寄存器組
{
TH1 = 0XFE; //定時器1定時時間=500us
TL1 = 0X0C;

if(YSJS1!=0)
{
YSJS1--;
}
else LED1=1;
if(YSJS2!=0)
{
YSJS2--;
}
else LED2=1;
if(YSJS2!=0)
{
YSJS2--;
}
else LED2=1;
}

『肆』 用定時器實現51單片機上LED燈每隔兩秒亮暗閃爍

你用的是幾個燈啊?比如說8個燈吧,用p0口,
就是直接講p0口與led直接相連就行了啊,注意led的另一端要接在一起,共地或者高電平都可以,但是為了保護led,最好在每個小燈上串上一個電阻(若單片機採用的是5v電壓,電阻可選用500歐左右的就可以了),以減小通過led的電流。剩餘的就是單片機的最小系統了,沒什麼好說的吧,就是晶振,復位而已。
程序嘛,也很簡單啊,你說用定時器,每個兩秒如果單純用一個定時器的話肯定不夠用的,要結合循環判斷語句,比如你採用12m的晶振,並且將定時中斷時間定為50ms,那麼設置一個變數,每20次就是一秒了,所以40次就是兩秒。這樣的話,每個40次就讓led的狀態(用0和1表示亮與滅)改變就可以了。main函數中應該設置一個死循環函數,可用while(1),讓單片機不斷的循環工作。

『伍』 用51單片機的定時器實現LED燈逐一點亮,間隔一秒。要求撥動控制開關可以控制燈的方向。

嘿嘿 這個俺可以幫你解答
1 利用定時計數器0 工作在方式2 定時50毫秒 結合軟體計數器(初始值選20)
允許定時計數器中斷
2 設計一個定時器0的中斷服務程序 每50毫秒 就中斷 在中斷程序中軟體計數器減1
當減到0時,表示1秒時間到 (重新送初始值20)
判斷撥動開關狀態 如果為低低電平 則選擇控制LED的埠內容左移一位
如果為高低電平 則選擇控制LED的埠內容右移一位
即可實現對流水燈的方向控制。

呵呵 滿意 就選滿意回答哦

『陸』 51單片機用定時器,怎麼編程流水燈一秒閃爍一次,

先寫一個延時子函數delay,延時時間1秒。然後寫LED=0;delay(1);LED=1;這樣就可以做到一亮一滅,再把這段程序加入到循環中就可以,循環函數很簡單不用再說了吧,如果還不懂回復我給你程序

『柒』 51單片機定時器定時 2秒燈亮 3秒燈滅,如此循環

如果想實現無限循環那就採用死循環方式,可以無限的循環如while(1){};然後設定定時器定時時間為1s(此值需要根據單片機確定是否可以設定這么大),其次,設定一個變數對時間進行計數,根據計數情況做出相應的改變,程序可以這樣設定:
unsigned
char
gucledstatus
=
0x00;
//全局變數,表示燈當前的狀態
0為滅,1為亮
volatile
unsigned
int
gustimecnt;
//全局變數對時間計數
int
main()
{
//增加定時器初始化並開放中斷
while(1)
{
if(gucledstatus
==
0x01)
//當前為亮狀態
{
if(gustimecnt
>=
7200)
//兩個小時時間到
{
gustimecnt
=
0x00;
//清零
gucledstatus
=
0x00;
//燈為滅狀態
//此處加程序代碼,控制燈為滅的狀態
}
else
{
//此處加程序代碼,控制燈為亮的狀態,此處會重復執行,可以進行控制
}
}
else
if(gucledstatus
==
0x00)
//燈為滅的狀態
{
if(gustimecnt
>=
3600)
//1個小時
{
gustimecnt
=
0x00;
gucledstatus
=
0x01;
//亮狀態
//增加程序代碼,控制燈亮
}
else
{
//增加程序代碼,控制燈滅,此處會重復執行,可以進行控制
}
}
}
return
0;
}
在中斷函數中,對gustimecnt進行遞增即可!

『捌』 51單片機 定時器問題 (LED小燈 每隔一秒亮滅一次)

TF0 初始值為0。

TR0 = 1; //啟動計數器0
啟動後,TH0TL0就會自動加一。

如下:
B800
B801
B802
……
當加到0000時,TF0就自動為1。

『玖』 51單片機 定時器

試分析你的程序。你的time0中斷裡面只有pp++,也就是在第一次滅了以後,pp是20000,而這個時候你沒有對pp清零,pp還會一直+下去,20001,20002,20003……一直循環下去,如果p變數無界的話,你這個程序就只能亮一次,滅一次,以後就再也亮不起來了,但為什麼過了好多秒又亮了呢?因為pp的類型是uint,可以查得uint型變數的最打值是65535,如果pp=65535的時候,再+1的話,pp就變成了0,而這個時候再過1秒鍾,LED就亮了起來了,而pp從20000到65535需要大概4.5秒,再從0到10000又需要大概1秒,所以需要大概5.5秒!
改正方法:
再你的time0中斷里加入判斷,如果pp>20000,則將pp清零,也就是在pp++後加入
if (pp>20000) pp=0;
這樣應該就正常了,試驗一下吧,如果對您有用,請麻煩點擊一下【採納】,你我才都能得到知道經驗,謝啦~

『拾』 求實現51單片機按下按鈕LED燈亮1秒後熄滅

外部中斷的優先順序是高於定時器中斷的。首先是觸發外部中斷嘛,在外部中斷程序裡面開定時器中斷,定時器設置為50ms,這個直接裝初值大概46000(晶振12m)的樣子,具體你自己算一下。然後在調用定時器中斷程序裡面肯定是要有個標志位的,這個標志位會累加n個定時器時間直到8s,然後在這個定時器中斷程序裡面不斷檢測3.2口電平就行了,如果變回高電平就把燈在點亮(比如在這句直接將flag賦到設定的技術最大值)就行了。最好用下降沿觸發,低電平觸發容易出問題總感覺,可能你程序邏輯是完全正確的,但是模擬或者實物的時候會出問題。

閱讀全文

與51單片機定時器亮一下相關的資料

熱點內容
南詔pdf 瀏覽:745
windows如何代碼bat啟動伺服器 瀏覽:454
軟體太卡與伺服器有什麼關系 瀏覽:402
給心理治療師pdf 瀏覽:218
robinhood加密交易條件 瀏覽:310
衛生間解壓方法 瀏覽:450
u盤如何做加密文件放照片 瀏覽:329
文件夾自己加了exe 瀏覽:259
小豬cms直播系統源碼 瀏覽:878
山東廣電雲伺服器 瀏覽:354
javadate與mysqldate 瀏覽:244
javalong比較 瀏覽:11
加密大師看不見加密文件 瀏覽:307
想做一個業余程序員 瀏覽:793
python選出行 瀏覽:249
cat命令windows 瀏覽:910
python算術游戲 瀏覽:532
常微分方程第二版pdf 瀏覽:25
phpJava學多久 瀏覽:724
php博客畢業設計 瀏覽:796