freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]單片機(jī)的課程設(shè)計(jì)綜合應(yīng)用實(shí)例-資料下載頁(yè)

2025-02-16 01:02本頁(yè)面
  

【正文】 2X11 2 MC13 0 p FC23 0 p FC31 0 u FR11 0 kD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 L50%R V 11k234567891R P 11 0 k2Q1NP NL S 1S O UN D E R紅 1L E D R E D紅 2L E D R E D藍(lán) 3L E D R E D藍(lán) 4L E D R E D紅 5L E D R E D紅 6L E D R E D橙 7L E D R E D橙 8L E D R E D圖 1321 超聲波測(cè)距報(bào)警器仿真電路 ? 本章介紹了 STC89C52單片機(jī)系列的引腳和其對(duì)應(yīng)的功能,并且給出了單片機(jī)的接口和各部分的電路連接情況。在 C語言程序中,可以通過 define來定義單片機(jī)與各個(gè)模塊的接口。超聲波測(cè)距模塊選擇了超聲波傳感器作為測(cè)距的工具,并且給出了各部分的電路連接圖,使得每部分的結(jié)構(gòu)與功能一目了然。從而奠定了倒車防撞系統(tǒng)的硬件基礎(chǔ),下一章將詳細(xì)的介紹單片機(jī)的 C語言源程序設(shè)計(jì)。 ? 系統(tǒng)軟件部分的設(shè)計(jì) ? 1. 軟件部分設(shè)計(jì)分析 ? 在汽車倒車防撞系統(tǒng)的設(shè)計(jì)中,我采用了 C語言來進(jìn)行編程。首先利用 C語言的宏定義 define語句來定義各個(gè)管腳的連接,將每個(gè)管腳表示成為便于理解的字符,在程序中可以直接對(duì)字符進(jìn)行賦值,以實(shí)現(xiàn)對(duì)單片機(jī)輸出端口的控制。 ? 根據(jù)各個(gè)部分功能的不同,可以將整個(gè)過程劃分為若干個(gè)模塊。每個(gè)模塊都是實(shí)現(xiàn)一定功能并且相互獨(dú)立的程序段,這種方法叫做模塊程序設(shè)計(jì)法,利用模塊的辦法設(shè)計(jì)倒車報(bào)警系統(tǒng),能夠簡(jiǎn)化開發(fā)流程,并且使邏輯過程更加一目了然。對(duì)于特定的模塊,可以直接將已經(jīng)發(fā)展的很完善的模塊程序加以使用,不用再對(duì)于各個(gè)部分重新設(shè)計(jì)。例如對(duì)超聲波發(fā)射啟動(dòng)模塊的設(shè)計(jì),對(duì) LCM讀寫數(shù)據(jù)和指令控制的模塊設(shè)計(jì)等等。 ? 超聲波測(cè)距報(bào)警器的 C語言程序主要有以下幾個(gè)部分(模塊)組成,第一個(gè)部分是主程序部分,即是通過 C語言的主函數(shù)來實(shí)現(xiàn),主程序部分統(tǒng)領(lǐng)各個(gè)部分的分工與合作,調(diào)用各個(gè)模塊以實(shí)現(xiàn)測(cè)距和報(bào)警的功能;第二個(gè)部分是超聲波發(fā)生程序,第三個(gè)部分是超聲波接收程序,第四個(gè)部分是距離計(jì)算子程序。 ? 2. 主程序設(shè)計(jì) 圖 1322 主程序 設(shè)計(jì)流程圖 ? 主程序的實(shí)現(xiàn)步驟如下: ? 1) 主程序首先對(duì)系統(tǒng)環(huán)境進(jìn)行初始化,設(shè)置定時(shí)器 T0的工作模式, ? 2) 調(diào)用超聲波發(fā)送子程序發(fā)出超聲波脈沖,同時(shí)計(jì)數(shù)器開始計(jì)時(shí)。 ? 3) 當(dāng)接受到返回超聲波信號(hào)時(shí),將計(jì)數(shù)器 T0中斷,讀取計(jì)數(shù)時(shí)間。 ? 4) 根據(jù)讀取時(shí)間和 Count計(jì)算距離子程序來計(jì)算障礙物距離并顯示。 ? 5) 根據(jù)障礙物距離判斷是否報(bào)警,利用 if、 else語句實(shí)現(xiàn)。 ? 主程序清單如下: ? /*********************************************************/ ? void main(void) ? { speak=0。 ? P1=0xff。 ? Delay400Ms()。 //啟動(dòng)等待,等 LCD進(jìn)入工作狀態(tài) ? LCDInit()。 //LCD初始化 ? Delay400Ms()。 ? DisplayListChar(0, 0, uctech)。//顯示第 0行 ? DisplayListChar(0, 1, )。 //顯示第 1行 ? ReadDataLCD()。 //測(cè)試用句無意義 ? Delay400Ms()。 ? DisplayListChar(0, 1, Cls)。 ? while(1) ? { key1()。 ? key2()。 ? key3()。 ? xianshi()。 ? ? } ? } ? 3. 超聲波發(fā)射子程序 ? ,通過單片機(jī)產(chǎn)生脈沖信號(hào)經(jīng)過發(fā)射端驅(qū)動(dòng)電路,使超聲波探頭產(chǎn)生超聲波。在 C語言中可以將超聲波發(fā)射定義為 StartModule的函數(shù),設(shè)定TX=1,即將 1值賦給 TX端口時(shí),模塊啟動(dòng)一次,隨后利用延時(shí)函數(shù) nop構(gòu)成完整的啟動(dòng)模塊子程序。 ? 超聲波發(fā)射程序程序清單如下: ? /********************************************************/ ? void StartModule() //啟動(dòng)模塊 ? { ? TX=1。 //啟動(dòng)一次模塊大約 10us的方波 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? _nop_()。 ? TX=0。 ? } ? 4. 超聲波接收子程序 ? ,用 define定義為 RX,在軟件程序的設(shè)計(jì)中,需要利用 器的開啟與關(guān)斷,從而能夠得出超聲波在空氣中傳播的時(shí)間。對(duì)于定時(shí)器的開啟與關(guān)斷,可以通過 while語句來實(shí)現(xiàn),通過 while語句能夠很好的將 RX的狀態(tài)與定時(shí)器的狀態(tài)聯(lián)系起來,用 while語句表示,當(dāng) RX的值為 0時(shí), TR0=1,即是開啟計(jì)時(shí)器計(jì)數(shù)。當(dāng)超聲波返回被接收模塊所接收的時(shí)候, TR1=0,此時(shí)計(jì)數(shù)器關(guān)斷,則可以根據(jù)計(jì)數(shù)器的時(shí)間差來求得超聲波在空氣中傳播的時(shí)間。 ? 超聲波接收端 RX用來啟動(dòng)和關(guān)斷定時(shí)器,部分程序如下: ? while(!RX)。 //當(dāng) RX為零時(shí)等待 ? TR0=1。 //開啟計(jì)數(shù) ? while(RX)。 //當(dāng) RX為 1計(jì)數(shù)并等待 ? TR0=0。 //關(guān)閉計(jì)數(shù) ? Conut()。 //計(jì)算 ? delayms(20)。 //80MS ? 5. 距離計(jì)算子程序 ? 啟動(dòng)發(fā)射電路的時(shí)候同時(shí)啟動(dòng)單片機(jī)內(nèi)部定時(shí)器 T0,利用定時(shí)器的計(jì)數(shù)功能記錄超聲波的發(fā)射時(shí)間和反射波的接收時(shí)間。當(dāng)收到超聲波反射時(shí),利用 while語句中斷計(jì)時(shí)器計(jì)數(shù),時(shí)間根據(jù) T0計(jì)時(shí)器的高位 TH0和低位 TL0的讀數(shù)來計(jì)算, time=TH0*256+TL0;求出時(shí)間之后,再根據(jù)時(shí)間計(jì)算障礙物的距離, S=(time*)/100。 因?yàn)榉帜甘?100,所以求出來的結(jié)果單位是厘米。 ? /********************************************************/ ? void Conut(void)//計(jì)算距離 ? { ? time=TH0*256+TL0。 ? TH0=0。 ? TL0=0。 ? S=(time*)/100。 ? 6. 報(bào)警判斷子程序 ? 若距離在一個(gè)可測(cè)距離 4cm到 50cm時(shí), LCD1602顯示距離,顯示橙色燈。若距離小于預(yù)先設(shè)置的 4cm時(shí), LCD顯示 Danger,進(jìn)行聲光報(bào)警。當(dāng)距離大于 50cm時(shí), LCD顯示 Satety,并且閃綠燈。 ? 部分源程序如下: ? if(SSmall) //小于測(cè)量范圍顯示 Danger ? { ? flag=0。 ? speak=1。 ? P1=0xcc。 ? DisplayOneChar(10, 1, 39。D39。)。 ? DisplayOneChar(11, 1,39。a39。)。 ? DisplayOneChar(12, 1, 39。n39。)。 ? DisplayOneChar(13, 1, 39。g39。)。 ? DisplayOneChar(14, 1, 39。e39。)。 ? DisplayOneChar(15, 1, 39。r39。)。 ? } ? if(SLarge) //超出測(cè)量范圍顯示 Satety ? { ? flag=0。 ? speak=1。 ? P1=0xf3。 ? delayms(10)。 ? speak=0。 ? P1=0xff。 ? DisplayOneChar(10, 1, 39。S39。)。 ? DisplayOneChar(11, 1,39。a39。)。 ? DisplayOneChar(12, 1, 39。t39。)。 ? DisplayOneChar(13, 1, 39。e39。)。 ? DisplayOneChar(14, 1, 39。t39。)。 ? DisplayOneChar(15, 1, 39。y39。)。 ? } ? if(S=Smallamp。amp。S=Large)//檢測(cè)距離 ? { ? speak=0。 ? P1=0x3f。 ? disbuff[0]=(long)S%1000/100。 ? disbuff[1]=(long)S%1000%100/10。 ? disbuff[2]=(long)S%1000%100%10。 ? disbuff[3]= (long)((S(long)S)*10)%10。 ? DisplayOneChar(9, 1, ASCII[disbuff[0]])。 ? DisplayOneChar(10, 1, ASCII[disbuff[1]])。 ? DisplayOneChar(11, 1,ASCII[disbuff[2]] )。 ? DisplayOneChar(12, 1,ASCII[10] )。 ? DisplayOneChar(13, 1,ASCII[disbuff[3]] )。 ? DisplayOneChar(14, 1, ASCII[13])。 ? DisplayOneChar(15, 1, ASCII[12])。 ? } ? } ? 7. LCM的部分程序 ? 在汽車防撞報(bào)警器的設(shè)計(jì)中,采用 P0端口與 LCD數(shù)據(jù)輸入相連,并且并聯(lián)一個(gè)排阻,以提高電路的安全性和可靠性。在軟件設(shè)計(jì)中,首先利用 define宏定義將 P0端口定義為 LCM_Data,即使 LCD模塊數(shù)據(jù)輸入端口的意思。然后再通過賦值給 LCM_Data以達(dá)到對(duì) P0端口的控制。 ? 在 P2端口的電路連接中, LCD的信號(hào)控制線 RS, RW, E口相連。在軟件設(shè)計(jì)中,首先利用 define語句定義好接口,將 RS, RW,將 E,便于直接在 C程序中直接操作 RS/RW/E接口,以分別實(shí)現(xiàn)對(duì)LCD信號(hào)控制線的控制。要實(shí)現(xiàn)讀 /寫數(shù)據(jù),讀 /寫指令,可以根據(jù)對(duì) RS/RW/E的賦值來實(shí)現(xiàn)對(duì) LCD寄存器的選擇。 ? 例如寫數(shù)據(jù)的子函數(shù)程序如下: ? //寫數(shù)據(jù) ? void WriteDataLCD(unsigned char WDLCD) ? { ? ReadStatusLCD()。 //檢測(cè)忙 ? LCD_Data = WDLCD。 ? LCD_RS = 1。 ? LCD_RW = 0。 ? LCD_E = 0。 //若晶振速度太高可以在這后加小的延時(shí) ? LCD_E = 0。 //延時(shí) ? Delay5Ms()。 //不加延時(shí)通不過 PROTEUS仿真 ? LCD_E = 1。 ? } ? 8. 實(shí)物的測(cè)試 ? 經(jīng)過 Keil軟件對(duì)程序進(jìn)行編譯和連接之后,生成拓展名為 .HEX的文件,將 STC89C52單片機(jī)插入編程器插座內(nèi),通過編程器將程序燒寫到單片機(jī)內(nèi)。然后接通 USB電源,打開開關(guān)按鈕, LCD屏幕上顯示的是我和合作人的名字簡(jiǎn)寫,下面一行顯示的是“ Supersonic”。 ? 在進(jìn)行測(cè)試的過程中,當(dāng)障礙物接近 4厘米以內(nèi)的時(shí)候,系統(tǒng)的蜂鳴器開始響, LED燈也同時(shí)亮。說明能夠正常運(yùn)行和實(shí)現(xiàn)功能,在一
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1