導航:首頁 > 操作系統 > 51單片機中斷點燈

51單片機中斷點燈

發布時間:2023-04-13 01:33:19

A. 51單片機通過外部中斷和開關控制LED閃亮

是岩核瞎不是按一下開關觸發中斷粗空,使LED閃爍,氏薯再按一下,LED熄滅?
LED EQU P1.0
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXT0
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-41667)
MOV TL0,#LOW(65536-41667)
SETB ET0
SETB EA
SETB EX0
SETB IT0
CLR A
SJMP $
EXT0:
CPL TR0
RETI
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-41667)
MOV TL0,#LOW(65536-41667)
SETB TR0
INC A
CJNE A,#4,T0E
CLR A
CPL LED
T0E:
RETI
END

B. 51單片機外部中斷0流水燈設計

以下是根據題目要求撰寫的AT89S52單片機匯編語言程序,用於控制8個發光二極體由上而下或由下而上手高輪流點亮:
; 定義常量DELAY_TIME equ 1000 ; 延時時間為1秒LED_NUM equ 8 ; 發光二極體數目為8; 定義埠地址P1 equ 90h ; 定義P1口為90h; 初始化程序
org 0
ljmp main; 函數:延時指定時間(以1毫秒為單位)delay:
push acc ; 保存寄存器現場
push b push dptr mov dptr, #DELAY_TIMEdelay_1:
mov b,#2 ; 預置初值delay_2:
djnz b,delay_2 ; 倒計時
djnz dptr,delay_1 pop dptr ; 恢復寄存器現場
pop b pop acc ret ; 返回調用程序; 主程序main:
mov P1, #0FFh ; 將P1所有引腳設置為輸出,LED全部熄滅
mov R1, #LED_NUM ; 初始化計數器loop:
clr c ; 清零進位標志
mov A, #7Fh ; 將始發位置設為P1.7處
rrc A ; 位置右移一位
add A, R1 ; 加上族禪計數器值
clr P1.7 ; 關閉首燈

; 將位置A的引腳設置為高電平,打開對應LED燈
mov P1, A
cjne R1, #1, next
; 若計數器為1,則改變點亮方向
mov R2, #1
mov R3, #1 wait:
call delay ; 延時
djnz R3, wait
; 改變計數器值
add R1, R2
anl R1, #0fh
sjmp loopnext:
dec R1
sjmp loop

該程序通過輪流點亮8個發光二極體,並且每次按下K1後,點亮的方向會反轉。其中,利用了延時函數wait和循環計數器R1、R2和R3來實現輪流點亮和切換方向的功能。請注意設置埠P1為輸出方式。如果需要對程序進行優化,可以使用定時器中斷代替程序延時函數,以提高程序的可靠性和穩定性。
大家點點關注,後續有疑問可畢穗尺直接評論區問我,有空的話會給大家整理更詳細的信息~

C. 51單片機 我想要用串口中斷實現流水燈的點亮 我這個代碼為什麼實現不了 流水燈不變

可能是數字的問題,如果是以十進制方大做式發送的話1相當於0x31,所以你將串口助手裡盯吵面的格式改為凱仿侍16進制。

D. 51單片機定時中斷控制燈亮度怎麼調

1、在設置好TCON(IT0/1=0/1)寄存器,IE寄存器後旁冊當設定的外部中斷電平被拉低時會執行中斷程序,中斷程序執旅皮行完畢後回到原程序執行處繼續執行。
2、外部中斷TCON設置:IT0/1=0(低電平觸發:持續低電運鎮宏平則一直持續觸發中斷)/1(負跳沿觸發:電平被拉低後執行中斷程序,中斷程序執行完畢後返回之前程序運行到的位置)。

E. 51單片機定時中斷控制燈亮度怎麼調

51單片機怎坦唯樣控制LED的光亮度

pwm,用定時器T1溢出做pwm周期,在每次T1開始計數時觸發輸出,軟體邊增1計數邊檢查溢出標志。如果軟體計數滿則清輸出,否則直到溢出清輸出、清軟體計數滿值。改變軟體計數滿值就能改變亮度。

51單片機輸出pwm波控制led燈亮度

頻率50HZ,周期是20ms

看你調節的精度 如定時器定時1ms,高電平寬度一次變化是5%

如果想要調節精度脊旁高,定時器定時時間小,就要頻繁地發生中斷,會影響主程序的運行

如 要求占空比每步調節為1%,則定時器就要定時200us,對於CpU的影響就比較大了

這時自動重裝模式可以縮短中斷程序佔用時間,但如果再提高PWM的頻率,自動重裝模式也十分吃力,因此許多增強型51單片機有硬體PWM功能

單片機控制led亮度

LED是電流控制器件, 而不能說成電壓控制,調節電壓的大小也能控制啊(電壓越大亮度超高),

1、PWM是脈沖寬度調制信號,注意其中的「寬度」,就是脈沖的高電平的時間。PWM信號調節LED亮度時,信號頻率是不變的,改變的是脈沖的高電平的時間,即LED的導通時間。這種信號調節亮度相當於調節LED的平均電流,所以電流會變化。

2、從LED的V-I特性可知,其曲線是非線性的,0.1V的電壓可造成100~200mA的If的變化,不易控制;另外,LED具有負溫度系數特性,所以,一般將LED說成是電流控制型器件。至於你將讓野培LED串接在電源模塊上,當輸出電壓恆定時,是恆壓源驅動LED吧,這樣調節LED亮度時,需要對輸出電壓進行分壓,以降低LED的壓降才能改變其亮度,恆壓源的電流是有一個最大輸出值的,不能調節的,不知你用什麼方法調節其輸出電流的?

3、用MCU比較方便,成本是稍高,也可以用模擬電子線路產生相應的PWM信號。

F. 51單片機兩個定時器中斷寫了個呼吸燈程序,怎麼調試出來是小燈閃爍程序,新手求指教。

程序太亂,只用一個定時器就可以
如定時100us 中斷一次 20次是2 ms 即周期是2 ms
中斷一次計數變數a加一,並且與另一變數b(1到20)比較,如果a>b,則輸出高電平,反之則輸出低電平 a=20時清0
主程序中可不斷改變b的值,先由大到 小 再由小到大,就是呼吸燈了
如延時200ms改變一次b的值 則呼吸周期大約是8秒

G. 51 單片機上電後自動進中斷

你可以把低電平觸發變換為下降沿觸發,如拍乎這樣不容易誤觸發,而且賀汪一次下降沿就觸發一次,渣悉不會重復進入中斷,你可以試試

H. 匯編語言 51單片機,外部中斷控制流水燈

ORG 0000H ; 試試這個 流水燈的編碼隨便改

LJMP MAIN

ORG 0003H

LJMP LINT0

ORG 000BH

LJMP LT0ZD

ORG 0030H

MAIN: MOV SP, #60H

MOV TMOD, #00H

MOV IE, #81H

MOV TL0, #(8192-2500)MOD 32

MOV TH0, #(8192-2500)/32

SETB TR0

MOV R5, #20

LOOP: MOV R3, #48

CJNE R3, #0, $

LJMP LOOP


LINT0: CPL ET0

RETI


LT0ZD: PUSH PSW ; T0 中斷

PUSH ACC

MOV TL0, #(8192-2500)MOD 32

MOV TH0, #(8192-2500)/32

DJNZ R5, LT0Z2

MOV R5, #30 ; 可以調整速度

MOV A, R3

LCALL LSDIN

MOV P1, A

DEC R3

LT0Z2: POP ACC

POP PSW

RETI


LSDIN: MOVC A,@A+PC

RET


LSDBM: DB 11111110B,11111101B,11111011B,11110111B ; 流水燈的編碼1

DB 11101111B,11011111B,10111111B,01111111B

DB 01111111B,10111111B,11011111B,11101111B

DB 11110111B,11111011B,11111101B,11111110B

DB 11111100B,11111001B,11110011B,11100111B ; 流水燈的編碼2

DB 11001111B,10011111B,00111111B,01111110B

DB 01111110B,00111111B,10011111B,11001111B

DB 11100111B,11110011B,11111001B,11111100B

DB 11111000B,11110001B,11100011B,11000111B ; 流水燈的編碼3

DB 10001111B,00011111B,00111110B,01111100B

DB 01111100B,00111110B,00011111B,10001111B

DB 11000111B,11100011B,11110001B,11111000B

END

I. 51單片機按鍵中斷控制流水燈

按鍵接在外中斷腳上,外中斷觸發模式設為下降沿模式,即 IT0=1;或 IT1=1; ,在中斷函數里調用流水燈函數或直接把代碼寫在中斷函數里

J. 高分求:51單片機外部中斷,燈先從左往右亮,第一次有按鍵按下在從右往左亮,第二次有按鍵按下從左往右

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar i,a,b=0,c=0,num;

void Delay(uint x)//延時函數
{
uchar s;
while(x--)
{
for(s=125;s>0;s--);
}
}

void main()
{
a=0x01;
P2=a;
EA=1;//開總中斷
EX0=1;//開外部中斷0
IT0=1;//跳變沿觸發
for(i=7;i>0;i--)//上電後燈先從左向右亮
{
Delay(100);
a=_crol_(a,1);
P2=a;
}
while(1);
}

void Init0() interrupt 0
{
b++;
c++;
if(b==0)//檢測是否按薯行鍵
return;
b=0;//按鍵後置0
if(c&0x01)//如果是奇數鍵沖次按鍵,給num賦值為0
num=0;
else//如果是偶數次按鍵,給num賦值為1
num=1;
switch(num)
{
case 0:
for(i=7;i>0;i--)//燈從右向左亮
{
a=_cror_(a,1);
P2=a;
Delay(100);
}break;
case 1:
for(i=7;i>0;i--)//燈從左向右亮
{
a=_crol_(a,1);
P2=a;
Delay(100);
}break;
}
}

剛寫完 模擬也OK 不知道稿手殲能否幫助到你

閱讀全文

與51單片機中斷點燈相關的資料

熱點內容
程序員亂碼是什麼意思 瀏覽:370
交友app怎麼刪除動態 瀏覽:88
男士穿衣哪個app好 瀏覽:34
如何把桌面軟體改造成app 瀏覽:740
我的世界如何打開最近玩的伺服器 瀏覽:382
程序員試用期匯報問題協助怎麼寫 瀏覽:129
抖音演算法到底是什麼 瀏覽:128
哪個vlan技術對報文加密 瀏覽:570
單片機定時電路 瀏覽:674
山西平台伺服器雲主機 瀏覽:700
按摩肚臍解壓視頻 瀏覽:991
php55安裝教程 瀏覽:139
雲伺服器怎麼查找本機域名 瀏覽:22
qd123y壓縮機參數 瀏覽:385
程序員媽媽懷孕 瀏覽:490
金普國際編程 瀏覽:539
java什麼是引用類型 瀏覽:946
這是命令嗎txt 瀏覽:316
支付寶android包名 瀏覽:156
eclipsemaven命令 瀏覽:68