找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1490|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)呼吸燈程序沒(méi)看明白

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1068108 發(fā)表于 2023-4-16 19:37 來(lái)自手機(jī) | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用的是stc15的芯片 ,程序沒(méi)看明白(希望可講解一下),這個(gè)程序只能從亮到暗,有沒(méi)有什么辦法是它循環(huán)起來(lái)(謝謝大家)

1681644894033.jpg (659.98 KB, 下載次數(shù): 47)

1681644894033.jpg

1681644945677.jpg (668.16 KB, 下載次數(shù): 47)

1681644945677.jpg

1681644972677.jpg (671.05 KB, 下載次數(shù): 43)

1681644972677.jpg

1681644988272.jpg (569.88 KB, 下載次數(shù): 47)

1681644988272.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1072104 發(fā)表于 2023-4-16 20:12 | 只看該作者
#include<STC15.h>

#define LED_PIN P1_0

void init_PWM() {
    TMOD |= 0x01; // 定時(shí)器0設(shè)置為16位定時(shí)器模式,以供PWM使用

    ET0 = 1; //打開定時(shí)器中斷
    TR0 = 1; //啟動(dòng)定時(shí)器
}

void delay_nms(unsigned int n) { // 毫秒級(jí)延時(shí)函數(shù),可根據(jù)實(shí)際情況調(diào)節(jié)
    unsigned int i,j;
    for (i=0; i<n; i++) {
        for (j=0; j<125; j++);
    }
}

void main() {
    unsigned char duty_cycle = 0; // 占空比,默認(rèn)為0
    unsigned char flag = 0; // 標(biāo)志變量,用于判斷遞增還是遞減
    init_PWM();
    while(1) {
        if(!flag) {
            duty_cycle++;
            if(duty_cycle == 255) {
                flag = 1;
            }
        } else {
            duty_cycle--;
            if(duty_cycle == 0) {
                flag = 0;
            }
        }
        LED_PIN = (duty_cycle == 0 || duty_cycle == 255) ? 0 : 1; // 避免輸出高電平或低電平長(zhǎng)時(shí)間照成LED損傷
        delay_nms(10); // 延時(shí)10毫秒,可根據(jù)實(shí)際需求做出適當(dāng)調(diào)整
    }
}

void timer0() interrupt 1 {
    TH0 = 245; // 修改定時(shí)器初值
    TL0 = 245;
    PWM_OUT = duty_cycle; // 修改PWM占空比
}
在上述代碼中,循環(huán)呼吸燈的周期為500ms,可在 delay_nms() 函數(shù)中根據(jù)實(shí)際情況進(jìn)行調(diào)整。同時(shí),在 main() 函數(shù)中使用 flag 變量控制 duty_cycle 的遞增和遞減,從而實(shí)現(xiàn)循環(huán)呼吸燈的效果。在 timer0() 中斷服務(wù)函數(shù)中,修改定時(shí)器初值并根據(jù)當(dāng)前占空比設(shè)置 PWM 輸出。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1068108 發(fā)表于 2023-4-16 22:33 來(lái)自手機(jī) | 只看該作者
張大炮ie 發(fā)表于 2023-4-16 20:12
#include

#define LED_PIN P1_0

謝謝大佬
回復(fù)

使用道具 舉報(bào)

地板
ID:1068108 發(fā)表于 2023-4-17 00:38 來(lái)自手機(jī) | 只看該作者
張大炮ie 發(fā)表于 2023-4-16 20:12
#include

#define LED_PIN P1_0

我想再問(wèn)一下,怎么讓它和通過(guò)ad獲得的光敏電阻值結(jié)合,就是用光敏電阻的值去控制led的亮暗(值越小,燈越暗,值越大,燈越亮)
回復(fù)

使用道具 舉報(bào)

5#
ID:584814 發(fā)表于 2023-4-17 11:14 | 只看該作者
1234590qwehjm 發(fā)表于 2023-4-17 00:38
我想再問(wèn)一下,怎么讓它和通過(guò)ad獲得的光敏電阻值結(jié)合,就是用光敏電阻的值去控制led的亮暗(值越小,燈 ...

將AD值與占空比進(jìn)行關(guān)聯(lián)就可以。
回復(fù)

使用道具 舉報(bào)

6#
ID:1068108 發(fā)表于 2023-4-17 12:07 來(lái)自手機(jī) | 只看該作者
man1234567 發(fā)表于 2023-4-17 11:14
將AD值與占空比進(jìn)行關(guān)聯(lián)就可以。

這個(gè)獲取的AD值怎么轉(zhuǎn)換,怎么看自己用的是多少位的ad
回復(fù)

使用道具 舉報(bào)

7#
ID:1068108 發(fā)表于 2023-4-17 16:35 來(lái)自手機(jī) | 只看該作者
1234590qwehjm 發(fā)表于 2023-4-17 12:07
這個(gè)獲取的AD值怎么轉(zhuǎn)換,怎么看自己用的是多少位的ad

好的,謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表