前言 2
基礎知識:微控制器程式設計基礎 2
第一節:單數碼管按鍵顯示 4
第二節:雙數碼管可調秒錶 6
第三節:十字路**通燈 6
第四節:數碼管驅動 7
第五節:鍵盤驅動 8
第六節:低頻頻率計 14
第七節:電子錶 17
第八節:序列口應用 17
微控制器的外部結構:
1、 dip40雙列直插;
2、 p0,p1,p2,p3四個8位準雙向i/o引腳;(作為i/o輸入時,要先輸出高電平)
3、 電源vcc(pin40)和地線gnd(pin20);
4、 高電平復位reset(pin9);(10uf電容接vcc與reset,即可實現上電復位)
5、 內建振盪電路,外部只要接晶體至x1(pin18)和x0(pin19);(頻率為主頻的12倍)
6、 程式配置ea(pin31)接高電平vcc;(執行微控制器內部rom中的程式)
7、 p3支援第二功能:rxd、txd、int0、int1、t0、t1
微控制器內部i/o部件:(所為學習微控制器,實際上就是程式設計控制以下i/o部件,完成指定任務)
1、 四個8位通用i/o埠,對應引腳p0、p1、p2和p3;
2、 兩個16位定時計數器;(tmod,tcon,tl0,th0,tl1,th1)
3、 乙個序列通訊介面;(scon,sbuf)
4、 乙個中斷控制器;(ie,ip)
針對at89c52微控制器,標頭檔案at89x52.h給出了sfr特殊功能暫存器所有埠的定義。教科書的160頁給出了針對mcs51系列微控制器的c語言擴充套件變數型別。
c語言程式設計基礎:
1、 十六進製制表示位元組0x5a:二進位制為01011010b;0x6e為01101110。
2、 如果將乙個16位二進數賦給乙個8位的位元組變數,則自動截斷為低8位,而丟掉高8位。
3、 ++var表示對變數var先增一;var—表示對變數後減一。
4、 x |= 0x0f;表示為 x = x | 0x0f;
5、 tmod = ( tmod & 0xf0 ) | 0x05;表示給變數tmod的低四位賦值0x5,而不改變tmod的高四位。
6、 while( 1 ); 表示無限執行該語句,即死迴圈。語句後的分號表示空迴圈體,也就是
在某引腳輸出高電平的程式設計方法:(比如p1.3(pin4)引腳)
#include //該頭文件中有微控制器內部資源的符號化定義,其中包含p1.3
void main( voidvoid 表示沒有輸入引數,也沒有函式返值,這入微控制器執行的復位入口
注意:p0的每個引腳要輸出高電平時,必須外接上拉電阻(如4k7)至vcc電源。
在某引腳輸出低電平的程式設計方法:(比如p2.7引腳)
#include //該頭文件中有微控制器內部資源的符號化定義,其中包含p2.7
void main( voidvoid 表示沒有輸入引數,也沒有函式返值,這入微控制器執行的復位入口
在某引腳輸出方波程式設計方法:(比如p3.1引腳)
#include //該頭文件中有微控制器內部資源的符號化定義,其中包含p3.1
void main( voidvoid 表示沒有輸入引數,也沒有函式返值,這入微控制器執行的復位入口
將某引腳的輸入電平取反後,從另乙個引腳輸出:( 比如 p0.4 = not( p1.1) )
#include //該頭文件中有微控制器內部資源的符號化定義,其中包含p0.4和p1.1
void main( voidvoid 表示沒有輸入引數,也沒有函式返值,這入微控制器執行的復位入口
將某埠8個引腳輸入電平,低四位取反後,從另乙個埠8個引腳輸出:( 比如 p2 = not( p3 ) )
#include //該頭文件中有微控制器內部資源的符號化定義,其中包含p2和p3
void main( voidvoid 表示沒有輸入引數,也沒有函式返值,這入微控制器執行的復位入口
注意:乙個位元組的8位d7、d6至d0,分別輸出到p3.7、p3.
6至p3.0,比如p3=0x0f,則p3.7、p3.
6、p3.5、p3.4四個引腳都輸出低電平,而p3.
3、p3.2、p3.1、p3.
0四個引腳都輸出高電平。同樣,輸入乙個埠p2,即是將p2.7、p2.
6至p2.0,讀入到乙個位元組的8位d7、d6至d0。
微控制器最小系統的硬體原理接線圖:
1、 接電源:vcc(pin40)、gnd(pin20)。加接退耦電容0.1uf
2、 接晶體:x1(pin18)、x2(pin19)。注意標出晶體頻率(選用12mhz),還有輔助電容30pf
3、 接復位:res(pin9)。接上電復位電路,以及手動復位電路,分析復位工作原理
4、 接配置:ea(pin31)。說明原因。
發光二極的控控制:微控制器i/o輸出
將一發光二極體led的正極(陽極)接p1.1,led的負極(陰極)接地gnd。只要p1.
1輸出高電平vcc,led就正嚮導通(導通時led上的壓降大於1v),有電流流過led,至髮led發亮。實際上由於p1.1高電平輸出電阻為10k,起到輸出限流的作用,所以流過led的電流小於(5v-1v)/10k = 0.
4ma。只要p1.1輸出低電平gnd,實際小於0.
3v,led就不能導通,結果led不亮。
開關雙鍵的輸入:輸入先輸出高
乙個按鍵key_on接在p1.6與gnd之間,另乙個按鍵key_off接p1.7與gnd之間,按key_on後led亮,按key_off後led滅。
同時按下led半亮,led保持後鬆開鍵的狀態,即on亮off滅。
#include
#define led p1^1用符號led代替p1_1
#define key_on p1^6用符號key_on代替p1_6
#define key_off p1^7用符號key_off代替p1_7
void main( void微控制器復位後的執行入口,void表示空,無輸入引數,無返回值
數碼管的接法和驅動原理
一支七段數碼管實際由8個發光二極體構成,其中7個組形構成數字8的七段筆畫,所以稱為七段數碼管,而餘下的1個發光二極體作為小數點。作為習慣,分別給8個發光二極體標上記號:a,b,c,d,e,f,g,h。
對應8的頂上一畫,按順時針方向排,中間一畫為g,小數點為h。
我們通常又將各二極與乙個位元組的8位對應,a(d0),b(d1),c(d2),d(d3),e(d4),f(d5),g(d6),h(d7),相應8個發光二極體正好與微控制器乙個埠pn的8個引腳連線,這樣微控制器就可以通過引腳輸出高低電平控制8個發光二極的亮與滅,從而顯示各種數字和符號;對應位元組,引腳接法為:a(pn.0),b(pn.
1),c(pn.2),d(pn.3),e(pn.
4),f(pn.5),g(pn.6),h(pn.
7)。如果將8個發光二極體的負極(陰極)內接在一起,作為數碼管的乙個引腳,這種數碼管則被稱為共陰數碼管,共同的引腳則稱為共陰極,8個正極則為段極。否則,如果是將正極(陽極)內接在一起引出的,則稱為共陽數碼管,共同的引腳則稱為共陽極,8個負極則為段極。
微控制器C語言學習心得
今天寫這一篇文章並不是因為已經想好了一篇文章才寫下來,而是我要將這一篇文章作為乙個長期的筆記來寫,我會一直更新。在進行微控制器開發時,經常都會出現一些很不起眼的問題,這些問題其實都是很基礎的c語言知識點,是一些小細節。但是正是因為很基礎,又都是小細節,所以我們往往容易忽視它們。結果有時候我們會花很長...
微控制器C語言考點彙總
1 微控制器就是在一塊矽片上整合了 處理器,儲存器和輸入 輸出介面 振盪電路 計數器等電路的一塊積體電路。2 微控制器最小系統就是能讓微控制器工作起來的乙個最基本的組成電路。以微控制器為核心,微控制器的18 19引腳端外接石英晶體振盪電路,9引腳外接復位電路,20腳接地,31腳接電源,就構成了微控制...
C語言學習
前言 兩個原因促使我寫下這篇文章,第一就是作為過來人根據我自己的經驗我知道程式設計的初學者一般都很興奮也都有種困惑,一方面對執行在計算機 注 不特別指明都指個人微型計算機 的五花八門如精彩的遊戲程式,多姿多彩的 等等漂亮的視窗程式所著迷,另一方面大部分的初學者 如計算機專業的低年級學生 都是從簡單命...