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

正文內(nèi)容

基于51單片機的接觸式ic卡設(shè)計相關(guān)資料-資料下載頁

2025-06-28 00:17本頁面
  

【正文】 放抖動的干擾。對于重鍵則以后一次查詢?yōu)樽詈蠼Y(jié)果。3) 掃描鍵盤,得到按下的鍵的鍵值?!?”電平,然后輸出一次“0”電平,同時進行計數(shù)為00H,“1”電平,則繼續(xù)連續(xù)輸出“1”電平進行移位,并同時計數(shù),“0”電平,表明此時的鍵即為按下的鍵,對應(yīng)的計數(shù)值即為鍵值,然后調(diào)用對應(yīng)的鍵處理子程序。鍵值與鍵號的對應(yīng)關(guān)系如表51所示。4) 表51 鍵值與鍵號對應(yīng)表鍵值00H01H02H03H04H05H鍵號012345鍵值06H07H08H09H0AH鍵號6789.鍵值0BH0CH0DH鍵號修改/確認賬號顯示余額/總數(shù)鍵值0EH0FH10H鍵號開始/停止備用備用圖53 鍵盤掃描流程圖 顯示子程序讀卡器在運行過程中,對用戶的信息進行不斷改變,并寫入EEPROM中。當用戶需要查詢IC卡的運行狀態(tài)時,只需按動顯示按鈕,即可顯示用戶的帳號信息、帳號余額、計數(shù)值等信息。流程圖如圖54所示。圖54 顯示子程序流程圖 比較校驗數(shù)據(jù)程序該程序把輸入的“校驗數(shù)據(jù)”的各個字節(jié)與相對應(yīng)的參照數(shù)據(jù)(存放在加密存儲器中)進行比較。如果比較不成功(即兩組數(shù)據(jù)不相同),則密碼錯誤數(shù)器的一個字位將只會被從“1寫成“0,并且不能被擦除。該命令的執(zhí)行流程見下圖55所示。圖55 比較校驗數(shù)據(jù)的流程圖首先用一個修改命令將密碼錯誤計數(shù)器中的一位寫0,然后緊跟著三條比較校驗數(shù)據(jù)命令。比較從參照數(shù)據(jù)的字節(jié)1開始。整個比較過程成功與否是用能否擦除密碼錯誤計數(shù)器來證實。如果比較成功,則擦除操作執(zhí)行有效,這時只要不斷電,對整個芯片各存儲器的各區(qū)域的寫入/擦除處理都可以進行,如果比較不成功,擦除操作執(zhí)行無效,密碼錯誤計數(shù)器將不會恢復(fù)為“111”。但只要(EC)不全為0,就允許外部接口設(shè)備IFD對芯片進行重試:如果(EC)全為0,則比較被封鎖,IC卡不能再做修改數(shù)據(jù)的操作。當校驗數(shù)據(jù)比較成功,加密存儲器也同樣被打開,其單元中的參數(shù)數(shù)據(jù)也可以象主存儲器中的其他單元一樣進行修改變換。芯片在出廠時,根據(jù)用戶的專門安排,常常將可編程加密代碼(PSC)中編入一個專門代碼。這樣在使用時,要打開卡片就必須合法得到一個代碼,這也是防止非法竊用或偽造卡片的重要手段??偨Y(jié)在了解研究8051單片機的結(jié)構(gòu)特點及其相關(guān)的設(shè)計實例后,本次設(shè)計充分利用其相關(guān)的功能,開發(fā)設(shè)計了IC卡讀寫器。另外,在軟件設(shè)計過程中,主要程序代碼使用C編寫,大大加快了開發(fā)進程與后期的可維護性提升。設(shè)計主要完成了以下工作:、開發(fā)工具和應(yīng)用領(lǐng)域2. 使用PROTEL軟件繪制完成了系統(tǒng)完整的電路圖,實現(xiàn)了基于51單片機的IC卡讀寫器的設(shè)計。,完成了相應(yīng)的軟件設(shè)計,達到了預(yù)期的效果。:以51單片機為核心,結(jié)合AT24C02作為外部存儲器,存放關(guān)鍵信息,液晶SMG12232B2作為顯示系統(tǒng)。 實現(xiàn)了IC卡與單片機的通信,有51單片機控制數(shù)據(jù)傳輸過程,實現(xiàn)讀卡和寫卡操作。存在的問題及今后的改進:。致謝本來對51單片機了解甚少,但是通過本次設(shè)計,加深了我對51單片機知識的了解,使我學(xué)到了許多原來所未涉及的東西,并且學(xué)會了一些軟件的使用。在此期間,我得到了我的導(dǎo)師盧恒煒老師的細心指導(dǎo),本論文也是在盧老師的極大幫助下完成的。盧老師除了親自面授輔導(dǎo),還通過電子郵件、電話等各種通信方式給予我各方面的指導(dǎo),并且無私的提供各種相關(guān)的資料,幫助我解決許多問題。盧恒煒老師嚴謹?shù)闹螌W(xué)態(tài)度、敏銳的洞察力和實事求是的工作作風使我受益匪淺,盧老師廣博的學(xué)識和嚴于律己、寬以待人的生活作風使我終身難忘。對盧老師的精心指導(dǎo)再次表示我衷心的感謝。同時在畢業(yè)論文期間,我還得到了電子信息科學(xué)與技術(shù)教研室實驗室全體老師的關(guān)心和支持,也在此表示由衷的感謝。感謝我的同組同學(xué)何智鋒、宋鵬飛、宋超、薛巖、陳健鋒等幾位同學(xué),在此次設(shè)計中他們給了我很大幫助。大家一起研究硬件的選取、程序的設(shè)計,一起提出問題,一起解決問題,使我感到學(xué)習(xí)的快樂和同學(xué)之間的深厚友誼,這將給我留下最美好的回憶。感謝審閱此論文的各位老師,感謝你們的寶貴意見。感謝我的父母,是他們的關(guān)心和支持,使我能順利完成畢業(yè)設(shè)計,感謝所有關(guān)心和幫助我的人們。 附錄 部分程序清單一、SLE4442卡操作程序清單:includeincludeincludeincludedefine RMM_COMM 0x30 //讀主存命令字define UMM_COMM 0x38 //寫密碼存儲區(qū)define CVD_COMM 0x33 //校驗密碼define RSM_COMM 0x31 //讀密碼存儲區(qū)define USM_COMM 0x39 //寫密碼存儲區(qū) deifne RPM_COMM 0x34 //讀保護存儲區(qū) deifne WPM_COMM Ox3c //寫保護存儲區(qū)Sbit RST=P1^4。Sbit CLK=P1^5。Sbit IO=P1^6。deifne uchar unsigned chardefine uint unsigned intVoid delay(){_nop_()。_nop_()。_nop_()。_nop_()。_nop_()。}void start(){IO=1。delay()。CLK=1。delay()。IO=0。delay()。CLK=O。}Void stop(){IO=0。delay()。CLK=1。delay(}:IO=1。delay()。}uchar InByte(void){uchar a,i。A=0。IO=1。for(i=8。iO。i){a=a﹥﹥l。if((uchar)IO) a=0x80。CLK=1。 delay()。CLK=O。 delay()。}return(a)。} void OutByte(uchar ch){uchar i。for(i=8。iO。i){I0=(bit)(champ。0x01)。delay()。 CLK=1。delay()。 CLK=O。ch=ch﹥﹥l。}}void reset(uchar data*pt){uchar i。RST=1。 delay()。CLK=1。 delay()。delay()。 CLK=O。delay()。 RST=0。i=4。do{*pt=InByte()。pt++。}while(i)。}void ic_break(){CLK=O。 delay()。RST=1。 delay()。delay()。 RST=O。 }void Procee_Mod(void){uint i。CLK=O。delayQ。IO=1。IO=0。for(i=620。iO。i){ CLK=1。 delay()。CLK=O。 delay()。if(IO) break。 }}入口: a=命令字,b=地址,c=數(shù)據(jù)void SendComm(uchar a,uchar b,uchar c){starto。 OutByte(a)。OutByte(b)。OutByte(c)。stop()。}入口:pt=起始地址,i=數(shù)據(jù)個數(shù)Void Read_Mod(uchar data*pt,uchar i){ CLK=O。 delay()。do{ *pt=InByte()。 //讀入一個字節(jié)Pt++。 //指針加一}while(i)。 //計數(shù)器減一,判斷}void Rmm(uchar cardAdd,uchar*pt,uchar i){SendComm(RMM_COMM,cardAdd,O)。Read_Mod(pt,i)。ic_break()。}void Utmm(ucharCardAdd,uchar data*pt){SendComm(UMM_COMM,CardAdd,*pt)。Proce_Mod()。}void Rpm(uchar data*pt){SendComm(RPM_COMM,1,1)。ReadeMod(pt,4)。}void P_Byte(uchar CardAdd,uchar data*pt){SendComm(WPM_COMM,CardAdd,*pt)。Proce_Mod()。}入口:指向存放密碼的內(nèi)部RAM地址出口:成功返回1,失敗返回0,卡片己鎖也返回0bit Verify(uchar data*pt){ ucher data temp[4]。uchar*tpt,i。tpt=amp。temp[O]。SendComm(RSM_COMM,1,1)。 //發(fā)送讀保密存儲區(qū)的命令字,第2,3個參數(shù)被忽略Read_Mod(tpt,4)。 //讀出if((temp[O]amp。OxO7)!=O) //第一個字節(jié)是重試計數(shù)器,如果重試計數(shù)器為0,直接推出{if((temp[O]amp。OxO7)==OxO7)i=0x06。 else if((temp[O]amp。0x07)==0x06)i=0x04。else if((temp[0]amp。0x07)=0x04)i=0x00。 //將其中的一位為1的改寫成0SendComm(USM_COMM,O,i)。 //重寫計數(shù)器Proce_Mod()。 //處理for(i=l。i4。i++,Pt++) //核對3字節(jié)的密碼{ SendComm(CVDseCOMM,i,*pt)。 //發(fā)出校對命令Proce_Mod()。 //處理}SendComm(USM_COMM,O,Oxff)。 //發(fā)出擦寫計數(shù)器命令PorceseMod()。 //處理SendComm(RSM_COMM,1,1)。 //發(fā)送讀保密存儲區(qū)的命令字,第2,3個參數(shù)被忽略tpt=amp。temp[0]。Read_Mod(tpt,4)。 //讀出if((temp[O]amp。0x07)==OxO7) //如果沒有被成功擦寫,表明校對失敗return(1)。}erturn(O)。}二、24C02操作程序清單,void DelayMs(unsigned int number){unsigned char temp。for(。number!=O。number){for(temp=112。temp!=0。temp){}}}void i2cStart(){ SDA=1。 SCL=1。 SDA=O。 SCL=O。}void i2cStop(){SCL=O。SDA=O。SCL=1。SDA=1。void Ack(){SDA=O。SCL=1。SCL=O。SDA=1。}void NoAck(){SDA=1。SCL=1。SCL=O。}bit TestAck(){bit ErrorBit。SDA=1。SCL=1。Error Bit=SDA。SCL=O。return(ErrorBit)。}void Write8Bit(unsigned char input){unsigned char temp。for(temp=8。temp!=0。temp){SDA=(bit)(inputamp。0x80)。SCL=1。SCL=O。input=inputl。}}void Write24cO2(unsigned char*Wdata,unsigned charRomAddress,Unsignedchar number){i2cStart()。Write8Bit(WriteDeviceAddress)。TestAck()。Write8Bit(RomAddress)。TestAck()。for(。number!=O。number){Write8Bit(*Wdata)。TestAck()。Wdata++。}i2cStop()。DelayMs(10)。Unsigned char Read8Bit(){unsigned char temp,rbyte=0。for(temp=8。temp!=O,temp){SCL=1。rbyte=rbytel。rbyte=byte((unsigned char)(SDA))。SCL=O。}return(rbyte)。}void Read24cO2(unsigned char *RamAddress,unsigned char RomAdderss,unsigned char bytes){//unsignedc
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1