單片機——硬件基礎知識
1、單片機內(nèi)部資源
STC89C52:8KFLASH、512字節(jié)RAM、32個IO口、3個定時器、1個UART、8個中斷源
(1)Flash(硬盤)——程序存儲空間 —— 擦寫10萬次,斷電數(shù)據(jù)不丟失,讀寫速度慢
(2)RAM(內(nèi)存)——數(shù)據(jù)存儲空間 —— 斷電數(shù)據(jù)丟失,讀寫速度快,無限次使用
(3)SFR —— 特殊功能寄存器
2、單片機最小系統(tǒng)
最小系統(tǒng):最少組件組成單片機可以工作的系統(tǒng)。
三要素:
(1)、 電源電路:5V
(2)、 晶振電路:11.0592MHZ、兩個30PF
(3)、 復位電路:
P0:開漏輸出,必須加上拉電阻
準雙向口:
強推挽輸出:電流驅動能力強
高阻態(tài)
上下拉電阻:上拉電路就是將不確定的信號通過一個電阻拉到高電平,同時限流作用。下拉電阻就是下拉到低電平。
上下拉電阻選。簭慕档凸姆矫婵紤]應該足夠大,因為電阻越大,電流越小;驅動能力來看,小電阻
3、硬件基礎知識
(1)、電磁干擾(EMI)——靜電放電(ESD)、快速瞬間脈沖群(EFT)、浪涌(Surge)
(2)、去耦電容的使用
低頻濾波電容,平常應用最多的事鉭電容,電解電容,陶瓷電容,起到去除電源低頻紋波,穩(wěn)定電源的作用。
高頻濾波電容,電容附近,通常用104電容來進行去除高頻干擾。
(3)、三極管(PNP,NPN) b,c,e --- 電壓驅動
控制應用
驅動應用
4、LED發(fā)光二極管 ——電流驅動
通常紅色貼片LED, 靠電流驅動,電壓1.8V~2.2V,電流1~20mA,在1~5mA亮度有所變化,5mA以上亮度基本不變。
VCC 電壓是 5V,發(fā)光二極管自
身壓降大概是 2V,那么在右邊 R34 這個電阻上承受的電壓就是 3V。
R = U/I —— 1~20mA —— R:150~3K
5、C語言基礎
(1)、基本運算符
+ - * / % ++ -- = == != += -= << >> && || ! & | ~ ^
(2)、循環(huán)(C語言以;表示一條語句)
for/while/do...while
for(表達式1;表達式2;表達式3)
{
語句;//可以為空
}
while(表達式)//表達式為真,執(zhí)行語句
{
語句;//可以為空
}
do
{
語句;//可以為空
}while(表達式);
(3)、函數(shù) (模塊化的思想)
類型 函數(shù)名(參數(shù)類型 參數(shù))
{
函數(shù)體;
}
(4)、數(shù)組
<1>、具有相同數(shù)據(jù)類型
<2>、具有相同的類型
<3>、在存儲器中連續(xù)存儲
(5)、51單片機常用延時辦法——循環(huán)、定時器
(P0 = ~(1 << i++);)
5、流水燈
給IO口一個低電平即可點亮LED燈。
注:單片機對外設的操作其實就是對IO口電平的控制。
#include <reg52.h> //包含特殊功能寄存器定義的頭文件
typedef unsigned int uint;
typedef unsigned char uchar;
int main(void)
{
uint i = 0; // 定義循環(huán)變量i,用于軟件延時
uchar j = 0; // 定義計數(shù)變量j,用于移位控制
while(1) // 主循環(huán),程序無限循環(huán)執(zhí)行該循環(huán)體語句
{
P0 = ~(1 << j++); // P0等于1左移j位,控制8個LED
for(i = 0; i < 20000; ++i); //軟件延時
if(j >= 8) //移位計數(shù)超過7后,再重新從0開始
{
j = 0;
}
}
return 0;
}
編輯:admin 最后修改時間:2018-05-18