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

QQ登錄

只需一步,快速開始

帖子
查看: 13204|回復(fù): 47
收起左側(cè)

怎樣使得單片機(jī)的LED燈閃爍又不影響主程序運(yùn)行?

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 25 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:222821 發(fā)表于 2018-8-11 16:12 | 顯示全部樓層 |閱讀模式
51單片機(jī)問題,緊急求助!
怎樣使得單片機(jī)的LED燈閃爍又不影響主程序運(yùn)行???
我想通過單片機(jī)接收串口命令讓一個(gè)LED燈閃爍,但同時(shí)又不影響其他程序的運(yùn)行,應(yīng)該怎樣去寫這個(gè)程序呢?
回復(fù)

使用道具 舉報(bào)

ID:385298 發(fā)表于 2018-8-11 16:46 | 顯示全部樓層
用中斷來實(shí)現(xiàn)啊,在串口程序中觸發(fā)LED閃爍的標(biāo)志位,定時(shí)器中斷監(jiān)控這個(gè)位,并根據(jù)定時(shí)時(shí)長來改變LED狀態(tài)。
回復(fù)

使用道具 舉報(bào)

ID:384109 發(fā)表于 2018-8-11 16:55 | 顯示全部樓層
使用定時(shí)器來控制LED的閃爍,主程序只需要設(shè)置一個(gè)標(biāo)志,來代表啟動(dòng)或關(guān)閉閃爍,在定時(shí)器里判斷這個(gè)標(biāo)志,并執(zhí)行相應(yīng)的操作
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2018-8-11 17:28 | 顯示全部樓層
//可以放在主函數(shù)循環(huán)中,不影響其它程序
void Twinkle()
{
        static unsigned int count=0;//定義靜態(tài)局部變量
        if(sign==1)//如果閃爍標(biāo)志為真,由串口命令使能
        {
                count++;//計(jì)數(shù)延時(shí)
                if(count>=30000)//可以按實(shí)際需要調(diào)整閃爍頻率
                {
                        count=0;
                        LED=~LED;        //LED取反
                }
        }
        else
        {
                count=0;                //計(jì)數(shù)變量清0
                LED=0;                        //LED熄滅
        }
}

評(píng)分

參與人數(shù) 2黑幣 +23 收起 理由
jipinxlm + 8 贊一個(gè)!
yousunny + 15 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:385308 發(fā)表于 2018-8-11 17:32 | 顯示全部樓層
把LED燈閃爍的程序?qū)戇M(jìn)一個(gè)串口接收的函數(shù),再把這個(gè)函數(shù)引入到主函數(shù)里。
回復(fù)

使用道具 舉報(bào)

ID:298053 發(fā)表于 2018-8-11 18:27 | 顯示全部樓層
通過判斷串口接收數(shù)據(jù)來打開或關(guān)閉一個(gè)定時(shí)器中斷,在這個(gè)中斷服務(wù)函數(shù)里面再寫led閃爍的代碼(不影響主函數(shù)),控制定時(shí)時(shí)間長短就可以控制閃爍頻率,led閃爍頻率(就是進(jìn)入中斷頻率),這種頻率很低也不會(huì)影響主函數(shù)運(yùn)行
回復(fù)

使用道具 舉報(bào)

ID:222821 發(fā)表于 2018-8-12 17:30 | 顯示全部樓層
wulin 發(fā)表于 2018-8-11 17:28
//可以放在主函數(shù)循環(huán)中,不影響其它程序
void Twinkle()
{

謝謝您了,很有效果。
回復(fù)

使用道具 舉報(bào)

ID:385559 發(fā)表于 2018-8-12 19:19 | 顯示全部樓層
定時(shí)器中斷
回復(fù)

使用道具 舉報(bào)

ID:385559 發(fā)表于 2018-8-12 19:19 | 顯示全部樓層
定時(shí)器中斷,或者主函數(shù)設(shè)標(biāo)志查詢
回復(fù)

使用道具 舉報(bào)

ID:364278 發(fā)表于 2018-8-12 19:43 | 顯示全部樓層
通過計(jì)數(shù)的方法,就是達(dá)到這個(gè)數(shù)就跳出循環(huán),時(shí)間很短,不會(huì)影響主函數(shù)運(yùn)行
回復(fù)

使用道具 舉報(bào)

ID:385569 發(fā)表于 2018-8-12 20:09 | 顯示全部樓層
可以用定時(shí)器中斷,具體用法根據(jù)實(shí)際程序編寫需要靈活運(yùn)用
回復(fù)

使用道具 舉報(bào)

ID:355699 發(fā)表于 2018-8-12 22:29 | 顯示全部樓層
中斷不就是實(shí)現(xiàn)這個(gè)功能的嗎
回復(fù)

使用道具 舉報(bào)

ID:385613 發(fā)表于 2018-8-12 23:34 | 顯示全部樓層
讓LED閃爍怎么會(huì)影響其他程序?
回復(fù)

使用道具 舉報(bào)

ID:385629 發(fā)表于 2018-8-13 08:21 | 顯示全部樓層
單獨(dú)的中斷處理比較好
回復(fù)

使用道具 舉報(bào)

ID:385582 發(fā)表于 2018-8-13 08:59 | 顯示全部樓層
單獨(dú)寫一個(gè)函數(shù)控制LED燈,然后在主函數(shù)的開頭調(diào)用就行了啊
回復(fù)

使用道具 舉報(bào)

ID:385659 發(fā)表于 2018-8-13 09:45 | 顯示全部樓層
使用中斷實(shí)現(xiàn),看門狗程序監(jiān)控中斷位置,或者是做一個(gè)函數(shù),使得和其他程序一起運(yùn)行
回復(fù)

使用道具 舉報(bào)

ID:385659 發(fā)表于 2018-8-13 09:53 | 顯示全部樓層
使用定時(shí)器中斷,或者主函數(shù)設(shè)標(biāo)志查詢
回復(fù)

使用道具 舉報(bào)

ID:104472 發(fā)表于 2018-8-13 09:59 | 顯示全部樓層
中斷計(jì)數(shù)延時(shí)置標(biāo),主函數(shù)判斷動(dòng)作
回復(fù)

使用道具 舉報(bào)

ID:379051 發(fā)表于 2018-8-13 10:30 | 顯示全部樓層
定時(shí)器中斷是最合適的。
回復(fù)

使用道具 舉報(bào)

ID:371798 發(fā)表于 2018-8-13 10:31 | 顯示全部樓層
STM32的話就可以使用DMA,因?yàn)镈MA不是由CPU執(zhí)行的,不會(huì)影響到主程序。
回復(fù)

使用道具 舉報(bào)

ID:385699 發(fā)表于 2018-8-13 10:50 | 顯示全部樓層
使用timer中斷,設(shè)置好中斷時(shí)間間隔,也就是你需要led燈閃爍的間隔,每進(jìn)入一次讓LED狀態(tài)改變一次,完成閃爍功能
回復(fù)

使用道具 舉報(bào)

ID:385727 發(fā)表于 2018-8-13 11:45 | 顯示全部樓層
可以使用定時(shí)器終端,設(shè)置好時(shí)間間隔,在終端中實(shí)現(xiàn)led燈狀態(tài)翻轉(zhuǎn)
回復(fù)

使用道具 舉報(bào)

ID:385723 發(fā)表于 2018-8-13 11:46 | 顯示全部樓層
采用定時(shí)器中斷
回復(fù)

使用道具 舉報(bào)

ID:174087 發(fā)表于 2018-8-13 11:50 | 顯示全部樓層
xiaoyuzhou123 發(fā)表于 2018-8-12 23:34
讓LED閃爍怎么會(huì)影響其他程序?

LED閃爍必然會(huì)涉及到延時(shí),如果是用最基本的循環(huán)延時(shí)或者nop延時(shí)肯定是要影響CPU的處理的
回復(fù)

使用道具 舉報(bào)

ID:385798 發(fā)表于 2018-8-13 14:53 | 顯示全部樓層
wulin 發(fā)表于 2018-8-11 17:28
//可以放在主函數(shù)循環(huán)中,不影響其它程序
void Twinkle()
{

太厲害了
回復(fù)

使用道具 舉報(bào)

ID:385808 發(fā)表于 2018-8-13 15:06 | 顯示全部樓層
使用定時(shí)器產(chǎn)生中斷去控制LED閃爍
回復(fù)

使用道具 舉報(bào)

ID:381280 發(fā)表于 2018-8-13 15:49 | 顯示全部樓層
定時(shí)器中斷,延時(shí)設(shè)置好參數(shù)
回復(fù)

使用道具 舉報(bào)

ID:385861 發(fā)表于 2018-8-13 16:27 | 顯示全部樓層
使用定時(shí)器,設(shè)定100Hz執(zhí)行一次,避免一直等待
回復(fù)

使用道具 舉報(bào)

ID:385864 發(fā)表于 2018-8-13 16:30 | 顯示全部樓層
定時(shí)中斷啊
回復(fù)

使用道具 舉報(bào)

ID:385881 發(fā)表于 2018-8-13 16:49 | 顯示全部樓層
定時(shí)器中斷里 改變LED狀態(tài)
回復(fù)

使用道具 舉報(bào)

ID:385885 發(fā)表于 2018-8-13 16:59 | 顯示全部樓層
最簡單的方法就是用中斷,建議看看單片機(jī)手冊(cè)
回復(fù)

使用道具 舉報(bào)

ID:385695 發(fā)表于 2018-8-13 17:03 | 顯示全部樓層
用定時(shí)器中斷
回復(fù)

使用道具 舉報(bào)

ID:342142 發(fā)表于 2018-8-13 17:17 | 顯示全部樓層
定時(shí)器中斷就ok
回復(fù)

使用道具 舉報(bào)

ID:385895 發(fā)表于 2018-8-13 17:18 | 顯示全部樓層
我是來要幣的 想下個(gè)資料
回復(fù)

使用道具 舉報(bào)

ID:385897 發(fā)表于 2018-8-13 17:25 | 顯示全部樓層
可以使用DMA
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2018-8-13 18:30 | 顯示全部樓層
本帖最后由 zl2168 于 2018-8-14 18:13 編輯

介紹你幾個(gè)參考案例,都有閃爍功能,又不影響主程序運(yùn)行,自己去對(duì)照研究。
先Proteus仿真,確認(rèn)有效。
實(shí)例91  具有校正功能的時(shí)鐘1302LCD1602顯示)
實(shí)例91 帶校正時(shí)鐘1302(LCD1602顯示).rar (52.68 KB, 下載次數(shù): 10)
具有校正功能的時(shí)鐘1302.jpg

實(shí)例93  具有校正功能的時(shí)鐘1302LED數(shù)碼管顯示) 帶校正時(shí)分秒的時(shí)鐘1302(6位LED數(shù)碼管顯示).jpg
實(shí)例94  模擬電子鐘(由80C51定時(shí)器產(chǎn)生秒時(shí)基) 實(shí)例94 模擬電子鐘(由80C51定時(shí)器產(chǎn)生秒時(shí)基).rar (43.05 KB, 下載次數(shù): 4)
模擬電子鐘.jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。

實(shí)例93 帶校正時(shí)分秒的時(shí)鐘1302(6位LED數(shù)碼管顯示).rar

732.75 KB, 下載次數(shù): 5

回復(fù)

使用道具 舉報(bào)

ID:362591 發(fā)表于 2018-8-18 09:46 | 顯示全部樓層
用中斷來寫
回復(fù)

使用道具 舉報(bào)

ID:387479 發(fā)表于 2018-8-18 10:15 | 顯示全部樓層
用定時(shí)器中斷實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

ID:385372 發(fā)表于 2018-8-18 17:11 | 顯示全部樓層
用中斷來實(shí)現(xiàn)啊,在串口程序中觸發(fā)LED閃爍的標(biāo)志位,定時(shí)器中斷監(jiān)控這個(gè)位,并根據(jù)定時(shí)時(shí)長來改變LED狀態(tài)
回復(fù)

使用道具 舉報(bào)

ID:387767 發(fā)表于 2018-8-19 10:58 | 顯示全部樓層
用中斷來實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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