單片機系統(tǒng)開發(fā)_單片機軟件設(shè)計_第1頁
單片機系統(tǒng)開發(fā)_單片機軟件設(shè)計_第2頁
單片機系統(tǒng)開發(fā)_單片機軟件設(shè)計_第3頁
單片機系統(tǒng)開發(fā)_單片機軟件設(shè)計_第4頁
單片機系統(tǒng)開發(fā)_單片機軟件設(shè)計_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、單片機軟件設(shè)計單片機軟件設(shè)計2022-5-19目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計典型模塊化程序典型模塊化程序程序的編寫、編譯程序的編寫、編譯vKeil CKeil C環(huán)境設(shè)置環(huán)境設(shè)置創(chuàng)建項目1、基于AT89C52處理器2、新建源代碼文件,并保存命名xxx.c3、右鍵點擊“Source Groupxx”將.c “Add Files to Group ”程序的編寫、編譯程序的編寫、編譯v程序編寫:程序編寫:DemoDemo示例示例/*功能:IO口操作,點亮一個LED*/#include /包含頭文件,包含特殊功能寄存器的定義sbit LED=P00

2、;/ 用sbit 關(guān)鍵字 定義 LED到P0.0端口/* 主函數(shù)*/void main (void) /此方法使用bit位對單個端口賦值 LED=1; /將P0.0口賦值 1,對外輸出高電平 LED=0; /將P0.0口賦值 0,對外輸出低電平,此時點亮了LED while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 程序的編寫、編譯程序的編寫、編譯vKeil CKeil C環(huán)境設(shè)置環(huán)境設(shè)置Target:設(shè)置時鐘晶振為12MHzOutput:選中Create HEX File選項, 編譯后會生成Hex文件, 用于下載到單片機中。Debug:左側(cè)配置軟件仿真模式; 右側(cè)配置硬件調(diào)試器

3、仿真。 (默認(rèn)即可)程序的編寫、編譯程序的編寫、編譯v程序編譯程序編譯編譯查看編譯輸出結(jié)果目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計典型模塊化程序典型模塊化程序程序的下載程序的下載vSTC89C52STC89C52STC ISP下載器USB轉(zhuǎn)串口可代替MAX232,給51單片機下載程序引出接口分別為:+5V,+3.3V,GND,TXD,RXD.(如果把(GND)接到設(shè)備的有電壓的針腳上,加電可能會燒毀)需要安裝USB轉(zhuǎn)串口驅(qū)動,通常為340芯片組下載軟件:STC-ISP-V4.83程序的下載程序的下載vSTC89C52STC89C52冷啟下載:冷啟下載

4、:1、使用下載軟件發(fā)送下載命令2、給STC單片機上電(如果之前已經(jīng)上電,就要斷電再上電)3、STC單片機才能進入到下載狀態(tài)不能下載?不能下載?檢查線路是否接錯ISP 接口電路與下載器接口電路電平?jīng)_突下載時下載速度太快程序的下載程序的下載vAT89S52AT89S52USB ASP / ISP通常為免驅(qū)型請實用帶保險的USB下載器,以便保護電腦U口程序的下載程序的下載vAT89S52AT89S52USB ASP / ISP下載軟件:AVR fighterProgisp目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計典型模塊化程序典型模塊化程序基礎(chǔ)程序設(shè)計基礎(chǔ)程

5、序設(shè)計v 單片機程序框架單片機程序框架v whilewhile()()主主循環(huán)循環(huán)v 延遲函數(shù)延遲函數(shù)v IOIO操作操作v 中斷操作中斷操作v 基礎(chǔ)電路模塊控制基礎(chǔ)電路模塊控制u 蜂鳴器控制蜂鳴器控制u 獨立按鍵輸入獨立按鍵輸入u 繼電器控制繼電器控制u 步進電機控制步進電機控制u 數(shù)碼管顯示數(shù)碼管顯示u LCD1602LCD1602顯示顯示無單片機編程基礎(chǔ)的同學(xué),可簡單理解,采用模塊化、積木式搭建單片機系統(tǒng)代碼基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v程序程序框架框架單片機程序主體結(jié)構(gòu):lWhile()大循環(huán)輪詢式執(zhí)行各任務(wù)l外部中斷外部觸發(fā)中斷,如按鍵,執(zhí)行某任務(wù)l定時器中斷 固定間隔時間執(zhí)行某任務(wù)#i

6、nclude main() /首先進行IO、中斷、定時器工作模式初始化 while(1) /輪詢式執(zhí)行任務(wù) void ISR_Key(void) interrupt 0 using 1 /執(zhí)行外部中斷處理任務(wù)void Timer0_isr(void) interrupt 1 using 1 /執(zhí)行定時器中斷處理任務(wù)基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計vwhile()while()主循環(huán)主循環(huán)while (1) /主循環(huán) /主循環(huán)中添加需要一直工作的任務(wù)程序/任務(wù)一:led閃爍 LED0=0; /將P0.0口賦值 0,對外輸出低電平 Delay(10000); /調(diào)用延時程序;用于改變閃爍頻率 LED0=1

7、; /將P0.0口賦值 1,對外輸出高電平 Delay(10000);/任務(wù)二:/任務(wù)三:/* 延時函數(shù),含有輸入?yún)?shù) unsigned int t,其值的范圍是 065535*/void Delay(unsigned int t) while(-t);基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v延遲函數(shù)延遲函數(shù)估算延遲函數(shù)估算延遲函數(shù)/* uS延時函數(shù),參數(shù) unsigned char t,其值范圍是 0255。晶振12M。大致延時 長度如下 T=t x 2+5 uS */void DelayUs2x(unsigned char t) while(-t);/* mS延時函數(shù),參數(shù) unsigned char

8、t,范圍是 0255。晶振12M*/void DelayMs(unsigned char t) while(t-) /大致延時1mS DelayUs2x(245); DelayUs2x(245); 精確延時請使用匯編機器周期指令周期晶振頻率基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計vIOIO操作操作對單片機的控制,其實就是對I/O口的控制,無論單片機對外界進行何種控制,或接受外部的何種控制,都是通過I/O口進行的。51單片機總共有P0、P1、P2、P3四個8位雙向輸入輸出端口,每個端口都有鎖存器(即專用寄存器P0P3 )、輸出驅(qū)動器和輸入緩沖器。每個IO口有一個IO口寄存器Px,而且這個寄存器可以位尋址Px.n

9、(定義詳見 reg51.h 或 reg52.h)基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計vIOIO操作操作1、當(dāng)P0作為I/O口使用時,特別是作為輸出時,輸出級屬于開漏電路,接拉電流負(fù)載時必須外接上拉電阻才會有高電平輸出;如果作為輸入,必須先向相應(yīng)的鎖存器寫“1”,才不會影響輸入電平。2、P1、P2 和P3 口為準(zhǔn)雙向口, 在內(nèi)部差別不大, 但使用功能有所不同。 P3第二功能各引腳功能定義:P3.0:RXD串行口輸入P3.1:TXD串行口輸出P3.2:INT0外部中斷0輸入P3.3:INT1外部中斷1輸入P3.4:T0定時器0外部輸入P3.5:T1定時器1外部輸入P3.6:WR外部寫控制P3.7:RD外部讀控

10、制 P1口是用戶專用 8 位準(zhǔn)雙向I/O口,具有通用輸入/輸出功能, 每一位都能獨立地設(shè)定為輸入或輸出。當(dāng)有輸出方式變?yōu)檩斎敕绞綍r, 該位的鎖存器必須寫入“1”, 然后才能進入輸入操作。 P2口是 8 位準(zhǔn)雙向I/O口。外接I/O設(shè)備時, 可作為擴展系統(tǒng)的地址總線,輸出高8位地址, 與P0 口一起組成 16 位地址總線。 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計vIOIO操作示例操作示例i nclude sbit bv=P20;/定義位變量,關(guān)聯(lián)P2.0管腳。sbit是數(shù)據(jù)類型 int main(void) unsigned char pv; /位操作,以P2口的第0位為例: bv=0;/直接對P2口的第0位

11、管腳輸出低電平 bv=1;/ 直接對P2口的第0位管腳輸出高電平 /總線操作輸出數(shù)據(jù),以P2口為例: P2=0 xaa;/直接賦值,P2口輸出數(shù)據(jù)0 xaa /總線操作讀取數(shù)據(jù),以P2口為例: pv=P2;/直接讀取P2口的數(shù)據(jù)放到pv變量 return 0; 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷8051:5個中斷源8052:6個中斷源(+T2)中斷號優(yōu)先級中斷源中斷入口地址01 高外部中斷00003H12定時器0000BH23外部中斷10013H34定時器10018H4 5 低串口中斷0023HC語言程序中可不關(guān)心該地址基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷主要與中斷程序控制相關(guān)的寄存器:l 中斷

12、允許控制寄存器IEl定時器控制寄存器TCONl串口控制寄存器SCONl中斷優(yōu)先控制寄存器IPl定時器工作方式控制寄存器TMODl定時器初值賦予寄存器(TH0/TH1,TL0/TL1)基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷1.中斷允許控制寄存器中斷允許控制寄存器IE :EX0(EX1):外部中斷允許控制外部中斷允許控制位位 EX0=1 外部中斷0開關(guān)閉合 /開外部0中斷 EX0=0 外部中斷0開關(guān)斷開ET0(ET1):定時中斷允許控制位定時中斷允許控制位 ET0=1 定時器中斷0開關(guān)閉合 /開定時器中斷0 ET0=0 定時器中斷0開關(guān)斷開ES: 串口中斷允許控制位串口中斷允許控制位 ES=1 串口中

13、斷開關(guān)閉合 /開串口中斷 ES=0 串口中斷開關(guān)斷開EA:總中斷控制:總中斷控制 (EA=1:開總中斷):開總中斷)基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷2.定時器控制寄存器定時器控制寄存器 TCON /控制外部中斷和定時器控制外部中斷和定時器中斷中斷外部中斷:外部中斷: IE0(IE1):外部中斷請求標(biāo)志位:外部中斷請求標(biāo)志位 當(dāng)外部中斷INT0(INT1)引腳出現(xiàn)有效的請求信號(接入低電平或下降沿信號時),此位由單片機自動置1,cpu開始響應(yīng),處理中斷,而當(dāng)入中斷程序后由單片機自動置0. IT0(IT1):外部中斷觸發(fā)方式控制位外部中斷觸發(fā)方式控制位 /選擇有效信號選擇有效信號 IT0(IT1

14、)=1:脈沖觸發(fā)方式,下降沿有效。 IT0(IT1)=0:電平觸發(fā)方式,低電平有效?;A(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷2.定時器控制寄存器定時器控制寄存器 TCON /控制外部中斷和定時器控制外部中斷和定時器中斷中斷定時器中斷定時器中斷: TF0(TF1):定時器定時器/計數(shù)器溢出中斷標(biāo)志位計數(shù)器溢出中斷標(biāo)志位 當(dāng)定時器、計數(shù)器計數(shù)溢出的時候,此位由單片機自動置1,cup開始響應(yīng),處理中斷,而當(dāng)進入中斷程序后由單片機自動置0. TRO(TR1):定時器:定時器/計數(shù)器啟動位計數(shù)器啟動位 TR0(TR1)=1; 啟動定時器/計數(shù)器 TR0(TR1)=0; 關(guān)閉定時器/計數(shù)器基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)

15、計v中斷中斷3.定時器工作方式定時器工作方式TMOD低半字節(jié)(D0/D1/D2/D3)用來控制定時器/計數(shù)器0高半字節(jié)(D4/D5/D6/D7)用來控制定時器/計數(shù)器1GATE=0時,僅由TR0,TR1置位分別啟動定時器T0、T1C/T=0時為定時功能,C/T=1時為計數(shù)功能(引腳外部脈沖)M0、M1方式選擇功能基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷4.定時器初值定時器初值TL0/TH0(以12M晶振,工作方式1,16位計數(shù)器為例,定時Xus) 1.時鐘周期的時間t=1/12M=1/12 us 2.機器周期的時間T=12*1/12=1 us 3. 每機器周期計數(shù)器+1,所以計數(shù)器+1經(jīng)過時間為 1

16、 us 16為計數(shù)器要全部置1(即達(dá)到65535)+1后,溢出才會觸發(fā)中斷,所以初值=(65536-X) 4.將初值轉(zhuǎn)化為16進制碼,分別付給TH0和TL0 eg:所定時間5ms;初值=(65536-5000)=60536=EC78;TH0=0XEC; TL0=0X78;程序中常用賦初值算法:程序中常用賦初值算法: TH0=(65536-20000)/256; TL0=(65536-20000)%256;基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v中斷中斷5.串口控制寄存器串口控制寄存器SCON定時器中斷:定時器中斷: TI:串行口發(fā)送中斷標(biāo)志位串行口發(fā)送中斷標(biāo)志位 當(dāng)單片機串口發(fā)送完一幀數(shù)據(jù)后,此位由單片機自

17、動置1,而當(dāng)進入中斷服務(wù)程序后是不會自動清0的, 必須由用戶在中斷服務(wù)中用軟件清0. RI:串行口接收中斷標(biāo)志位串行口接收中斷標(biāo)志位 當(dāng)單片機串口接收完一幀數(shù)據(jù)后,此位由單片機自動置1,而當(dāng)進入中斷服務(wù)程序后是不會自動清0的, 必須由用戶在中斷服務(wù)軟件中用軟件清0. 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v定時器中斷示例定時器中斷示例void Init_Timer0(void) TMOD |= 0 x01; /使用模式1,16位定時器,“|”可使多個定時器互不影響 TH0=(65536-60000)/256; /賦初值 (定時60ms) TL0=(65536-60000)%256; EA=1; /總中斷打開

18、 ET0=1; /定時器中斷打開 TR0=1; /定時器開關(guān)打開main() Init_Timer0(); while(1);/* 定時器中斷子程序*/void Timer0_isr(void) interrupt 1 using 1 TH0=(65536-60000)/256; /重新賦值 TL0=(65536-60000)%256; LED=LED; /指示燈反相,可以看到閃爍Demo:定時器中斷0基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v外部中斷示例外部中斷示例功能:通過中斷接口P3.2連接的獨立按鍵測試,P0口的LED燈反向,邊沿觸發(fā)main() P0=0 xaa; /P0口初始值 EA=1; /全局

19、中斷開 EX0=1; /外部中斷0開 IT0=1; /邊沿觸發(fā)(IT0=0電平觸發(fā)) while(1) /在此添加其他程序 /*外部中斷程序*/void ISR_Key(void) interrupt 0 using 1 P0=P0; /進入中斷程序執(zhí)行程序,/此時可以通過 EA=0指令暫時關(guān)掉中斷 串口中斷以后再介紹Demo:外部中斷0邊沿觸發(fā)基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v發(fā)光二極管發(fā)光二極管LEDLED灌電流拉電流 ?控制負(fù)載,盡量使用低電平有效(上電初始化,所有IO為高電平)單個LED控制sbit led0 = P10;led0 = 0; /開燈led0 =1; /關(guān)燈整個P1口控制:流水燈

20、unsigned char tmp=0 xfe;while(1) P1= tmp; delay(); tmp = (tmp1)|1); if(tmp=0 xff) tmp=0 xfe;低電平有效Demo:LED流水燈基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v蜂鳴器控制程序蜂鳴器控制程序9013驅(qū)動高電平有效sbit beer = P04;beer = 0; /鳴叫beer =1; /關(guān)閉通過不同的間隔時間,可以達(dá)到類似倒車?yán)走_(dá)的效果void beer_freq (unsigned char t) beer = !beer; /鳴叫 or 關(guān)閉 DelayMs(t);Demo:蜂鳴器基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v獨

21、立按鍵獨立按鍵sbit KEY=P32; /定義按鍵輸入端口sbit LED=P00; /定義led輸出端口void main (void)KEY=1; /按鍵輸入端口電平置高,輸入模式while (1) /主循環(huán) if(!KEY) /如果檢測到低電平,說明按鍵按下,led點亮 LED=0; else LED=1; /如果按鍵未按下led滅 /上述4句可以用一句替代 LED=KEY; /主循環(huán)中添加其他需要一直工作的程序 這里未考慮軟件去抖查詢方式亦可用外部中斷Demo:獨立按鍵控制LED基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v繼電器控制程序繼電器控制程序低電平有效sbit relay= P00;relay

22、 = 0; /常開閉合,外設(shè)接通電源relay =1; /常開斷開Eg:按鍵S1控制繼電器模塊(低電平有效)sbit KEY=P32; /定義按鍵輸入端口sbit RELAY=P00; /定義繼電器控制端口void main (void) KEY=1; /按鍵輸入端口電平置高 while (1) /主循環(huán) /按鍵按下,繼電器開關(guān)切換 if(!KEY) RELAY=!RELAY; 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v步進電機步進電機Uln2003驅(qū)動步進電機1、拍數(shù)拍數(shù):電機轉(zhuǎn)過一個齒距角所需脈沖數(shù),以四相電機為例:四相四拍運行方式:AB-BC-CD-DA-AB四相八拍運行方式: A-AB-B-BC-C-

23、CD-D-DA-A 2、步距角步距角:對應(yīng)一個脈沖信號,電機轉(zhuǎn)子轉(zhuǎn)過的角位移用表示。減速電機減速電機28BYJ-48-5步進角度:5.625 x 1/64減速比:1/64*因為這個是帶減速齒輪的(減速比1/64) ,最后輸出軸上步進角是5.625/64=0.08789度。 *對于電機,是64個脈沖為一圈。對于輸出軸,是4096個脈沖為一圈(6464)。電機轉(zhuǎn)64圈,輸出軸轉(zhuǎn)1圈。實測512*4為一圈?基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v步進電機步進電機接線方式:IN1 - P00 IN2 - P01 IN3 - P02 IN4 - P03#define MotorData P0 /步進電機控制接口定義u

24、char phasecw4 =0 x08,0 x04,0 x02,0 x01;/正轉(zhuǎn) 電機導(dǎo)通相序 D-C-B-Auchar phaseccw4=0 x01,0 x02,0 x04,0 x08;/反轉(zhuǎn) 電機導(dǎo)通相序 A-B-C-Duchar speed_delay;/順時針轉(zhuǎn)動void MotorCW(void) uchar i; for(i=0;i4;i+) MotorData=phasecwi; Delay_xms(speed_delay);/轉(zhuǎn)速調(diào)節(jié) /逆時針轉(zhuǎn)動void MotorCCW(void) uchar i; for(i=0;i4;i+) MotorData=phaseccwi

25、; Delay_xms(speed_delay);/轉(zhuǎn)速調(diào)節(jié) 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v數(shù)碼數(shù)碼管(管(4 4位一體共陰極)位一體共陰極)段選段選位選位選*缺少驅(qū)動電路模塊,暫時無法在mini系統(tǒng)中實驗基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液晶屏LCD1602LCD1602控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等80字節(jié)顯示數(shù)據(jù)存儲器DDRAM通常只用每行前16個DDRAM 地址:0X80 + 相對地址基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液晶屏LCD1602LCD1602讀狀態(tài) 輸入:RS=L,RW=H,E=H 輸出:DB0DB7=狀態(tài)字 寫指令 輸入:RS=L,RW=L,E=下降沿脈沖,DB

26、0DB7=指令碼 輸出:無 讀數(shù)據(jù) 輸入:RS=H,RW=H,E=H 輸出:DB0DB7=數(shù)據(jù) 寫數(shù)據(jù) 輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數(shù)據(jù) 輸出:無 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液晶屏LCD1602LCD1602判忙函數(shù):讀狀態(tài)判忙函數(shù):讀狀態(tài) bit LCD_Check_Busy(void) DataPort= 0 xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0 x80); 輸入:RS=L,RW=H,E=H 輸出:DB0DB7=狀態(tài)字基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液

27、晶屏LCD1602LCD1602寫入命令函數(shù)寫入命令函數(shù) void LCD_Write_Com(unsigned char com) while(LCD_Check_Busy(); /忙則等待 RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; 寫地址命令寫地址命令LCD_Write_Com(0 x80 + x); LCD_Write_Com(0 xC0 + x); 輸入:RS=L,RW=L,E=下降沿脈沖,DB0DB7=指令碼輸出:無基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液晶屏LCD1602LCD1602寫入數(shù)據(jù)函數(shù)寫入數(shù)據(jù)函數(shù) void

28、 LCD_Write_Data(unsigned char Data) while(LCD_Check_Busy(); /忙則等待 RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; 輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數(shù)據(jù)輸出:無基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液晶屏LCD1602LCD1602初始化函數(shù)初始化函數(shù)void LCD_Init(void) LCD_Write_Com(0 x38); /*顯示模式設(shè)置*/ DelayMs(5); LCD_Write_Com(0 x38); DelayMs(5); L

29、CD_Write_Com(0 x38); DelayMs(5); LCD_Write_Com(0 x38); LCD_Write_Com(0 x08); /*顯示關(guān)閉*/ LCD_Write_Com(0 x01); /*顯示清屏*/ LCD_Write_Com(0 x06); /*顯示光標(biāo)移動設(shè)置*/ DelayMs(5); LCD_Write_Com(0 x0C); /*顯示開及光標(biāo)設(shè)置*/ 基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計v液晶屏液晶屏LCD1602LCD1602功能函數(shù)封裝功能函數(shù)封裝寫入字符串函數(shù) void LCD_Write_String(unsigned char x,unsigned c

30、har y,unsigned char *s) ;寫入字符函數(shù) void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);Demo:LCD1602顯示目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計基礎(chǔ)程序設(shè)計典型模塊化程序典型模塊化程序典型模塊化程序典型模塊化程序v 傳感器數(shù)據(jù)采集傳感器數(shù)據(jù)采集v 數(shù)字量(開關(guān)量)數(shù)字量(開關(guān)量)v 數(shù)字量(總線式數(shù)字量(總線式:1-Wire/IIC/SPI/CAN:1-Wire/IIC/SPI/CAN)v 矩陣鍵盤矩陣鍵盤v 串口通信串口通信v 窗

31、口轉(zhuǎn)無線窗口轉(zhuǎn)無線v LCD12864LCD12864液晶顯示液晶顯示v NOKIA5110NOKIA5110液晶顯示液晶顯示v 紅外解碼紅外解碼典型模塊化程序典型模塊化程序v傳感器傳感器開關(guān)量開關(guān)量低電平有效低電平有效lMQ2煙霧檢測模塊 l光照強度傳感器模塊l聲音檢測傳感器模塊l震動檢測傳感器模塊l濕度HR202模塊模塊l火焰檢測傳感器模塊高電平有效高電平有效l人體感應(yīng)模塊Demo:傳感器模塊-開關(guān)量實質(zhì):直接讀取IO電平靈敏度可調(diào)(藍(lán)色電位器調(diào)節(jié))預(yù)熱2分鐘典型模塊化程序典型模塊化程序v傳感器傳感器數(shù)字總線數(shù)字總線溫度傳感器DS18B20(1-Wire總線)Demo:溫度采集(DS18B

32、20)Pin 名稱注釋1GND地2DQ數(shù)字信息輸出端3VDD外界供電電源輸入端,在寄生電源接線方式時接地典型模塊化程序典型模塊化程序v傳感器傳感器數(shù)字總線數(shù)字總線DTH11溫濕度傳感器(溫濕度傳感器(1-Wire總線)總線)功能:采集DHT11數(shù)據(jù),顯示到LCD1602上,超預(yù)定值報警LCD1602 數(shù)據(jù)端口P2 ,控制端口rs/rw/en:P05-P07DHT11 數(shù)據(jù)端口DO:P10報警輸出端口: P00 低電平有效DHT11測試模塊變量定義及函數(shù)封裝:sbit rtio = P10 ;uchar data_byte;uchar RH,RL,TH,TL;void start();/開始信號

33、uchar receive_byte();/接收一個字節(jié)void receive();/接收數(shù)據(jù)Demo:溫濕度采集(DHT11)典型模塊化程序典型模塊化程序v傳感器傳感器數(shù)字總線數(shù)字總線建議測量周期:60ms以上距離=高電平持續(xù)時間uSx聲速340M/S / 2 =高電平持續(xù)時間uSx uS/58 cmDemo:超聲波測距(LCD1602)典型模塊化程序典型模塊化程序v紅外解碼紅外解碼Demo:紅外解碼1838萬能接收頭P3.3口,中斷方式按遙控器按鍵,液晶顯示4組碼值,分別是:用戶碼 用戶碼 數(shù)據(jù)碼 數(shù)據(jù)反碼Eg: BOLE-HORSE Code:1E-1E-00-FF典型模塊化程序典型模

34、塊化程序v紅外套件紅外套件Demo:無線遙控方向盤2272-M4非鎖四路無線遙控遙控方向盤: UPLEFT RIGHT DOWN腳位名稱功能說明1VT 輸出狀態(tài)指示2D3數(shù)據(jù)輸出3D2數(shù)據(jù)輸出4D1數(shù)據(jù)輸出5D0數(shù)據(jù)輸出65V電源正極7GND 電源負(fù)極8ANT接天線端典型模塊化程序典型模塊化程序v串口通信串口通信僅使用三根線即可TTL to TTL RS232 to RS232典型模塊化程序典型模塊化程序v串口通信串口通信參數(shù):串口號 波特率 數(shù)據(jù)位 奇偶校驗位 停止位 數(shù)據(jù)流控制典型模塊化程序典型模塊化程序v串口發(fā)送示例串口發(fā)送示例/* 初始化串口中斷,timer 1, mode 2, 8-bit 重裝*/void InitUART (void) SCON = 0 x50; / SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0 x20; / TMOD: timer 1, mode 2, 8-bit 重裝 TH1 = 0 xF4; / TH1: 重裝值可使用專用小工具計算 TR1 = 1; / T

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論