我們在單片機最小系統上接個LED,看我們能否點亮它!對了,上面也有好幾次提到過單片機最小系統了,所謂單片機最小系統就是在單片機 上接上最少的外圍電路元件讓單片機工作。一般只須連接晶體、VCC、GND、RST即可,一般情況下,AT89C51的31腳須接高電平。 #include //頭文件定義。或用#include其具體的區別在於:後者定義了更多的地址空間。 //在Keil安裝文件夾中,找到相應的文件,比較一下便知! sbit P1_0 = P1 ^ 0; void main (void) { while(1) { P1_0 = 0;//低電平有效,如果把LED反過來接那麼就是高電平有效 } } 就那麼簡單,我們就把接在單片機P1_0上的LED點亮了,當然LED是低電平,才能點亮。因為我們把LED的正通過電阻接至VCC。 P1_0 = 0; 類似與C語言中的賦值語句,即把 0 賦給單片機的P1_0引腳,讓它輸出相應的電平。那麼這樣就能達到了我們預先的要求了。 while(1)語句只是讓單片機工作在死循環狀態,即一直輸出低電平。如果我們要試著點亮其他的LED,也類似上述語句。這裡就不再講了。 點亮了幾個LED后,是不是讓我們聯想到了繁華的街區上流動的彩燈。我們是不是也可以讓幾個LED依次按順序亮呢?答案是肯定的!其 實顯示的原理很簡單,就是讓一個LED滅后,另一個立即亮,依次輪流下去。假設我們有8個LED分別接在P1口的8個引腳上。硬體連接,在 P1_1--P1_7上再接7個LED即可。常式如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) { for(i = 0; i < 125; i++); //一個 ; 表示空語句,CPU空轉。 } //i 從0加到125,CPU大概就耗時1毫秒 } void main(void) { while(1) { P1_0 = 0; Delay(250); P1_0 = 1; P1_1 = 0; Delay(250); P1_1 = 1; P1_2 = 0; Delay(250); P1_2 = 1; P1_3 = 0; Delay(250); P1_3 = 1; P1_4 = 0; Delay(250); P1_4 = 1; P1_5 = 0; Delay(250); P1_5 = 1; P1_6 = 0; Delay(250); P1_6 = 1; P1_7 = 0; Delay(250); P1_7 = 1; } } sbit 定義位變數,unsigned char a 定義無符字元型變數a,以節省單片機內部資源,其有效值為0~255。main函數調用Delay()函數。 Delay函數使單片機空轉,LED持續點亮后,再滅,下一個LED亮。while(1)產生循環。 (三) 上面我們講了如何使LED產生流動,但是你是否發現一個問題:寫的太冗長了!能不能再簡單點呢?可以!可以使用C51的內部函數 INTRINS.H實現。函數unsigned char _crol_(unsigned char a, unsigned char n) 可以使變數a循環左移n位,如果我們先給P1口賦 0000 0001那麼當n為1時,便會產生和上面一樣的效果! #include #include void Delay(unsigned char a) { unsigned char i; while( --a != 0) { for(i = 0; i < 125; i++); } } void main(void) { unsigned char b, i; while(1) { b = 0xfe; for(i = 0; i < 8; i++) { P1 = _crol_(b, 1); b = P1; Delay(250); } } } INTRINS.H函數中的unsigned char _cror_(unsigned char a, unsigned char n)右移也可以實現同樣的效果!這裡就不再累述。 流水燈的花樣很多,我還寫過那種拉幕式的流動等,程序很簡單,有興趣的朋友,可以自己試著寫寫! 對了,講了那麼多,有些朋友一定還不知道編譯軟體怎麼用?這裡給大家介紹幾個吧?WAVE(偉福)大家一定聽說過吧!還有一個 就是KEIL2,我用的就是KEIL2,下面就來講講如何使用KEIL2這個編譯軟體! 1.安裝軟體,這個應該不用再講了吧! 2.安裝完后,啟動KEIL軟體左擊Project-->New Project-->輸入文件名-->選擇我們所以使用的晶元(這裡我們一般用到Atmel的 AT89C51或AT89C2051,點確定。 3.點File-->New-->輸入我們編寫的程序,保存為.C文件。(一般情況下,我們保存的文件名和前面的工程名一樣。) 4.展開Target 1 -->右擊Source Group 1 -->Add Files to Group 'Source Group 1'-->選擇剛才保存的.C文件點擊ADD后,關閉對 話框。這樣.C文件就被加到了Source Group 1 下。 5.右擊Target 1-->Options for 'Target 1' -->Target中填寫晶體的大小,Output中,在Create HEX Files 前打上鉤,點確 |