



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)C51編程幾個有用的模塊(2) 應(yīng)用舉例 現(xiàn)在來舉例說明上述幾個模塊的使用方法。 硬件環(huán)境描述: 為了控制一盞燈,需要單片機(jī)提供一個做控制功能的開關(guān)量,這里不描述外部接口電路,只說明當(dāng)單片機(jī)的P10腳為高電平時,燈滅,當(dāng)P10腳為低電平時,燈亮。可以通過計算機(jī)由串口發(fā)送命令來控制,或通過一個按鍵(push button不是自鎖式的按鍵)來手動控制(按
2、鍵接在P11腳上,當(dāng)鍵沒有按下時,P11電平為高,鍵按下時,引腳電平被接低),當(dāng)使用按鍵手動控制的時候,需要給計算機(jī)發(fā)送通知。設(shè)定串口通訊指令如下:數(shù)據(jù)包由0xff做包頭,4個字節(jié)長,第二個字節(jié)為命令代碼,第三個字節(jié)為數(shù)據(jù),最后一個字節(jié)為校驗(yàn)位。命令和數(shù)據(jù)代碼有如下組合:(計算機(jī)發(fā)給單片機(jī))0x10 0x01: 計算機(jī)控制燈亮。(數(shù)據(jù)位是非零值即可)0x10 0x00: 計算機(jī)控制燈滅。(單片機(jī)發(fā)給計算機(jī))0x11 0x01:單片機(jī)正常執(zhí)行控制指令,返回。(數(shù)據(jù)位是非零值即可)0x11 0x00: 單片機(jī)不能夠正常執(zhí)行控制指
3、令,或控制指令錯(不明含義的數(shù)據(jù)包或校驗(yàn)錯等)。0x12 0x01:手動控制燈亮。(數(shù)據(jù)位是非零值即可)0x12 0x00: 手動控制燈滅。 建立工程: 在硬盤上建立文件夾Projects,在Projects下建立Common文件夾及Example文件夾。將各模塊的頭文件及實(shí)現(xiàn)文件拷貝到Common文件夾下(推薦使用這樣的文件組織結(jié)構(gòu),其它工程也可以建立在Projects下,各工程共享Common文件夾中的代碼)。 啟動Keil
4、C的IDE,在Example下建立新工程,將各模塊的實(shí)現(xiàn)文件包含進(jìn)工程。 在Example文件夾下建立Output文件夾,更改工程設(shè)置,將Output作為輸出文件和List文件的輸出文件夾(推薦使用這樣的結(jié)構(gòu),當(dāng)保存工程文件時,可以簡單的刪除Output文件夾中的內(nèi)容而不會誤刪有用的工程文件)。 建立工程配置頭文件Config.h及工程主文件Example.c,并將Exmaple.c文件加入工程。 輸入代碼: 代
5、碼的具體編寫過程略。下面是最后的Config.h文件及Example.c文件。/ file: Config.h/#ifndef _CONFIG_H_#define _CONFIG_H_#include <Atmel/At89x52.h> / 使用AT89C52做控制#include “./Common/Common
6、.h” / 使用自定義的數(shù)據(jù)類型#define TIMER_RELOAD 922 / 11.0592MHz晶振,1ms中斷周期#define
7、160;TIMER_KBSCANDELAY 40 / 40ms重檢測按鍵狀態(tài),即40ms消抖#define SCOMM_AsyncInterface / 使用異步通訊服務(wù)#define IsPackageHeader(x)
8、0; (x) = 0xff) / 判斷包頭是不是0xff#define IsPackageTailer(x, y, z) (y) <= (z) / 判斷包的長度是不是足夠#endif / _CONFIG_H_/ file: Example.c/
9、#include <Atmail/At89x52.h>#include “./Common/Common.h”#include “./Common/Timer.h”#include “./Common/Scomm.h”#include “./Common/KBScan.h”BIT gbitLampState = 1;
10、; / 燈的狀態(tài),缺省為offstatic void Initialize() InitTimerModule(); / 初始化時鐘模
11、塊 InitSCommModule(0xfd, TRUE); / 初始化通訊模塊,11.0592MHz晶振,
12、0; / 波特率為19200 EA = 1; &
13、#160; / 開中斷void main() Initialize(); / 初始化
14、 while(TRUE) / 主循環(huán) ImpTimerService();
15、60; / 實(shí)現(xiàn)時鐘中斷服務(wù),如鍵盤掃描 AsyncRecePackage(4); /
16、60;接收4個字節(jié)長的數(shù)據(jù)包/ 在中斷外部響應(yīng)時鐘中斷事件void OnTimerEvent() / do nothing/ 控制外部燈static void TriggerLamp(BIT
17、60;bEnable) P10 = bEnable; / 需要反相控制/ 鍵掃描回調(diào)函數(shù)BYTE KBScan()
18、0; BIT b; P11 = 1; / 讀之前拉高引腳電平 &
19、#160;b = P11; / 讀入引腳狀態(tài) return b;
20、0; / 數(shù)據(jù)反相做掃描碼/ 計算校驗(yàn)和static BYTE CalcCheckSum(BYTE* pbyBuf, BYTE byLen) BYTE by,
21、60;bySum = 0; for(by = 0; by < byLen; by+) bySum += pbyBufby; return 0 bySum;/ 接收到鍵盤消息回調(diào)函數(shù)void onKeyPressed(BYTE byValue,
22、160;BYTE byState) BYTE by4; if(byState = 0) switch(byValue) case
23、0;0x01: gbitLampState = g bitLampState; / 燈狀態(tài)取反 TriggerLamp(gbitLampState);
24、0;/ 執(zhí)行控制 by0 = 0xff; / 構(gòu)造數(shù)據(jù)包
25、160; by1 = 0x12; by2 = (BYTE)gbitLampState; by3 = CalcCheckSum(by, 3); / 求校驗(yàn)和 &
26、#160; SendPackage(by, 4); / 發(fā)送數(shù)據(jù)包 break; /
27、處理其它掃描碼 default: break; / 接收到數(shù)據(jù)包回調(diào)函數(shù)void OnRecePackage(BYTE* pbyBuf, BYTE byBufLen) BYTE by4; &
28、#160; by0 = 0xff; by1 = 0x11; if(byBufLen != 4 | pbyBuf3 != CalcCheckSum(pbyBuf, 3) by2 = 0;
29、60; by3 = CalcCheckSum(by, 3); SendPackage(by, 4); / 處理長度或校驗(yàn)和不正確 switch(pbyBuf1) case 0x10: gbitLampState = (BIT)pbyBuf2; TriggerLamp(gbitLampState);
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年體育休閑廣場體育活動策劃評估報告
- 藥品設(shè)備設(shè)施管理制度
- 藥品領(lǐng)用庫存管理制度
- 藥店各項(xiàng)衛(wèi)生管理制度
- 藥店灌裝中藥管理制度
- 菜鳥渠道銷售管理制度
- 設(shè)備主辦培訓(xùn)管理制度
- 設(shè)備基礎(chǔ)安全管理制度
- 設(shè)備工模夾具管理制度
- 設(shè)備材料使用管理制度
- 2025年度智能駕駛技術(shù)研發(fā)合同4篇
- 醫(yī)學(xué)檢驗(yàn)技術(shù)專業(yè)就業(yè)能力展示
- 體育場館消防控制室操作規(guī)范
- 《中國政法大學(xué)》課件
- 國開學(xué)習(xí)網(wǎng)《大數(shù)據(jù)技術(shù)概論》形考任務(wù)1-4答案
- 《蛇咬傷的急診處理》課件
- 房屋建筑學(xué)試題庫(含答案)
- 造紙研學(xué)活動方案
- 英語研究報告范文
- 乳制品行業(yè)的跨界合作與創(chuàng)新
- 高中數(shù)學(xué)教師資格考試學(xué)科知識與教學(xué)能力試題及答案指導(dǎo)(2024年)
評論
0/150
提交評論