本書系統地介紹了MCS51系列單片機的結構、指令系統、程序設計、中斷系統、定時器/計數器、串行口、系統擴展及實用I/O接口技術等基本原理及初步應用; 還介紹了基于單片機的嵌入式系統開發流程; 重點介紹了幾種常用單片機開發應用軟件(Keil、Altium Designer、Proteus),以利于讀者邊學習邊實踐; 而且,對目前常用的幾種單片機進行了簡單介紹。
本書含有豐富的實例詳解及習題,特別適合作為大中專院校單片機原理及應用課程的教材,還可作為單片機愛好者的自學用書,也可作為單片機應用開發技術人員、智能儀表開發技術人員及研究生的設計參考用書。
單片機原理及應用教程(第2版是教育部高等學校機械類專業教學指導委員會規劃教材之一。
《單片機原理及應用教程》第1版出版以來,受到了廣大讀者的好評。通過第1版的教學實踐,第2版做了如下修訂:
①配套有高質量的PPT課件、習題答案、應用實例的源程序,讀者可通過掃描書上印的二維碼從網上下載;
②增加一節C51語言內容介紹,引導讀者用C語言編程;
③增加計算機中數的表示方法介紹;
④增加一章常用單片機簡介及應用舉例,使讀者了解單片機的最新發展,引導讀者在實際應用中采用最適合的、性價比最高的單片機;
⑤在單片機開發流程一章中,增加Keil C51軟件應用簡介;
⑥在應用實例中加入由作者課題組最新承擔的實際工程應用課題實例。
全書共15章。第1章概述了單片機的有關基礎知識,介紹了計算機數的表示方法。第2章介紹了MCS51系列單片機的內部結構、時序及單片機的最小系統。第3章介紹了MCS51系列單片機的指令系統,每一類型指令系統介紹結束后都有實例解析,幫助學生加深對51系列單片機程序指令的理解;
同時介紹了單片機C語言結構與編程方法。第4章通過實例介紹了單片機匯編語言程序設計的流程和方法。第5~7章分別介紹了單片機中斷系統、定時器/計數器及串行口的結構與工作原理,在介紹中斷系統、定時器/計數器以及串行口的章節后,都有非常簡單、實用、完整的實例解析。詳細解析電路原理圖的設計、程序的編寫以及仿真軟件的應用。學生可以實際操作一遍,就相當于完成了一個完整的工程實際設計的仿真調試,從而了解單片機實際開發流程。第8章通過實例介紹了單片機系統擴展及實用接口技術。第9章系統地介紹了單片機開發流程,并簡單明了地介紹了Keil、Proteus、Altium Designer等單片機系統常用設計和調試軟件工具的使用和調試方法。第10章向讀者推薦了幾個常用單片機系列,并通過非常簡單的實例解釋其應用方法。第11~15章介紹了5個完整的工程實例。
本書前幾章的實例是非常簡單的LED或數碼管驅動電路和程序,后幾章的實例是為學有余力的學生準備的。學生們可以用仿真軟件Keil檢查自己的作業,也可以對書中介紹的實例進行仿真調試。Protues軟件可以對書中介紹的實例或學生自己的小設計進行軟、硬件綜合仿真。書中的實例多選用AT89C51或AT89S51,這兩種單片機都是MCS51系列兼容機,引腳和指令系統完全兼容,因內部有Flash存儲器而得到廣泛應用。
本書內容豐富,深入淺出,適合作為單片機原理及應用課程的教材,也可以幫助自學者解決在設計和應用單片機時所遇到的實際問題。
本書主要由張元良(大連理工大學)、呂艷(大連工業大學)、周志民(大連測控技術研究所)、李濤(大連理工大學)、劉淑杰(大連理工大學)、劉偉嵬(大連理工大學)等編寫,參加編寫工作的還有劉全利、李乾坤、沈毅鴻、王若飛、勾萬強、王金龍、張浩、郭俊飛、何希平、關澤明、張敏、趙清晨、姜輝、李瑞品等,在此表示感謝!
限于作者的水平和經驗,書中難免存在錯誤和不足之處,歡迎廣大讀者給予指正。
作者
2016年6月
第1章微型計算機基礎知識
1.1微型計算機的組成
1.2計算機中數據的表示方法
1.2.1進位計數制
1.2.2數制間的相互轉換
1.2.3二進制數的運算
1.2.4數值數據的表示
1.2.5非數值數據的表示
1.3單片機概述
1.3.1單片機的基本結構
1.3.2單片機的發展
1.3.3單片機的特點及應用
習題
第2章MCS51系列單片機的硬件結構
2.1單片機的內部結構
2.1.1內部結構框圖
2.1.2引腳與功能
2.2單片機的存儲器結構
2.2.1程序存儲器
2.2.2數據存儲器
2.2.3特殊功能寄存器
2.3單片機的并行I/O口
2.3.1I/O口的特點
2.3.2I/O口的內部結構
2.3.3I/O口的功能
2.3.4I/O口的負載能力
2.4單片機的時鐘與時序
2.4.1時鐘電路
2.4.2CPU時序
2.5單片機的復位
2.6單片機最小系統
習題
第3章MCS51系列單片機的指令系統
3.1指令系統簡介
3.1.1指令格式
3.1.2指令分類
3.2單片機尋址方式及實例解析
3.2.1直接尋址
3.2.2立即尋址
3.2.3寄存器尋址
3.2.4寄存器間接尋址
3.2.5變址尋址
3.2.6相對尋址
3.2.7位尋址
單片機原理及應用教程(第2版)
目錄
3.3單片機指令系統及實例解析
3.3.1數據傳送指令
3.3.2算術指令
3.3.3邏輯指令
3.3.4轉移指令
3.3.5位操作指令
3.3.6偽指令
3.4MCS51單片機C51語言
3.4.1C51語言概述
3.4.2C51語言的程序結構、數據與存儲類型
3.4.3C51語言的頭文件與庫函數
3.4.4C51語言中絕對地址的訪問
3.4.5C51語言編程方法
習題
第4章匯編語言程序設計
4.1匯編語言源程序匯編
4.2程序設計的基本步驟
4.3順序程序的設計
4.4分支程序設計
4.4.1單分支程序
4.4.2多分支程序
4.5循環程序設計
4.5.1單循環
4.5.2多重循環
4.5.3按條件轉移控制的循環
4.6查表程序設計
4.7子程序設計和調用
4.8應用控制流程設計
習題
第5章MCS51系列單片機的中斷系統
5.1中斷的概念
5.2中斷源
5.3中斷控制寄存器
5.4中斷的優先級
5.5中斷的響應
5.6由中斷模塊程序認知中斷處理過程
5.6.1外部中斷模塊代碼
5.6.2定時器中斷模塊代碼
5.7通過實例掌握外部中斷
習題
第6章MCS51系列單片機的定時器/計數器
6.1定時器/計數器的結構
6.1.1計數功能
6.1.2定時功能
6.2定時器/計數器的相關寄存器
6.2.1定時器/計數器的方式寄存器TMOD
6.2.2定時器/計數器的控制寄存器TCON
6.2.3中斷允許寄存器IE
6.2.4中斷優先級寄存器IP
6.3定時器/計數器的工作方式
6.4定時器/計數器的知識擴展
6.4.1定時器的溢出同步問題
6.4.2運行中讀取定時器/計數器
6.4.3由定時器/計數器模塊程序認知定時器/計數器處理過程
6.5通過實例掌握定時器(例程: 定時器與LED)
6.5.1采用中斷處理方式的程序
6.5.2采用查詢方式處理的程序
6.6通過實例掌握計數器(例程: 計數器與LED)
習題
第7章MCS51系列單片機的串行口
7.1串行通信的概念
7.2MCS51系列單片機串行口的結構
7.2.1串行口的結構
7.2.2串行口控制寄存器
7.2.3串行口的工作方式
7.2.4串行通信的波特率
7.3串行口通信
7.3.1雙機通信
7.3.2多機通信
7.4通過實例掌握串行口通信(例程: PC控制數碼管)
7.4.1硬件設計
7.4.2軟件設計
7.4.3PC與單片機串行通信的實現
習題
第8章MCS51系列單片機系統擴展及實用I/O接口技術
8.1常用緩沖/驅動接口芯片介紹
8.1.1SN7407緩沖/驅動芯片
8.1.2達林頓晶體管陣列ULN2003A
8.1.3光電耦合器
8.1.4串行通信接口RS485
8.2開關量輸入接口設計
8.2.1鍵盤接口
8.2.244矩陣鍵盤掃描實例
8.2.3繼電器輸入接口
8.2.4行程開關輸入接口
8.2.5光電編碼器輸入接口
8.3開關量輸出接口設計
8.3.1蜂鳴器輸出接口
8.3.2繼電器輸出接口
8.3.3固態繼電器輸出接口
8.4液晶顯示模塊接口設計
8.4.1LCD的基本結構與驅動原理
8.4.2段式LCD
8.4.3點陣LCD
8.5常用A/D轉換接口設計
8.5.1TLC2543與單片機接口實例
8.5.2ADC0832與單片機接口實例
8.5.3A/D轉換器(TLC2543)應用實例
8.6常用D/A轉換接口設計
8.6.1TLC5618與單片機接口實例
8.6.2MAX518與單片機接口實例
習題
第9章MCS51系列單片機開發流程
9.1總體方案設計
9.1.1系統功能要求
9.1.2硬件總體方案
9.1.3軟件總體方案
9.2硬件和軟件細分設計
9.2.1硬件設計
9.2.2軟件設計及調試
9.3系統的仿真與調試
9.3.1Keil軟件簡介
9.3.2利用Keil進行程序調試
9.3.3Proteus軟件使用簡介
9.3.4利用Proteus繪制電路原理圖
9.3.5在Proteus中調試程序
9.3.6Altium Designer簡介
9.3.7利用Altium Designer設計電路板
9.4系統調試
9.4.1單片機應用系統的一般調試方法
9.4.2數碼管顯示系統調試
第10章常用單片機簡介及應用舉例
10.1STC15系列單片機
10.1.1STC15系列單片機簡介
10.1.2STC15W4K32S4應用舉例
10.2AVR系列單片機
10.2.1AVR系列單片機簡介
10.2.2ATmega64單片機應用舉例
10.3MSP430系列單片機
10.3.1MSP430系列單片機簡介
10.3.2MSP430F149單片機應用舉例
10.4Kinetis K60系列單片機
10.4.1Kinetis K60系列單片機簡介
10.4.2MK60DN512ZVLQ10單片機應用舉例
10.5STM32系列單片機
10.5.1STM32系列單片機簡介
10.5.2STM32F103VET6單片機應用舉例
第11章數字電子鐘設計實例
11.1設計要求
11.2硬件設計
11.2.1按鍵電路設計
11.2.2時鐘芯片DS1302的性能特點和工作原理
11.2.3時鐘芯片DS1302與單片機的連接
11.2.4總體電路原理圖
11.3軟件設計
11.3.1顯示子程序流程圖
11.3.2顯示子程序的代碼
11.3.3主函數程序流程圖
11.3.4總的匯編語言源程序代碼
第12章LED陣列動態顯示設計實例
12.1設計要求
12.2硬件設計
12.2.174HC595簡介
12.2.2點陣LED簡介
12.2.3總體電路原理圖
12.3軟件設計
12.3.1程序流程圖
12.3.2源程序代碼
第13章數字溫度計設計實例
13.1設計要求
13.2硬件設計
13.2.1溫度芯片DS18B20簡介
13.2.2一線式總線的概念
13.2.3總體電路原理圖
13.3軟件設計
13.3.1DS18B20子程序流程圖
13.3.2DS18B20子程序代碼
13.3.3數碼管串行方式顯示子程序流程圖
13.3.4數碼管串行方式顯示子程序代碼
13.3.5主程序流程圖
13.3.6整體源程序代碼
第14章小型直流電動機驅動設計實例
14.1設計要求
14.2硬件設計
14.2.1L298N雙H橋電動機驅動芯片
14.2.2L298N與單片機接口設計
14.2.3總體電路原理圖
14.3軟件設計
14.3.1單片機產生脈寬調制信號
14.3.2源程序代碼
第15章步進電機驅動設計實例
15.1設計要求
15.2硬件設計
15.2.1步進電機概述
15.2.2TA8435步進電機專用驅動芯片
15.2.3TA8435細分驅動原理
15.2.4總體電路原理圖
15.3軟件設計
15.3.1程序流程圖
15.3.2源程序代碼
附錄AASCII碼字符表(常規字符集)
附錄BMCS51系列單片機匯編指令表
參考文獻