基于单片机的fir电子病历系统设计-大学论文_第1页
基于单片机的fir电子病历系统设计-大学论文_第2页
基于单片机的fir电子病历系统设计-大学论文_第3页
基于单片机的fir电子病历系统设计-大学论文_第4页
基于单片机的fir电子病历系统设计-大学论文_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

FoshanUniversity本科生毕业设计(论文)RFID电子病历系统的设计学院:电子与信息工程学院专业:电子信息工程学号:学生姓名:指导教师:(职称)二〇一四年五月致谢从开始写作至论文最终定稿,总共花费了我一个月以来所有的业余时间,虽说在繁忙的工作之余要完成这样一篇论文的确不是一件很轻松的事情,但我内心深处却满含深深的感激之情。感谢电子与信息工程学院所有的任课老师,是你们让我能够静静地坐下来,在知识的海洋里吸取更多的营养,从而能够为自己进一步的加油充电。感谢杨老师从开题、设计到写论文过程中的指导和关心。通过论文的撰写,使我能够等系统、全面的学习有关财务管理新型的、先进的前沿理论知识,并得以借鉴众多专家学者的宝贵经验,这对于我今后的工作和我为之服务的企业,无疑是不可多得的宝贵财富。由于本理论水平比较有限,论文中的有些观点以及对企业实力的归纳和阐述难免有疏漏和不足的地方,欢迎老师和专家们指正。附录1系统作品图刷卡前:刷卡后:附录2上位机程序串口设置:PrivateSubSerial_Port1_Init()'设Θ置?串?口ú参?数簓DimstrAsStringstr=ComboBox5.TextSerialPort1.BaudRate=Val(ComboBox7.Text)'波¨特?率êSerialPort1.PortName=str'串?口ú名?称?SerialPort1.DataBits=8'数簓据Y位?SerialPort1.StopBits=IO.Ports.StopBits.One'停止1位?SerialPort1.Parity=IO.Ports.Parity.None'校£验é位?EndSub打开串口:PrivateSubButton13_Click_1(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton13.ClickDimTimeBuf(10)AsCharTryIfSerialPort1.IsOpen=TrueThenTimeBuf(0)="T"TimeBuf(1)=Chr(Val(DateTime.Now.Second))TimeBuf(2)=Chr(Val(DateTime.Now.Minute))TimeBuf(3)=Chr(Val(DateTime.Now.Hour))TimeBuf(4)=Chr(Val(DateTime.Today.Day))TimeBuf(5)=Chr(Val(DateTime.Today.Month))TimeBuf(6)=Chr(Val(DateTime.Today.DayOfWeek))TimeBuf(7)=Chr(Val(DateTime.Today.Year)-2000)SerialPort1.Write(TimeBuf,0,10)ElseMessageBox.Show("串?口ú未′打洙开a!?")EndIfCatchexAsExceptionMessageBox.Show(ex.Message)EndTryEndSubPrivateSubButton21_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton21.ClickTryIfTextBox17.Text=""OrTextBox18.Text=""ThenMessageBox.Show("帐ê号?或ò密ü码?不?能ü为a空?!?")ElseIfTextBox17.Text=OldUsernameAndTextBox18.Text=OldpasswordThenMessageBox.Show("验é证¤成é功|!?")TextBox17.Text=""TextBox18.Text=""TextBox19.Focus()ElseMessageBox.Show("验é证¤失骸败悒!?")TextBox18.Text=""EndIfEndIfCatchexAsExceptionMessageBox.Show(ex.Message)EndTryEndSub就诊:PrivateSubComReceive1(ByValsenderAsObject,ByValeAsEventArgs)DimiAsInteger=0DimRxbuf(10)AsByteDimTxBuf(10)AsCharDimCardNoAsString=""DimCardTypeAsString=""DimUserNameAsString=""DimCarNoAsString=""DimCardMoneyAsString=""DimCardStatusAsString=""DimFlagAsString=""DimTempAsString=""DimOKAsBoolean=False'SerialPort1.ReadBufferSize=10'SerialPort1.RtsEnable=FalseThreading.Thread.Sleep(200)'添加ó的?延ó时骸TrySerialPort1.Read(Rxbuf,0,10)Fori=0To1Flag+=Chr(Rxbuf(i))NextFori=2To10CardNo+=Chr(Rxbuf(i))NextIfFlag="01"OrFlag="10"ThenTextBox1.Text=CardNoEndIfTryMyCon=NewOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=user.mdb")MyCon.Open()DimcommAsNewOleDbCommand("select*from用?户§表括?where卡¨号?='"&TextBox1.Text&"'",MyCon)DimreadAsOleDbDataReaderread=comm.ExecuteReader()DimstrAsStringWhileread.Read()str=read("卡¨号?").ToStringIfString.IsNullOrEmpty(str)ThenOK=FalseElseOK=TrueTextBox1.Text=read("姓μ名÷").ToStringTextBox2.Text=read("性μ别÷").ToStringTextBox3.Text=read("年μ龄÷").ToStringTextBox4.Text=read("记μ录÷").ToStringEndIfEndWhileCatchexAsExceptionMessageBox.Show(ex.Message)FinallyMyCon.Close()EndTryIfOK=FalseThenTxBuf(0)="M"TxBuf(0)="N"SerialPort1.Write(TxBuf,0,10)Threading.Thread.Sleep(200)'添加ó的?延ó时骸TextBox1.Text=""TextBox2.Text=""TextBox3.Text=""TextBox4.Text=""Label5.Text="无T效§卡¨"ElseIfFlag="01"ThenTxBuf(0)="M"TxBuf(1)="A"TxBuf(2)="I"CheWeiCount=CheWeiCount-1TxBuf(3)=Chr(CheWeiCount)SerialPort1.Write(TxBuf,0,10)Threading.Thread.Sleep(200)'添加ó的?延ó时骸ElseIfFlag="10"ThenTxBuf(0)="M"TxBuf(1)="A"TxBuf(2)="O"CheWeiCount=CheWeiCount+1TxBuf(3)=Chr(CheWeiCount)SerialPort1.Write(TxBuf,0,10)Threading.Thread.Sleep(200)'添加ó的?延ó时骸EndIfEndIfIfFlag="01"AndOK=TrueThen'进?入?时骸卡¨信?息¢CardNo=TextBox1.TextCardType=TextBox2.TextUserName=TextBox3.TextCarNo=TextBox4.Textcheweishu.Text=Str(CheWeiCount)Dimtable1AsNewDataTableMyCon=NewOleDbConnection()MyCon.ConnectionString=("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=user.mdb")MyCon.Open()DA=NewOleDbDataAdapter("select*from表括?",MyCon)DS=NewDataSet()DA.Fill(DS,"table1")DimDRAsDataRowDR=DS.Tables("table1").NewRow()DR("姓μ名÷")=TextBox1.TextDR("性μ别÷")=TextBox2.TextDR("年μ龄÷")=TextBox3.TextDR("记μ录÷")=TextBox4.TextDR("就?诊?时骸间?")=DateTime.Today.Year()&"/"&DateTime.Today.Month()&"/"&DateTime.Today.Day()&_""&DateTime.Now.Hour()&":"&DateTime.Now.Minute()&":"&DateTime.Now.Second()DS.Tables("table1").Rows.Add(DR)DimSCBAsNewOleDbCommandBuilder(DA)DA.Update(DS,"table1")DataGridView2.DataSource=DS.Tables("table1")MyCon.Close()EndSub附录3:下位机程序#include"reg52.h"#include"main.h"#include"mfrc522.h" #include<string.h>unsignedcharcodedata2[4]={0x12,0,0,0};unsignedcharcodeDefaultKey[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};unsignedcharg_ucTempbuf[20];unsignedcharidataMLastSelectedSnr[4];unsignedcharidataRevBuffer[30];unsignedchardataSerBuffer[20];bitCmdValid; voidiccardcode(){ unsignedcharcmd; unsignedcharstatus; cmd=RevBuffer[0]; switch(cmd) { case1://Haltthecard//终止卡的操作 status=PcdHalt();; RevBuffer[0]=1; RevBuffer[1]=status; break; case2://Request,Anticoll,Select,returnCardType(2bytes)+CardSerialNo(4bytes) //寻卡,防冲突,选择卡返回卡类型(2bytes)+卡系列号(4bytes) status=PcdRequest(RevBuffer[1],&RevBuffer[2]); if(status!=0) { status=PcdRequest(RevBuffer[1],&RevBuffer[2]); if(status!=0) { RevBuffer[0]=1; RevBuffer[1]=status; break; } } RevBuffer[0]=3; RevBuffer[1]=status; break; case3://防冲突读卡的系列号MLastSelectedSnr status=PcdAnticoll(&RevBuffer[2]); if(status!=0) { RevBuffer[0]=1; RevBuffer[1]=status; break; } memcpy(MLastSelectedSnr,&RevBuffer[2],4); RevBuffer[0]=5; RevBuffer[1]=status; break; case4: //选择卡SelectCard status=PcdSelect(MLastSelectedSnr); if(status!=MI_OK) { RevBuffer[0]=1; RevBuffer[1]=status; break; } RevBuffer[0]=3; RevBuffer[1]=status; break; case5: //KeyloadingintotheMFRC500'sEEPROMstatus=PcdAuthState(RevBuffer[1],RevBuffer[3],DefaultKey,MLastSelectedSnr);//校验卡密码 RevBuffer[0]=1; RevBuffer[1]=status; break; case6: RevBuffer[0]=1; RevBuffer[1]=status; break; case7: RevBuffer[0]=1; RevBuffer[1]=status; break; case8://Readthemifarecard //读卡 status=PcdRead(RevBuffer[1],&RevBuffer[2]); if(status==0) {RevBuffer[0]=17;} else {RevBuffer[0]=1;} RevBuffer[1]=status; break; case9://Writethemifarecard //写卡下载密码 status=PcdWrite(RevBuffer[1],&RevBuffer[2]); RevBuffer[0]=1; RevBuffer[1]=status; break; case10:PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]); RevBuffer[0]=1; RevBuffer[1]=status; break; case12://参数设置 PcdBakValue(RevBuffer[1],RevBuffer[2]); RevBuffer[0]=1; //contact RevBuffer[1]=0; break; } }///////////////////////////////////////////////////////////////////////系统初始化/////////////////////////////////////////////////////////////////////voidInitializeSystem(){P0=0xFF;P1=0xFF;P3=0xFF; ET2=0; T2CON=0x04; PCON=0x80;SCON=0x70;TMOD=0x21;//TMOD=0x22; TH1=BAUD_9600; TL1=TH1; TR1=1;//波特率发生器 TH0=0x60;TL0=0x60;TR0=0;ET0=0; ET1=0; EA=1; EX0=1; IT0=1; TR2=0; ES=1; CmdValid=0;LED_GREEN=1;PcdReset();PcdAntennaOff();PcdAntennaOn(); M500PcdConfigISOType('A');LED_GREEN=0; delay_10ms(10); LED_GREEN=1; delay_10ms(10);LED_GREEN=0;}///////////////////////////////////////////////////////////////////////用T2做延时子程序//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////接收和发送中断///////////////////////////////////////////////////////////////////////voidisr_UART(void)interrupt4using1{unsignedcharlen,i; unsignedintj=0; if(RI) { len=SBUF; RI=0; for(i=0;i<len;i++) { while(!RI) { j++; if(j>1000) { break; } } if(j<1000) { RevBuffer[i]=SBUF; RI=0; j=0; } else { break; } } if(i==len) { REN=0; CmdValid=1; } } elseif(!RI&&TI) { TI=0; len=RevBuffer[0]; for(i=0;i<len+1;i++) { SBUF=RevBuffer[i]; while(!TI); TI=0; } REN=1; }}voidmain(

温馨提示

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

评论

0/150

提交评论