51單片機教程 第一個51程序 -點亮一個發(fā)光二極管(51單片機發(fā)光二極管原理圖)
keil proteus
第一個51程序 :讓一個發(fā)光二極管閃爍
這是一篇超級詳細的C51教程。1
單片機就是一個小型CPU,在電子領域應用廣泛,電視、冰箱、洗衣機、空調等產品中都能見到他們的身影。它是一個可編程的mcu,根據(jù)代碼的不同可實現(xiàn)非常多功能
首先介紹兩個軟件
1、keil uvision4:這是一個單片機開發(fā)軟件,用于調試,生成可執(zhí)行文件HEX文件
2、proteus7.8:電路仿真軟件
一、首先,到網(wǎng)上下載一個keil uVision4開發(fā)環(huán)境(用來編寫C語言程序)
二、下載好之后百度keil4的安裝教程,開始按百度步驟安裝
一定要嚴格按照百度教程安裝
安裝成功后打開軟件,看到如下界面:
三、安裝軟件:Proteus 7.8
這是一個電路仿真軟件,非常實用,用來繪制原理圖和仿真
四、下面開始用Proteus建立硬件環(huán)境
把led接在P1.0上,因為我們是初學者,晶振與電源可以先省略,電路一樣可以工作。
點擊P:
然后搜索需要的元器件:AT89C51、RES、LED
找到之后雙擊添加:左邊元件欄里可以看到添加的元件
繼續(xù)添加:
添加完成后開始布置元器件:
接地符號在這里:
元件布置完后開始接線:點擊兩個點就可以連接起來
連接完成。。。點擊保存。
五、上面兩個軟件都安裝成功后開始我們的第一個工程的建立,參考以下代碼 ,代碼作用: 讓一個led閃爍
#include<regx51.h>void delayms(unsigned int t)//延時函數(shù){ int a,b; for(a=0; a<t; a ) for(b=0; b<120; b );}void main(void){ P1_0 = 0; //讓P1.0口輸出0 delayms(500); //延時500ms P1_0 = 1; //讓P1.0口輸出1 delayms(500); //延時500ms}
下面開始建立工程,打開keil,點擊新建工程
文件名改為“第一個51程序”,點擊保存
找到ATMEL公司的AT89S51
點擊OK,然后新建一個文本文件
點擊保存,文件名后綴為.c,生成一個c文件
寫下代碼
添加C語言文件到工程:把剛剛寫的c文件添加到工程
*代碼解讀
1、
#include<regx51.h>
包含頭文件<regx51.h>,為什么要包含頭文件?因為要編寫的是51程序,最終代碼是要在51單片機里運行,所以要包含一個51頭文件,這個文件包含了51所有寄存器的一些定義,怎么查看它呢,編譯的時候會出現(xiàn)在你的工程文件中,在keil4的左邊工程文件就可以查看了
2、
void delayms(unsigned int t)//延時函數(shù)
{
int a,b;for(a=0; a<t; a ) for(b=0; b<120; b );123
}
延時函數(shù)就是讓CPU反復執(zhí)行一條空指令來消耗時間,這段時間CPU仍然在工作,各寄存器的值保持不變。
3、
void main(void)
這是主函數(shù),程序從這里開始執(zhí)行
4、
P1_0 = 0; //讓P1.0口輸出0delayms(500); //延時500msP1_0 = 1; //讓P1.0口輸出1delayms(500); //延時500ms1234
P1_0是什么?P1_0是在reg51.h頭文件定義的,沒有頭文件寫P1_0編譯是通不過的。P1_0的本質是一個位寄存器,存儲了1bit數(shù)據(jù),可以存儲0或1,P1_0的值決定了P1_0引腳上輸出的電平
P1_0 = 0;就是讓P1_0輸出0V
delayms(500);寄存器的值不變,P1_0持續(xù)500ms低電平
P1_0 = 1; 就是讓P1_0輸出5V(實際達不到5V),
delayms(500);寄存器的值不變,P1_0持續(xù)500ms高電平,循環(huán)執(zhí)行,led就會以1HZ的頻率閃爍了
另外,51單片機不用循環(huán)語句while,也會循環(huán)執(zhí)行main函數(shù)中的內容
完整內容及代碼資料可進群免費領取。
嵌入式物聯(lián)網(wǎng)的學習之路非常漫長,不少人因為學習路線不對或者學習內容不夠專業(yè)而錯失高薪offer。不過別擔心,我為大家整理了一份150多G的學習資源,基本上涵蓋了嵌入式物聯(lián)網(wǎng)學習的所有內容。點擊下方鏈接,0元領取學習資源,讓你的學習之路更加順暢!記得點贊、關注、收藏、轉發(fā)哦!
點擊這里找小助理0元領取:掃碼進群領資料