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

正文內(nèi)容

基于單片機的sd卡數(shù)據(jù)操作設計畢業(yè)設計論文(文件)

2024-08-27 08:51 上一頁面

下一頁面
 

【正文】 著微電子技術、IC設計、EDA工具的發(fā)展,基于SoC的單片機應用系統(tǒng)設計會有較大的發(fā)展。 輸入 / 輸出引腳 P0、P1 、P2 、P3 的功能 : .7:P0 口是一個 8 位漏極開路型雙向 I/O 端口。 P0 能以吸收電流的方式驅(qū)動8個LSTTL 負載。 在 8032/8052 中, P1. 0 還相當于專用功能端 T2 ,即定時器的計數(shù)觸發(fā)輸入端; P1. 1 還相當于專用功能端T2EX ,即定時器 T2 的外部控制端。 P2 可以驅(qū)動 4 個 LSTTL 負載。 P3. 0 RXD (串行口輸入) P3. 1 TXD (串行口輸出) P3. 2 INT0 (外部中斷 0 輸入) P3. 3 INT1 (外部中斷 1 輸入) P3. 4 T0 (定時器 0 的外部輸入) P3. 5 T1 (定時器 1 的外部輸入) P3. 6 WR (片外數(shù)據(jù)存儲器寫選通) P3. 7 RD (片外數(shù)據(jù)存儲器讀選通) 電源模塊,而控制芯片的邏輯電平為5V CMOS電平標準。但是,這個方案代價相對昂貴,而且一般的專用電平轉(zhuǎn)換芯片都是同時轉(zhuǎn)換8路、16路或者更多路數(shù)的電平,相對本系統(tǒng)僅僅需要轉(zhuǎn)換4路來說是一種資源的浪費。最為典型的51單片機每當RST腳的高電平一直持續(xù)兩個機器周期以上就會復位,所以,適當組合RC的取值就可以保證可靠的復位。單片機也一樣,當單片機系統(tǒng)在運行中,受到環(huán)境干擾出現(xiàn)程序跑飛的時候,按下復位按鈕內(nèi)部的程序自動從頭開始執(zhí)行。所以根據(jù)公式,(單片機的電源是5V,),需要的時間是10K*10UF=。單片機系統(tǒng)自動復位()。根據(jù)串聯(lián)電路電壓為各處之和,甚至更大,所以RST引腳又接收到高電平,單片機系統(tǒng)自動復位。SD卡以命令形式來控制SD卡的讀寫等操作。一般我們用單片機操作SD卡時,都不需要對FAT分區(qū)表信息做處理,原因如下:1)、操作FAT分區(qū)表要增加程序代碼量、增加SRAM的消耗,對于便攜應用來說代碼大小和占用SRAM的多少至關重要?;谝陨显?,一般情況下對SD卡的操作只需要了解SPI通訊就可以了,而現(xiàn)在大部分單片機都有SPI接口,那么操作SD卡易如反掌。然而,AT89S51單片機沒有集成SD卡控制器接口,若選用SD模式通訊就無形中增加了產(chǎn)品的硬件成本。本文用SPI總線模式讀寫SD卡。要解決這一問題,最根本的就是解決邏輯器件接口的電平兼容問題,原則主要有兩條:一為輸出電平器件輸出高電平的最小電壓值,應該大于接收電平器件識別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應該小于接收電平器件識別為低電平的最高電壓值。而在SD卡向單片機傳輸數(shù)據(jù)時可以直接連接,因為它們之間的電平剛好滿足上述的電平兼容原則,既經(jīng)濟又實用。除電源和地,保留引腳可懸空。對RAM進行讀寫時,鎖存器把低8位地址鎖存,與P2口的8位地址數(shù)據(jù)構(gòu)成16位地址空間,從而可使SD卡一次讀寫512字節(jié)的塊操作。用過匯編語言后再使用C來開發(fā),體會更加深刻。下面介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。 ABS文件由OH51轉(zhuǎn)換成標準的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。主機還可以繼續(xù)通過CMD10讀取SD卡的CID寄存器,通過CMD16設置數(shù)據(jù)Block長度,通過CMD9讀取卡的CSD寄存器。SPI總線模式支持單塊(CMD24)和多塊(CMD25)寫操作,多塊操作是指從指定位置開始寫下去,直到SD卡收到一個停止命令CMD12才停止??梢姡x寫SD卡的操作都是在初始化后基于SD卡命令和響應完成操作的,寫SD卡的程序流程圖如圖42所示。讀SD卡的程序流程圖如圖43所示。具體見流程圖44所示。首先,需要尋找一個實現(xiàn)單片機與SD卡通訊的解決方案:SD卡有兩個可選的通訊協(xié)議:SD模式和SPI模式SD模式是SD卡標準的讀寫方式,但是在選用SD模式時,往往需要選擇帶有SD卡控制器接口的MCU,或者必須加入額外的SD卡控制單元以支持SD卡的讀寫。設計用SPI總線模式讀寫SD卡。論文的研究工作是在許鳴宇老師的悉心指導下完成的。最后,還要向所有關心和幫助過我的人致以最衷心的感謝!論文的工作是在我的導師陳錫華教授的悉心指導下完成的,陳教授嚴謹?shù)闹螌W態(tài)度和科學的工作方法給了我極大的幫助和影響。sbit _dat7=_dat^7。sbit _dat3=_dat^3。/****************************************************************** 功能描述:IO模擬SPI,發(fā)送一個字節(jié) 隸屬模塊:SD卡模塊 函數(shù)屬性:內(nèi)部 參數(shù)說明:x是要發(fā)送的字節(jié) 返回說明:無返回 注:其中is_init為1時,寫的速度放慢,初始化SD卡SPI速度不能太高 ******************************************************************/void SD_spi_write(unsigned char x) { _dat=x。 SD_SCL=1。 if(is_init) delay(DELAY_TIME)。 SD_SCL=0。 SD_SI=_dat4。 if(is_init) delay(DELAY_TIME)。 SD_SCL=1。 if(is_init) delay(DELAY_TIME)。 SD_SCL=0。 SD_SI=_dat0。 if(is_init) delay(DELAY_TIME)。 SD_SCL=0。 if(is_init) delay(DELAY_TIME)。 SD_SCL=1。 _dat5=SD_SO。 if(is_init) delay(DELAY_TIME)。 SD_SCL=0。 if(is_init) delay(DELAY_TIME)。 SD_SCL=1。 _dat1=SD_SO。 if(is_init) delay(DELAY_TIME)。 SD_CS=1。 SD_spi_write(pcmd[1])。 SD_spi_write(pcmd[5])。amp。 unsigned char pcmd[] = {0x40,0x00,0x00,0x00,0x00,0x95}。i0x0f。 do { temp=SD_Write_Cmd(pcmd)。//CMD0寫入失敗 } }while(temp!=0x01)。//返回0,說明復位操作成功}/****************************************************************** 功能描述:初始化SD卡,使用CMD1 隸屬模塊:SD卡模塊 函數(shù)屬性:外部,供用戶調(diào)用 參數(shù)說明:無 返回說明:調(diào)用成功,返回0x00,否則返回INIT_CMD1_ERROR () ******************************************************************/unsigned char SD_Init() //初始化,使用CMD1(命令1){ unsigned char time,temp。 do { temp=SD_Write_Cmd(pcmd)。//CMD1寫入失敗 } }while(temp!=0)。 //按照SD卡的操作時序在這里補8個時鐘 return(0)。 //向SD卡中單個塊(512字節(jié),一個扇區(qū))寫入數(shù)據(jù),用CMD24 addr=9。0x00ff0000)16)。//打開SD卡片選time=0。 //關閉片選 return(temp)。i++) //這里要插入若干時鐘信號 { SD_spi_read()。i++) //將緩沖區(qū)中要寫入的512個字節(jié)寫入SD卡 { SD_spi_write(buffer[i])。 //讀取返回值if((tempamp。//等到SD卡不忙(數(shù)據(jù)被接受以后,SD卡要將這些數(shù)據(jù)寫入到自身的FLASH中,需要一個時間)//忙時,讀回來的值為0x00,不忙時,為0xffSD_CS=1。 unsigned char time,temp。0xff000000)24)。0x0000FF00)8)。 //寫入CMD17 time++。 //一直讀,當讀到0xfe時,說明后面的是512字節(jié)的數(shù)據(jù)了 for(j=0。 SD_spi_read()。}32。 //SD卡關閉片選 SD_spi_write(0xff)。j++) //將數(shù)據(jù)寫入到數(shù)據(jù)緩沖區(qū)中 { buffer[j]=SD_spi_read()。 //讀塊失敗 } }while(temp!=0)。//打開片選 ime=0。0x00FF0000)16)。 //CMD17的字節(jié)序列 addr=9。//按照SD卡的操作時序在這里補8個時鐘return(0)。 return(WRITE_BLOCK_ERROR)。 SD_spi_write(0xff)。//寫入開始字節(jié) 0xfe,后面就是要寫入的512個字節(jié)的數(shù)據(jù) for(i=0。 for(i=0。 time++。0x0000ff00)8)。0xff000000)24)。 unsigned int i。 //初始化完畢,將is_init設置為0,為了提高以后的數(shù)據(jù)傳輸速度 SD_CS=1。 if(time==TRY_TIME) { SD_CS=1。 //命令1的字節(jié)序列 SD_CS=0。 //關閉片選 SD_spi_write(0xff)。 if(time==TRY_TIME) { SD_CS=1。 //120個時鐘 } SD_CS=0。 //將is_init置為1 SD_CS=1。 return(temp)。//一直讀,直到讀到的不是0xff或超時 time++。 SD_spi_write(pcmd[3])。 //提高兼容性,如果沒有這里,有些SD卡可能不支持 SD_CS=0。 return (_dat)。 if(is_init) delay(DELAY_TIME)。 SD_SCL=0。 if(is_init) delay(DELAY_TIME)。 _dat3=SD_SO。 SD_SCL=1。 if(is_init) delay(DELAY_TIME)。 SD_SCL=0。 if
點擊復制文檔內(nèi)容
范文總結(jié)相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1