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

正文內(nèi)容

40-畢業(yè)設(shè)計(jì)論文-基于單片機(jī)的汽車(chē)行駛狀態(tài)記錄儀系統(tǒng)的軟件設(shè)計(jì)(編輯修改稿)

2024-09-02 05:05 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 2 D1 D00011XREXX其中RE=1為擴(kuò)充指令集動(dòng)作,RE=0為基本指令集動(dòng)作,初始化中RE=0。2.顯示狀態(tài)開(kāi)/關(guān)指令:D7 D6 D5 D4 D3 D2 D1 D000001DCB其中D=1:整體顯示ON,C=1:游標(biāo)ON,B=1:游標(biāo)位置ON。3.清除顯示指令:D7 D6 D5 D4 D3 D2 D1 D0000000014.進(jìn)入點(diǎn)設(shè)定指令:D7 D6 D5 D4 D3 D2 D1 D0000001I/DS其中I/D=1表示游標(biāo)右移,S=1表示畫(huà)面不移動(dòng)。液晶顯示時(shí),需設(shè)定DDRAM位址。指令代碼如下:D7 D6 D5 D4 D3 D2 D1 D01AC6AC5AC4AC3AC2AC1AC0DM12864每頁(yè)能顯示32(4行8列)個(gè)漢字,顯示位址的范圍從80H~9FH,具體顯示位置如表所示。表41 漢字顯示位置關(guān)系80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9BH9CH9DH9EH9FH液晶顯示執(zhí)行指令為void display2(uchar dat,uchar add),其中,形參dat表示要顯示的8位數(shù)據(jù),形參add表示地址,通過(guò)與80H相“或”,以確保DDRAM位址的最高位為1,得到的結(jié)果賦值給c,c即是數(shù)據(jù)在液晶上顯示的具體位置。DDRAM提供32個(gè)漢字的空間,當(dāng)寫(xiě)入文本顯示RAM時(shí),可以顯示中文字型:將兩字節(jié)編碼寫(xiě)入DDRAMK,范圍為A1A0H~F7FFH(國(guó)標(biāo)碼)。具體的中文字型編碼可參見(jiàn)ST7920 GB中文字型碼表。按鍵掃描采用ZLG7289芯片。該芯片與單片機(jī)之間采用SPI串行總線接口,操作方便,占用I/O資源少。同時(shí)還能夠掃描管理多達(dá)64只按鍵,自動(dòng)消除抖動(dòng)[21]。本次設(shè)計(jì)只需用到其中的16只按鍵。ZLG7289與微控制器的接口采用3線制SPI串行總線,由CS、CLK和DIO這3根信號(hào)線組成。CS和CLK是輸入信號(hào),由微控制器提供。DIO信號(hào)是雙向的,必須接到微控制器上具有雙向功能的I/O上。SPI信號(hào)線的具體意義參見(jiàn)表42,圖47是讀按鍵值的時(shí)序圖,只有當(dāng)INT引腳出現(xiàn)下跳沿時(shí)才允許去讀取按鍵值,否則將得不到有意義的數(shù)據(jù)。表42 ZLG7289的SPI串行接口信號(hào)信號(hào)名稱(chēng)引腳序號(hào)描述CS6SPI總線片選輸入信號(hào),低電平有效CLK7SPI總線時(shí)鐘輸入信號(hào),上升沿有效DIO8SPI總線數(shù)據(jù)信號(hào),雙向圖47讀鍵盤(pán)指令時(shí)序圖(命令字在前,鍵值在后)ZLG7289在掃描鍵盤(pán)時(shí),已經(jīng)采取了消抖動(dòng)措施,因此在程序中不必另外編寫(xiě)消抖動(dòng)的代碼。某個(gè)按鍵按下時(shí),ZLG7289的INT引腳會(huì)出現(xiàn)低電平,向主控制器發(fā)出中斷請(qǐng)求。主控制器既可以采用中斷方式處理,也可以采用查詢(xún)INT引腳電平狀態(tài)的方法處理。但是要避免通過(guò)SPI總線用軟件命令的方式去查詢(xún)是否有鍵按下,這將導(dǎo)致SPI總線頻繁處于活動(dòng)狀態(tài),不利于抗干擾。應(yīng)當(dāng)在INT引腳出現(xiàn)低電平時(shí)及時(shí)地讀取鍵值。讀取鍵值后,INT引腳并不會(huì)自動(dòng)恢復(fù)為高電平,一定要等到按鍵抬起為止。如果沒(méi)有及時(shí)讀取按鍵值,則按鍵抬起后INT引腳也將恢復(fù)到高電平,而在INT引腳處于高電平期間,試圖去讀取鍵值將可能得不到有意義的數(shù)據(jù)。按鍵掃描軟件流程圖如圖48所示:開(kāi) 始ZLG7289初始化讀取按鍵向ZLG7289發(fā)出數(shù)據(jù) Y接收Z(yǔ)LG7289返回鍵值KEY=FFH? N單片機(jī)讀到該鍵按下結(jié) 束圖48 按鍵掃描軟件設(shè)計(jì)流程圖利用中斷方式處理按鍵時(shí),通常將微控制器外部中斷的觸發(fā)方式設(shè)置成負(fù)邊沿觸發(fā),而不要設(shè)置成低電平觸發(fā)。按下某個(gè)鍵時(shí),ZLG7289B會(huì)在INT引腳產(chǎn)生低電平信號(hào),這低電平信號(hào)直到松開(kāi)按鍵時(shí)才會(huì)撤除。如果程序中采用低電平觸發(fā)中斷,則進(jìn)入中斷完成讀取鍵值操作后,還必須要等待INT信號(hào)恢復(fù)為高電平,即等待操作者放鍵,在等待期間,CPU幾乎不能再干其它事情,造成浪費(fèi)。如果不等待,讀完鍵值后就直接從中斷返回主程序,那么由于INT信號(hào)還是低電平,這將再次觸發(fā)中斷,從而導(dǎo)致程序錯(cuò)誤。如果設(shè)置成負(fù)邊沿觸發(fā)方式,則進(jìn)入中斷讀完鍵值后不必等待即可退出,返回主程序后也不會(huì)再次觸發(fā)中斷。讀鍵盤(pán)數(shù)據(jù)指令當(dāng)有鍵按下時(shí),ZLG7289B的INT引腳會(huì)變成低電平。這時(shí)利用該指令可以讀出當(dāng)前的鍵值。第1字節(jié)為命令字,第2字節(jié)是ZLG7289B向單片機(jī)返回的鍵值。正常情況下,鍵值的范圍是0~63(0X00~OX3F),無(wú)按鍵的狀態(tài)用255(0XFF)表示。本次論文設(shè)計(jì)了16個(gè)按鍵,故在軟件設(shè)計(jì)時(shí),可將第2字節(jié)的高4位均置0,低4位表示鍵值的范圍0~15(0X00~0X0F)。具體鍵值0X00~0X09為數(shù)字鍵,分別表示從0~9的10個(gè)數(shù)字,鍵值0X0A為到站鍵,鍵值0X0B為終點(diǎn)站到站鍵。 IC卡存儲(chǔ)軟件設(shè)計(jì)IC卡采用AT45DB041,該芯片包含主內(nèi)存和兩塊緩沖區(qū),并提供專(zhuān)門(mén)的讀寫(xiě)指令對(duì)它們操作。AT45DB041的存儲(chǔ)單元被分成三個(gè)等級(jí):段、塊和頁(yè)。芯片允許對(duì)頁(yè)進(jìn)行寫(xiě)入操作,可以整塊或整頁(yè)進(jìn)行擦除操作。本次設(shè)計(jì)主要是對(duì)單頁(yè)進(jìn)行寫(xiě)(數(shù)據(jù)存儲(chǔ))操作。AT45DB041通過(guò)SPI總線進(jìn)行訪問(wèn),在訪問(wèn)的過(guò)程中,首先應(yīng)該將片選端CS置低,然后通過(guò)時(shí)鐘信號(hào)SCK控制數(shù)據(jù)的輸出或輸入。芯片的各操作指令都是由單片機(jī)發(fā)出,一個(gè)有效的命令是在CS有效,并且要緊隨有效的8位控制字和合適的緩存或者主存中的地址,所有的串行操作都是高位在前[22]。車(chē)輛實(shí)時(shí)數(shù)據(jù)存入IC卡程序設(shè)計(jì)主要包括寫(xiě)字節(jié)、讀字節(jié)、讀狀態(tài)寄存器、將數(shù)據(jù)寫(xiě)入從某個(gè)地址(0~263)開(kāi)始的buffer(緩存)中及將緩存中的數(shù)據(jù)寫(xiě)入主內(nèi)存中5個(gè)部分。下面將分別介紹每個(gè)部分的實(shí)現(xiàn)情況:程序?yàn)関oid At45WriteByte(uchar Bytename),形參Bytename表示要寫(xiě)入的1bit數(shù)據(jù)。執(zhí)行過(guò)程:Bytename和80H相與,判斷其最高位的狀態(tài),若為1,則SI引腳置1,若為0,則SI引腳置0;判斷完最高位狀態(tài)后,將Bytename向左移1位,用同樣的方法,目的是判斷要寫(xiě)入字節(jié)的次高位狀態(tài)。如此循環(huán)8次單片機(jī)即可通過(guò)SPI向AT45DB041寫(xiě)入1個(gè)字節(jié)的數(shù)據(jù)。程序執(zhí)行過(guò)程中需要模擬時(shí)鐘信號(hào)。程序?yàn)閡char At45ReadByte(void)。執(zhí)行過(guò)程:初始化變量rByte,通過(guò)對(duì)SCKFlash賦值來(lái)模擬時(shí)鐘信號(hào),rByte和SO引腳的信號(hào)相或后,其值仍賦值給rByte,后將rByte向左移一位。如此循環(huán)8次單片機(jī)即可通過(guò)SPI讀出AT45DB041一個(gè)字節(jié)的數(shù)據(jù),最后返回讀到的1個(gè)字節(jié)的數(shù)據(jù)。程序?yàn)閡char AT45DB041B_StatusRegisterRead(void)。狀態(tài)寄存器決定了器件的忙/閑狀態(tài)、頁(yè)大小、主存和緩存頁(yè)比對(duì)結(jié)果、頁(yè)保護(hù)狀態(tài)和芯片密度??梢栽谌我鈺r(shí)間讀取狀態(tài)寄存器,即使在芯片編程和擦除器件時(shí)也可以讀。要讀狀態(tài)寄存器,CS引腳必須首先有效,之后送入8位控制字D7H,緊隨控制字之后,1字節(jié)的狀態(tài)寄存器值即可在輪詢(xún)時(shí)鐘作用下,從SO引腳讀出,最后一位讀出之后,SCK引腳再變化,就會(huì)再次從SO引腳輸出狀態(tài)寄存器的值。狀態(tài)寄存器的值是持續(xù)更新的,所以能不斷讀出新的數(shù)據(jù)。狀態(tài)寄存器格式如:Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RDY/BUSYCOMP0111XX狀態(tài)寄存器的第7位指示芯片的忙閑狀態(tài),如果它的值是1,那么芯片就是空閑的,可對(duì)其進(jìn)行任何操作;如果是0,就表示忙,不能對(duì)其進(jìn)行寫(xiě)入或擦出等操作。緩存內(nèi)容寫(xiě)入主存、頁(yè)擦除、主存緩存對(duì)比等操作都會(huì)導(dǎo)致芯片進(jìn)入忙狀態(tài)。狀態(tài)寄存器的第6位指示最近一次主存緩存比對(duì)的結(jié)果,如果該位值為0,則表示主存和緩存的數(shù)據(jù)是匹配的,數(shù)據(jù)傳輸沒(méi)有出現(xiàn)錯(cuò)誤;為1則表明主存和緩存至少有1字節(jié)的數(shù)據(jù)不一樣,數(shù)據(jù)傳輸存在錯(cuò)誤。Bit5Bit2為器件標(biāo)志號(hào),可以用讀取該數(shù)據(jù)來(lái)判斷AT45DB041的好壞。最后兩位為無(wú)關(guān)位。4. 將數(shù)據(jù)寫(xiě)入從某個(gè)地址(0~263)開(kāi)始的buffer(緩存)中在輪換時(shí)鐘作用下,數(shù)據(jù)可以從SI引腳送到緩存1或緩存2,程序?yàn)関oid AT45DB041_BufferWrite (uchar buffer,uint BFA,uchar *pHeader,uint len)。形參BFA表示buffer中的起始地址(0~263),pHeader表示待存數(shù)據(jù)的頭指針,len是待存數(shù)據(jù)的長(zhǎng)度。程序的主要功能是將數(shù)據(jù)寫(xiě)入緩存區(qū)中。AT45DB041芯片有兩種不同的寫(xiě)緩存方式:寫(xiě)264字節(jié)的頁(yè)和寫(xiě)256字節(jié)的頁(yè)。(1)寫(xiě)264字節(jié)的頁(yè):命令字由控制字84H(選擇緩存1)/87H(選擇緩存2)+15bit任意碼+9bit緩存地址碼組成,其中的9bit地址碼用于指定緩存中要寫(xiě)入的首字節(jié)。(2)寫(xiě)256字節(jié)的頁(yè):命令字由控制字84H(選擇緩存1)/87H(選擇緩存2)+16bit任意碼+8bit緩存地址碼組成,其中的8bit地址碼用于指定緩存中要寫(xiě)入的首字節(jié)。執(zhí)行過(guò)程:首先選通AT45DB041,然后通過(guò)AT45DB041的SI引腳寫(xiě)入命令字(40bit),緊跟著繼續(xù)通過(guò)AT45DB041的SI引腳寫(xiě)入數(shù)據(jù),當(dāng)寫(xiě)入完需要的數(shù)據(jù)后,CS置高,結(jié)束操作。如果寫(xiě)到緩存區(qū)的最后一個(gè)地址,下一個(gè)寫(xiě)入的數(shù)據(jù)將會(huì)寫(xiě)到緩存區(qū)的第一個(gè)地址。本次程序設(shè)計(jì)中選擇寫(xiě)264字節(jié)的頁(yè)緩存方式。5. 將緩存中的數(shù)據(jù)寫(xiě)入主內(nèi)存中程序?yàn)関oid AT45DB041_BufferToPageProgram (uchar buffer,uint PA,uint BFA,uchar *pHeader,uint len),其中形參PA表示要寫(xiě)入的頁(yè)地址(0~2047)。程序的主要功能是芯片自動(dòng)完成對(duì)指定頁(yè)的擦除,同時(shí)自動(dòng)將寫(xiě)到緩存區(qū)中的數(shù)據(jù)寫(xiě)入主內(nèi)存的該頁(yè)。AT45DB041芯片同樣具有兩種不同的寫(xiě)主內(nèi)存方式:寫(xiě)264字節(jié)的頁(yè)和寫(xiě)256字節(jié)的頁(yè)。(1)寫(xiě)264字節(jié)的頁(yè):命令字由83H(選擇緩存1)/86H(選擇緩存2)+4bit任意碼+11bit頁(yè)地址碼+9bit任意碼組成,其中的11bit頁(yè)地址碼用于指定主內(nèi)存中要寫(xiě)入的首字節(jié)。(2)寫(xiě)256字節(jié)的頁(yè):命令字由83H(選擇緩存1)/86H(選擇緩存2)+5bit任意碼+11bit頁(yè)地址碼+8bit任意碼組成,其中的11bit頁(yè)地址碼用于指定主內(nèi)存中要寫(xiě)入的首字節(jié)。執(zhí)行過(guò)程:首先選通AT45DB041,然后通過(guò)AT45DB041的SI引腳寫(xiě)入命令字(32bit),CS置高,結(jié)束操作。如果在寫(xiě)的過(guò)程中CS引腳由低變高,芯片仍將繼續(xù)完成該操作。如果芯片內(nèi)部正在進(jìn)行擦除或?qū)懭氩僮?,狀態(tài)寄存器將會(huì)指示忙狀態(tài)。圖49 AT45DB041寫(xiě)操作流程圖 MAX232串行通信軟件設(shè)計(jì)本次串口設(shè)計(jì)采用MAX232芯片,MAX232芯片是一款常用的串口芯片,其軟件設(shè)計(jì)較為簡(jiǎn)單。TMOD、TCON及SCON為串行通信軟件設(shè)計(jì)中需要用到的寄存器,下面先對(duì)3個(gè)寄存器做簡(jiǎn)要的介紹:D7 D6 D5 D4 D3 D2 D1 D0GATEC/TM1M0GATEC/TM1M0定時(shí)器T1定時(shí)器T0C/T:計(jì)數(shù)工作方式/定時(shí)器工作方式選擇位。C/T=0,設(shè)置為定時(shí)工作方式;C/T=1,設(shè)置為計(jì)數(shù)工作方式;GATE:門(mén)控位,用于決定是軟件還是硬件啟動(dòng)/停止計(jì)數(shù)器。GATE=0,INT0/INT1被封鎖,只要用軟件對(duì)TR0(或TR)置“1”就啟動(dòng)了定時(shí)器;GATE=1,定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)受外部引腳輸入電平控制。在TR0(或TR1)置“1”時(shí),若INT0/INT1引腳為高電平,啟動(dòng)定時(shí)器計(jì)數(shù),若為低電平則停止計(jì)數(shù)。M1,M0:工作方式控制位,可構(gòu)成以下四種工作方式:M0 M1 工作方式 說(shuō)明 0 0 0 13位計(jì)數(shù)器 0 1 1 16位計(jì)數(shù)器 1 0 2 8位可自動(dòng)裝載計(jì)數(shù)器 1 1 3 T0分成兩個(gè)獨(dú)立8位計(jì)數(shù)器,此方式T1關(guān)閉2. 定時(shí)器/計(jì)數(shù)器控制寄存器TCONTCON的高四位用于控制定時(shí)器的啟動(dòng)、停止以及標(biāo)明定時(shí)器的溢出和中斷情況,低四位用于兩個(gè)外部中斷源控制。定義如下:8FH 8EH 8DH 8CH 8BH 8AH 89H 88HTF1TR1TF0TR0IE1IT1IE0
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1