欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:藍(lán)橋杯--單片機(jī)

柚子快報(bào)激活碼778899分享:藍(lán)橋杯--單片機(jī)

http://yzkb.51969.com/

學(xué)習(xí)筆記(觀看小蜜蜂【DS18B20以前】與西風(fēng)課程講解)+自己以前對(duì)普中款51單片機(jī)學(xué)習(xí)理解

38譯碼器與74HC573鎖存器的配合使用(邏輯門起重要作用)

38譯碼器:(節(jié)約IO口)????????通過(guò)25-273位引腳去控制8位,被選中的位號(hào)被置為高電平1;只好使用到Y(jié)4-Y7這4位,選中Y4時(shí),P27=1,P26=0,P25=0;選中Y5時(shí),P27=1,P26=0,P25=1;以此類推。

74HC573鎖存器:(增添鎖存器【廉價(jià)】,使引腳復(fù)用,節(jié)約IO口)? ? ? ? ? ? ? ? ? ? ? ? ????????當(dāng)LE所處引腳為低電平0時(shí)鎖存器打開(kāi),可以修改內(nèi)容,為高電平1時(shí)鎖存器關(guān)閉,無(wú)法修改內(nèi)容。(而譯碼器選中的位號(hào)被置為高電平,于是需要用到邏輯門(或非門))

SN74HC02DRG4 (或非門):

????????將Yx轉(zhuǎn)換為YxC,即將原本的高電平轉(zhuǎn)換為了低電平。即相當(dāng)于實(shí)現(xiàn)了通過(guò)38譯碼器選中了實(shí)現(xiàn)某個(gè)功能的鎖存器。

Y4:LED燈;Y5:蜂鳴器、繼電器、電機(jī);Y6:數(shù)碼管位選實(shí)現(xiàn);Y7:數(shù)碼管段選實(shí)現(xiàn)。

LED模塊

先通過(guò)38譯碼器選擇Y4位,再給P0引腳賦值

????????共陽(yáng)極的LED燈,給相應(yīng)位號(hào)提供低電平即可點(diǎn)亮該位號(hào)的LED燈,閃爍使用延時(shí),流水燈使用延時(shí)+移位

蜂鳴器與繼電器模塊

注意調(diào)節(jié)跳線帽使其處于蜂鳴器、繼電器板塊

蜂鳴器:(引腳為低電平時(shí)蜂鳴器發(fā)聲)

繼電器:(引腳為低電平時(shí)繼電器吸合,繼電器亮燈)

????????ULN2003(達(dá)林頓管)是7路反向器電路,即當(dāng)輸入端為高電平時(shí),ULN2003輸出端為低電平;當(dāng)輸入端為低電平時(shí),ULN2003輸出端為高電平。

? ? ? ? 所以要選中蜂鳴器、繼電器使其工作,即需使相應(yīng)位號(hào)置高電平即可

? ? ? ?P0賦值:繼電器工作: 0x10;蜂鳴器工作:0x40。

數(shù)碼管模塊???????

?????????先用38譯碼器選中Y6對(duì)應(yīng)的鎖存器,為P0引腳賦值選中想要使用的第幾位數(shù)碼管,再將譯碼器選中Y7對(duì)應(yīng)的鎖存器,為P0引腳賦值點(diǎn)亮想要使用的幾段LED。

? ? ? ? 位選時(shí),P0賦值為高電平即為選中;段選時(shí),P0賦值為低電平即為點(diǎn)亮對(duì)應(yīng)LED(共陽(yáng)極)

????????使用數(shù)碼管時(shí)很重要的步驟是消影和防閃爍;延時(shí)過(guò)短可能造成一個(gè)數(shù)碼管內(nèi)重影,分辨不清;延時(shí)過(guò)長(zhǎng)則會(huì)導(dǎo)致數(shù)碼管內(nèi)數(shù)字閃爍。由于是共用P0引腳,則需要在段選或位選前清空P0引腳的值,將其全賦值為高電平(消影效果最好)。

? ? ? ? 靜態(tài)數(shù)碼管是選用一管、一個(gè)字符;動(dòng)態(tài)數(shù)碼管是選用多管、多個(gè)字符。

按鍵模塊

注意跳線帽接的是獨(dú)立按鍵還是矩陣按鍵。

獨(dú)立按鍵

????????將J5上的跳線帽接在23位號(hào)上,P30至P33默認(rèn)為高電平,當(dāng)其為低電平時(shí)則為對(duì)應(yīng)按鍵被按下。

? ? ? ?判斷按鍵被按下,需要注意按鍵需要防誤觸(添加一小段延時(shí)再進(jìn)行判斷),最后還需要將按鍵鎖定到被按下的情況(直到松手)。每個(gè)按鍵判斷被按下的語(yǔ)句如下:

?

矩陣按鍵

????????將J5上的跳線帽接在12位號(hào)上,使用行掃描與列掃描判斷被按下按鍵的行與列,從而得知被按下按鍵的具體位號(hào)。

? ? ? ? 先定義位號(hào):(頭文件reg52.h內(nèi)沒(méi)有P4引腳的地址,則使用下面方法定義P4引腳時(shí),需要先使P4指向其引腳地址【sfr P4 = 0xc0】)

列掃描

先將行置0,列置1:

當(dāng)某一列被按下時(shí),則該列為0,即可確認(rèn)第幾列按鍵被按下。如下:(仍需要進(jìn)行防誤觸檢測(cè))

為按鍵變量賦值,第一列為0,第二列為1……第四列為3。

行掃描

將列置0,行置1:

當(dāng)某一行被按下時(shí),則該行為0,即可確認(rèn)第幾行按鍵被按下。如下:(仍需要進(jìn)行防誤觸檢測(cè))

為按鍵變量賦值,第一行值+0,第二行值+4……第四行值+12。

完成行列掃描后的按鍵變量即為最終被按下的按鍵值(0-15)

中斷系統(tǒng)

外部中斷

? ? ? ? 注意在使用外部中斷用到按鍵的過(guò)程中,一定先要將跳線帽接到獨(dú)立按鍵上。

????????分為外部中斷0與外部中斷1,當(dāng)滿足中斷條件(下降沿或低電平)時(shí)觸發(fā)中斷,程序從原來(lái)執(zhí)行的程序轉(zhuǎn)去執(zhí)行終端服務(wù)函數(shù)。中斷需寫中斷初始化函數(shù)以及中斷服務(wù)函數(shù)。

中斷初始化函數(shù):

? ? ? ? ? ? ? ? ?

? ? ? ? 外部中斷0的初始化函數(shù)意思:

? ? ? ? 1、打開(kāi)總中斷

? ? ? ? 2、打開(kāi)外部中斷0

? ? ? ? 3、確定中斷觸發(fā)方式(1為下降沿觸發(fā),0為低電平觸發(fā))

? ? ? ? 外部中斷1的初始話函數(shù)同理

? ? ? ? 大致與(普中款)51單片機(jī)的中斷系統(tǒng)相同

中斷服務(wù)函數(shù):

????????中斷服務(wù)函數(shù)一定要在()后加上中斷入口號(hào),才能在觸發(fā)中斷時(shí)進(jìn)入到中斷服務(wù)函數(shù)進(jìn)行中斷處理。(外部中斷0的中斷入口號(hào)為0,外部中斷1的中斷入口號(hào)為2)同普中款51單片機(jī):

定時(shí)(計(jì)數(shù))器中斷

? ? ? ? 單片機(jī)的外部晶振為12MHz,定時(shí)計(jì)數(shù)器有16位,分為高8位與低8位,工作模式最大的定時(shí)時(shí)間為65535us。當(dāng)定時(shí)計(jì)數(shù)器出現(xiàn)溢出(滿了)則會(huì)觸發(fā)中斷,進(jìn)行服務(wù)函數(shù),定時(shí)計(jì)數(shù)器的初始化函數(shù)以及服務(wù)函數(shù)都需要對(duì)高低8位賦值。

? ? ? ? 高低8位賦值原則:THx = (65535 - 想要的定時(shí)時(shí)間)/256;TLx =?(65535 - 想要的定時(shí)時(shí)間)%256。

TMOD定時(shí)計(jì)數(shù)器模式控制寄存器

? ? ? ? 該寄存器不能進(jìn)行位尋址,只能字節(jié)尋址,所以需要一次性給其賦值十六進(jìn)制。

? ? ? ? TMOD寄存器:GATE,C/T,M1,M0,GATE,C/T,M1,M0。高4位定義定時(shí)/計(jì)數(shù)器1的模式;低4位定義/定時(shí)計(jì)數(shù)器0的模式。

GATE:為0時(shí),由TR0和TR1來(lái)啟動(dòng)定時(shí)器;為1時(shí),由外部中斷引腳INT0和INT1來(lái)啟動(dòng)定時(shí)器。

C/T:為0時(shí),是定時(shí)功能;為1時(shí),是計(jì)數(shù)功能。

M1,M0:工作方式設(shè)置:

? ? ? ? 00:13位定時(shí)/計(jì)數(shù)器

? ? ? ? 01:16位定時(shí)/計(jì)數(shù)器,最大計(jì)數(shù)值為65535

? ? ? ? 10:自動(dòng)重裝8位定時(shí)/計(jì)數(shù)器,最大計(jì)數(shù)值為255

? ? ? ? 11:T0分為兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;T1停止計(jì)數(shù)

使用

初始化函數(shù):

1、開(kāi)總中斷

2、開(kāi)定時(shí)計(jì)數(shù)器中斷

3、開(kāi)啟定時(shí)計(jì)數(shù)器

4、設(shè)置定時(shí)計(jì)數(shù)器工作功能與模式

5、定時(shí)或計(jì)數(shù)

中斷服務(wù)函數(shù):

開(kāi)始就重置定時(shí)或計(jì)數(shù),設(shè)置變量選取時(shí)間,注意寫上中斷入口號(hào)。

PWM脈寬調(diào)制信號(hào)的發(fā)生

調(diào)整一個(gè)脈沖周期內(nèi)的高低電平的占空比,從而調(diào)整PWM。

????????PWM脈沖為100Hz,一個(gè)周期有10ms,將其分為100份,則1份時(shí)間為100us,則可將100份分為高低電平,利用占空比則可以控制脈寬。

? ? ? ? 脈寬調(diào)制常與定時(shí)計(jì)數(shù)器定配合使用從而達(dá)到調(diào)制脈寬的目的。

如上為利用脈寬調(diào)制LED光強(qiáng)的定時(shí)計(jì)數(shù)器部分函數(shù),pwm_dute為占空比檔次(0-4檔),通過(guò)按鍵控制檔次增減(未寫),由于一個(gè)pwm周期被分為了100份,則count的最大值為100,當(dāng)檔次越高,光強(qiáng)越大,則LED點(diǎn)亮的占空比更大。

串行通信

? ? ? ? 數(shù)據(jù)一位接著一位地順序發(fā)送或接收。常見(jiàn)有SPI、I2C、UART……大多數(shù)情況下,串口通信指的就是UART(最常用)。串行通信有單工(只能發(fā)或只能收數(shù)據(jù))、半雙工(既可以收數(shù)據(jù),也可以發(fā)數(shù)據(jù),但不能同時(shí)收發(fā))、全雙工(可以同時(shí)完成數(shù)據(jù)的收發(fā))三種。

? ? ? ? 串行通信分為同步和異步兩種方式。同步:使用同一個(gè)時(shí)鐘,以數(shù)據(jù)塊為單位傳送數(shù)據(jù);異步:每個(gè)設(shè)備有各自的時(shí)鐘信號(hào),通信中雙方的波特率要保持一致,以字符為單位進(jìn)行數(shù)據(jù)幀傳送,一次傳送一幀。

波特率

? ? ? ? 串口每秒傳輸?shù)奈粩?shù)就是波特率,51單片機(jī)中常用定時(shí)器1的工作模式2(8位自動(dòng)重裝)來(lái)產(chǎn)生波特率,TL1為脈沖計(jì)數(shù)寄存器,TH1為自動(dòng)重裝寄存器,當(dāng)計(jì)數(shù)到最大值溢出時(shí),TH1的值自動(dòng)裝到TL1中。

? ? ? ? 波特率計(jì)算公式:波特率 = (2^SMOD /32)x T1的溢出率

? ? ? ?12M或11.0952M晶振要產(chǎn)生9600BPS的波特率:

????????SMOD = 0時(shí),參數(shù)為0xfd。

? ? ? ? SMOD = 1時(shí),參數(shù)為0xfa。

SBUF寄存器

? ? ? ? 串行發(fā)送時(shí),CPU向SBUF寫入數(shù)據(jù),此時(shí)99H表示發(fā)送緩存SBUF。

? ? ? ? 串行接收時(shí),CPU從SBUF讀出數(shù)據(jù),此時(shí)99H表示接收緩存SBUF。

發(fā)送數(shù)據(jù):

? ? ? ? 將要發(fā)送的數(shù)據(jù)/變量賦值給SBUF,內(nèi)核自動(dòng)將數(shù)據(jù)發(fā)送出去,內(nèi)容發(fā)生完成后,會(huì)將TI標(biāo)志位置1。

接收數(shù)據(jù):

????????內(nèi)核從串口接收到一個(gè)完整數(shù)據(jù)后,會(huì)將RI標(biāo)志位置1,此時(shí)直接讀取SBUF的值即完成數(shù)據(jù)的接收。

????????數(shù)據(jù)發(fā)送完畢或接收完畢都會(huì)進(jìn)入串口中斷,此時(shí)要注意是完整發(fā)送數(shù)據(jù)后產(chǎn)生的中斷還是完整接收到數(shù)據(jù)后產(chǎn)生的中斷。

串口控制寄存器

SCON串口控制寄存器:SM0、SM1、SM2、REN、TB8、RB8、TI、RI

TI:發(fā)送完成中斷標(biāo)志位(需手動(dòng)軟件清除)

RI:接收完成中斷標(biāo)志位(需手動(dòng)軟件清除)

RB8:發(fā)送數(shù)據(jù)的第8位。(奇偶校驗(yàn))(用不到為0)

TB8:接收數(shù)據(jù)的第8位。(奇偶校驗(yàn))(用不到為0)

REN:為1時(shí)允許接受;為0時(shí)禁止接收

SM2:模式二與模式三時(shí)才使用到,主要使用模式一。

SM0、SM1工作模式:

? ? ? ? 00:同步移位寄存器(波特率:fosc/12)

? ? ? ? 01:8位的UART(波特率:可變)【大部分情況】

? ? ? ? 10:9位的UART(波特率:fosc/32或fosc/64)

? ? ? ? 11:9位的UART(波特率:可變)

使用

串口通信初始化函數(shù):

1、打開(kāi)總中斷

2、打開(kāi)串口中斷

3、開(kāi)啟定時(shí)計(jì)數(shù)器1

4、設(shè)置定時(shí)器1工作在自動(dòng)重裝8位定時(shí)/計(jì)數(shù)器模式(10)

5、設(shè)置SCON串口控制寄存器

6、使輔助寄存器置0(藍(lán)橋杯單片機(jī)加)

7、

發(fā)送字節(jié)函數(shù):

????????將要發(fā)送的數(shù)據(jù)傳給SBUF寄存器,然后在數(shù)據(jù)發(fā)送完后對(duì)發(fā)送標(biāo)志位進(jìn)行手動(dòng)清零。

通信中斷服務(wù)函數(shù):

? ? ? ? 通信中斷入口號(hào)為4,判斷接受標(biāo)志位,是否完全接收,并進(jìn)行手動(dòng)清零。

發(fā)送字符串

使用指針做形參指向想要發(fā)送字符串,一次一次的發(fā)送單個(gè)字符,在串口助手中選擇文本模式。

DS18B20

簡(jiǎn)介

? ? ? ? 一種單總線的外設(shè)(傳感器),有嚴(yán)格的時(shí)序要求。

使用流程

1、復(fù)位DS18B20。

2、寫入字節(jié)0xcc,跳過(guò)ROM指令(ROM空間有64位,保存64個(gè)id,單片機(jī)上只有一個(gè)DS18B20,一個(gè)id,則可以直接跳過(guò)ROM指令檢測(cè),直接開(kāi)始溫度轉(zhuǎn)換)。

3、寫入字節(jié)0x44,開(kāi)始溫度轉(zhuǎn)換。

4、寫入轉(zhuǎn)換延時(shí)(溫度轉(zhuǎn)化是需要時(shí)間的,一般是700~900ms)【要完成溫度轉(zhuǎn)換再讀取結(jié)果】

5、再次復(fù)位DS18B20。

6、寫入字節(jié)0xcc,跳過(guò)ROM指令。

7、寫入字節(jié)0xbe,讀取高速暫存器(溫度轉(zhuǎn)換完后將值存入高速暫存器【9個(gè)字節(jié)】的第0字節(jié)(低8位)與第1字節(jié)(高8位))。

8、復(fù)位DS18B20,結(jié)束轉(zhuǎn)換讀取。

9、整合高八位與第八位(整合成16位)。

10、溫度數(shù)據(jù)的正負(fù)處理。

步驟如下:(所調(diào)用函數(shù)均為賽點(diǎn)資源包內(nèi)的單總線程序內(nèi)的代碼)

DS18B20的數(shù)據(jù)處理

????????DS18B20以16位帶符號(hào)位擴(kuò)展的二進(jìn)制補(bǔ)碼形式讀出,其中低4位為小數(shù)部分,中間7位為整數(shù)部分,高5位為符號(hào)位。

? ? ? ? DS18B20的分辨率為0.0625,當(dāng)讀出的數(shù)據(jù)為正時(shí),將整合的16位直接乘以0.0625;當(dāng)讀出的數(shù)據(jù)為負(fù)時(shí),則需將整合的16位進(jìn)行取反加一,再乘以0.0625。

大致判斷讀取溫度是否成功

????????DS18B20在上電復(fù)位時(shí),溫度寄存器中的值為0x0550,即85℃,若讀出數(shù)據(jù)在80多℃時(shí)則表明可能讀取溫度失敗,因?yàn)樽x取的是一個(gè)默認(rèn)值。

注意

? ? ? ? 第一次寫時(shí)失敗,數(shù)碼管顯示0,未讀出溫度,原因是板載芯片的周期是1T,而賽點(diǎn)的代碼的周期是12T。解決方案:可以將單總線底層代碼里面用到的延時(shí)乘以10倍,即可正確讀出。

DS1302

簡(jiǎn)介

? ? ? ? 一款時(shí)鐘芯片,簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信,電路提供年、月、日、日期、時(shí)、分、秒的信息,每月天數(shù)與閏年天數(shù)可自動(dòng)調(diào)整(2100年以前的)。對(duì)時(shí)序要求較高

? ? ? ? 有三個(gè)接口:RES(復(fù)位),I/O(數(shù)據(jù)線),SCLK(串行時(shí)鐘)。

使用

? ? ? ? 可以在賽點(diǎn)資源包內(nèi)找到DS1302相應(yīng)的代碼;自己需要寫初始化代碼(起始時(shí)間自己設(shè)定)跟讀取當(dāng)前時(shí)間的代碼

起始代碼:

????????先調(diào)用寫入字節(jié)函數(shù),去向地址(寫)0x8e;將寫保護(hù)位置0,打開(kāi)寄存器可以進(jìn)行寫入操作。再根據(jù)需求去向地址(上圖時(shí)、分、秒),寫入起始值。再關(guān)閉寫保護(hù)位。

讀取數(shù)值:

去到相應(yīng)的地址,用數(shù)組去承載其值(時(shí)、分、秒)。

顯示數(shù)值:

將讀取的值顯示到數(shù)碼管上。讀到的值如0x58,則對(duì)應(yīng)分為58分,對(duì)應(yīng)秒為58秒。

AD/DA轉(zhuǎn)化

PCF8591:

地址:????????前四位固定,一條I2C總線上可以掛多個(gè)PCF8591,所以有選擇地址位。但藍(lán)橋杯單片機(jī)上僅有一個(gè)PCF8591,故而3位地址位全為0即可。最后一位確定是對(duì)其讀消息還是寫消息。

控制字節(jié):控制字節(jié)存放在控制寄存器中,總線操作時(shí)為主控制器發(fā)送的第二字節(jié)。

D1、D0:A/D通道編號(hào),00-11表示通道0-3

D2:自動(dòng)增益選擇(有效位為1)

D3:固定不變(0)

D5、D4:模擬量輸入選擇,00為四路單輸入,01為三路差分輸入,10為單端與差分配合輸入,11為模擬輸出允許有效

D6:A/D轉(zhuǎn)換允許位,為0時(shí)允許模擬輸出

D7:固定不變(0)

讀光敏電阻:0x41,讀滑動(dòng)變阻器:0x43

I2C總線:

????????在傳輸數(shù)據(jù)過(guò)程中存在三種類型信號(hào)(開(kāi)始、結(jié)束、應(yīng)答)

開(kāi)始信號(hào):SCL為高,SDA由高向低跳變

結(jié)束信號(hào):SCL為高,SDA由低向高跳變

時(shí)序圖:

應(yīng)答信號(hào):SCL為高,讀取SDA,為低電平表示產(chǎn)生應(yīng)答(ACK),高電平表示非應(yīng)答(NACK)

官方有給I2C底層代碼。

A/D轉(zhuǎn)化:

? ? ? ? 將模擬量轉(zhuǎn)化為數(shù)字量

? ? ? ? A/D轉(zhuǎn)換周期總是在發(fā)送一個(gè)有效的讀模式地址到PCF8591設(shè)備后開(kāi)始的;即本次讀取的數(shù)據(jù)是上一次轉(zhuǎn)化完成的數(shù)據(jù)。

流程:(讀取模擬量的過(guò)程)

1、I2C開(kāi)始信號(hào)

2、寫PCF8591地址(0x90)【寫數(shù)據(jù)】

3、等待PCF8591回應(yīng)

4、輸入控制字節(jié)(通過(guò)通道)選擇讀取的模擬量

5、等待主機(jī)響應(yīng)

6、I2C開(kāi)始信號(hào)(開(kāi)始兩次原因是一次是寫,一次是讀)

7、寫PCF8591地址(0x91)【讀取】

8、等待PCF8591回應(yīng)

9、接收模擬量

10、主機(jī)發(fā)送非應(yīng)答

11、I2C結(jié)束信號(hào)

D/A轉(zhuǎn)化:

? ? ? ? 將數(shù)字量轉(zhuǎn)化為模擬量

流程:(轉(zhuǎn)化數(shù)字量的過(guò)程)

1、I2C開(kāi)始信號(hào)

2、寫PCF8591地址(0x90)【寫數(shù)據(jù)】

3、等待PCF8591回應(yīng)

4、輸入控制字節(jié)(0x4x)【使能夠模擬輸出】

5、等待PCF8591回應(yīng)

6、寫DAC的值

7、等待PCF8591回應(yīng)

8、I2C結(jié)束信號(hào)

注意

????????若要同時(shí)將光敏電阻與滑動(dòng)變阻器的模擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào),直接將讀取值互換即可(光敏電阻的讀取值是滑動(dòng)變阻器的地址,滑動(dòng)變阻器讀取的值是光敏電阻的地址)。因?yàn)锳/D轉(zhuǎn)化的周期問(wèn)題,本次讀取的數(shù)據(jù)是上一次轉(zhuǎn)化完成的數(shù)據(jù)。

AT24C02

原理圖:

建議地址:

0xa0(寫),0xa1(讀)

寫入:(一頁(yè)內(nèi)最多寫8個(gè)字節(jié))

往固定的地址里面寫入固定的數(shù)據(jù):

1、I2C開(kāi)始信號(hào)

2、選擇EEPROM芯片,確定寫模式(0xa0)

3、等待EEPROM回應(yīng)

4、寫入要存儲(chǔ)的數(shù)據(jù)地址(8的倍數(shù),保證每頁(yè)存儲(chǔ)數(shù)據(jù)最大【8個(gè)字節(jié)】)

5、等待EEPROM回應(yīng)

6、利用循環(huán)將信息寫入(每次寫入的數(shù)據(jù)最好8個(gè))

7、I2C結(jié)束信號(hào)

void EEPROM_Write(unsigned char *EEPROM_String,unsigned char addr,unsigned char num) { ?? ?IIC_Start(); ?? ?IIC_SendByte(0xa0); ?? ?IIC_WaitAck(); ?? ?IIC_SendByte(addr); ?? ?IIC_WaitAck(); ?? ?while(num--) ?? ?{ ?? ??? ?IIC_SendByte(*EEPROM_String++); ?? ??? ?if(num) ?? ??? ??? ?IIC_SendAck(0); ?? ??? ?else ?? ??? ??? ?IIC_SendAck(1); ?? ?} ?? ?IIC_Stop(); }

讀?。?/p>

1、I2C開(kāi)始信號(hào)

2、選擇EEPROM芯片,確定寫模式(0xa0)

3、等待EEPROM回應(yīng)

4、寫入要存儲(chǔ)的數(shù)據(jù)地址(8的倍數(shù),保證每頁(yè)存儲(chǔ)數(shù)據(jù)最大【8個(gè)字節(jié)】)

5、等待EEPROM回應(yīng)

【以上為選擇地址從哪一頁(yè)開(kāi)始讀】

6、I2C開(kāi)始信號(hào)

7、選擇EEPROM芯片,確定讀模式(0xa1)

8、等待EEPROM回應(yīng)

9、接收讀取的信息

10、I2C結(jié)束信號(hào)

void EEPROM_Read(unsigned char *EEPROM_String,unsigned char addr,unsigned char num) { ?? ?IIC_Start(); ?? ?IIC_SendByte(0xa0); ?? ?IIC_WaitAck(); ?? ?IIC_SendByte(addr); ?? ?IIC_WaitAck(); ?? ?IIC_Start(); ?? ?IIC_SendByte(0xa1); ?? ?IIC_WaitAck(); ?? ?while(num--) ?? ?{ ?? ??? ?*EEPROM_String++ = IIC_RecByte(); ?? ??? ?if(num) ?? ??? ??? ?IIC_SendAck(0); ?? ??? ?else ?? ??? ??? ?IIC_SendAck(1); ?? ?} ?? ?IIC_Stop(); }

一個(gè)保存鍵用于寫入。

超聲波模塊

跳線帽接13、24。

原理

????????發(fā)射端發(fā)射信號(hào)(8個(gè)40MHz的方波信號(hào))出去,遇見(jiàn)障礙物后信號(hào)返回回來(lái),被接收端收到,中途時(shí)間*340/2=距障礙物距離。

使用

發(fā)射端發(fā)送信號(hào):(8次40MHz方波)

讀取接收端:(讀取接收時(shí)間,換算為長(zhǎng)度)

1、打開(kāi)定時(shí)計(jì)數(shù)器1,配置計(jì)時(shí)模式,并不影響定時(shí)計(jì)數(shù)器0(0x0f)

2、復(fù)位計(jì)數(shù)值

3、發(fā)送超聲波信號(hào)

4、開(kāi)啟定時(shí)計(jì)數(shù)器1

5、等待接受返回信號(hào)和定時(shí)器溢出

6、定時(shí)器是否溢出判斷并返回值

NE555

? ? ? ? 需要連接上NET_SIG引腳與P34引腳以測(cè)頻率。(頻率:一秒鐘內(nèi)P34引腳產(chǎn)生了多少次上升沿或下降沿)【需要計(jì)數(shù)】

? ? ? ? 計(jì)數(shù)模式,令TMOD寄存器內(nèi)的C/T位為1。

柚子快報(bào)激活碼778899分享:藍(lán)橋杯--單片機(jī)

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19571273.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄