高级组题电子图书借阅系统设计任务_第1页
高级组题电子图书借阅系统设计任务_第2页
高级组题电子图书借阅系统设计任务_第3页
高级组题电子图书借阅系统设计任务_第4页
高级组题电子图书借阅系统设计任务_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附页一 电子借阅系统设计任设计一个电子借阅系统,实现借阅登记、电子等功能。 读者使用,同时也可以在主系统上直接阅读;主系统可以通过红外射频设备识别子设备ID号(通过读者借书卡),以方便登记;子设备上能显示的电子文档以供读者进行阅读主系统上可以查看到各个子设备使用记录(如子设备ID时间、 1个主系统、1基本要求(1)要求SD卡使用文件系统,存入txt时在PC机上通过读

电子借阅系统设计任电子借阅系统是一个可以阅读预先存放在SD卡里的txt格式文件的电子设备。主系统里的来阅读,而且也可以在主系统中直接阅读。该系统采用全触摸:SD卡无线传输触摸人机界面:一、方案论证与选 二、系统设计与理论分 三、软件设 四、硬件设 TFT液晶接口电 nRF24L01无线收发电 SD卡接口电 五、感 六、附 主要元件 代 目前市场上流行的仍然是8位单片机,8位单片机不仅成本低,而且处理速度也32ARM7STM32F103ZET672MHZ,FLASH本系统要求采用无线传输方式,而无线传输有很多,而且性能各异,由于系统没100FAT16FAT32。由它们的数字可知,FAT1665536FAT324GBFAT32主系统的SD卡里先通过PC机存放若干本txt格式的,主系统开机后可以显示全部的书名和编号,用户可以直接在主系统上阅读所有的。统上主系统识别出子系统后子系统界面就可以显示主系统里所的编号和书名,用户点击相应的书名就可以主系统里的到子系统上并阅读。本系统除了可以阅读txt文件外还可以MP3文件和BMPTFTTFT1665K320x240

由于我们采用的是STM32处理器的板所以需要将它IO口引出来才能控制nRF24L01nRF24L01是一款工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器无线收发器包括:频率发生器、增强型SchockBurstTM真正的GFSK单收发;自动应答及自动重发功能;地址及CRC检验功能;数据传输率:12Mbps;SPI0~8Mbps;1255V1.9~3.6V。其内部电路如下图所示:SDSDSPI件并正确显示,没一点的成功都了我们技术上的进步和经验的积累。我们都知道电子借阅系统这道题目对我们来说是一次,因为需要用的知识太多了,其中包括SD原理,FAT323.2TFT22SD2211288《SD《STM32F10x#include"main.h"NRF0的测试//ucharexternu8Rx_Address1[];//1的地址externu8Tx_Address11[];1的地址externvoidtouch_init(void);externu16X,Y;volatileu8flag=1;u8State=0;指明当前状态,用状态机方法u8File_Num_TXT=0;u8File_Num_MP3=0;u8volatileu16u8tran_mode=0; volatileu8 constu8//0:1:void{ //水平时x,y // // //使能触摸 //}//void{LCD_ShowString(70,230,"StartSystem!",WHITE,BLUE,0); }voidShow_{LCD_ShowString(0,0,"TXTReader",BLACK,WHITE,0);}//在指定dir_clusterfile_numfile_type//返回:u8*get_file_name(u8file_num,u32dir_cluster,u16{u8DWORDtempclust=dir_cluster;DWORDsector;u8cnt;u16offset;Short_DIR*item=0;FileInfoStructFileInfo;{ { t,fat_buffer))return0;{item=(Short_DIRif((item->deName[0]!=0x00)&&(item->deName[0]!={if(item->deAttributesAM_LFN{CopyDirentruyItem(&FileInfo,item);//项,提取详细信{{}}}}}}}return}u8get_file_num(u32dir_cluster,u16{u16FileInfoStruct //指针所指的数清0 //获取TXT文件个数return}//显示 ,暂时最多显示10voidShow_TXT_ //目前只用于{u8u8*file_name;LCD_ShowString(70,0,"TXTReader",BLACK,WHITE,0);{file_name=get_file_name(i,File_DIR[1],T_TXT);}}voidShow_MP3_ //目前只用于{u8u8*file_name; {file_name=get_file_name(i,File_DIR[2],T_MP3);}}voidShow_Transmit_{ {LCD_ShowString(70,300,"SEND } {LCD_ShowString(70,300,"RECEIVE}}voidShow_BMP_{u8u8*file_name;{file_name=get_file_name(i,File_DIR[5],T_BMP);}}int{volatileu16FileInfoStruct // // { //{} //TXTReader{ // //选中SD卡 // LCD_ShowString(70,0,"TXT{ // //SD //}}} { // //选中SD卡 // { // //选中SD卡 }} //Transmit{{}} //{

// //选中SD卡 File_Num_TXT=get_file_num(File_DIR[1],T_TXT);//得到TXT的数目 //先把所有书名发{ }

先把所有书名发送{ }} { // //选中SD卡 //{{ // //选中SD卡 }}}}}#include"stm32f10x_lib.h"#include"sys.h"#include"Lcdhx8347.h"#include"touch.h"#include"mmc_sd.h"#include"fat.h"#include"txt.h"#include"delay.h"#defineFONTSIZE161616*16#defineFONTSIZE121212*12u8next_page=0;u8last_page=0;u8 FSIZEFONTSIZE16;//汉字大小,16*16//unsignedcharjpg_buffer[1024]={0};//externu16sector_size;//每扇区字节数externu8cluster_size; void{}//Cluster//unsignedlongGetSysFileSector(u8uoh,unsignedint{unsignedlongfoffset=0;unsignedinti;elseif(uoh==12)foffset=FONT12CLUSTER;{}//printf("finalreturn(root_address+(foffset-2)*8);}//code//code字符串的开始地址,ascii FSIZE*2bytesvoidGet_HzMat(unsignedchar*code,unsignedchar{unsignedcharqh,wh;unsignedchari;unsignedint unsignedlongfoffset;if(*code<0xa1)if(*code++<0xa1)//{return;结束} //8 //8int

foffset=((unsignedlong)94*qh+wh)*(FSIZE*2);// //得到总的完整的扇区数(不要写成secoff=(unsignedint)foffset%sector_size;//扇区内的字节数偏移wh=(unsignedchar)sector%cluster_size; cluster=(unsignedint)sector/cluster_size;//得到总的簇数//{}{

//(FSIZE*2)字i=sector_size-secoff;//的数据已跨扇区{}SD_Read_Bytes(foffset+wh,mat+i,0,(FSIZE*2)-i);//剩余的数}}//x,y//font:ASCII//mode:0,全填充写入.1,有效部分写入(适合在上叠加汉字)voidshow_font(u8x,u16y,u8*font,u16color,u8mode){u8u8temp=0;if(!mode){for(t1=0;t1<FSIZE;t1++)//FSIZE个字节,{{else{Lcd_WR_Start();LCD_Write_Data(WHITE);}}for(t2=0;t2<(FSIZE-8);t2++)//16*16{else{Lcd_WR_Start();LCD_Write_Data(WHITE);}//填充背景色}}}else//{for(t1=0;t1<FSIZE;t1++)//FSIZE个字节,{{}for(t2=0;t2<(FSIZE-8);t2++)//16*16{}}}} ://mode模式//bit0:1,叠加模式;0,//bit1:1,自动换行;0,不自动换行voidShow_Str(u8x,u16y,u8*str,u16color,u8{u8bHz=0; unsignedchar*mat;保存字符的点阵内容{if(!bHz{if(*str>0x80){} //{{{}else}{}}}

x+=FSIZE/2;字符,{{{}else}Get_HzMat(str,mat);//得到点阵数据(无字库不起动系统) //中文字符是普通字符的2倍x+=FSIZE;}}}//txt文件并显示在液晶屏//txtvoidmy_readbook(u32 {volatileu8*pos[10];volatileu32sector[10];volatileu8k=0;volatileu32i=0;volatileu32secStart;volatileu16pointpos=0; volatileu16x=0,y=0;volatileu8 //txtvolatileu8 //volatileu8bHz=0; volatileunsignedchar*mat={0};//保存点阵内容secStartfatClustToSect(staClu);簇号转换为扇区号 {mat=jpg_buffer+512;jpg_buffer的后半部分,存放字模数据.前半部分用来存放p=jpg_buffer;//txt{{ //ASCII字符{ //一页已{{

// 等待触摸屏按{ //{ //选中SD卡 return_page=0; //TXT} //{ 暂不能连续两次上} //{}} // //SD屏已满,

next_page=0;y=0;x=0;Lcd_Clear(WHITE);select_point();//{}}}{}}}{

p++;pointpos++;//指针偏移x+=FSIZE/2字符,{{////等待触摸屏按下一页{{//////SD return_page=0; //TXT} //{ } //{}}满,

// //选中SD卡 next_page=0;y=0;x=0;Lcd_Clear(WHITE);select_point();//一屏已{}}}{temp[0]=*p; }{不起动系统

Get_HzMat((u8*)temp,(u8*)mat);//显示上一次的最后一个字(无字库 //}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论