『壹』 51單片機應用實例詳解的內容簡介
如果不是為了應付考試,那單片機的學習更應該強調系統的應用。 《51單片機應用實例詳解》是《51單片機應用從零開始》的姊妹書,既可作為其「續集」以擴展學習單片機基礎知識之後的系統應用,也可獨立成冊作為單片機從基礎學習到系統應用的幫手。
《51單片機應用實例詳解》在選材時,結合國內外重點大學一線教師的教學經驗,並借鑒國外經典教材的寫作手法,對51單片機的應用系統及局部知識進行了詳實的介紹。除了每章中大量的單片機系統模塊及有機系統的介紹外,「實例點撥」環節還展示了許多相對完整的單片機系統實例供讀者學習、開發時參考。在多角度、多方面的實例化講解中,讀者既掌握了單片機系統開發的基本技能,還開闊了單片機流行應用的視野。
《51單片機應用實例詳解》秉承《51單片機應用從零開始》一書語言生動風趣及講解循序漸進的特點,在顧及實用性、技術性的同時,最大程度地提高了可讀性,力求闡述得平實、通俗、易懂。《51單片機應用實例詳解》適合作為電類本科、專科學生的參考用書及高職高專學生的單片機應用技術教材,也可作為無線電愛好者學習單片機的參考書。
『貳』 51單片機應用實例詳解的介紹
51系列單片機不僅是國內用得最多的單片機之一,同時也是最適合上手學習單片機系統開發的一款單片機。《51單片機應用實例詳解》主要以51系列單片機為核心控制器,從廣度和深度上對其系統應用進行了梳理,通過《51單片機應用實例詳解》的學習和實踐,可以順利完成多任務、多功能單片機系統的設計及開發,能對日常生活、生產中的一些測控系統進行自主設計及實施。書中豐富的實例及全面的應用講解將能極大地開闊單片機系統設計者的思路,並為其設計提供藍圖和模塊。
『叄』 51單片機C語言開發與實例的內容提要
書中列舉了大量應用實例,著重介紹了51單片機的一些新技術及其應用方法,同時還介紹了幾款簡易編程器的編制和使用方法,使讀者盡快、盡可能容易地掌握利用C51對MCS-51單片機進行開發的方法。
系統全面、突出重點、由淺入深、通俗易懂、學用結合、軟硬兼備、實例豐富是本書的主要特色,因此,本書適用於具備一定電子技術基礎和具有一定的單片機基礎知識的學生、教師、單片機愛好者、電子製作愛好者、電器維修人員、電子產品開發設計者、工程技術人員閱讀參考。
『肆』 51單片機 如何檢測某個引腳是否為高低電平 求一個C源程序實例
sbitGO_OUT=P3^5;//需要檢測的引腳
sbitLED=P3^4;//顯示led引腳為低時候亮
voidmain()//主程序
{
while(1)//主循環
{
if(GO_OUT==0)
{
LED=1;//引腳為低led不亮
}
elseLED=0;//否則led點亮
}
}
『伍』 C51單片機「冒泡法」排序實例
用keil調試下,就可以知道結果了。
感覺樓主的分析是正確的……
只是不清楚這個程序段的意圖是對數組a[]的全部數據進行排序還是僅對其前9個數據排序。
printf("the unsorted numbers:\n");
for(i=0;i<9;i++)
printf("%bx",a[i]);
printf("\n");
printf("the sorted number:\n");
for(i=0;i<=10;i++)
printf("%bx",a[i]);
按常理,這兩段應該是對應的,判斷條件下面的那個更合理,按分析前面那段只列印未排序前的a[0]~a[8];後面那段卻將11個數全部列印出來了。 (實際還應以調試結果為准)
『陸』 基於5151單片機嵌入式系統的實例
這個有很多實例,隨便一個開發板配套光碟都有可以直接運行的實例。
『柒』 51單片機片選信號的確定,實例說明
51單片機任意IO都可以作為一個IC的片選信號,如P0.0接74HC245的片選,則
CLR P0.0 那麼74HC245就選中工作。
『捌』 51單片機應用實例詳解的圖書目錄
第1章 大轉折——從學習單片機到應用單片機 1
1.1 如何利用單片機 1
1.2 哪些工具可以幫助我們 4
1.3 調試乃成功之母 13
1.4 實例點撥——無線滑鼠 15
第2章 時刻准備著——掃除基礎知識障礙 21
2.1 AT89S51單片機滿足需要嗎 22
2.2 管腳描述 25
2.3 工作時序問題 32
2.4 存儲器組織 33
2.5 匯編語言 43
2.6 定址方式與指令概述 45
2.7 定時/計數器 48
2.8 串列口通信 59
2.9 中斷 65
2.10 實例點撥——啤酒裝瓶系統中的單片機 69
第3章 系統的「臉蛋」——顯示器 72
3.1 電子時鍾的「臉蛋」——多位七段數碼管 73
3.2 大屏幕的秘密——發光二極體點陣 88
3.3 計算器的「臉蛋」——段式液晶屏 97
3.4 「Hello, world!」——字元液晶屏 101
3.5 圖形的顯示——點陣液晶屏 108
3.6 絢麗的世界——彩色液晶屏 123
3.7 系統應用——中文液晶屏顯示系統 125
第4章 從收錄機到CD唱機——模擬與數字之間的轉換 132
4.1 從數字溫度計中學習模擬與數字的轉換 134
4.2 單片機與A/D 139
4.3 單片機與D/A 144
4.4 如何選擇A/D與D/A器件 149
4.5 系統應用——空調溫度控制系統 151
第5章 凝固的數據——擴展存儲器 156
5.1 透過電子密碼鎖觀察片外存儲器 157
5.2 半導體存儲器的種類 161
5.3 單片機與片外程序存儲器的介面 163
5.4 單片機與片外數據存儲器的介面 167
5.5 存儲器的地址解碼 173
5.6 典型片外存儲器的擴展介面電路 178
5.7 系統應用——串列片外存儲器擴展實例( 介面) 184
第6章 觸角的延伸——輸入技術 199
6.1 常用開關 200
6.2 I/O口作為輸入埠 202
6.3 I/O口的使用 206
6.4 使用8255擴充更多的I/O口 210
6.5 鍵盤 218
6.6 感測器與單片機 225
6.7 輸入信號的調理 245
6.8 實例點撥——指紋安保系統 250
第7章 觸角的延伸——輸出技術 265
7.1 為控制電機准備 266
7.2 直流電機的控制 271
7.3 步進電機的控制 277
7.4 開集電極輸出結構 283
7.5 邏輯家族及邏輯電平 288
7.6 通用輸出技術 293
7.7 實例點撥——量程的自動轉換 300
第8章 信息溝通無極限——通信技術 308
8.1 串列通信的魅力 309
8.2 兩個單片機之間的溝通 314
8.3 多個單片機之間的溝通 323
8.4 單片機與計算機的溝通 331
8.5 單片機的無線通信 354
8.5.1 利用紅外線檢測物體 355
8.5.2 利用紅外線傳輸數據 373
8.5.3 單片機與藍牙通信 377
8.6 實例點撥——射頻識別(RFID)系統 384
8.6.1 射頻標簽的秘密 385
8.6.2 射頻識別系統規劃 387
8.6.3 射頻識別系統設計 388
第9章 啟發設計的靈感——完整系統實例點撥 389
9.1 生理參數監護儀 391
9.1.1 心率的測量原理 392
9.1.2 系統規劃與設計 394
9.2 電子器件測試儀 420
9.2.1 系統功能說明 421
9.2.2 電子器件測試儀軟體設計 422
9.3 電話遠程遙控器 435
9.3.1 電話線利用有道 436
9.3.2 電話遠程遙控器設計 438
9.4 你准備好了嗎 444
參考文獻 446
附錄A 51單片機指令集及用法示例 450
附錄B 指令的執行代碼表 472
附錄C 中文字型碼表 479
附錄D 51單片機USB口下載線 483
附錄E 基礎邏輯門及常用數字電路晶元 484
附錄F 霽ision3支持的單片機 488
附錄G 51單片機偽指令 497
附錄H 51單片機比較表 500
附錄I ASCII碼表 502
附錄J 常見封裝形式 506
附錄K 常見晶元生產商 509
附錄L 指紋感測器SM630通信協議 511
附錄M 常用低容量存儲器器件表(RAM、ROM) 516
附錄N 希臘字母表 518
附錄O 電阻阻值讀取方法和色環定義 519
附錄P 用於重定位和連接模塊的指令介紹 521
附錄Q AT89S51單片機特殊功能寄存器一覽表 523
附錄R 51單片機匯編程序保留字 530
『玖』 51單片機C語言應用程序設計實例精講的內容簡介
全書實例豐富,每個例子都調試通過,都有具體的設計思路、硬體電路、軟體設計以及程序代碼分析,同時附錄里專門提供了實例配套實驗箱內容,對於讀者學習51單片機的應用開發提供了參考和指導價值。
《51單片機C語言應用程序設計實例精講》中的所有程序代碼都使用C語言實現,簡單易學、易懂。《51單片機C語言應用程序設計實例精講》適合計算機、自動化、電子及硬體等相關專業的學生進行學習,同時也可供從事51單片機開發的科研設計人員參考使用。
《51單片機C語言應用程序設計實例精講》配有一張光碟,光碟里包括了書中所有的程序代碼和電路圖,讀者稍加修改即可用於自己的設計,物超所值。
『拾』 單片機c語言編程100個實例
51單片機C語言編程實例 基礎知識:51單片機編程基礎 單片機的外部結構: 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特殊功能寄存器所有埠的定義。 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)引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P1.3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。 在某引腳輸出低電平的編程方法:(比如P2.7引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2.7 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P3.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由於一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反後,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P0.4和P1.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_1 = 1; //初始化。P1.1作為輸入,必須輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { 7. if( P1_1 == 1 ) //讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC 8. { P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 2 51單片機C語言編程實例 9. else //否則P1.1輸入為低電平GND 10. //{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 11. { P0_4 = 1; } //給P0_4賦值1,引腳P0.4就能輸出高電平VCC 12. } //由於一直為真,所以不斷根據P1.1的輸入情況,改變P0.4的輸出電平 13. } 將某埠8個引腳輸入電平,低四位取反後,從另一個埠8個引腳輸出:( 比如 P2 = NOT( P3 ) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2和P3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P3 = 0xff; //初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { //取反的方法是異或1,而不取反的方法則是異或0 7. P2 = P3^0x0f //讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然後輸出 8. } //由於一直為真,所以不斷將P3取反輸出到P2 9. } 注意:一個位元組的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滅。 代碼 1. #include <at89x52.h> 2. #define LED P1^1 //用符號LED代替P1_1 3. #define KEY_ON P1^6 //用符號KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符號KEY_OFF代替P1_7 5. void main( void ) //單片機復位後的執行入口,void表示空,無輸入參數,無返回值 6. { 7. KEY_ON = 1; //作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為1 8. KEY_OFF = 1; //作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為1 9. While( 1 ) //永遠為真,所以永遠循環執行如下括弧內所有語句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1輸出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1輸出低,LED滅 13. } //松開鍵後,都不給LED賦值,所以LED保持最後按鍵狀態。 14. //同時按下時,LED不斷亮滅,各佔一半時間,交替頻率很快,由於人眼慣性,看上去為半亮態 15. } 數碼管的接法和驅動原理 一支七段數碼管實際由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個負極則為段極。 以單支共陰數碼管為例,可將段極接到某埠Pn,共陰極接GND,則可編寫出對應十六進制碼的七段碼表位元組數據