導航:首頁 > 操作系統 > 單片機c程序應用實例詳解

單片機c程序應用實例詳解

發布時間:2022-08-11 07:11:27

⑴ 51單片機C語言應用程序設計實例精講的內容簡介

全書實例豐富,每個例子都調試通過,都有具體的設計思路、硬體電路、軟體設計以及程序代碼分析,同時附錄里專門提供了實例配套實驗箱內容,對於讀者學習51單片機的應用開發提供了參考和指導價值。
《51單片機C語言應用程序設計實例精講》中的所有程序代碼都使用C語言實現,簡單易學、易懂。《51單片機C語言應用程序設計實例精講》適合計算機、自動化、電子及硬體等相關專業的學生進行學習,同時也可供從事51單片機開發的科研設計人員參考使用。
《51單片機C語言應用程序設計實例精講》配有一張光碟,光碟里包括了書中所有的程序代碼和電路圖,讀者稍加修改即可用於自己的設計,物超所值。

⑵ 51單片機C語言應用程序設計實例精講的目錄

第1章51單片機開發的基礎知識
1.151單片機的硬體結構
1.1.1功能模塊
1.1.2CPU
1.1.3並行I/O埠
1.1.4存儲囂結構
1.1.5定時/計數器
1.1.6串列口
1.1.7中斷系統
1.251單片機的指令系統
1.2.1定址方式
1.2.2指令說明
1.2.3指令系統表
1.3本章總結
第2章C語言程序各語句用法與意義
2.1數據結構
2.1.1數據類型
2.1.2變數與常量
2.1.3數組
2.1.4指針
2.1.5結構
2.1.6共用體
2.1.7枚舉
2.2運算符與表達式
2.2.1運算符分類與優先順序
2.2.2算術運算符與表達式
2.2.3關系運算符與表達式
2.2.4邏輯運算符與表達式
2.2.5位操作運算符與表達式
2.2.6賦值運算符與表達式
2.3程序結構與函數
2.3.1程序結構
2.3.2函數
2.4流程式控制制語句
2.4.1選擇語句
2.4.2循環語句
2.4.3轉移語句
2.5本章總結
第3章Keil8051C編譯
3.1Keil編譯器簡介
3.2使用Keil開發應用軟體
3.2.1建立工程
3.2.2工程的設置
3.2.3編譯與連接
3.3dScopeforWindows的使用
3.3.1如何啟動
3.3.2如何調試
3.3.3調試窗口
3.4本章總結 第4章單片機實現液晶顯示
4.1實例說明
4.2設計思路分析
4.2.1液晶顯示模塊
4.2.2液晶顯示工作原理
4.2.3設計思路
4.3硬體電路設計
4.3.1器件選取
4.3.2電源模塊
4.3.3液晶顯示模塊
4.3.4單片機模塊
4.4軟體設計
4.4.1液晶控制驅動囂指令集
4.4.2程序說明
4.5實例總結
第5章基於MAX7219的8位數碼管顯示
5.1實例說明
5.2設計思路分析
5.2.1LED顯示驅動晶元的選取
5.2.2MAX7219的工作原理
5.3硬體電路設計
5.3.1主要器件
5.3.2電路原理圖
5.4軟體設計
5.4.1MAX7219的工作時序和寄存器描述
5.4.2程序說明
5.5實例總結
第6章鍵盤輸入實例——實現4x4鍵盤
6.1實例說明
6.2設計思路分析
6.3硬體電路設計
6.4軟體設計
6.5實例總結
第7章單片機實現語音錄放
7.1實例說明
7.2設計思路分析
7.2.1語音晶元選取
7.2.2語音晶元1SD2560簡介
7.3硬體電路設計
7.3.1主要器件
7.3.2電路原理圖及說明
7.4軟體設計
7.4.1程序流程
7.4.2程序說明
7.5實例總結 第8章基於MAX197的並行A/D轉換
8.1實例說明
8.2設計思路分析
8.2.1A/D轉換原理
8.2.2如何選擇A/D轉換器件
8.2.3A/D轉換器對電源電路的要求
8.3硬體電路設計
8.3.1主要器件
8.3.2電路原理圖及說明
8.4軟體設計
8.4.1MAX197控制字
8.4.2程序流程
8.4.3程序說明
8.5實例總結
第9章基於TLC549的串列A/D轉換
9.1實例說明
9.2設計思路分析
9.2.1晶元選取
9.2.2工作原理
9.3硬體電路設計
9.3.1主要器件
9.3.2電路原理圖及說明
9.4軟體設計
9.4.1轉換過程和時序要求
9.4.2程序流程
9.4.3程序說明
9.5實例總結
第10章基於MAX527的並行D/A轉換
10.1實例說明
10.2設計思路分析
10.2.1D/A轉換原理
10.2.2如何選擇D/A轉換器件
10.2.3D/A轉換器對電源電路的要求
10.3硬體電路設計
10.3.1主要器件
10.3.2電路原理圖及說明
10.4軟體設計
10.4.1MAX527的地址和重要引腳
10.4.2程序流程
10.4.3程序說明
10.5實例總結
第11章基於MAX517的串列D/A轉換
11.1實例說明
11.2設計思路分析
11.2.1晶元選取
11.2.2工作原理
11.3硬體電路設計
11.3.1主要器件
11.3.2電路原理圖及說明
11.4軟體設計
11.4.1時序要求和轉換過程
11.4.2程序說明
11.5實例總結
第12章基於SHT71數字溫/濕度感測器的採集實現
12.1實例說明
12.2設計思路分析
12.2.1SHT71性能概述
12.2.2SHT71的功能說明
12.2.3SHT71的引腳尺寸和說明
12.3硬體電路設計
12.4軟體設計
12.4.1SHT71的操作方法
12.42程序流程
12.4.3源程序清單
12.5實例總結
第13章基於DS1624的數字溫度計設計
13.1實例說明
13.1.2設計思路分析
13.2.1DS1624簡介
13.2.2DS1624基本特性
13.2.3DS1624工作原理
13.2.4DS1624工作方式
13.2.5DS1624的指令集
13.3硬體電路設計
13.3.1硬體設計
13.3.2原理科及其說明
13.4軟體設計
13.4.1程序流程
13.4.2程序說明
13.5實例總結 第14章基於DS12C887的實時日歷時鍾顯示系統設計
14.1實例說明
14.2設計思路分析
14.2.1選擇合適的日歷時鍾晶元7
14.2.2如何由DS12C887晶元獲取時間信息
14.3硬體電路設計
14.3.1結構框圖
14.3.2主要器件
14.3.3電路原理圖及說明
14.4軟體設計
14.4.1DS12C877的內存空間
14.4.2程序流程
14.4.3程序代碼及說明
14.5實例總結
第15章單片機控制的步進電機系統
15.1實例說明
15.2設計思路分析
15.2.1步進電機的工作原理
15.2.2步進電機的控制
15.2.3脈沖分配與驅動晶元的選取
15.3硬體電路設計
15.3.1結構框圖
15.3.2主要器件
15.3.3電路原理圖廈說明
15.4軟體設計
15.4.1程序流程
15.4.2程序說明
15.5實例總結
第16章基於MAX1898的智能充電器設計
16.1實例說明
16.2設計思路分析
16.2.1為何需要實現充電器的智能化
16.2.2如何選擇電池充電晶元
16.2.3MAX1898的充電工作原理
16.3硬體電路設計
16.3.1主要器件
16.3.2電路原理圖及說明
16.4軟體設計
16.4.1程序流程
16.4.2程序說明
16.5實例總結 第17章基於NORFlashAM29LV320的數據存儲
17.1實例說明
17.2設計思路分析
17.2.1晶元AM29LV320
17.2.2具體設計思路
17.3硬體電路設計
17.4軟體設計
17.4.1AM29LV320的命令與狀態
17.4.2串列非同步數據傳輸
17.4.3程序代碼說明
17.5實例總結
第18章基於XC95144的串口擴展
18.1實例說明
18.2設計思路分析
18.2.1串口發送的設計
18.2.2串口接收的設計
18.2.3串口模塊的設計l
18.3硬體電路設計
18.4軟體設計
18.4.1CPLD的設計原理圖
18.4.2C51單片機程序代碼說明
18.5實例總結
第19章基於8255擴展並行口
19.1實例說明
19.2設計思路分析
19.2.1並行口擴展的原理
19.2.2晶元選擇
19.3硬體電路設計
19.4軟體設計
19.5實例總結 第20章單片機實現智能信號發生器
第21章單片機實現步進式PWM信號輸出
第22章單片機實現CRC演算法
第23章單片機實現軟體濾波
第七篇通信傳輸系統設計
第24章單片機實現點對點的數據傳輸
第25章單片機實現點對多點的數據傳輸
第26章單片機實現乙太網介面
第27章單片機實現1C匯流排通信
第28章單片機實現RS-485匯流排現場監測系統
第29章CAN匯流排介面通信設計
第八篇電源監控與抗干擾設計
第30章單片機監控電路設計
第31章光電隔離電路設計 附錄A匯編語言與C語言的混合編程
附錄B實例配套實驗箱

⑶ 單片機C語言程序設計實訓100例的介紹

本書為北京航空航天大學出版社出版,作者為彭偉。本書基於AVR Studio+WinAVR(GCC)組合環境和Proteus硬體模擬平台,精心安排了100個AVR單片機C程序設計案例。全書提供了所有寨例完整的C語言源程序,各案例設計了難易適中的實訓目標。本書適合用作大專院校學生學勻實踐AVR單片機C語言程序設計技術的參考書,也可用作電子工程技術人員、單片機技術愛好者的學習參考書。

⑷ 51單片機C語言應用程序設計實例精講的介紹

《51單片機C語言應用程序設計實例精講》通過大量的實例,介紹了51單片機各種C語言應用專題程序設計的流程、方法、技巧及設計思想。全書共分31章,第1章~第3章為基礎知識,介紹了51單片機開發的硬體結構、指令系統、C語言設計以及Keil8051C編譯器知識;第4章~第31章為本書的重點,通過28個典型的C語言應用實例,介紹了51單片機的各種應用開發和使用技術,包括輸入,輸出、數據採集,控制系統、存儲系統與外設擴展、信號與演算法實現、網路通信與傳輸、電源監控與抗干擾設計。

⑸ 單片機C語言應用100例的目錄

第1章概述
1.1單片機的結構與應用
1.1.1單片機的定義、分類與內部組成
1.1.2單片機應用系統的結構及其工作過程
1.1.3單片機的應用
1.2單片機基礎知識
1.2.1數制與數制間的轉換
1.2.2單片機中數的表示方法及常用數制的對應關系
1.2.3邏輯數據的表示
1.2.4單片機中常用的基本術語
1.3單片機入門的有效方法與途徑
1.4學習單片機的基本條件
1.4.1軟體條件
1.4.2硬體條件
習題與實驗
第2章單片機開發軟體及開發過程
2.1模擬軟體Proteus的使用
2.1.1Proteus的主要功能特點
2.1.2實例1:功能感受——Pmteus模擬單片機播放《渴望》主題曲
2.1.3Proteus軟體的界面與操作介紹
2.1.4實例2:Proteus模擬設計快速入門
2.2KeilC51的使用
2.2.1單片機最小系統
2.2.2實例3:用Kei1C51編寫點亮一個發光二極體的程序
2.3程序燒錄器及燒錄軟體的使用
習題與實驗
第3章逐步認識單片機基本結構
3.1實例4:用單片機控制一個燈閃爍
3.1.1實現方法
3.1.2程序設計
3.1.3用Proteus軟體模擬
3.1.4延時程序分析
3.2實例5:將P1口狀態送入P0口、P2口和P3口
3.2.1實現方法
3.2.2程序設計
3.2.3用Proteus軟體模擬
3.2.4用實驗板試驗
3.2.5I/O口功能介紹
3.2.6I/O口的結構分析
3.3實例6:使用P3口流水點亮8位1ED
3.3.1實現方法
3.3.2程序設計
3.3.3用Proteus軟體模擬
3.3.4用實驗板試驗
3.4實例7:通過對P3口地址的操作流水點亮8位1ED
3.4.1實現方法
3.4.2程序設計
3.4.3用Proteus軟體模擬
3.4.4用實驗板試驗
3.5MCS-51單片機存儲器的基本結構
3.5.1程序存儲器
3.5.2數據存儲器
3.6單片機的復位電路
習題與實驗
第4章單片機C語言開發基礎
4.1C語言源程序的結構特點
4.2標志符與關鍵字
4.3C語言的數據類型與運算符
4.3.1數據類型
4.3.2運算符
4.3.3實例8:用不同數據類型的數據控制1ED的閃爍
4.3.4實例9:用P0口、P1口分別顯示加法和減法運算結果
4.3.5實例10:用P0口、P1口顯示乘法運算結果
4.3.6實例11:用P1口、P0口顯示除法運算結果
4.3.7實例12:用自增運算控制P0口8位1ED的閃爍花樣
4.3.8實例13:用P0口顯示邏輯「與」運算結果
4.3.9實例14:用P0口顯示條件運算結果
4.3.10實例15:用P0口顯示按位「異或」運算結果
4.3.11實例16:用P0口顯示左移運算結果
4.3.12實例17:「萬能邏輯電路」實驗
4.3.13實例18:用右移運算流水點亮P1口8位1ED
4.4C語言的語句
4.4.1概述
4.4.2控制語句
4.4.3實例19:用if語句控制P0口8位LED的點亮狀態
4.4.4實例20:用swtich語句控制PO口8位LED的點亮狀態
4.4.5實例21:用for語句設計鳴笛報警程序
4.4.6實例22:用while語句控制PO口8位LED閃爍花樣
4.4.7實例23:用dOwhile語句控制PO口8位LED流水點亮
4.5C語言的數組
4.5.1數組的定義和引用
4.5.2實例24:用字元型數組控制PO口8位LED流水點亮
4.5.3實例25:用PO口顯示字元串常量
4.6C語言的指針
4.6.1指針的定義與引用
4.6.2實例26:用PO口顯示指針運算結果
4.6.3實例27:用指針數組控制PO口8位LED流水點亮
4.6.4實例28:用數組的指針控制PO口8位LED流水點亮
4.7C語言的函數
4.7.1函數的定義與調用
4.7.2實例29:用PO口、P1口顯示整型函數返回值
4.7.3實例30:用有參函數控制PO口8位LED流水速度
4.7.4實例3l:用數組作函數參數控制PO口8位LED流水點亮
4.7.5實例32:用指針作函數參數控制PO口8位LED流水點亮
4.7.6實例33:用函數型指針控制PO口8位LED流水點亮
4.7.7實例34:用指針數組作為函數的參數顯示多個字元串
4.7.8實例35:字元軟體ctype.h中的isalpha()函數應用舉例
4.7.9實例36:內部函數庫文件intrins.h中的_cml_()函數應用舉例
4.7.10實例37:標准函數庫文件stdlib.h中的rand()函數應用舉例
4.7.1l實例38:字元串函數庫文件string.h中的strcmp()函數應用舉例
4.8C語言的編譯預處理
4.8.1常用預處理命令介紹
4.8.2實例39:宏定義應用舉例
4.8.3實例40:文件包含應用舉例
4.8.4實例41:條件編譯應用舉例
習題與實驗
第5章單片機的定時器/計數器
5.1定時器,計數器的基本概念
5.2定時器/計數器的結構及工作原理
5.2.1定時器/計數器的結構
5.2.2定時器,計數器的工作原理
5.3定時器,計數器的控制
5.3.1定時器/計數器的方式控制寄存器(TMOD)
5.3.2定時器/計數器控制寄存器(TCON)
5.3.3定時器/計數器的4種工作方式
5.3.4定時器/計數器中定時/計數初值的計算
5.4定時器/計數器應用舉例
5.4.1實例42:用定時器T0查詢方式控制P2口8位LED閃爍
5.4.2實例43:用定時器T1查詢方式控制單片機發出1kHz音頻
5.4.3實例44:用計數器TO查詢的方式計數,結果送P1口顯示
習題與實驗
第6章單片機的中斷系統
6.1中斷系統的基本概念
6.2中斷系統的結構及控制
6.2.1中斷系統的結構
6.2.2中斷系統的控制
6.3中斷系統應用舉例
6.3.1實例45:用定時器TO的方式1控制LED閃爍
6.3.2實例46:用定時器TO的方式1實現長時間定時
6.3.3實例47:用定時器T1的方式1控制兩個LED以不同周期閃爍
6.3.4實例48.用計數器T1的中斷方式控制發出1kHz音頻
6.3.5實例49:用定時器TO的方式O控制播放《好人一生平安》
6.3.6實例50.用計數器TO的方式2對外部脈沖計數
6.3.7實例51:用定時器TO的門控制位測量外部正脈沖寬度
6.3.8實例52:用外中斷INT0測量負跳變信號累計數
6.3.9實例53-用外中斷控制INT0控制P1口LED亮滅狀態
6.3.10實例54:用外中斷INT0中斷測量外部負脈沖寬度
習題與實驗
第7章串列通信技術
7.1串列通信的基本概念
7.2串列通信口的結構
7.3串列通信口的控制
7.3.1串列控制寄存器SCON
7.3.2電源控制寄存器PCON
7.3.3四種工作方式與波特率的設置
7.4串列通信口應用舉例
7.4.1實例55.將方式0用於擴展並行輸出控制流水燈
7.4.2實例56.基於方式1的單工通信
7.4.3實例57:基於方式3的單工通信
7.4.4實例58:單片機向計算機發送數據
7.4.5實例59:單片機接收計算機送出的數據
習題與實驗
第8章介面技術
第9章新型串列介面晶元應用介紹
第10章常用功能器件應用舉例
第11章高級綜合應用技術
參考文獻
……

⑹ 單片機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,則可編寫出對應十六進制碼的七段碼表位元組數據

⑺ 51單片機應用實例詳解的內容簡介

如果不是為了應付考試,那單片機的學習更應該強調系統的應用。 《51單片機應用實例詳解》是《51單片機應用從零開始》的姊妹書,既可作為其「續集」以擴展學習單片機基礎知識之後的系統應用,也可獨立成冊作為單片機從基礎學習到系統應用的幫手。
《51單片機應用實例詳解》在選材時,結合國內外重點大學一線教師的教學經驗,並借鑒國外經典教材的寫作手法,對51單片機的應用系統及局部知識進行了詳實的介紹。除了每章中大量的單片機系統模塊及有機系統的介紹外,「實例點撥」環節還展示了許多相對完整的單片機系統實例供讀者學習、開發時參考。在多角度、多方面的實例化講解中,讀者既掌握了單片機系統開發的基本技能,還開闊了單片機流行應用的視野。
《51單片機應用實例詳解》秉承《51單片機應用從零開始》一書語言生動風趣及講解循序漸進的特點,在顧及實用性、技術性的同時,最大程度地提高了可讀性,力求闡述得平實、通俗、易懂。《51單片機應用實例詳解》適合作為電類本科、專科學生的參考用書及高職高專學生的單片機應用技術教材,也可作為無線電愛好者學習單片機的參考書。

⑻ C語言在單片機中的應用

單片機就像是一個軀體,而程序就是它的靈魂。C語言就是製造(編寫)它的靈魂的工具。
單片機中的C語言與標准C語言有一些不同,有很多對位的定義和操作。在單片機應用中最常用的編譯軟體是KEIL
C51,功能強大。
C語言是一種高級語言,在單片機應用中其優點也是非常突出:編程靈活、可讀性、可移植性都很強。當然,若能在學C之前懂一些匯編語言,就更好啦。既能熟悉位操作,又能發揮C語言的優勢。

⑼ 求 單片機簡單的C語言程序例子(越多越好)

我前幾天剛在網上看到的,不知道對你有沒有用》

1. 閃爍燈
1. 實驗任務
如圖4.1.1所示:在P1.0埠上接一個發光二極體L1,使L1在不停地一亮一滅,一亮一滅的時間間隔為0.2秒。
2. 電路原理圖

圖4.1.1
3. 系統板上硬體連線
把「單片機系統」區域中的P1.0埠用導線連接到「八路發光二極體指示模塊」區域中的L1埠上。
4. 程序設計內容
(1). 延時程序的設計方法
作為單片機的指令的執行的時間是很短,數量大微秒級,因此,我們要求的閃爍時間間隔為0.2秒,相對於微秒來說,相差太大,所以我們在執行某一指令時,插入延時程序,來達到我們的要求,但這樣的延時程序是如何設計呢?下面具體介紹其原理:
如圖4.1.1所示的石英晶體為12MHz,因此,1個機器周期為1微秒
機器周期 微秒
MOV R6,#20 2個機器周期 2
D1: MOV R7,#248 2個機器周期 2 2+2×248=498 20×
DJNZ R7,$ 2個機器周期 2×248 498
DJNZ R6,D1 2個機器周期 2×20=40 10002
因此,上面的延時程序時間為10.002ms。
由以上可知,當R6=10、R7=248時,延時5ms,R6=20、R7=248時,延時10ms,以此為基本的計時單位。如本實驗要求0.2秒=200ms,10ms×R5=200ms,則R5=20,延時子程序如下:
DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET
(2). 輸出控制
如圖1所示,當P1.0埠輸出高電平,即P1.0=1時,根據發光二極體的單向導電性可知,這時發光二極體L1熄滅;當P1.0埠輸出低電平,即P1.0=0時,發光二極體L1亮;我們可以使用SETB P1.0指令使P1.0埠輸出高電平,使用CLR P1.0指令使P1.0埠輸出低電平。
5. 程序框圖
如圖4.1.2所示

圖4.1.2
6. 匯編源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延時子程序,延時0.2秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C語言源程序#include <AT89X51.H>sbit L1=P1^0;void delay02s(void) //延時0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}

2. 模擬開關燈
1. 實驗任務
如圖4.2.1所示,監視開關K1(接在P3.0埠上),用發光二極體L1(接在單片機P1.0埠上)顯示開關狀態,如果開關合上,L1亮,開關打開,L1熄滅。
2. 電路原理圖

圖4.2.1
3. 系統板上硬體連線
(1). 把「單片機系統」區域中的P1.0埠用導線連接到「八路發光二極體指示模塊」區域中的L1埠上;
(2). 把「單片機系統」區域中的P3.0埠用導線連接到「四路撥動開關」區域中的K1埠上;
4. 程序設計內容
(1). 開關狀態的檢測過程
單片機對開關狀態的檢測相對於單片機來說,是從單片機的P3.0埠輸入信號,而輸入的信號只有高電平和低電平兩種,當撥開開關K1撥上去,即輸入高電平,相當開關斷開,當撥動開關K1撥下去,即輸入低電平,相當開關閉合。單片機可以採用JB BIT,REL或者是JNB BIT,REL指令來完成對開關狀態的檢測即可。
(2). 輸出控制
如圖3所示,當P1.0埠輸出高電平,即P1.0=1時,根據發光二極體的單向導電性可知,這時發光二極體L1熄滅;當P1.0埠輸出低電平,即P1.0=0時,發光二極體L1亮;我們可以使用SETB P1.0指令使P1.0埠輸出高電平,使用CLR P1.0指令使P1.0埠輸出低電平。
5. 程序框圖

圖4.2.2
6. 匯編源程序 ORG 00HSTART: JB P3.0,LIGCLR P1.0SJMP STARTLIG: SETB P1.0SJMP STARTEND
7. C語言源程序#include <AT89X51.H>sbit K1=P3^0;sbit L1=P1^0;void main(void){while(1){if(K1==0){L1=0; //燈亮}else{L1=1; //燈滅}}}

3. 多路開關狀態指示
1. 實驗任務
如圖4.3.1所示,AT89S51單片機的P1.0-P1.3接四個發光二極體L1-L4,P1.4-P1.7接了四個開關K1-K4,編程將開關的狀態反映到發光二極體上。(開關閉合,對應的燈亮,開關斷開,對應的燈滅)。
2. 電路原理圖

圖4.3.1
3. 系統板上硬體連線
(1. 把「單片機系統」區域中的P1.0-P1.3用導線連接到「八路發光二極體指示模塊」區域中的L1-L4埠上;
(2. 把「單片機系統」區域中的P1.4-P1.7用導線連接到「四路撥動開關」區域中的K1-K4埠上;
4. 程序設計內容
(1. 開關狀態檢測
對於開關狀態檢測,相對單片機來說,是輸入關系,我們可輪流檢測每個開關狀態,根據每個開關的狀態讓相應的發光二極體指示,可以採用JB P1.X,REL或JNB P1.X,REL指令來完成;也可以一次性檢測四路開關狀態,然後讓其指示,可以採用MOV A,P1指令一次把P1埠的狀態全部讀入,然後取高4位的狀態來指示。
(2. 輸出控制
根據開關的狀態,由發光二極體L1-L4來指示,我們可以用SETB P1.X和CLR P1.X指令來完成,也可以採用MOV P1,#1111XXXXB方法一次指示。
5. 程序框圖

讀P1口數據到ACC中
ACC內容右移4次

ACC內容與F0H相或

ACC內容送入P1口
<![endif]-->
圖4.3.2
6. 方法一(匯編源程序)ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP STARTEND7. 方法一(C語言源程序)#include <AT89X51.H>unsigned char temp;void main(void){while(1){temp=P1>>4;temp=temp | 0xf0;P1=temp;}}8. 方法二(匯編源程序)ORG 00HSTART: JB P1.4,NEXT1CLR P1.0SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2CLR P1.1SJMP NEX2NEXT2: SETB P1.1NEX2: JB P1.6,NEXT3CLR P1.2SJMP NEX3NEXT3: SETB P1.2NEX3: JB P1.7,NEXT4CLR P1.3SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP STARTEND9. 方法二(C語言源程序)#include <AT89X51.H>void main(void){while(1){if(P1_4==0){P1_0=0;}else{P1_0=1;}if(P1_5==0){P1_1=0;}else{P1_1=1;}if(P1_6==0){P1_2=0;}else{P1_2=1;}if(P1_7==0){P1_3=0;}else{P1_3=1;}}}

先給你,傳不上 太多了

閱讀全文

與單片機c程序應用實例詳解相關的資料

熱點內容
演算法申請著作權 瀏覽:213
以前手機號換了要怎麼登錄農行app 瀏覽:192
線切割編程系統怎麼繪畫 瀏覽:234
如何搭建雲伺服器異地容災 瀏覽:923
黃金拐點指標源碼 瀏覽:91
演算法導論第九章 瀏覽:276
鴿子為什麼生成伺服器沒反應 瀏覽:490
freebsdnginxphp 瀏覽:215
雜訊消除演算法 瀏覽:608
vue類似電腦文件夾展示 瀏覽:112
後備伺服器有什麼功效 瀏覽:269
連不上伺服器怎麼連 瀏覽:600
什麼構架的可以刷安卓系統 瀏覽:771
愛奇藝APP怎麼兌換CDK 瀏覽:994
程序員買4k顯示器還是2k顯示器 瀏覽:144
python多進程怎麼多窗口 瀏覽:818
電腦文件夾怎麼取消類別 瀏覽:47
cad拉線段命令 瀏覽:924
如何用電腦清理手機沒用的文件夾 瀏覽:100
儲存層次結構對程序員的意義 瀏覽:477