點亮LED小燈
硬件電路分析
LED,即發(fā)光二極管,俗稱LED小燈,它的種類很多,參數也不盡相同
KST-51開發(fā)板用的是普通的貼片發(fā)光二極管。這種二極管通常的正向導通電壓是1.82.2V,工作電流一般在120mA。其中,當電流在15mA變化時,隨著通過的LED的電流越來越大,人們的肉眼會明顯感覺到這個燈越來越亮,而當電流在520mA變化時,看到的發(fā)光二極管的亮度變化就不太明顯了。當電流超過20mA時,LED就會有燒壞的危險了,電流越大,燒壞的速度也就越快。所以在使用過程中應該特別注意它在電流參數上的設計要求。

上圖是開發(fā)板上的USB接口電路,通過USB線,計算機給開發(fā)板供電和下載程序以及實現計算機和開發(fā)板之間的通信。
從上圖可以看出,USB座共有6個接口,其中2腳和3腳是數據通信引腳,1腳和4腳是電源引腳,1腳是VCC正電源,4腳是GND地線,5腳和6腳是外殼,直接接到GND上。
1腳VCC通過F1(自恢復保險絲)接到右側,在正常工作的情況下,保險絲可以直接看成導線,因此左右兩邊都是USB電源+5V。
自恢復保險絲的作用是:當后級電路哪個地方發(fā)生短路的時候,保險絲會自動切斷電路,保護開發(fā)板及計算機的USB接口,當電路正常后,保險絲會恢復暢通,正常工作。
右側有兩條支路,第一條是在+5V和GND接了一個470uF的電容,電容是隔離直流的,所以這條支路是沒有電流的。[[硬件基礎知識#^Regulated-Capacitors|這個電容是穩(wěn)壓電容]]
第二條支路摘出來:

發(fā)光二極管是二極管的一種,和普通二極管一樣,這個二極管也有陰極和陽極,習慣上也稱之為負極和正極。

R34的取值范圍是150歐姆~3k歐姆,這個電阻值大小的變化,直接可以限制整條通路的電流的大小,因此這個電阻通常被稱為“限流電阻”。
圖2-3中,R34用的是1k歐姆的電阻,發(fā)光二極管LED1在這里的作用是作為電源指示燈,使用USB線將開發(fā)板和計算機連起來,這個燈就會亮。

如圖2-5,在板子后級開關控制的地方,也添加了一個LED10發(fā)光二極管,作用就是當打開開關時,這個二極管才會亮。
此處開關雖然只有一個,但是卻是2路的,2路開關并聯能更好地確保給后級提供更大的電流。
電容C19和C10都是隔離斷開直流的。[[硬件基礎知識#Regulated-Capacitors|其中C19是穩(wěn)壓電容]],[[硬件基礎知識#Decoupling-of-high-frequency-capacitors|C10是去耦高頻電容]]

如圖2-6,P0.0是單片機的引腳
當P0.0引腳為低電平時,即是GND,此時有壓降差,故LED亮燈
當P0.0引腳為高電平時,即是VCC,此時沒有壓降差,故LED不亮燈,處于熄滅狀態(tài)。
程序代碼編寫
特殊功能寄存器和位定義
一般用C語言來對單片機進行編程,而有的單片機有那么幾條很特殊的獨有的編程語句,51單片機就有,以下為其中的2條
- sfr P0 = 0x80;
- sbit LED = P0 ^ 0;
sfr P0 = 0x80;
其中,sfr 是關鍵字,是51單片機所特有的,它的作用是定義一個單片機特殊功能寄存器。
51單片機內部有很多個小模塊,每個小模塊居住在擁有唯一房間號的房間內,同時每個模塊都有8個控制開關。P0技術一個功能模塊,就住在了0x80這個房間里,人們就是通過設置P0內部這個模塊的8個開關,來讓單片機的P0這8個I/O口輸出高電平或者低電平的。
而51單片機內部有很多寄存器,如果想使用必須提前進行 sfr 聲明。不過 Keil 軟件已經把所有的這些聲明都預先寫好并保存到一個專門的文件中去了,如果要用只需在文件開頭添加一行#include<reg52.h>即可
sbit LED = P0 ^ 0;
sbit就是對SFR里邊的8個開關中的一個進行定義。
經過該語句之后,程序里面的LED就是P0.0口。
可以理解為c語言中的typedef
每個型號的單片機都配有生產廠商所編寫的數據手冊。

P4口STC89C52對標準C51的擴展
P0、P1、P2、P3口,每個P口本身又有8個控制端口,故該單片機一共有32個I/O口
其中P0口所在的地址是0x80,一共有從7到0這8個I/O口控制位,后邊Reset Value(復位值),是看寄存器必看的一個參數,8個控制位復位值全部都是1,也就是說,每當單片機上電復位的時候,所有的引腳的值默認為1,即高電平,在設計電路的時候也要充分考慮這個問題。
新建工程
代碼
#include<reg52.h>//包含特殊功能寄存器定義的頭文件
sbit LED = P0 ^ 0;//位地址聲明,sbit必須小寫,P必須大寫
void main()//main函數,程序入口,有且僅有一個
{//{}成對存在,此處表示函數的起始和結束
LED = 0;//分號表示一條語句結束
}
在單片機中,通常在程序內加入一個死循環(huán),讓程序停留在所希望的狀態(tài)下,不要跑飛掉。
#include<reeg52.h>
sbit LED = P0 ^ 0;
int main()
{
LED = 0;
while(1);//程序在這里停止
}
編譯
下載程序
本文來自博客園,作者:EricsT,轉載請注明原文鏈接:http://www.rzrgm.cn/EricsT/p/18994797

浙公網安備 33010602011771號