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