#include"AT89x52.h"
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
sbit WEI=P2^7; //U2 74HC573的LE端 數碼管的位選端
sbit SJ=P1^4; //LED發光管的使能端
void main(void)
{
SJ=0; //開LED總使能
WEI=1; //讓位選的U2 74hc573處于直通狀態
P0=0xff; //讓所有數碼管不顯示,防止數碼管干擾
WEI=0; //鎖存,讓位選的74hc573保持現在的狀態不變,也就是一直不顯示,如果不寫這3行,數碼管上就會有干擾
P0=0xef; //P0口送2進制 11101111 8個二進制對應8個led燈,也就是讓為0的數碼管亮,為1的不亮
while(1); //死循環,也就是讓程序停止在這里一直做死循環
}
這個是第四個燈亮,我想改為第1個燈亮怎么做.
修改倒數第二行
P0=0x7f; //0x7f 化為2進制 01111111
上面的代碼已經說明了為0的這一位才會亮,所以你把0移動到第一個就行了.這是個極其簡單的問題咯
簡單的分析一下:你打開看51hei開發板8個led部分的電路圖 ,led發光管的正極是通過一個三極管接到vcc的,在p1.4為0的情況下這個三極管就會導通,所以這時我們可以認為 led發光管的正極 是直接接到vcc的,而8個led的負極是分別直接接到P0口的,所以當P0的某一位為0時,相應的led就會有電流通過就會發光.
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |