高級組題電子圖書借閱系統(tǒng)設(shè)計(jì)任務(wù)為_第1頁
高級組題電子圖書借閱系統(tǒng)設(shè)計(jì)任務(wù)為_第2頁
高級組題電子圖書借閱系統(tǒng)設(shè)計(jì)任務(wù)為_第3頁
高級組題電子圖書借閱系統(tǒng)設(shè)計(jì)任務(wù)為_第4頁
高級組題電子圖書借閱系統(tǒng)設(shè)計(jì)任務(wù)為_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

SD卡模塊設(shè) :本電子借閱系統(tǒng)主要由主系統(tǒng)和移動(dòng)設(shè)備終端組成每個(gè)移:電子借閱系統(tǒng)TFT液晶屏無線網(wǎng)絡(luò) SD卡語音提 :ThisElectronicLibraryismadeupbythemainsystemandtheterminaldevice.EverydevicehasanIDwhichisusedtolinktothemainsystem.Thewirelessnetworkforpoint-to-pointcommunicatesisbuiltbynRF905.Itusesfourbytesaddressforreferencewhichmeansthatitcancommunicatewith32squaresof2machines.ThehostandtheslavebothadopttheSDcardsforstoragemediumwiththeFAT16filesystem.TheHuman-Machine-Interfaceisbuiltupnotonlybythe26WTFTLCDDisyer,butalsobytheuppercomputersoftwareandthevoicepromptwhichmakethe puterinctionmorehumannatureandgiveamorebeautifulinterface.ThecoreMCUisATmega128withfasterprocessingspeed,lowpowerconsumption,stable,highcapacityon-chipmemory,andbuilt-inEEPROM,etc.Allofthisjustmeettherequirementsofthisdesign.:ElectronicLibrary TFTLCDDis wirelessnetwork 12864+4X412864是只要結(jié)合菜單的和一些軟件上的編程就可以用6個(gè)按鍵實(shí)現(xiàn)對系統(tǒng)接,及閱讀電子。 卡,語音模塊的控制,以及與上位機(jī)的串口通信,nRF905卡,語音模塊的控制,以及與上位機(jī)的串口通信,nRF905采用方案一的優(yōu)點(diǎn)是ATmega16價(jià)格便宜,有較成程序代碼,能有效地提高系統(tǒng)開發(fā)的速度缺點(diǎn)是內(nèi)部的程序空間較小只有16KB的FLASH,以及1KB的SRAM,對于整個(gè)系統(tǒng)來說,無論是程序空間還是SRAM來說都是ATmega128ATmega128具有的硬件資源,128KB的編程FLASH,以及4KB的SRAM,能夠滿足本設(shè)計(jì)ATmega161,2,3,TFT1358端口。TFT-LCDLCDCRTTFT44,TFT488操作只需要三個(gè)函數(shù),即“8“8位數(shù)據(jù)寫函數(shù)”和“8位數(shù)TFT-LCDAPI6TFT本作品的無線網(wǎng)絡(luò)部分主要由2片nRF905構(gòu)成,硬件原理圖如圖5所5,SPI6 按時(shí)序把的地址和要發(fā)送的數(shù)據(jù)傳送給 TRX_CETX_EN,RF905TX3,RF905 RF9055,TRX_CE,RF905 TRX_CE,TX_ENRX 650us,RF905 CD 當(dāng)接收到一個(gè)相匹配的地址時(shí),AM DR TRX_CE,nRF905 微控器通過SPI口,以一定的速率將數(shù)據(jù)出來 當(dāng)所有的數(shù)據(jù)被后,nRF905把DR引腳和AM引腳置低 根據(jù)以上的數(shù)據(jù)發(fā)送和接收流程以及寄存器的配置信息即可實(shí)現(xiàn)主從SDSDSD77,SDSDSD本次比賽所使用的語音模塊是由我們小組自行開發(fā)研制的語音模塊,時(shí)間可以達(dá)到60s,該模塊的硬件電路原理圖如圖8所示8,ISD1760特點(diǎn)如下1,可錄、放音十萬次,內(nèi)容可以斷電可保留一百年2,兩種控制方式,兩種輸入方式,兩種放音輸出方式3,可處理多達(dá)2554,5,6,7,工作電壓:2.4V-5.5V,,最高過8,靜態(tài)電流:0.5–19,工作電流SPI本設(shè)計(jì)主要使用到的電源有5V和3.3V,利用穩(wěn)壓LM1117-5和3.399,本設(shè)計(jì)所使用的是微控器模塊是由我們自行開發(fā)設(shè)計(jì)的1010,11及文 保用戶否是否是否是否是電子館的主系統(tǒng)開啟后,先對各個(gè)模塊進(jìn)行初始化,搜索并保存好主系統(tǒng)現(xiàn)有的藏書SDTXT近的15個(gè)電子的名。1212,和閱讀。選擇本地閱讀模式以后,微控器搜索SD卡的根區(qū),將所有的IDSD13,14,SD下建了一個(gè)名為“zhikong.wch”的文件。當(dāng)電腦查找到該文件,對應(yīng)的盤符即為SD卡。電腦自動(dòng)顯示出所有(以TXT為后綴的文件雙擊對應(yīng)的文件名可在右邊的文本框中顯示內(nèi)容可1,用戶選中閱讀模式后子設(shè)備向主系統(tǒng)發(fā)送自己的ID號碼,格式為200730371504IDLINK_USER_ID,ID2,IDID,3,ID4,如果是有效ID,主系統(tǒng)將 38,子設(shè)備要文檔時(shí)發(fā)送數(shù)據(jù)流:ITEM:00000,其中00000為ASCII碼9,數(shù)據(jù)傳輸結(jié)束信號由主系統(tǒng)發(fā)送,格式為10,SD卡為介質(zhì),在卡上若干txt格式電子。以供讀者使用同時(shí)也可在主系統(tǒng)上直接閱讀主系統(tǒng)可以通過紅外射頻設(shè)備識別子設(shè)備ID號(書卡)ID號碼的方式與主機(jī)連可以將文檔通過無線等方式傳子設(shè)備上能顯示的電子主系統(tǒng)上可以查看到各個(gè)子設(shè)TFT提供和兩種閱讀??梢酝ㄟ^上位機(jī)文杭州威步科技公司。nRF905(NewMsg-華邦公司。ISD1700(ISD語音.pdf).華邦公司#include"includes.h"uint8ADDRESS=1;void{// 開機(jī)顯示歡迎和主菜{(lán){ //延時(shí)消 //RD_ }//}}{{ //延時(shí)消}抖

{{}//}}{

//選擇第二項(xiàng)菜單閱{} //}}}}

//MISO//} {123,成4,失5,成6,失

uint8 //段void{ //SS //SCK

{760_SCK_BIT;//SCLK=0;{}{} ISD1760_MISO_BIT)//MISO{}60_SCK_BIT;//SCLK=1;

//語{intbofang;{} {}}} { }void{

voidISD_{ }void{ }

{}void{uint8}SDuint8//0,1{struct*BS=0;//BS為BootsectorFAT32結(jié)構(gòu)體的 *BPB32=0; //定義BPB32BPB710結(jié)構(gòu)體的一個(gè)量,該結(jié)構(gòu)體描述FAT32struct*ParTa0;//ParTaPartitionTable結(jié)構(gòu)體的 //數(shù)據(jù)區(qū),使用后釋 取分區(qū)表時(shí)確定分區(qū)表引 //SD卡讀or=//SD卡寫 設(shè)備0{0扇區(qū)錯(cuò)誤!\n\r");return} BootsectorFAT32*)Buffer;

第0扇區(qū)引導(dǎo)扇區(qū)的數(shù)&&BS->BsJump[0]!=0xEB)//對于沒有引導(dǎo)扇區(qū)的SD卡,1{沒有引導(dǎo)區(qū),錯(cuò)return}BPB32=(struct BPBFAT32此域必須為零{//文件系統(tǒng)為FAT16 一個(gè)FAT16FirstDirClust= }{//文件系統(tǒng)為FAT32 一個(gè)FAT32 }

//了保留區(qū)的扇區(qū)數(shù)外還要加上分區(qū)引導(dǎo)扇區(qū)相對整0扇區(qū)的偏移量RootDirCount 中 項(xiàng) 占用的扇區(qū)FirstDirSectorFATs)*FATsectors;// //return}{ uint32sector;uint32 2offset=offset= returnffset;計(jì)算該簇所在 當(dāng)錯(cuò)誤發(fā)生時(shí)返回 {//FAT324個(gè)字節(jié)為一個(gè)}{//FAT162個(gè)字節(jié)為一個(gè)} //}

0nt32cluster,uint8part,uint8{uint32 要的扇區(qū)的實(shí)際地址,1returnreturn}//在FAT表內(nèi)找空簇,正確時(shí)1 {uint16i;uint32//對于FAT32{ t確定是否超出{

return//FAT表中的一個(gè)扇區(qū),1for(i=0;i<128;i++)//判斷到的這個(gè)扇區(qū)中0X{ //找到可用簇退} i到達(dá)最大而退出,{ 表示該簇所在扇區(qū)與第0扇128i后就 //}}} //對于{ //確定尋FAT表{ return//FAT表中一個(gè)扇區(qū)的//FAT16

FileInfoStruct*FileInfo,uint8{ uint32tempclust;

0x00||item->DeName[0]0xe5)//沒有使用過的目{256uint32{uint16{uint16structDirentry*item=case1://這 是并且是 }//i達(dá)到最大而退{(lán) }}}return //}//在簇指向的下找一個(gè)下扇區(qū)號以及該空在號應(yīng)落在區(qū)內(nèi),錯(cuò)誤時(shí)10

{ //未超過{ fer))//一個(gè)扇區(qū)的1{return}offset+=32)//一個(gè)扇區(qū)成功后在該扇區(qū)內(nèi)尋找未使用的項(xiàng){ 3232 包含文件和; 包含文件和,并且此后的不再分配有項(xiàng);if(item->DeName[0]

t;//錄下 項(xiàng)所在的扇 //項(xiàng)在扇區(qū)中的偏移地址 //case2://要求找兩個(gè)連 {Direntry 3232個(gè)單元if(item->DeName[0]==0x00||item->DeName[0] {

//是沒有使用過 t;//錄下 項(xiàng)所在的扇 //空項(xiàng)在扇區(qū)中的偏移地址 //

{ 3232

}}}}}else//當(dāng)這是一個(gè)子,不是根,或者且沒考慮到內(nèi)沒有空余項(xiàng)時(shí)需要另找一個(gè)簇來 if(item->DeName[0]0x00||item->DeName[0]

{case3://要求找三個(gè)連

{ t;//錄下 項(xiàng)所在的扇

2個(gè)簇開始 { //{項(xiàng)在扇區(qū)中的偏移地址{Direntry 32 return}32if(item->DeName[0]==0x00||item->DeName[0]

//}}

{

return}if(item->DeName[0]==0x00||item->DeName[0]

實(shí)際扇區(qū)地

return}}}

return1;{ 4

{

uint32sector;uint16i;{}if((FAT32_TYPE==0tempclust==0xffff)||tempclust==0x0ffffff8||tempclust==0x0fffffff)

}

returnreturn}return}{}return*函數(shù)原型:}0cluster,uint32val){ uint32sector;uint32

buffer[offset+1] } //寫入FAT1表內(nèi)容return//寫入FAT2return

Clu,uint32Length); //文 FAT_Name[96傳送給子系統(tǒng)新建文件名 {

//i代表32字節(jié)長項(xiàng)中間有處理{ fp[j]=0;}dbuf[32*i]!=0xe5))//判斷是否是有效文件名e5表示刪除0表示沒有{

{ //{ uint16v16=0; 查看不換頁的話就不用更新頁面 //x代 下的32個(gè)扇區(qū){

=0x0f)//判斷目錄類型 //k0則為長而且k的值代表長名占幾個(gè)32{//{ Dre_Num=0;}//頁數(shù)加1 列表重計(jì)

}}}}} 限制文件名最大長度為個(gè)中文字節(jié)數(shù) 只能占兩個(gè)32字節(jié){ //{ Dre_Num=0;}//頁數(shù)加1 列表重計(jì)//這個(gè)循環(huán)可以不要這里保留不失一般性{for(a=1;a<11;a=a+2)//暫時(shí){{ }}if(a==11)//

(i+k-1-j)*32];buf_num++;}}}if(a==26)//{{{(i+k-1-j)*32];buf_num++;}}}

{ 是漢字要把unicode轉(zhuǎn)為{} a++;//ASC碼 把低字節(jié)00去} TFT//{{}對應(yīng)于{ // 頁的文 在此停{}{}}長}}//對應(yīng)于//}) //)*函數(shù)原型:page_dis(uint32*函數(shù)功能:閱讀模式下) //while(16-TFT頭尾顯示的信 對應(yīng)) x代表根目32個(gè)扇區(qū)voidpage_dis(uint32}{{ucharcase uint8*函數(shù)原型:void uint32File_Length;//文件長uint32Clu_Num; voidGet_Clu(uint8{

writeString_TFT("書名:writeString_TFT("頁碼

[3]=page%10;break; %10;

uint16x0=0,y0=16;

{ usWidth= 退出閱 讀 }//if(*pcStr>fp=(uint8 {+

{}x0=y0=y0{if(y0{{y0 數(shù)原型:}W_page,ucharcolor)和文件長度可以內(nèi) W_page,uint16

退出閱{OR);break;退出閱

{{//{if(!(PIN_B_CANCEL){ break;} break;}}if(!(PIN_B_RIGHT))//選擇頁{{

}if(!(PIN_B_DOWN))//頁數(shù){}}}}if(!(PIN_B_UP))//{

//SD }{

} if(!(PIN_B_UP))//{

{

}W_page=2; 退出}{//SDptGb16=(uchar}

y0= {while(1

{W_page=2; {} //非漢{ 字//SD

if{y0=y0

break;}

if(y0=

{}

{

if(!(PIN_B_UP))

}}if(y0{

{

IN_B_DOWN));break;}}}

if((x0+8)>={x0=y0=y0+16;if(y0>=304){

break;}}if(!(PIN_B_UP)){}}

y0=}

{OR);break;退出閱}}if==

{

{W_page=2;{x0=0;usWidth=0;//ASC

}{

{while(1{{

//SD pcStrpcStr+=}}}}}}}}{if(!(PIN_B_DOWN))//下 IN_B_DOWN));break;}}}}}}if(length<512){*函數(shù)原型:voidW_Dre_Num,uint16*函數(shù)功能:查看并選*W_Dre_Page為 頁數(shù) 0到4*W_Dre_Num為一頁下的第幾個(gè)文件名取值范圍120*W_page為一部書中想進(jìn)入的第幾頁范圍12^32長OR);break;退出閱} { writeString_TFT("閱讀writeString_TFT(請確認(rèn)退 //全局變量 標(biāo)志是否進(jìn)uint8 {uint16color,j;uint32W_page;

x0,y0,}

}{writeString_TFT("空白 默認(rèn)此文 dis_name[j]=0;{ }} //上: //下: //右: //左:

//保存文件在AVR_FAT_FindItem函數(shù)uint32 uint32

W_page,uint16{ uint16x0=0,y0=16; usWidth=0; {do///環(huán){ 2)*Sec_Per_Cluster;//這個(gè)++)//{ //區(qū)if(!(KEY_RETURN)){}{ if(!(KEY_DOWN))—頁數(shù)減 break;}{// //if(*pcStr>頁{ {x0=break;}}y0=y0if(!(KEY_RIGH))}{if(y0}{}

y0}}

{

if(!(KEY_UP))// //重新計(jì)算頁面越往后就計(jì)算{

{//

{

if(!(KEY_UP))//{

{W_page=2;

=}//退出if(y0{}到達(dá)想要的頁面時(shí)才取模{//換行碰巧到下一頁 行的過 預(yù)防出//SDptGb16=(uchar y0=//SD} 跳過頁面 {while(1} //非漢字{}{{if}{}y0=y0} if(y0{eak;}}}if(!(KEY_UP))//{

}

}//ASC

}{{{W_page=2;

_DOWN));break;}}

if((x0+8)>={x0=y0=y0+16;if(y0>=304){

}}

y0=} //SD

}}if=={x0=0;usWidth=0;

{ {while(1{{ eak;}}if(!(KEY_UP))//{

//SD }}}

{ x0,y0,}pcStr+=}}}{

}{_DOWN));break;}}}if(length<512)W_page=2;if(length<512)

}writeString_TFT("閱讀

}

writeString_TFT(請確認(rèn)退}

case // {writeString_TFT("空白{return0;}//搜索文檔}case //} }{return0;}//搜索}return1;//read_online:閱讀標(biāo)在根 區(qū)查找連續(xù)的空項(xiàng),dirlength表示需 項(xiàng)長}1,為1 項(xiàng)長2,為2 項(xiàng)長3,為3 項(xiàng)長 項(xiàng)一改, 數(shù),0~4,item_numDRE_FIRST為瀏 { {case //{ uint16page_num,uint8uint32 {{return0;}//搜索uint8i,j,a;uint32sec;uint16

}WHITE);//填充背景顏色,白

}

本地閱讀模式,當(dāng)返回按鍵被按下后退出回到主菜單,本地閱讀模式下的緩沖區(qū) 顯示向右{{{ ///傳給數(shù)組unicodeGBK{ 是漢字要把unicode轉(zhuǎn)為{

a++;//ASC碼 把低字節(jié)00去}//////// }{ TFT}}}}

59399:存放本 緩沖已在本文件開頭定義為:void{uint8i; //WHITE);//填充背景顏色,白//local_item=1;//當(dāng)1的文檔//local_page=0;//當(dāng)1的頁面{if(!bflag){bflag=1; { }{ }{

dre_page=5;dre_;dre_num=1;bflag=0;}}{ bflag=0;}}{ }//}保存下來的文件,文件

96個(gè)字節(jié)為文件的項(xiàng),成功返10uint8SAVE_BOOK(uint32downloadfile_sector_start,u{uint8dir_long=1,i,j;uint8bookdirbuf[96];uint8uint16cle;structDirentry*item=0;OOT_First_Sector;/空目錄扇區(qū)指向根第一個(gè)扇rd);//文件第一//判

//在

if(i>0{N__CLUSTER,0xffff))//

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論