單片機C語言編程基礎(chǔ)_第1頁
單片機C語言編程基礎(chǔ)_第2頁
單片機C語言編程基礎(chǔ)_第3頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、單片機C語言編程基礎(chǔ)時間:2011-05-01 22:47:26 來源: 作者:單片機的外部結(jié)構(gòu):1、DIP40雙列直插;2、P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)3、電源 VCC( PIN40 )和地線 GND ( PIN20);4、 高電平復(fù)位 RESET ( PIN9);( 10uF電容接 VCC與RESET,即可實現(xiàn)上電復(fù)位)5、 內(nèi)置振蕩電路,外部只要接晶體至X1 ( PIN18 )和X0( PIN19 );(頻率為主頻的12倍)6、 程序配置EA( PIN31 )接高電平 VCC ;(運行單片機內(nèi)部 ROM中的程序)7、P3 支持第二功

2、能: RXD、TXD、INT0、INT1、T0、T1單片機內(nèi)部I/O部件:(所為學習單片機,實際上就是編程控制以下I/O部件,完成指定任務(wù))1、四個8位通用I/O端口,對應(yīng)引腳 P0、P1、P2和P3 ;2、兩個 16 位定時計數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、一個串行通信接口; ( SCON,SBUF)4、 一個中斷控制器;(IE, IP)針對AT89C52單片機,頭文件AT89x52.h給出了 SFR特殊功能寄存器所有端口的定義。教科書的160頁給出了針對 MCS51系列單片機的C語言擴展變量類型。單片機C語言編程基礎(chǔ)1、十六進制表示字節(jié) 0x5a :二進制為

3、 01011010B ; 0x6E為01101110。2、如果將一個16位二進數(shù)賦給一個 8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。3、+var 表示對變量 var先增一;var 表示對變量后減一。4、x |= 0x0f;表示為 x = x | 0x0f;5、TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量 TMOD 的低四位賦值0x5 ,而不改變TMOD的高四位。6、While( 1 );表示無限執(zhí)行該語句,即死循環(huán)。語句后的分號表示空循環(huán)體,也就是;在某引腳輸出高電平的編程方法:(比如P1.3 (PIN4 )引腳)#in elude II該頭文檔中有單

4、片機內(nèi)部資源的符號化定義,其中包含P1.3void main( void ) I/void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口P1_3 = 1; II給P1_3賦值1,引腳P1.3就能輸出高電平 VCCWhile( 1 ); II 死循環(huán),相當 LOOP: goto LOOP;注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如 4K7 )至VCC電 源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)#in clude II該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2.7void main( void ) IIvoid表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入

5、單片機運行的復(fù)位入口P2_7 = 0; II給P2_7賦值0 ,弓I腳P2.7就能輸出低電平 GNDWhile( 1 ); / 死循環(huán),相當 LOOP: goto LOOP;在某引腳輸出方波編程方法:(比如P3.1引腳)#in elude II該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P3.1void main( void ) I/void表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口While( 1 ) II非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句P3_1 = 1; II給P3_1賦值1,引腳P3.1就能輸出高電平 VCCP3_1 = 0; II給P3_1賦值0,引腳P3

6、.1就能輸出低電平 GND II由于一直為真,所以不斷輸出高、低、高、低,從而形成方波將某引腳的輸入電平取反后,從另一個引腳輸出:(比如P0.4 = NOT( P1.1)#inelude II該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P0.4和P1.1void main( void ) IIvoid表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口P1_1 = 1; II初始化。P1.1作為輸入,必須輸出高電平While( 1 ) II非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句if( P1_1 = 1 ) II 讀取P1.1,就是認為 P1.1為輸入,如果 P1.1輸入高電平 V

7、CC P0_4 = 0; / 給P0_4賦值0 ,引腳P0.4就能輸出低電平 GNDelse /否貝U P1.1輸入為低電平 GND/ P0_4 = 0; / 給P0_4賦值0 ,引腳P0.4就能輸出低電平 GND P0_4 = 1; /給P0_4賦值1,引腳P0.4就能輸出高電平 VCC /由于一直為真,所以不斷根據(jù)P1.1的輸入情況,改變 P0.4的輸出電平將某端口 8個引腳輸入電平,低四位取反后,從另一個端口8個引腳輸出:(比女口 P2 = NOT( P3 )#include /該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2和P3void main( void ) /void表示沒

8、有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口P3 = 0xff; /初始化。P3作為輸入,必須輸出高電平,同時給 P3 口的8個引腳輸出高電平 While( 1 ) /非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句 /取反的方法是異或1,而不取反的方法則是異或0P2 = P3A0x0f /讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然后輸出 /由于一直為真,所以不斷將P3取反輸出到P2注意:一個字節(jié)的 8位D7、D6至D0 ,分別輸出到 P3.7、P3.6至P3.0,比如P3=0x0f,貝U P3.7、P3.6、P3.5、P3.4 四個引腳都輸出低電平,而 P3.3、P3.2、P

9、3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個端口P2,即是將P2.7、P2.6至P2.0,讀入到一個字節(jié)的8位D7、D6至D0。1、 接電源:VCC (PIN40 )、GND (PIN20 )。加接退耦電容 O.luF2、 接晶體:X1 (PIN18 )、X2 (PIN19 )。注意標出晶體頻率(選用 12MHz ),還有輔助電容30pF3、接復(fù)位:RES( PIN9 )。接上電復(fù)位電路,以及手動復(fù)位電路,分析復(fù)位工作原理4、接配置:EA( PIN31 )。說明原因。發(fā)光二極的控控制:單片機I/O輸出將一發(fā)光二極管 LED的正極(陽極)接 P1.1,LED的負極(陰極)接地 GND。

10、只要P1.1輸出高電平 VCC,LED就正向?qū)ǎ▽〞r LED上的壓降大于1V ),有電流流 過LED,至發(fā)LED發(fā)亮。實際上由于 P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小于(5V-1V ) /10K = 0.4mA 。只要P1.1輸出低電開關(guān)雙鍵的輸入:輸入先輸出高一個按鍵 KEY_ON接在P1.6與GND 之間,另一個按鍵 KEY_OFF接P1.7與GND 之間,按KEY_ON后LED亮,按KEY_OFF后LED滅。同時按下LED半亮,LED保持后松 開鍵的狀態(tài),即 ON亮OFF滅。#i nclude#define LED P1A1 / 用符號 LED

11、代替 P1_1#define KEY_ON P"6 /用符號 KEY_ON 代替 P1_6#define KEY_OFF P"7 /用符號 KEY_OFF 代替 P1_7void main( void ) /單片機復(fù)位后的執(zhí)行入口,void表示空,無輸入?yún)?shù),無返回值KEY_ON = 1; /作為輸入,首先輸出高,接下 KEY_ON,P1.6則接地為0,否則輸入為1 KEY_OFF = 1; /作為輸入,首先輸出高,接下 KEY_OFF,P1.7則接地為0 ,否則輸入為1While( 1 )/永遠為真,所以永遠循環(huán)執(zhí)行如下括號內(nèi)所有語句if( KEY_ON=0 ) LED=

12、1; / 是 KEY_ON 接下,所示 P1.1 輸出高,LED 亮if( KEY_OFF=0 ) LED=0; / 是 KEY_OFF 接下,所示 P1.1 輸出低,LED 滅 /松開鍵后,都不給 LED賦值,所以LED保持最后按鍵狀態(tài)。/同時按下時,LED不斷亮滅,各占一半時間,交替頻率很快,由于人眼慣性,看上去為半亮態(tài)數(shù)碼管的接法和驅(qū)動原理及單片機編程一支七段數(shù)碼管實際由 8個發(fā)光二極管構(gòu)成,其中 7個組形構(gòu)成數(shù)字8的七段筆 畫,所以稱為七段數(shù)碼管,而余下的1個發(fā)光二極管作為小數(shù)點。作為習慣,分別給 8個發(fā)光二極管標上記號:a,b,c,d,e,f,g,h 。對應(yīng)8的頂上一畫,按順時針方向

13、排,中間一畫為g, 小數(shù)點為h。我們通常又將各二極與一個字節(jié)的8位對應(yīng),a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應(yīng) 8 個發(fā)光二極管正好與單片機一個端口 Pn的8個引腳連接,這樣單片機就可以通過引腳輸出高低電平控制8個發(fā)光二極的亮與滅,從而顯示各種數(shù)字和符號;對應(yīng)字節(jié),引腳接法為:a(Pn.O) , b(Pn.1) , c(Pn.2),d(Pn.3) ,e(Pn.4) , f(Pn.5) , g(Pn.6) , h(Pn.7)。如果將8個發(fā)光二極管的負極(陰極)內(nèi)接在一起,作為數(shù)碼管的一個引腳,這種數(shù)碼管則被稱為共陰數(shù)碼管,共同的引腳則

14、稱為共陰極,8個正極則為段極。否則,如果是將正極邙日極)內(nèi)接在一起引出的,則稱為共陽數(shù)碼管,共同的引腳則稱為共陽極,8個負極則為段極。,共陰極接GND,則可編寫出P3端口接16個按鍵,分別編SLED顯示對應(yīng)鍵編號。以單支共陰數(shù)碼管為例,可將段極接到某端口Pn對應(yīng)十六進制碼的七段碼表字節(jié)數(shù)據(jù)如右圖:16鍵碼顯示的單片機程序我們在P1端口接一支共陰數(shù)碼管SLED,在P2、號為KEY_O、KEY_1到KEY_F,操作時只能按一個鍵,按鍵后#i nclude#defi ne SLED P1#defi ne KEY_0 P2A0#defi ne KEY_1 卩2人1#defi ne KEY_2 卩2人2

15、#defi ne KEY_3 卩2人3#defi ne KEY_4 卩2人4#defi ne KEY_5 卩2人5#defi ne KEY_6 卩2人6#defi ne KEY_7 卩2人7#defi ne KEY_8 卩3人0#defi ne KEY_9 卩3人1#defi ne KEY_A 卩3人2#defi ne KEY_B 卩3人3#defi ne KEY_C 卩3人4#defi ne KEY_D 卩3人5#defi ne KEY_E P3A6#defi ne KEY_F 卩3人7Code un sig ned char Seg7Code16= /用十六進數(shù)作為數(shù)組下標,可直接取得對應(yīng)

16、的七段編碼字節(jié)/ 0 1 2 3 4 5 6 7 8 9 A b C d E F0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7 c, 0x39, 0x5e,0x79, 0x71;void mai n( void )un sig ned char i=0; /作為數(shù)組下標P2 = 0xff; P2作為輸入,初始化輸出高P3 = 0xff; /P3 作為輸入,初始化輸出高While( 1 )if( KEY_0 =0 ) i=0; if( KEY_1 =0 ) i=1;if( KEY_2 =0 ) i=2; if( KEY_3 =0 ) i=3;if( KEY_4 =0 ) i=4; if( KEY_5 =0 ) i=5;if( KEY_6 =0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論