標(biāo)題:
不怎么講原理的51單片機(jī)應(yīng)用入門(1)單片機(jī)是啥
[打印本頁]
作者:
51黑黑黑
時(shí)間:
2016-2-23 15:57
標(biāo)題:
不怎么講原理的51單片機(jī)應(yīng)用入門(1)單片機(jī)是啥
出自:西漂sky的博客
單片機(jī)是一門應(yīng)用類課程,與一些理論課程如微積分不同。對(duì)于微積分課程的學(xué)習(xí),我們首先需要系統(tǒng)掌握公式定理,然后才是如何應(yīng)用。而就個(gè)人認(rèn)為,單片機(jī)的學(xué)習(xí)是“由外而內(nèi)”的,對(duì)于初學(xué)者來說,首先要解決的是“怎么用”的問題,然后才是“為什么”的問題。就我個(gè)人的經(jīng)驗(yàn),如果一上手就是各種理論,學(xué)習(xí)興趣很快就會(huì)喪失;若是現(xiàn)從實(shí)踐應(yīng)用開始,不說多么有意思,起碼要比理論好玩那么一點(diǎn)。等實(shí)踐學(xué)到了一定的火候,再回溯理論,一步一步深究如何實(shí)現(xiàn),想必要簡(jiǎn)單一點(diǎn)。本系列就是為了解決“怎么用”的問題。學(xué)習(xí)單片機(jī),首先要知道什么是單片機(jī)。
電腦是什么,手機(jī)是什么想必大家都是知道的,也就是你用來看這篇博文的這個(gè)玩意。而電腦和手機(jī)的核心是什么?其實(shí)是一塊CPU,CPU進(jìn)行運(yùn)算,并操控各種輸入輸出設(shè)備,比如觸控屏,鍵盤,鼠標(biāo)什么的。而單片機(jī),就是把電腦或者說手機(jī)集成到了一個(gè)芯片上,這塊芯片可以根據(jù)你的要求對(duì)輸入進(jìn)行處理,產(chǎn)生你需要的輸出:
上右圖為ATMEL公司的單片機(jī),其他51單片機(jī)與其封裝可能不一樣,用都是一樣用(兼容的)。
從外觀和逼格上看,這兩個(gè)相差貌似蠻大的,其實(shí)對(duì)于電腦,你可已通過鍵盤和鼠標(biāo)輸入,電腦的屏幕和音響可以給你你需要的輸出。而對(duì)于單片機(jī),它的一些引腳相當(dāng)于鼠標(biāo)鍵盤,也相當(dāng)于屏幕音響。這些可以用來輸入輸出的引腳們,我們稱之為IO口。
IO口常規(guī)作用只有3個(gè)——置高(引腳電壓相對(duì)于地5V或3.3V),置低(引腳電壓相對(duì)于地0V),檢測(cè)高還是低(檢測(cè)引腳電壓相對(duì)于地是5/3.3還是0)。無論是以后或簡(jiǎn)單,或復(fù)雜的實(shí)驗(yàn),最終你所需要的,就是讓這些腳管電壓按著你的要求按時(shí)上下翻飛。
現(xiàn)在知道單片機(jī)是做什么用的了么?就是
按要求對(duì)外部輸入的電壓信號(hào)做出規(guī)定的電壓回應(yīng)。
好了,現(xiàn)在說說具體是怎么樣的,在計(jì)算機(jī)C語言中,如果我們需要從鍵盤上讀取輸入信號(hào),我們通常會(huì)用這種方法:
int temp;//定義一個(gè)32位變量
scanf(“%d”,&temp);//從鍵盤緩沖區(qū)讀取一個(gè)整形數(shù)據(jù)存在temp中
而單片機(jī)略顯寒酸的沒有自備鍵盤......不過這不是問題,我們通過這種方法:
unsigned char temp;//定義一個(gè)8位變量
temp=P1;//讀取P1口的值,賦值給變量temp
第二句代碼就是輸入啦,大部分的51單片機(jī)的IO口都是P0,P1這樣命名的。先來看看單片機(jī)的引腳圖:
先不看那些好長(zhǎng)名字的引腳,只看1~8的8個(gè),名字分別為P1.0~P1.7,這八個(gè)引腳就是一個(gè)被稱為P1的IO口,8個(gè)引腳分別對(duì)應(yīng)了unsignedchar型數(shù)據(jù)的8個(gè)位。再看20引腳VSS,其實(shí)就是常用的“地”,所有電壓高低都是相對(duì)于VSS引腳的電壓而言的。
執(zhí)行temp=P1;這條語句的時(shí)候P1每個(gè)引腳的電壓情況就會(huì)被保存到變量temp里。例如,P1口電壓情況是P1.0~P1.3電壓與VSS相同,P1.4~P1.7的電壓比VSS高3.3V/5V,也就是“高高高高低低低低”,換成邏輯語言就是“11110000”,那么單片機(jī)就讀取了一個(gè)為“11110000”的值,也就是“0xF0”并將這個(gè)值保存在temp變量中。
有了輸入自然要有輸出,在計(jì)算機(jī)C語言中,有一種輸出的方式是這樣的:
int temp=214;
printf(“%d”,temp);
這樣,計(jì)算機(jī)就通過屏幕輸出了值214,但是單片機(jī)同樣不自備屏幕,然而這更不是問題,我們是這么做的:
unsigned char temp=0xF0;
P1=temp;
從語法來說,這是將temp的值賦值給了一個(gè)叫P1的......東西。然而這個(gè)P1,就是剛才所說的IO口P1。執(zhí)行這條語句后,P1口的8個(gè)引腳就會(huì)各司其職,輸出與之對(duì)應(yīng)位的值。例如P1.0引腳,它對(duì)應(yīng)的是最低位,temp為0xF0,也就是“11110000”,最低位為0,那么P1.0引腳的電位就會(huì)變成與Vss相同。也就是說,執(zhí)行完P(guān)1=temp后,P1.7~P1.4的電壓會(huì)變得比Vss高5V/3.3V,P1.3~P1.0的電壓會(huì)變得跟Vss基本相同。
上文所分3.3V與5V的原因是51單片機(jī)的常見電源電壓有5V與3.3V兩種:對(duì)于5V單片機(jī),“高”和“1”是比VSS的電壓高5V(只是理想情況,低一點(diǎn)也是可以的);對(duì)于3.3V單片機(jī),“高”和“1”是比VSS的電壓高3.3V(同樣是理想情況)。
好啦,單片機(jī)的輸入輸出也就是一個(gè)符號(hào)“=”的事,現(xiàn)在總結(jié)一下:?jiǎn)纹瑱C(jī)的作用是按要求對(duì)電壓信號(hào)做出電壓回應(yīng),輸入和輸出的方式就是改變引腳的電壓和看單片機(jī)把引腳電壓改變成什么樣子。
(如需轉(zhuǎn)載,在下表示不勝榮幸,也請(qǐng)注明出處)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1