中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234
設(shè)計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動態(tài)

PIC單片機(jī)實現(xiàn)的IC卡讀寫器

更新時間: 2019-03-23
閱讀量:1652

十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享PIC單片機(jī)實現(xiàn)的IC卡讀寫器。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運算放大器等。

摘  要:  詳細(xì)介紹PIC單片機(jī)使用SPI方式與IC卡進(jìn)行數(shù)據(jù)傳輸?shù)脑砗碗娐吩O(shè)計,以及使用USART方式與PC機(jī)進(jìn)行串行異步通信的工作原理;介紹PIC單片機(jī)聽SPI方式和USART方式的設(shè)置方法。  

    引言  

    本設(shè)計的主要目的是介紹IC卡的數(shù)據(jù)存儲技術(shù)和IC卡的數(shù)據(jù)通信,因而使用存儲器卡。由于本設(shè)計中既可與IC卡進(jìn)行串行同步通信,又要與上位機(jī)進(jìn)行中行異步通信,因而需要選擇一種同時具有這兩種通信方式的單片機(jī)。因為PIC16F877不僅具有本設(shè)計所需要的兩種通信方式,而且還具有運行速度快、低功耗、價格低等優(yōu)點,所以選擇PIC16F877單片機(jī)作為本設(shè)計的單片機(jī)。  

    圖1是本設(shè)計的電路圖,圖中電源變換電路和發(fā)光二極管等指示電路沒有畫出。圖中的二極管電路是單片機(jī)與IC卡通信數(shù)據(jù)線的保護(hù)電路。當(dāng)數(shù)據(jù)線上的電壓為負(fù)電壓時,與地相連的二極管導(dǎo)通;當(dāng)數(shù)據(jù)線上的電壓大于+5V時,與+5V相連的二極管導(dǎo)通,從而保證數(shù)據(jù)線上的電壓在0V~+5V之間,保護(hù)單片機(jī)和IC卡不受損壞。圖中單片機(jī)的15腳和23腳分別與IC卡的輸出引腳3和4相連。由于IC卡的輸出電壓為CMOS電平,而單片機(jī)能夠正確的識別IC卡的輸出信號,需要加上拉電阻。  

    1 SPI工作方式  

    串行外圍設(shè)備接口SPI(Serial Peripheral Interface)總線技術(shù)是Motrola公司推出的一種同步串行接口。SPI總線是一種三線同步總線,因其硬件能力很強(qiáng),與SPI有關(guān)的軟件就相當(dāng)簡單,使CPU有更多的時間處理其它事務(wù),因此得到廣泛應(yīng)用。   


    SPI模式允許8位數(shù)據(jù)同步發(fā)送和接收,支持SPI的所有四種方式。SPI模式傳輸數(shù)據(jù)需要四根信號線:串行數(shù)據(jù)輸出(SDO)線、串行數(shù)據(jù)輸入(SDI)線、串行時鐘(SCK)和從選擇(SS)。其中,從選擇線只用于從屬模式。  

   1.1 SPI主模式  

    由于控制時鐘SCK的輸出,主模式可以在任何時候開始傳輸數(shù)據(jù)。主模式通過軟件協(xié)議控制從模式的數(shù)據(jù)輸出。  

    在主模式中,一旦SSPUF寄存器寫入,數(shù)據(jù)就會發(fā)送或接收。在接收數(shù)據(jù)時,SSPSR寄存器按照時鐘速率移位,一旦接收到一個字節(jié),數(shù)據(jù)就傳輸?shù)絊SPBUF,同時中斷標(biāo)志位和狀態(tài)標(biāo)志位置位。  

    時鐘的極性可以通過編程改變。在主模式中,時鐘SCK的頻率可以設(shè)置為:fosc/4(即Tcy)、fosc/16(即4Tcy)、fosc/64(即16Tcy)和定時器2(Timer2)輸出的二分頻等四種。在芯片時鐘為20MHz時,SCK的最大頻率為5.0MHz。  

    在本設(shè)計中,使用的就是SPI主模式,由單片機(jī)控制時鐘SCK的輸出。當(dāng)向IC卡中寫數(shù)據(jù)時,隨時可以發(fā)送數(shù)據(jù);當(dāng)讀IC卡內(nèi)的數(shù)據(jù)時,先要發(fā)送任意一個數(shù)據(jù)(此時IC卡不處于寫入狀態(tài),不會接收該數(shù)據(jù)), 給IC卡提供輸出數(shù)據(jù)的時鐘,然后再接收IC卡發(fā)出的數(shù)據(jù)。其時序如圖2所示。(發(fā)送和接惦的數(shù)據(jù)均為6FH)   

如果要連續(xù)發(fā)送數(shù)據(jù),那么每次將數(shù)據(jù)送到SSPBUF寄存器后,都要判斷是否已經(jīng)發(fā)送完該數(shù)據(jù),即判斷PIR1寄存器的SSPIF位是否為1。如果SSPIF位為1,則表明數(shù)據(jù)已經(jīng)發(fā)送完畢,可以繼續(xù)發(fā)送下一個數(shù)據(jù)。但此時還不能立即發(fā)送下一個數(shù)據(jù),因為SSPIF位必須在程序中由軟件清零,只有將SSPIF位軟件清零后,才能繼續(xù)發(fā)送下一個數(shù)據(jù)。  

    1.2 SPI從模式  

    在SPI從模式,數(shù)據(jù)的發(fā)送和接收領(lǐng)先SCK引腳上輸入的外時鐘脈沖,當(dāng)最后一位被鎖存后,中斷標(biāo)志位SSPIF(PIR1的D3)位。在休眠模式,從模式仍可發(fā)送和接收數(shù)據(jù),一旦接收到數(shù)據(jù),芯片就從休眠中喚醒。如果采用SS控制的從模式,當(dāng)SS引腳接到VDD時,SPI模式復(fù)位;如果 彩CKE=1控制的從模式,必須開放SS引腳控制。  

    在本設(shè)計中,由于IC卡是存儲器卡,不能提供時鐘信號,因此不能采用從模式,只能采用主模式,由單片機(jī)控制時鐘信號。  

    單片機(jī)的SPI方式初始化程序如下:   


MOVLW20H ;將20H送到累加器  

    MOVWF SSPCON ;將累加器中的數(shù)送到SSPCON寄存器  

    BSF STATUS,RP0 ;將定RAM區(qū)的第1頁  

    BCF SSPSTAT,SMP ;將SSPSTAT寄存器的SMP位置0  

    BSF SSPSTAT,CKE ;將SSPSTAT寄存器的CLK位置1  

    BCF TRISC,3 ;將端口C的第3位設(shè)置為輸出  

    BCF TRISC,5 ;將端口C的第5位設(shè)置為輸出  

    其中,上述第1、2行程序是配置控制寄存器,將SPI方式配置為主控模式,時鐘頻率為單片機(jī)時鐘頻率的1/4,并將時鐘的高電平設(shè)置為空閑狀態(tài)。第3行程序為換頁指令,將指針轉(zhuǎn)到第1頁。因為PIC16F877單片機(jī)的數(shù)據(jù)存儲器是分頁的,而所要操作的寄存器在第1頁,因此要用換頁指令將指針到第1頁。第4、5行程序是配置狀態(tài)寄存器,將SPI方式設(shè)置為數(shù)據(jù)輸出時鐘的中間采樣,時鐘SCK的上升沿觸發(fā)。第6、7行程序則是將RC口的RC3和RC5設(shè)置為輸出。  

   2 USART方式  

    通用同步異步接收發(fā)送模塊(USART)是兩個串行通信接口之一,USART又稱為SCI(Serial Communication Interface)。USART可以設(shè)置為全雙工異步串行通信系統(tǒng),這種方式可以與個人計算機(jī)PC或串行接口CRT等外圍設(shè)備進(jìn)行串行通信:也可以設(shè)置為半雙工異步串行通信系統(tǒng),與串行接口的A/D或D/A集成電路、串行EEPROM等器件連接。USART是二線制串行通信接口,它可以被定義如下三種工作方式:全雙工異步方式、半雙工同步主控方式、半雙工同步從動方式。  

    為了把RC6和RC7分別設(shè)置成串行通信接口的發(fā)送/時鐘(TX/CK)線和接收/數(shù)據(jù)(TX/DT)線,必須首先把SPEN位(TCSTAT的RD7)和方向寄存器TRISC的D7:D6置1。  

    USART功能模塊含有兩個8位可讀/寫的狀態(tài)/控制寄存器,它們是發(fā)送狀態(tài)/控制寄存器TXSTA和接收狀態(tài)/控制寄存器TCSTA。  

    USART帶有一個8位波特率發(fā)生器BRG(Baud Rato Generator),這個BRG支持USART的同步和異步工作方式。用SPBRG寄存器控制一個獨立的8位定時器的周期。在異步方式下,發(fā)送狀態(tài)/控制寄存器TXSTA的BRGH位(即D2)也被用來控制波特率(在同步方式下忽略BRGH位)。  

    向波特率寄存器SPBRG寫入一個新的初值時,都會使BRG定時器復(fù)位清零,

由此可以保證BRG不需要等到定時器溢出后就可以輸出新的波特率。  

對USART方式進(jìn)行初始化的程序如下:  

    BSF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲器的第1頁  

    MOVLW 0x19  

    MOVWF SPBRG ;設(shè)置波特率為9600  

    BCF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲器的第0頁  

    CLRF RCSTA ;將接收控制和狀態(tài)寄存器清零  

    BSF RCSTA,SPEN ;串口允許  

    CLRF PIR1 ;清除中斷標(biāo)志  

    BSF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲器的第1頁  

    CLRF TXSTA ;將發(fā)送控制和狀態(tài)寄存器清零  

    BSF TXSTA,BRGH ;設(shè)置為異步、高速波特率  

    BSF TXSTA,TXEN ;允許發(fā)送  

    BCF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲器的第0頁  

    BSF RCSTA,CREN ;允許接收    

初始化完成后,即可發(fā)送或接收數(shù)據(jù)。在發(fā)送或接收數(shù)據(jù)時,通過查詢發(fā)送/接收中斷標(biāo)志位即可判斷是否發(fā)送完一個數(shù)據(jù)/接收到一個數(shù)據(jù)。發(fā)送/接收中斷標(biāo)地不需要也不有用軟件復(fù)位。  

    在異步串行發(fā)送的過程中,只要TXREG寄存器為空,中斷標(biāo)志TXIF就置位。因此,TXIF為1并不是發(fā)送完畢的標(biāo)志,但仍可以用TXIF標(biāo)志來判斷。因此當(dāng)TXREG為空時,將數(shù)據(jù)送入后,數(shù)據(jù)會保留在TXREG寄存器中,直到前一個數(shù)據(jù)從發(fā)送移位寄存器中移出,即前一個數(shù)據(jù)發(fā)送完。  

    3 IC卡  

    IC卡是集成電路卡(Integrated Circuit Card)的簡稱,有些國家和地址稱其為智能卡(Smart Card)、芯片卡(Chip Card)。國際標(biāo)準(zhǔn)化組織(ISO)在ISO7816標(biāo)準(zhǔn)中規(guī)定,IC卡是指在由聚氯乙烯(PVC)或聚氯乙烯酸脂(PVCA)材料制成

的塑料卡內(nèi)嵌入式處理器和存儲器等IC芯片的數(shù)據(jù)卡。近年來,由于導(dǎo)半體技術(shù)的進(jìn)步,集成化程度和存儲器容量有了很大提高,并使CPU和存儲器集成在一個芯片上,從而提高了數(shù)據(jù)的安全性。  

    在本設(shè)計中,IC卡采用的是AT45DB041B-SC芯片,該芯片的特點如一下:  

    *單一的2.7V~3.6V電源;  

    *串行接口結(jié)構(gòu);  

    *頁面編程操作,單一的循環(huán)重復(fù)編程(擦除和編程,2048頁(每頁264字節(jié))主存;  

    *兩個264字節(jié)的SRAM數(shù)據(jù)緩存,允許在重編程非易失性存儲器時接收數(shù)據(jù);  

    *內(nèi)置的編程和控制定時器;  

    *低功耗,4mA有源讀取電流,2μA CMOS備用電流;  

    *15MHz的最大時鐘頻率;  

    *串行外圍接口方式(SPI)——模式0和3;  

    *CMOS的TTL兼容的輸入和輸出;  

    *5.0V可承受的輸入,SI、SCK、CS(低電平有效)、RESET(低電平有效)。  

    在本設(shè)計的調(diào)試過程中,曾測試過IC卡的輸入輸出電平,結(jié)果證明這種IC卡的輸入電平與TTL兼容,而輸出電平與TTL不兼容。  

 4 IC卡的電源提供電路  

    在本設(shè)計中,由于IC卡的電源電壓范圍為+2.7~+3.6V,而PIC單片機(jī)需要的電源為+5V,而且穩(wěn)壓源提供的電壓也是+5V,因此,要設(shè)計一個穩(wěn)壓模塊,給IC卡提供+3V左右的電壓。設(shè)計電路如圖3所示。  

    該電路的主要元件為LM317芯片,它是三端可調(diào)集成穩(wěn)壓器,輸出電壓為1.25~37V范圍內(nèi)可調(diào)。當(dāng)其Vin端的輸入電壓在2~40V范圍內(nèi)變化時,電路均能正常工作,輸出端Vout和調(diào)整端ADJ間的電壓等于基準(zhǔn)電壓1.25V。該芯片內(nèi)的基電路的工作電流IREF很小,約為50μA,由一個恒流性很好的恒流源提供,所以它的大小不受供電電壓的影響,非常穩(wěn)定。在圖3中,B點為電壓輸出端,為IC卡提供電壓。A點為控制端,與單片機(jī)的一個端口引腳相連,當(dāng)該引腳為低電平時,三極管Q1不工作,B點輸出電壓約為3.15V;當(dāng)該引腳為高電平時,三極管Q1工作,B點輸出電壓約為1.25V。在程序中查詢IC卡插座中是否有IC卡,當(dāng)有IC卡時,將A點所連的單片機(jī)引腳設(shè)置為低電平,從而為IC卡提供電源;當(dāng)沒有IC卡或?qū)C卡的操作結(jié)束時,將A點連的單片機(jī)引腳設(shè)置為高電平,從而不給IC卡提供電源。   


    IC卡的上電和下電程序如下。  

    IC卡上電子程序 IC卡下電子程序  

    POWERON POWEROOF  

    BSF STATUS,RP0 BSFSTATUS,RP0  

    BCF TRISE,0 BCF TRISE,0  

    BCF RTISE,1 BCF TRISE,1   

 BCF STATUS,RP0 BCF STATUS,RP0  

    BCF PORTE,0 BSF PORTE,0  

    BCF PORTE,1 BSF PORTE,1  

    CALL DLYTIM CALL DLYTIM  

    RETURN RETURN  

    在本設(shè)計中,單片機(jī)與IC卡通信的主程序流程圖如圖4所示。  

    5 與PC機(jī)的通信  

    在本設(shè)計中,有PIC單片機(jī)與PC機(jī)串行通信的功能。由于本設(shè)計所用的單片機(jī)PIC16F877有USART方式,該方式可將C口的RC5和RC7設(shè)置成異步串行通信模式,因而在本設(shè)計中,與PC機(jī)的通信模塊電路就比較簡單。將單片機(jī)C口的RC6和RC7設(shè)置為異步串行通信模式,經(jīng)過MAX232A芯片進(jìn)行電平轉(zhuǎn)換后,將TTL電平轉(zhuǎn)換為RS232電平,再與DB9接口相連,即可實現(xiàn)通信。在PC機(jī)端,可以用VC等編程工具根據(jù)通信協(xié)議編寫軟件來控制對IC卡的讀寫操作。  

    6 結(jié)論  

    經(jīng)過調(diào)試,本設(shè)計能夠在脫離在線仿真器的情況下,上電后獨立的運行程序,并能在PC機(jī)軟件的控制下,實現(xiàn)對IC卡中任意位置的讀寫,其中讀寫的起始地址、讀寫數(shù)據(jù)的個數(shù)以及數(shù)據(jù)內(nèi)容可以在PC機(jī)端輸入或選擇。  

本設(shè)計已在實際應(yīng)用中測試過,具有實用價值。由于本設(shè)計中所使用的PIC單片機(jī)的程序存儲器較大(8KB),因而可以編寫較大的程序,實現(xiàn)多合一該卡器并由PC機(jī)控制讀寫哪種芯片的IC卡。另外,由于本設(shè)計所使用單片機(jī)的程序存儲器是Flash存儲器,因而可以方便地實現(xiàn)程序的下載和升級

By champtek | 

(文源網(wǎng)絡(luò),侵刪)

武汉市| 苍山县| 尚义县| 出国| 阿拉善盟| 平潭县| 定远县| 且末县| 灌阳县| 敦化市| 朔州市| 黔东| 宁乡县| 大埔县| 随州市| 长乐市| 庄河市| 佛坪县| 韩城市| 沅陵县| 鄂托克前旗| 麻栗坡县| 乌什县| 阆中市| 改则县| 虎林市| 北安市| 冕宁县| 启东市| 星子县| 徐州市| 新巴尔虎右旗| 兴海县| 定陶县| 南涧| 东山县| 萨迦县| 西青区| 方城县| 饶河县| 卢龙县|