|
|
硬件部分:
假設(shè)4個(gè)控制引腳分別連接到單片機(jī)的P0.0~P0.3。
12個(gè)燈分別連接到外部電路,通過控制引腳的高低電平來點(diǎn)亮或熄滅。
軟件部分:
循環(huán)控制: 采用循環(huán)語句實(shí)現(xiàn)燈的順序點(diǎn)亮。
數(shù)據(jù)表示: 使用一個(gè)12位的二進(jìn)制數(shù)來表示12個(gè)燈的狀態(tài),每一位對(duì)應(yīng)一個(gè)燈。
移位操作: 通過移位操作來實(shí)現(xiàn)燈的順序變化。
輸出控制: 將表示燈狀態(tài)的二進(jìn)制數(shù)輸出到P0口。
C51代碼實(shí)現(xiàn)
C
#include <reg51.h>
unsigned char led_data[] = {0x0F, 0x3C, 0x78, 0xF0, 0xC3, 0x8F}; // 存儲(chǔ)燈的順序狀態(tài)
void delay(unsigned int t) {
while(t--);
}
void main() {
unsigned char i;
while(1) {
for(i = 0; i < 6; i++) {
P0 = led_data[i]; // 輸出到P0口
delay(5000); // 延時(shí)500ms
}
}
}
請(qǐng)謹(jǐn)慎使用代碼。
代碼解釋
led_data數(shù)組:
存儲(chǔ)了6種燈的點(diǎn)亮狀態(tài),每種狀態(tài)對(duì)應(yīng)4個(gè)燈亮。
比如0x0F表示二進(jìn)制的1111,即前4個(gè)燈亮。
delay函數(shù):
用于產(chǎn)生延時(shí),控制燈亮的時(shí)長。
main函數(shù):
無限循環(huán),不斷重復(fù)點(diǎn)亮燈的順序。
外層循環(huán)遍歷led_data數(shù)組,每次取出一個(gè)狀態(tài)。
內(nèi)層循環(huán)產(chǎn)生延時(shí),控制每個(gè)狀態(tài)的保持時(shí)間。 |
|