單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)(第3版)
定 價(jià):38 元
- 作者:周航慈 著
- 出版時(shí)間:2011/2/1
- ISBN:9787512402768
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類:TP368.1
- 頁(yè)碼:354
- 紙張:膠版紙
- 版次:3
- 開本:16開
《單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)(第3版)》總結(jié)了作者多年來(lái)在80C51系列單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)中的實(shí)踐經(jīng)驗(yàn),歸納出一整套應(yīng)用程序設(shè)計(jì)的方法和技巧。在內(nèi)容安排上,不僅有實(shí)現(xiàn)功能要求的應(yīng)用程序設(shè)計(jì)步驟、子程序、監(jiān)控程序及常用功能模塊設(shè)計(jì)方法,還以較大篇幅介紹了提高系統(tǒng)可靠性的抗干擾設(shè)計(jì)和容錯(cuò)設(shè)計(jì)技術(shù)以及程序測(cè)試的正確思想方法。附錄中向讀者提供了完整的系統(tǒng)程序設(shè)計(jì)樣本和經(jīng)過(guò)多年使用考驗(yàn)的定點(diǎn)運(yùn)算子程序庫(kù)與浮點(diǎn)運(yùn)算子程序庫(kù)的程序文本、注釋及使用方法。
《單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)(第3版)》深入淺出,并配以大量實(shí)例,可作為從事單片機(jī)應(yīng)用系統(tǒng)研究的工程技術(shù)人員的軟件設(shè)計(jì)指導(dǎo)用書,也可作為高等院校相關(guān)專業(yè)師生的參考用書。
第1章 應(yīng)用程序的設(shè)計(jì)步驟
1.1 設(shè)計(jì)任務(wù)書的編寫
1.2 硬件電路設(shè)計(jì)
1.3 軟件任務(wù)分析
1.4 數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的規(guī)劃
1.5 資源分配
1.6 編程及調(diào)試
1.7 編程語(yǔ)言與開發(fā)環(huán)境的選擇
第2章 程序流程圖與子程序設(shè)計(jì)
2.1 程序流程圖
2.1.1 程序流程圖的畫法
2.1.2 從程序流程圖到程序
2.2 子程序設(shè)計(jì)
2.2.1 結(jié)構(gòu)化的程序設(shè)計(jì)風(fēng)格
2.2.2 參數(shù)的使用
2.2.3 算法的合理性和可靠性
2.2.4 子程序的透明性設(shè)計(jì)
2.2.5 子程序的相容性設(shè)計(jì)
2.2.6 子程序的容錯(cuò)性設(shè)計(jì)
第3章 系統(tǒng)監(jiān)控程序設(shè)計(jì)
3.1 監(jiān)控程序的任務(wù)
3.2 監(jiān)控程序的結(jié)構(gòu)
3.2.1 作業(yè)順序調(diào)度型
3.2.2 作業(yè)優(yōu)先調(diào)度型
3.2.3 鍵碼分析作業(yè)調(diào)度型
3.3 普通監(jiān)控程序的設(shè)計(jì)方法
3.3.1 系統(tǒng)狀態(tài)分析
3.3.2 狀態(tài)轉(zhuǎn)移分析
3.3.3 狀態(tài)順序編碼型監(jiān)控程序的設(shè)計(jì)方法
3.3.4 狀態(tài)特征編碼型監(jiān)控程序的設(shè)計(jì)方法
3.3.5 監(jiān)控程序的4種設(shè)計(jì)風(fēng)格
3.4 菜單驅(qū)動(dòng)的監(jiān)控程序設(shè)計(jì)方法
3.4.1 系統(tǒng)功能分析和菜單結(jié)構(gòu)設(shè)計(jì)
3.4.2 畫面設(shè)計(jì)
3.4.3 監(jiān)控程序設(shè)計(jì)方法
第4章 常用功能模塊的設(shè)計(jì)
4.1 軟件時(shí)鐘
4.1.1 時(shí)鐘系統(tǒng)的建立
4.1.2 時(shí)鐘的校對(duì)
4.1.3 定時(shí)任務(wù)的觸發(fā)與撤除
4.1.4 相對(duì)時(shí)鐘(鬧鐘)
4.2 鍵盤
4.2.1 軟件去抖動(dòng)處理
4.2.2 連擊的處理
4.2.3 復(fù)合鍵的處理
4.2.4 鍵盤編碼
4.3 數(shù)碼顯示
4.3.1 顯示模塊在系統(tǒng)軟件中的安排
4.3.2 顯示配置與輸出驅(qū)動(dòng)
4.3.3 滅零處理
4.3.4 閃爍處理
4.3.5 模擬串行顯示
4.4 無(wú)字庫(kù)液晶顯示屏
4.4.1 圖文混合顯示的基本原理
4.4.2 字符的顯示
4.4.3 圖形的顯示
4.4.4 漢字的顯示
4.4.5 漢字的排版及其畫面的輸出
4.5 有字庫(kù)液晶顯示屏
4.5.1 液晶屏的硬件接口
4.5.2 最底層驅(qū)動(dòng)子程序
4.5.3 常用子程序
4.5.4 畫面顯示
4.6 觸摸屏
4.6.1 觸摸信息的獲取
4.6.2 觸摸位置的計(jì)算
4.6.3 按鈕編號(hào)查詢方法
4.6.4 觸摸屏校準(zhǔn)
第5章 抗干擾設(shè)計(jì)
5.1 干擾的作用機(jī)制及后果
5.2 抗干擾的硬件措施
5.2.1 抗串模干擾的措施
5.2.2 抗共模干擾的措施
5.3 數(shù)字信號(hào)輸入/輸出中的軟件抗干擾措施
5.3.1 數(shù)字信號(hào)的輸入方法
5.3.2 數(shù)字信號(hào)的輸出方法
5.4 數(shù)字濾波
5.4.1 程序判斷濾波
5.4.2 扣值濾波
5.4.3 算術(shù)平均濾波
5.4.4 去極值平均濾波
5.4.5 加權(quán)平均濾波
5.4.6 滑動(dòng)平均濾波
5.4.7 低通濾波
5.5 CPU抗干擾技術(shù)
5.5.1 人工復(fù)位
5.5.2 掉電保護(hù)
5.5.3 睡眠抗干擾
5.5.4 指令冗余
5.5.5 軟件陷阱
5.5.6 看門狗系統(tǒng)
5.6 系統(tǒng)的恢復(fù)
5.6.1 系統(tǒng)復(fù)位
5.6.2 熱啟動(dòng)過(guò)程
5.6.3 重要信息的恢復(fù)
5.6.4 系統(tǒng)狀態(tài)的重入
第6章 容錯(cuò)設(shè)計(jì)
6.1 硬件故障的自診斷技術(shù)
6.1.1 CPU的診斷
6.1.2 程序存儲(chǔ)器的診斷
6.1.3 RAM的診斷
6.1.4 A/D通道的診斷與校正
6.1.5 D/A通道的診斷
6.1.6 數(shù)字I/O通道的診斷
6.1.7 硬件自診斷模塊
6.2 人機(jī)界面的容錯(cuò)設(shè)計(jì)
6.2.1 輸入提示功能的設(shè)計(jì)
6.2.2 數(shù)據(jù)輸入的容錯(cuò)設(shè)計(jì)
6.2.3 命令輸入的容錯(cuò)設(shè)計(jì)
6.2.4 輸入界面的安全性設(shè)計(jì)
6.2.5 輸出界面的容錯(cuò)設(shè)計(jì)
6.3 軟件的一般容錯(cuò)設(shè)計(jì)
6.3.1 堆棧溢出的預(yù)防
6.3.2 中斷中的資源沖突及其預(yù)防
6.3.3 狀態(tài)轉(zhuǎn)移的條件審查
6.3.4 重要模塊的安全措施
6.3.5 運(yùn)算軟件的容錯(cuò)設(shè)計(jì)
6.3.6 軟件標(biāo)志的使用
6.3.7 子程序的使用
6.4 互斥型輸出的硬件容錯(cuò)設(shè)計(jì)
第7章 程序測(cè)試
7.1 程序測(cè)試的心理準(zhǔn)備
7.1.1 程序測(cè)試的正確定義
7.1.2 程序測(cè)試結(jié)果的正確評(píng)價(jià)
7.1.3 培養(yǎng)正常的測(cè)試心理狀態(tài)
7.2 程序測(cè)試方法
7.2.1 程序會(huì)審和口頭宣講
7.2.2 白盒測(cè)試法
7.2.3 黑盒測(cè)試法
7.2.4 自頂向下測(cè)試法
7.2.5 自底向上測(cè)試法
7.3 程序糾錯(cuò)
7.3.1 程序跟蹤法
7.3.2 分析推理法
7.3.3 糾錯(cuò)原則
附錄A 完整的應(yīng)用程序樣本
A.1 狀態(tài)順序編碼,監(jiān)控程序在主程序中(匯編語(yǔ)言)
A.2 狀態(tài)特征編碼,監(jiān)控程序在定時(shí)中斷中(匯編語(yǔ)言)
A.3 狀態(tài)順序編碼,監(jiān)控程序在主程序中(C51語(yǔ)言)
A.4 狀態(tài)特征編碼,監(jiān)控程序在定時(shí)中斷子程序中(C51語(yǔ)言)
附錄B MCS-51單片機(jī)實(shí)用子程序庫(kù)
B.1 MCS-51定點(diǎn)運(yùn)算子程序庫(kù)及其使用說(shuō)明
B.2 MCS-51浮點(diǎn)運(yùn)算子程序庫(kù)及其使用說(shuō)明
B.3 MCS-51高精度浮點(diǎn)運(yùn)算子程序庫(kù)及其使用說(shuō)明
參考文獻(xiàn)
⑤機(jī)動(dòng)布線區(qū)。如果是樣機(jī)研制,在設(shè)計(jì)電路板時(shí),開辟一小片機(jī)動(dòng)布線區(qū)是有好處的。在機(jī)動(dòng)布線區(qū)中,可以插入若干片集成電路插座,并有金屬化孔,但無(wú)布線。當(dāng)樣機(jī)研制中發(fā)現(xiàn)硬件電路有明顯不足,需要增加若干元器件時(shí),即可在機(jī)動(dòng)布線區(qū)中臨時(shí)拉線來(lái)完成,從而避免整機(jī)大返工。當(dāng)然,項(xiàng)目研制成功后,正式制板時(shí)就不需要機(jī)動(dòng)布線區(qū)了。
(3)以軟代硬
單片機(jī)和數(shù)字電路本質(zhì)的區(qū)別就是它具有軟件系統(tǒng)。很多硬件電路能做到的,軟件也能做到。因此,在硬件電路設(shè)計(jì)時(shí),不要忘記還有軟件作后臺(tái)。原則上,只要軟件能做到的,就不用硬件。硬件多了不但增加成本,而且使系統(tǒng)出故障的機(jī)會(huì)也增加了。以軟代硬的實(shí)質(zhì)是以時(shí)間代空間,軟件執(zhí)行過(guò)程需要消耗時(shí)間,因此,這種代替帶來(lái)的不足就是實(shí)時(shí)性下降。當(dāng)系統(tǒng)對(duì)某些事物的反應(yīng)有嚴(yán)格的時(shí)間限制時(shí),往往增加硬件電路是唯一的選擇。但對(duì)一些實(shí)時(shí)性要求不是很高的場(chǎng)合,以軟代硬是很合算的。如觸點(diǎn)去抖動(dòng)的軟件延時(shí)方案,就比硬件雙穩(wěn)電路去抖動(dòng)要合算得多;軟件低通濾波算法就比硬件低通濾波電路優(yōu)越得多。
(4)監(jiān)測(cè)電路的設(shè)計(jì)
在系統(tǒng)運(yùn)行中有可能出現(xiàn)故障,如何及時(shí)采取措施,防止事態(tài)擴(kuò)大并及時(shí)向操作者提出報(bào)警,就要求系統(tǒng)具有自診斷功能。為此。必須為系統(tǒng)設(shè)計(jì)有關(guān)的監(jiān)測(cè)電路。這部分電路與系統(tǒng)正常的功能沒(méi)有什么關(guān)系,往往容易忽視。在一些重要的自控系統(tǒng)中,系統(tǒng)的自診斷功能是很重要的,詳情參閱第6章有關(guān)內(nèi)容。
(5)工藝設(shè)計(jì)
包括機(jī)架機(jī)箱、面板、配線、接插件等,必須考慮到安裝、調(diào)試、維修的方便。另外,硬件抗干擾措施也必須在硬件設(shè)計(jì)時(shí)一并考慮進(jìn)去,以免日后添加時(shí)發(fā)生困難,詳情參閱第5章有關(guān)內(nèi)容。
1.3 軟件任務(wù)分析
軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來(lái)了。
軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)作一個(gè)總體規(guī)劃。從軟件的功能來(lái)看可分為兩大類.:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量、計(jì)算、顯示、打印、輸出控制、通信等;另一類是監(jiān)控軟件,它是專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色:執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化;監(jiān)控軟件著眼全局,主要處理人機(jī)關(guān)系,其特點(diǎn)是邏輯嚴(yán)密,千頭萬(wàn)緒。
軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義(應(yīng)輸入、輸出定義)。在為各執(zhí)行模塊進(jìn)行定義時(shí),要將牽涉到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問(wèn)題一并規(guī)劃好。
各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來(lái)講,執(zhí)行模塊任務(wù)明確單純,比較容易編程。而監(jiān)控程序較易出問(wèn)題,這如同當(dāng)一名操作工人比較容易,而要當(dāng)好一個(gè)廠長(zhǎng)就比較困難了。