版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)軟件設(shè)計(jì)單片機(jī)軟件設(shè)計(jì)2022-5-9目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)典型模塊化程序典型模塊化程序程序的編寫、編譯程序的編寫、編譯vKeil CKeil C環(huán)境設(shè)置環(huán)境設(shè)置創(chuàng)建項(xiàng)目1、基于AT89C52處理器2、新建源代碼文件,并保存命名xxx.c3、右鍵點(diǎn)擊“Source Groupxx”將.c “Add Files to Group ”程序的編寫、編譯程序的編寫、編譯v程序編寫:程序編寫:DemoDemo示例示例/*功能:IO口操作,點(diǎn)亮一個(gè)LED*/#include /包含頭文件,包含特殊功能寄存器的定義sbit LED=P00;
2、/ 用sbit 關(guān)鍵字 定義 LED到P0.0端口/* 主函數(shù)*/void main (void) /此方法使用bit位對(duì)單個(gè)端口賦值 LED=1; /將P0.0口賦值 1,對(duì)外輸出高電平 LED=0; /將P0.0口賦值 0,對(duì)外輸出低電平,此時(shí)點(diǎn)亮了LED while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 程序的編寫、編譯程序的編寫、編譯vKeil CKeil C環(huán)境設(shè)置環(huán)境設(shè)置Target:設(shè)置時(shí)鐘晶振為12MHzOutput:選中Create HEX File選項(xiàng), 編譯后會(huì)生成Hex文件, 用于下載到單片機(jī)中。Debug:左側(cè)配置軟件仿真模式; 右側(cè)配置硬件調(diào)試器仿
3、真。 (默認(rèn)即可)程序的編寫、編譯程序的編寫、編譯v程序編譯程序編譯編譯查看編譯輸出結(jié)果目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)典型模塊化程序典型模塊化程序程序的下載程序的下載vSTC89C52STC89C52STC ISP下載器USB轉(zhuǎn)串口可代替MAX232,給51單片機(jī)下載程序引出接口分別為:+5V,+3.3V,GND,TXD,RXD.(如果把(GND)接到設(shè)備的有電壓的針腳上,加電可能會(huì)燒毀)需要安裝USB轉(zhuǎn)串口驅(qū)動(dòng),通常為340芯片組下載軟件:STC-ISP-V4.83程序的下載程序的下載vSTC89C52STC89C52冷啟下載:冷啟下載:
4、1、使用下載軟件發(fā)送下載命令2、給STC單片機(jī)上電(如果之前已經(jīng)上電,就要斷電再上電)3、STC單片機(jī)才能進(jìn)入到下載狀態(tài)不能下載?不能下載?檢查線路是否接錯(cuò)ISP 接口電路與下載器接口電路電平?jīng)_突下載時(shí)下載速度太快程序的下載程序的下載vAT89S52AT89S52USB ASP / ISP通常為免驅(qū)型請(qǐng)實(shí)用帶保險(xiǎn)的USB下載器,以便保護(hù)電腦U口程序的下載程序的下載vAT89S52AT89S52USB ASP / ISP下載軟件:AVR fighterProgisp目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)典型模塊化程序典型模塊化程序基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序
5、設(shè)計(jì)v 單片機(jī)程序框架單片機(jī)程序框架v whilewhile()()主主循環(huán)循環(huán)v 延遲函數(shù)延遲函數(shù)v IOIO操作操作v 中斷操作中斷操作v 基礎(chǔ)電路模塊控制基礎(chǔ)電路模塊控制u 蜂鳴器控制蜂鳴器控制u 獨(dú)立按鍵輸入獨(dú)立按鍵輸入u 繼電器控制繼電器控制u 步進(jìn)電機(jī)控制步進(jìn)電機(jī)控制u 數(shù)碼管顯示數(shù)碼管顯示u LCD1602LCD1602顯示顯示無(wú)單片機(jī)編程基礎(chǔ)的同學(xué),可簡(jiǎn)單理解,采用模塊化、積木式搭建單片機(jī)系統(tǒng)代碼基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v程序程序框架框架單片機(jī)程序主體結(jié)構(gòu):lWhile()大循環(huán)輪詢式執(zhí)行各任務(wù)l外部中斷外部觸發(fā)中斷,如按鍵,執(zhí)行某任務(wù)l定時(shí)器中斷 固定間隔時(shí)間執(zhí)行某任務(wù)#in
6、clude main() /首先進(jìn)行IO、中斷、定時(shí)器工作模式初始化 while(1) /輪詢式執(zhí)行任務(wù) void ISR_Key(void) interrupt 0 using 1 /執(zhí)行外部中斷處理任務(wù)void Timer0_isr(void) interrupt 1 using 1 /執(zhí)行定時(shí)器中斷處理任務(wù)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)vwhile()while()主循環(huán)主循環(huán)while (1) /主循環(huán) /主循環(huán)中添加需要一直工作的任務(wù)程序/任務(wù)一:led閃爍 LED0=0; /將P0.0口賦值 0,對(duì)外輸出低電平 Delay(10000); /調(diào)用延時(shí)程序;用于改變閃爍頻率 LED0=1;
7、 /將P0.0口賦值 1,對(duì)外輸出高電平 Delay(10000);/任務(wù)二:/任務(wù)三:/* 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,其值的范圍是 065535*/void Delay(unsigned int t) while(-t);基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v延遲函數(shù)延遲函數(shù)估算延遲函數(shù)估算延遲函數(shù)/* uS延時(shí)函數(shù),參數(shù) unsigned char t,其值范圍是 0255。晶振12M。大致延時(shí) 長(zhǎng)度如下 T=t x 2+5 uS */void DelayUs2x(unsigned char t) while(-t);/* mS延時(shí)函數(shù),參數(shù) unsigned char t
8、,范圍是 0255。晶振12M*/void DelayMs(unsigned char t) while(t-) /大致延時(shí)1mS DelayUs2x(245); DelayUs2x(245); 精確延時(shí)請(qǐng)使用匯編機(jī)器周期指令周期晶振頻率基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)vIOIO操作操作對(duì)單片機(jī)的控制,其實(shí)就是對(duì)I/O口的控制,無(wú)論單片機(jī)對(duì)外界進(jìn)行何種控制,或接受外部的何種控制,都是通過(guò)I/O口進(jìn)行的。51單片機(jī)總共有P0、P1、P2、P3四個(gè)8位雙向輸入輸出端口,每個(gè)端口都有鎖存器(即專用寄存器P0P3 )、輸出驅(qū)動(dòng)器和輸入緩沖器。每個(gè)IO口有一個(gè)IO口寄存器Px,而且這個(gè)寄存器可以位尋址Px.n(
9、定義詳見(jiàn) reg51.h 或 reg52.h)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)vIOIO操作操作1、當(dāng)P0作為I/O口使用時(shí),特別是作為輸出時(shí),輸出級(jí)屬于開漏電路,接拉電流負(fù)載時(shí)必須外接上拉電阻才會(huì)有高電平輸出;如果作為輸入,必須先向相應(yīng)的鎖存器寫“1”,才不會(huì)影響輸入電平。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定時(shí)器0外部輸入P3.5:T1定時(shí)器1外部輸入P3.6:WR外部寫控制P3.7:RD外部讀控制
10、 P1口是用戶專用 8 位準(zhǔn)雙向I/O口,具有通用輸入/輸出功能, 每一位都能獨(dú)立地設(shè)定為輸入或輸出。當(dāng)有輸出方式變?yōu)檩斎敕绞綍r(shí), 該位的鎖存器必須寫入“1”, 然后才能進(jìn)入輸入操作。 P2口是 8 位準(zhǔn)雙向I/O口。外接I/O設(shè)備時(shí), 可作為擴(kuò)展系統(tǒng)的地址總線,輸出高8位地址, 與P0 口一起組成 16 位地址總線。 基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)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;/直接對(duì)P2口的第0位管
11、腳輸出低電平 bv=1;/ 直接對(duì)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è)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷8051:5個(gè)中斷源8052:6個(gè)中斷源(+T2)中斷號(hào)優(yōu)先級(jí)中斷源中斷入口地址01 高外部中斷00003H12定時(shí)器0000BH23外部中斷10013H34定時(shí)器10018H4 5 低串口中斷0023HC語(yǔ)言程序中可不關(guān)心該地址基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷主要與中斷程序控制相關(guān)的寄存器:l 中斷允
12、許控制寄存器IEl定時(shí)器控制寄存器TCONl串口控制寄存器SCONl中斷優(yōu)先控制寄存器IPl定時(shí)器工作方式控制寄存器TMODl定時(shí)器初值賦予寄存器(TH0/TH1,TL0/TL1)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷1.中斷允許控制寄存器中斷允許控制寄存器IE :EX0(EX1):外部中斷允許控制外部中斷允許控制位位 EX0=1 外部中斷0開關(guān)閉合 /開外部0中斷 EX0=0 外部中斷0開關(guān)斷開ET0(ET1):定時(shí)中斷允許控制位定時(shí)中斷允許控制位 ET0=1 定時(shí)器中斷0開關(guān)閉合 /開定時(shí)器中斷0 ET0=0 定時(shí)器中斷0開關(guān)斷開ES: 串口中斷允許控制位串口中斷允許控制位 ES=1 串口中斷
13、開關(guān)閉合 /開串口中斷 ES=0 串口中斷開關(guān)斷開EA:總中斷控制:總中斷控制 (EA=1:開總中斷):開總中斷)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷2.定時(shí)器控制寄存器定時(shí)器控制寄存器 TCON /控制外部中斷和定時(shí)器控制外部中斷和定時(shí)器中斷中斷外部中斷:外部中斷: IE0(IE1):外部中斷請(qǐng)求標(biāo)志位:外部中斷請(qǐng)求標(biāo)志位 當(dāng)外部中斷INT0(INT1)引腳出現(xiàn)有效的請(qǐng)求信號(hào)(接入低電平或下降沿信號(hào)時(shí)),此位由單片機(jī)自動(dòng)置1,cpu開始響應(yīng),處理中斷,而當(dāng)入中斷程序后由單片機(jī)自動(dòng)置0. IT0(IT1):外部中斷觸發(fā)方式控制位外部中斷觸發(fā)方式控制位 /選擇有效信號(hào)選擇有效信號(hào) IT0(IT1)
14、=1:脈沖觸發(fā)方式,下降沿有效。 IT0(IT1)=0:電平觸發(fā)方式,低電平有效。基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷2.定時(shí)器控制寄存器定時(shí)器控制寄存器 TCON /控制外部中斷和定時(shí)器控制外部中斷和定時(shí)器中斷中斷定時(shí)器中斷定時(shí)器中斷: TF0(TF1):定時(shí)器定時(shí)器/計(jì)數(shù)器溢出中斷標(biāo)志位計(jì)數(shù)器溢出中斷標(biāo)志位 當(dāng)定時(shí)器、計(jì)數(shù)器計(jì)數(shù)溢出的時(shí)候,此位由單片機(jī)自動(dòng)置1,cup開始響應(yīng),處理中斷,而當(dāng)進(jìn)入中斷程序后由單片機(jī)自動(dòng)置0. TRO(TR1):定時(shí)器:定時(shí)器/計(jì)數(shù)器啟動(dòng)位計(jì)數(shù)器啟動(dòng)位 TR0(TR1)=1; 啟動(dòng)定時(shí)器/計(jì)數(shù)器 TR0(TR1)=0; 關(guān)閉定時(shí)器/計(jì)數(shù)器基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)
15、v中斷中斷3.定時(shí)器工作方式定時(shí)器工作方式TMOD低半字節(jié)(D0/D1/D2/D3)用來(lái)控制定時(shí)器/計(jì)數(shù)器0高半字節(jié)(D4/D5/D6/D7)用來(lái)控制定時(shí)器/計(jì)數(shù)器1GATE=0時(shí),僅由TR0,TR1置位分別啟動(dòng)定時(shí)器T0、T1C/T=0時(shí)為定時(shí)功能,C/T=1時(shí)為計(jì)數(shù)功能(引腳外部脈沖)M0、M1方式選擇功能基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷4.定時(shí)器初值定時(shí)器初值TL0/TH0(以12M晶振,工作方式1,16位計(jì)數(shù)器為例,定時(shí)Xus) 1.時(shí)鐘周期的時(shí)間t=1/12M=1/12 us 2.機(jī)器周期的時(shí)間T=12*1/12=1 us 3. 每機(jī)器周期計(jì)數(shù)器+1,所以計(jì)數(shù)器+1經(jīng)過(guò)時(shí)間為 1
16、us 16為計(jì)數(shù)器要全部置1(即達(dá)到65535)+1后,溢出才會(huì)觸發(fā)中斷,所以初值=(65536-X) 4.將初值轉(zhuǎn)化為16進(jìn)制碼,分別付給TH0和TL0 eg:所定時(shí)間5ms;初值=(65536-5000)=60536=EC78;TH0=0XEC; TL0=0X78;程序中常用賦初值算法:程序中常用賦初值算法: TH0=(65536-20000)/256; TL0=(65536-20000)%256;基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v中斷中斷5.串口控制寄存器串口控制寄存器SCON定時(shí)器中斷:定時(shí)器中斷: TI:串行口發(fā)送中斷標(biāo)志位串行口發(fā)送中斷標(biāo)志位 當(dāng)單片機(jī)串口發(fā)送完一幀數(shù)據(jù)后,此位由單片機(jī)自動(dòng)
17、置1,而當(dāng)進(jìn)入中斷服務(wù)程序后是不會(huì)自動(dòng)清0的, 必須由用戶在中斷服務(wù)中用軟件清0. RI:串行口接收中斷標(biāo)志位串行口接收中斷標(biāo)志位 當(dāng)單片機(jī)串口接收完一幀數(shù)據(jù)后,此位由單片機(jī)自動(dòng)置1,而當(dāng)進(jìn)入中斷服務(wù)程序后是不會(huì)自動(dòng)清0的, 必須由用戶在中斷服務(wù)軟件中用軟件清0. 基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v定時(shí)器中斷示例定時(shí)器中斷示例void Init_Timer0(void) TMOD |= 0 x01; /使用模式1,16位定時(shí)器,“|”可使多個(gè)定時(shí)器互不影響 TH0=(65536-60000)/256; /賦初值 (定時(shí)60ms) TL0=(65536-60000)%256; EA=1; /總中斷打開
18、ET0=1; /定時(shí)器中斷打開 TR0=1; /定時(shí)器開關(guān)打開main() Init_Timer0(); while(1);/* 定時(shí)器中斷子程序*/void Timer0_isr(void) interrupt 1 using 1 TH0=(65536-60000)/256; /重新賦值 TL0=(65536-60000)%256; LED=LED; /指示燈反相,可以看到閃爍Demo:定時(shí)器中斷0基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v外部中斷示例外部中斷示例功能:通過(guò)中斷接口P3.2連接的獨(dú)立按鍵測(cè)試,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; /進(jìn)入中斷程序執(zhí)行程序,/此時(shí)可以通過(guò) EA=0指令暫時(shí)關(guān)掉中斷 串口中斷以后再介紹Demo:外部中斷0邊沿觸發(fā)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v發(fā)光二極管發(fā)光二極管LEDLED灌電流拉電流 ?控制負(fù)載,盡量使用低電平有效(上電初始化,所有IO為高電平)單個(gè)LED控制sbit led0 = P10;led0 = 0; /開燈led0 =1; /關(guān)燈整個(gè)P1口控制:流水燈u
20、nsigned char tmp=0 xfe;while(1) P1= tmp; delay(); tmp = (tmp1)|1); if(tmp=0 xff) tmp=0 xfe;低電平有效Demo:LED流水燈基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v蜂鳴器控制程序蜂鳴器控制程序9013驅(qū)動(dòng)高電平有效sbit beer = P04;beer = 0; /鳴叫beer =1; /關(guān)閉通過(guò)不同的間隔時(shí)間,可以達(dá)到類似倒車?yán)走_(dá)的效果void beer_freq (unsigned char t) beer = !beer; /鳴叫 or 關(guān)閉 DelayMs(t);Demo:蜂鳴器基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v獨(dú)立
21、按鍵獨(dú)立按鍵sbit KEY=P32; /定義按鍵輸入端口sbit LED=P00; /定義led輸出端口void main (void)KEY=1; /按鍵輸入端口電平置高,輸入模式while (1) /主循環(huán) if(!KEY) /如果檢測(cè)到低電平,說(shuō)明按鍵按下,led點(diǎn)亮 LED=0; else LED=1; /如果按鍵未按下led滅 /上述4句可以用一句替代 LED=KEY; /主循環(huán)中添加其他需要一直工作的程序 這里未考慮軟件去抖查詢方式亦可用外部中斷Demo:獨(dú)立按鍵控制LED基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)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è)計(jì)基礎(chǔ)程序設(shè)計(jì)v步進(jìn)電機(jī)步進(jìn)電機(jī)Uln2003驅(qū)動(dòng)步進(jìn)電機(jī)1、拍數(shù)拍數(shù):電機(jī)轉(zhuǎn)過(guò)一個(gè)齒距角所需脈沖數(shù),以四相電機(jī)為例:四相四拍運(yùn)行方式:AB-BC-CD-DA-AB四相八拍運(yùn)行方式: A-AB-B-BC-C-C
23、D-D-DA-A 2、步距角步距角:對(duì)應(yīng)一個(gè)脈沖信號(hào),電機(jī)轉(zhuǎn)子轉(zhuǎn)過(guò)的角位移用表示。減速電機(jī)減速電機(jī)28BYJ-48-5步進(jìn)角度:5.625 x 1/64減速比:1/64*因?yàn)檫@個(gè)是帶減速齒輪的(減速比1/64) ,最后輸出軸上步進(jìn)角是5.625/64=0.08789度。 *對(duì)于電機(jī),是64個(gè)脈沖為一圈。對(duì)于輸出軸,是4096個(gè)脈沖為一圈(6464)。電機(jī)轉(zhuǎn)64圈,輸出軸轉(zhuǎn)1圈。實(shí)測(cè)512*4為一圈?基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v步進(jìn)電機(jī)步進(jìn)電機(jī)接線方式:IN1 - P00 IN2 - P01 IN3 - P02 IN4 - P03#define MotorData P0 /步進(jìn)電機(jī)控制接口定義uc
24、har phasecw4 =0 x08,0 x04,0 x02,0 x01;/正轉(zhuǎn) 電機(jī)導(dǎo)通相序 D-C-B-Auchar phaseccw4=0 x01,0 x02,0 x04,0 x08;/反轉(zhuǎn) 電機(jī)導(dǎo)通相序 A-B-C-Duchar speed_delay;/順時(shí)針轉(zhuǎn)動(dòng)void MotorCW(void) uchar i; for(i=0;i4;i+) MotorData=phasecwi; Delay_xms(speed_delay);/轉(zhuǎn)速調(diào)節(jié) /逆時(shí)針轉(zhuǎn)動(dòng)void MotorCCW(void) uchar i; for(i=0;i4;i+) MotorData=phaseccwi;
25、 Delay_xms(speed_delay);/轉(zhuǎn)速調(diào)節(jié) 基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v數(shù)碼數(shù)碼管(管(4 4位一體共陰極)位一體共陰極)段選段選位選位選*缺少驅(qū)動(dòng)電路模塊,暫時(shí)無(wú)法在mini系統(tǒng)中實(shí)驗(yàn)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v液晶屏液晶屏LCD1602LCD1602控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM通常只用每行前16個(gè)DDRAM 地址:0X80 + 相對(duì)地址基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v液晶屏液晶屏LCD1602LCD1602讀狀態(tài) 輸入:RS=L,RW=H,E=H 輸出:DB0DB7=狀態(tài)字 寫指令 輸入:RS=L,RW=L,E=下降沿脈沖,DB0
26、DB7=指令碼 輸出:無(wú) 讀數(shù)據(jù) 輸入:RS=H,RW=H,E=H 輸出:DB0DB7=數(shù)據(jù) 寫數(shù)據(jù) 輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數(shù)據(jù) 輸出:無(wú) 基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)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è)計(jì)基礎(chǔ)程序設(shè)計(jì)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=指令碼輸出:無(wú)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v液晶屏液晶屏LCD1602LCD1602寫入數(shù)據(jù)函數(shù)寫入數(shù)據(jù)函數(shù) v
28、oid 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ù)輸出:無(wú)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v液晶屏液晶屏LCD1602LCD1602初始化函數(shù)初始化函數(shù)void LCD_Init(void) LCD_Write_Com(0 x38); /*顯示模式設(shè)置*/ DelayMs(5); LCD_Write_Com(0 x38); DelayMs(5)
29、; LCD_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)移動(dòng)設(shè)置*/ DelayMs(5); LCD_Write_Com(0 x0C); /*顯示開及光標(biāo)設(shè)置*/ 基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)v液晶屏液晶屏LCD1602LCD1602功能函數(shù)封裝功能函數(shù)封裝寫入字符串函數(shù) void LCD_Write_String(unsigned char x,unsigne
30、d char y,unsigned char *s) ;寫入字符函數(shù) void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);Demo:LCD1602顯示目錄目錄程序的編寫、編譯程序的編寫、編譯程序的下載程序的下載基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)典型模塊化程序典型模塊化程序典型模塊化程序典型模塊化程序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 串口通信串口通信
31、v 窗口轉(zhuǎn)無(wú)線窗口轉(zhuǎn)無(wú)線v LCD12864LCD12864液晶顯示液晶顯示v NOKIA5110NOKIA5110液晶顯示液晶顯示v 紅外解碼紅外解碼典型模塊化程序典型模塊化程序v傳感器傳感器開關(guān)量開關(guān)量低電平有效低電平有效lMQ2煙霧檢測(cè)模塊 l光照強(qiáng)度傳感器模塊l聲音檢測(cè)傳感器模塊l震動(dòng)檢測(cè)傳感器模塊l濕度HR202模塊模塊l火焰檢測(cè)傳感器模塊高電平有效高電平有效l人體感應(yīng)模塊Demo:傳感器模塊-開關(guān)量實(shí)質(zhì):直接讀取IO電平靈敏度可調(diào)(藍(lán)色電位器調(diào)節(jié))預(yù)熱2分鐘典型模塊化程序典型模塊化程序v傳感器傳感器數(shù)字總線數(shù)字總線溫度傳感器DS18B20(1-Wire總線)Demo:溫度采集(DS
32、18B20)Pin 名稱注釋1GND地2DQ數(shù)字信息輸出端3VDD外界供電電源輸入端,在寄生電源接線方式時(shí)接地典型模塊化程序典型模塊化程序v傳感器傳感器數(shù)字總線數(shù)字總線DTH11溫濕度傳感器(溫濕度傳感器(1-Wire總線)總線)功能:采集DHT11數(shù)據(jù),顯示到LCD1602上,超預(yù)定值報(bào)警LCD1602 數(shù)據(jù)端口P2 ,控制端口rs/rw/en:P05-P07DHT11 數(shù)據(jù)端口DO:P10報(bào)警輸出端口: P00 低電平有效DHT11測(cè)試模塊變量定義及函數(shù)封裝:sbit rtio = P10 ;uchar data_byte;uchar RH,RL,TH,TL;void start();/開
33、始信號(hào)uchar receive_byte();/接收一個(gè)字節(jié)void receive();/接收數(shù)據(jù)Demo:溫濕度采集(DHT11)典型模塊化程序典型模塊化程序v傳感器傳感器數(shù)字總線數(shù)字總線建議測(cè)量周期:60ms以上距離=高電平持續(xù)時(shí)間uSx聲速340M/S / 2 =高電平持續(xù)時(shí)間uSx uS/58 cmDemo:超聲波測(cè)距(LCD1602)典型模塊化程序典型模塊化程序v紅外解碼紅外解碼Demo:紅外解碼1838萬(wàn)能接收頭P3.3口,中斷方式按遙控器按鍵,液晶顯示4組碼值,分別是:用戶碼 用戶碼 數(shù)據(jù)碼 數(shù)據(jù)反碼Eg: BOLE-HORSE Code:1E-1E-00-FF典型模塊化程序
34、典型模塊化程序v紅外套件紅外套件Demo:無(wú)線遙控方向盤2272-M4非鎖四路無(wú)線遙控遙控方向盤: UPLEFT RIGHT DOWN腳位名稱功能說(shuō)明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ù):串口號(hào) 波特率 數(shù)據(jù)位 奇偶校驗(yàn)位 停止位 數(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: 重裝值可使用專用小工具計(jì)算 TR1 = 1; / TR1:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鋼筋大宗采購(gòu)商務(wù)協(xié)議
- 2024年庭院圍墻護(hù)欄供應(yīng)及施工協(xié)議
- 文書模板-《車輛剮蹭修補(bǔ)合同》
- 2024年專利技術(shù)交易協(xié)議樣本
- 2024年度國(guó)內(nèi)專線物流運(yùn)輸服務(wù)協(xié)議
- 2024年擔(dān)保協(xié)議責(zé)任分配指南
- 2024屆安徽亳州闞疃金石中學(xué)高三第五次適應(yīng)性訓(xùn)練數(shù)學(xué)試題
- 2023-2024學(xué)年浙江省溫州市求知中學(xué)高三下學(xué)期半期聯(lián)合考試數(shù)學(xué)試題
- 2024預(yù)包裝食品批量采購(gòu)協(xié)議范本
- 地產(chǎn)開發(fā)項(xiàng)目2024土方工程施工協(xié)議
- 倉(cāng)庫(kù)管理中的客戶服務(wù)和溝通技巧
- 2024年給藥錯(cuò)誤護(hù)理不良事件分析持續(xù)改進(jìn)
- 電力行業(yè)網(wǎng)絡(luò)安全
- 《北京大學(xué)介紹》課件
- 提升員工營(yíng)銷能力的企業(yè)教育培訓(xùn)
- 學(xué)院(部)國(guó)際交流與合作工作考核指標(biāo)體系與評(píng)分標(biāo)準(zhǔn)
- 大學(xué)生社團(tuán)對(duì)大學(xué)生的影響的社會(huì)調(diào)查報(bào)告
- 胱氨酸純度的測(cè)定(最終版)
- 表-D完整版本.0.2-作業(yè)架施工驗(yàn)收記錄表
- 英語(yǔ)48個(gè)國(guó)際音標(biāo)課件(單詞帶聲、附有聲國(guó)際音標(biāo)圖)
- (完整文本版)貨物驗(yàn)收單
評(píng)論
0/150
提交評(píng)論