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