![]() |
發布時間: 2017-4-20 13:38
正文摘要:想弄成,按燈的數字順序點亮,然后閃爍5秒,再全亮3秒,但是,,學藝不精,就要交作業了。。求大神幫修改些程序,大二下剛開始學單片機,,有些符號不是很懂,可以改改我能看的懂的最好啦, ,,防老師提問。。。 |
解決了嗎?求教程 |
q3075105 發表于 2017-4-20 17:31 好吧,你說的是。 |
ahshmj 發表于 2017-4-20 14:37 只是個作業。。。怎么能算作弊呢。。。。。 |
本帖最后由 zl2168 于 2017-4-20 16:05 編輯 隨便你怎么閃,只要編制相應的亮燈數組。 實例9 鍵控花樣循環燈 ⑴ 花樣循環1 ① 從兩邊到中心依次點亮,每次增加1個,直至全亮; ② 從兩邊到中心依次暗滅,每次減少1個,直至全暗; ③ 閃爍1次; ④ 重復上述過程,不斷循環(亮燈間隔0.5秒)。 ⑵ 花樣循環2 ① 從中心到兩邊,每次亮2個,并重復一次; ② 從中心到兩邊,每次亮3個,并重復一次; ③ 每次亮4個,并重復一次; ④ 重復上述過程,不斷循環(亮燈間隔0.5秒)。 ⑶ 花樣循環3 ① 每次間隔亮4個,并重復一次; ② 從上至下,每次亮2個; ③ 從上至下,每次增加亮2個,直至全亮; ④ 閃爍2次; ⑤ 重復上述過程,不斷循環(亮燈間隔0.5秒)。 ⑷ 花樣循環4 ① 全亮; ② 從上至下依次暗滅,每次減少一個,直至全滅; ③ 從上至下依次點亮,每次增加一個,直至全亮; ④ 重復上述過程,不斷循環(亮燈間隔0.5秒)。 先Proteus仿真一下,確認有效。 ![]() ![]() 以上摘自張志良編著《80C51單片機Proteus仿真設計實例教程》清華大學出版社ISBN 978-7-302-41682-1。書中電路和程序設計有詳細說明,程序語句條條有注解。 |
這個多花時間學習 還是不難的 |
又幫你作弊的嫌疑。![]() |
按燈的數字順序點亮,然后閃爍5秒,滅一秒,再從左往右全亮,L- E- D ,后再全亮3秒 |
#include <reg51.h> #define unsigned int sbit S1=P1^7; //按下啟動開關 void delay(ms) //延時函數 { int i; while(ms--) { for(i=0;i<120;i++); } } void main() { int i=0,run=0; //定義變量 while(1) { if(S1==0) //延時去抖動 { delay(20); if(S1==0) { for(i=0;i<7;i++) { P1=P1&(~(1<<i)); //從P1.0口依次輸出點亮,L依次亮 delay(50); } for(i=0;i<8;i++) { P3=P3&(~(1<<i)); //從P3.0口依次輸出點亮 E依次亮 delay(50); } for(i=0;i<8;i++) { P2=P2&(~(1<<i)); //從2.0口依次輸出點亮 E依次亮 delay(50); } for(i=0;i<8;i++) { P0=P0&(~(1<<i)); //從0.0口依次輸出點亮 D依次亮 delay(50) ; } delay(200); for(i=0;i<8;i++) { P1=0xff;P2=0xff;P3=0xff;P0=0xff; delay(250); P1=0x80;P2=0x00;P3=0x00;P0=0x00; delay(250); } P0=0xff;P1=0xff;P2=0xff;P3=0xff; //端口設置為高電平 delay(500); } } } } |