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

正文內(nèi)容

mcs51mcu讀寫(xiě)sd卡版(單片機(jī)論文)畢業(yè)論文-wenkub

2023-07-05 12:56:12 本頁(yè)面
 

【正文】 寫(xiě),達(dá)到了設(shè)計(jì)的要求和目的。SD卡在現(xiàn)在的日常生活與工作中使用非常廣泛,時(shí)下已經(jīng)成為最為通用的數(shù)據(jù)存儲(chǔ)卡。這就要求對(duì)SD卡的硬件與讀寫(xiě)時(shí)序進(jìn)行研究。本文將完成以下的任務(wù):1. 基于MXT8051F04A微控制器進(jìn)行讀寫(xiě)SD卡系統(tǒng)的設(shè)計(jì),即完成本系統(tǒng)硬件器件的選擇和電路的初步設(shè)計(jì)。第2章 單片機(jī)讀寫(xiě)SD卡的硬件電路設(shè)計(jì) 系統(tǒng)硬件平臺(tái)組成圖21 系統(tǒng)硬件平臺(tái)如圖21所示系統(tǒng)硬件平臺(tái)配置如下:控制器:時(shí)代民芯科技有限公司的MXT8051F04A單片機(jī),運(yùn)行頻率可達(dá)80M。串口電路:采用了MAX232EP進(jìn)行電平轉(zhuǎn)換和主機(jī)進(jìn)行通信。本系統(tǒng)采用9V電源供電。 MXT8051F04A單片機(jī)最小系統(tǒng)電路設(shè)計(jì)單片機(jī)最小系統(tǒng)包括:晶振電路、復(fù)位電路。電路擁有豐富的外設(shè),包括PWM、UART、WDT,Timer等,大容量存儲(chǔ)器,內(nèi)嵌32Kx8可在線編程Flash,10位AD,8位DA,若干OP,36x4 LCD driver、POR以及可編程增益放大器(PGA)等模擬電路。MXT8051F04A的系統(tǒng)框圖如圖23。外部晶體振蕩器和內(nèi)部振蕩器提供主時(shí)鐘,(CKSEL)來(lái)選擇。P0、PP2分別對(duì)應(yīng)內(nèi)部數(shù)據(jù)寄存器P0、PP2,這些寄存器即可字節(jié)尋址也可位尋址,寫(xiě)入端口的值通過(guò)內(nèi)部寄存器鎖存以保證I/O引腳輸出的值保持不變。UART 是一個(gè)能進(jìn)行異步傳輸?shù)拇锌凇?UART在特殊功能寄存器中有一個(gè)串行控制寄存器(SCON)和一個(gè)串行數(shù)據(jù)緩沖器(SBUF)。UART有兩個(gè)中斷源:一個(gè)發(fā)送中斷標(biāo)志TI()(數(shù)據(jù)字節(jié)發(fā)送結(jié)束時(shí)置位)和一個(gè)接收中斷標(biāo)志RI()(接收完一個(gè)數(shù)據(jù)字節(jié)后置位)。MXT8051F04A內(nèi)建3個(gè)10位PWM, 每個(gè)PWM由兩個(gè)8位寄存器構(gòu)成,它們分別是PWM0H,PWM0L,PWM1H,PWM1L,PWM2H,PWM2L。 JTAG接口:MXT8051F04A包含一個(gè)片內(nèi)JTAG接口和邏輯,提供在線編程和在調(diào)試所需要的邊界掃描功能,支持FLASH的讀和寫(xiě)操作以及非侵入式在系統(tǒng)調(diào)試。另外三個(gè)運(yùn)算放大器可與外部電阻一起組成恒流源和放大電路。電阻串將參考電源分成256等份,輸入數(shù)據(jù)經(jīng)譯碼器譯碼后,控制模擬開(kāi)關(guān)選擇合適的電壓經(jīng)輸出緩沖器輸出。首先,需要尋找一個(gè)單片機(jī)與SD卡通訊的解決方案;其次,如果是5V單片機(jī)則需要解決電平匹配問(wèn)題。在SD卡數(shù)據(jù)讀寫(xiě)時(shí)間要求不是很?chē)?yán)格的情況下,選用SPI模式可以說(shuō)是一種最佳的解決方案。 電平匹配 TTL電平標(biāo)準(zhǔn),而控制芯片的邏輯電平為5V電平標(biāo)準(zhǔn)。一般來(lái)說(shuō),通用的電平轉(zhuǎn)換方案是采用類(lèi)似SN74ALVC4245的專(zhuān)用電平轉(zhuǎn)換芯片,這類(lèi)芯片不僅可以用作升壓和降壓,而且允許兩邊電源不同步。這個(gè)方案需要雙電源供電(一個(gè)5V電源、)。引腳排列如圖27。RS232是美國(guó)電子工業(yè)協(xié)會(huì)EIA和Bell公司一起開(kāi)發(fā)的于1969年頒布的通信協(xié)議。為增加信號(hào)在線路上的傳輸距離和提高抗干擾能力,RS232提高了信號(hào)的傳輸電平。它與單片機(jī)的邏輯電平不一致,因此在實(shí)際應(yīng)用時(shí),必須把TTL電平轉(zhuǎn)換為RS232或者對(duì)兩者進(jìn)行逆轉(zhuǎn)換。具有+15KVESD保護(hù),RS232收發(fā)器體積小,應(yīng)用方便,外圍電路簡(jiǎn)單。在布局上將模擬電路和數(shù)字電路分開(kāi),整體上采用模塊化布局,去藕電容放置在靠近器件的電源/地的地方,并將跳線放置在板子的邊緣。(2)發(fā)熱量大的元件不能放在底層,底層不方便放置散熱片。(6),濾除高頻雜波和電源去耦。 模擬SPI協(xié)議SD卡的SPI通信接口使其可以通過(guò)SPI通道進(jìn)行數(shù)據(jù)讀寫(xiě)。圖31 讀取一個(gè)字節(jié)圖32 發(fā)送一個(gè)字節(jié) SD卡命令SD卡自身具有完備的命令系統(tǒng),以實(shí)現(xiàn)各項(xiàng)操作。其命令格式如表31。CMD24為寫(xiě)單塊命令就有命令參數(shù),命令參數(shù)就是要寫(xiě)扇區(qū)的地址。表32 SPI模式下常用命令命令號(hào)功能CMD0復(fù)位SD卡CMD1讀OCR寄存器CMD9讀CSD寄存器CMD10讀CID寄存器CMD12停止讀多塊時(shí)的數(shù)據(jù)傳輸CMD16設(shè)置塊的長(zhǎng)度CMD17寫(xiě)單塊CMD18讀多塊,直到主機(jī)發(fā)送CMD12為止CMD24寫(xiě)單塊CMD25寫(xiě)多塊CMD32設(shè)置擦出塊的起始地址CMD33設(shè)置擦出塊的終止地址CMD38擦出所選的塊CMD55狀態(tài)每一個(gè)命令都有自己命令應(yīng)答格式。在初始化成功后,應(yīng)盡量提高SPI的速率。主機(jī)還可以繼續(xù)通過(guò)CMD10讀取SD卡的CID寄存器,通過(guò)CMD16設(shè)置數(shù)據(jù)Block長(zhǎng)度,通過(guò)CMD9讀取卡的CSD寄存器。圖34 SD卡初始化 數(shù)據(jù)塊的讀寫(xiě)完成SD卡的初始化之后即可進(jìn)行它的讀寫(xiě)操作。單塊寫(xiě)入時(shí),命令為CMD24,當(dāng)應(yīng)答為0時(shí)說(shuō)明可以寫(xiě)入數(shù)據(jù),大小為512 字節(jié)。 unsigned char response = 0xff。 do { response = SD_WriteCommand(0x18, address, 0xff)。 (timeout TRY_TIME))。 //寫(xiě)入開(kāi)始字節(jié) 0xfe for(count = 0。 SD_WriteByte(0xff)。 if(0x05 != response) { SD_Disable()。 //等到SD卡不忙 SD_Disable()。//寫(xiě)扇區(qū)操作失敗}圖35 寫(xiě)扇區(qū)在需要讀取SD卡中數(shù)據(jù)的時(shí)候,先發(fā)送讀SD卡的命令字CMD17,接收正確的第一個(gè)響應(yīng)命令字節(jié)為0xFE,隨后是512個(gè)字節(jié)的用戶(hù)數(shù)據(jù)塊,最后為2個(gè)字節(jié)的CRC 驗(yàn)證碼。 unsigned int timeout = 0。//寫(xiě)入CMD17 timeout++。 if(response = = 0) { while(SD_ReadByte()!=0xfe)。 count++) { *buffer++ = SD_ReadByte()。 SD_WriteByte(0xff)。 //讀扇區(qū)操作失敗}圖36 讀扇區(qū) 串口程序串口程序主要是串口初始化程序和串口發(fā)送接收程序。串口接收程序和發(fā)送程序相似,在接收到第8位數(shù)據(jù)時(shí),硬件置位接收中斷標(biāo)志位,進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中把數(shù)據(jù)緩沖寄存器的值賦給存放接收數(shù)據(jù)的臨時(shí)內(nèi)存。首先焊接電源相關(guān)的部分,把電源部分焊接完后,檢查下是否存在虛焊、漏焊等情況。在確認(rèn)電源模塊沒(méi)有問(wèn)題的情況下焊接主要芯片,如MXT8051F04A、MAX232等。主芯片正常工作后,下面就是測(cè)試串口是否正常工作。通過(guò)上面的調(diào)試,硬件電路正常工作,硬件調(diào)試工作完成。后來(lái)跟蹤到這里才發(fā)現(xiàn)變量為無(wú)符號(hào)變量,而我卻用來(lái)進(jìn)行自減,當(dāng)變量自減到0時(shí),因?yàn)槭菬o(wú)符號(hào)變量,所以再自減就變?yōu)榱?28,所以進(jìn)入了死循環(huán),把變量改為符號(hào)型變量,問(wèn)題解決。2. I/O端口的輸入輸出設(shè)置錯(cuò)誤,導(dǎo)致程序一直不運(yùn)行。通過(guò)以上的調(diào)試,程序運(yùn)行正常。圖41 程序運(yùn)行結(jié)果圖42 寫(xiě)入SD卡的數(shù)據(jù)圖43和圖44為制作的實(shí)物照片。根據(jù)基本目標(biāo),首先進(jìn)行了相關(guān)資料的收集和整理,其中包括關(guān)于SPI總線協(xié)議和SD卡通信命令以及RS232協(xié)議,單片機(jī)的系統(tǒng)結(jié)構(gòu),通過(guò)對(duì)以上英文資料的翻譯和相關(guān)中文資料的查閱,對(duì)系統(tǒng)實(shí)現(xiàn)的原理和其理論基礎(chǔ)以有了初步的認(rèn)識(shí)。通過(guò)對(duì)SD卡協(xié)議的理解,使用相應(yīng)的控制命令完成了對(duì)SD卡扇區(qū)的讀寫(xiě)。 展望由于時(shí)間有限,本系統(tǒng)還存在一些需要改進(jìn)和進(jìn)一步完善的地方,包括:(l)本系統(tǒng)沒(méi)有實(shí)現(xiàn)FAT32文件系統(tǒng),如果實(shí)現(xiàn)了FAT32文件系統(tǒng)將提高SD卡的存儲(chǔ)效率,系統(tǒng)的可用性和兼容性。學(xué)位論文從選題到最后定稿,始終得到了周老師的精心指導(dǎo)和幫助。同樣感謝我的父母家人在生活上給我的關(guān)心和鼓勵(lì),學(xué)業(yè)的完成離不開(kāi)他們背后的支持。//延時(shí)毫秒unsigned long Atoi(INT8S *string)。 //發(fā)送數(shù)組void Uart_Send_String(INT8S *string)。 //發(fā)送回車(chē)endif/******************************************* *File name : *Author : peng *MCLK : *Version : *Last modified : 2010427 ********************************************/ ifndef _SD_CARD_Hdefine _SD_CARD_Hinclude define SD_Disable() SD_CS = 1 //片選關(guān)define SD_Enable() SD_CS = 0 //片選開(kāi)define SD_CMD_LENGTH 6/*向SD卡寫(xiě)入命令之后,讀取SD卡的回應(yīng)次數(shù),即讀TRY_TIME 次,如果在TRY_TIME次中讀不到回應(yīng),產(chǎn)生超時(shí)錯(cuò)誤,命令寫(xiě)入 失敗*/define TRY_TIME 300void SD_WriteByte(unsigned char byte)。//向SD卡寫(xiě)命令unsigned char SD_Init(void)。//讀扇區(qū)typedef enum{ SD_SUCCESS = 0x00, SD_BLOCK_SET_ERROR = 0x01, SD_RESPONSE_ERROR = 0x02, SD_DATA_TOKEN_ERROR = 0x03, SD_INIT_ERROR = 0x04, SD_RESET_ERROR = 0x05, SD_CRC_ERROR = 0x10, SD_WRITE_ERROR = 0x11, SD_READ_ERROR = 0x13, SD_OTHER_ERROR = 0x12, SD_TIMEOUT_ERROR = 0xFF}ErrorList。//無(wú)符號(hào)8位整型變量 typedef signed char INT8S。//無(wú)符號(hào)32位整型變量 typedef signed int INT32S。//布爾變量 endif /******************************************* *File name : *Author : peng *MCLK : *Version : *Last modified : 2010429 ********************************************/include include include include define ADDRESS 7632unsigned char xdata DataBuffer[512] = peng yuan zhi。 //設(shè)置輸入輸出方式 0:輸入 1:輸出 PUCR0 = 0x00。 //設(shè)置是否上拉 P1 = 0xff。 SD_Reset()。 SD_WriteSector(DataBuffer, ADDRESS)。i512。 Uart_Send_Arrays(DataBuffer, sizeof(DataBuffer))。/************************************************* 函數(shù): Uart_Init.* 描述: 串口初始化.* 輸入: 無(wú).* 輸出: 無(wú).* 返回: 無(wú).*************************************************/void Uart_Init(void){ TMOD = 0x20。 /*啟動(dòng)定時(shí)器1*/ SCON = 0x50。*/ SCKS |= 0xFD。 TI = 0。 } if(string[i] == 39。 }}/************************************************* 函數(shù): Uart_Send_Arrays.* 描述: 串口發(fā)送數(shù)據(jù).* 輸入: buffer:發(fā)送的數(shù)據(jù).* length:發(fā)送數(shù)據(jù)的個(gè)數(shù)* 輸出: 無(wú).* 返回: 無(wú).*************************************************/void Uart_Send_Arrays(INT8S buffer[], INT32U length){ INT32U i = 0。 i length。 } Uart_Send_String(\r\n)。 while(!TI)。 if(RI){ Uart_Receive_Buf = SBUF。在串口調(diào)試助手上有回車(chē)換行* 輸入: 無(wú).* 輸出: 無(wú).* 返回: 無(wú).*************************************************/void Uart_Send_Enter(void){ Uart_Send_Cha
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1