![基于IC卡用電管理系統(tǒng)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/19/fe6a66f0-b361-4feb-a5f1-3b903346bd32/fe6a66f0-b361-4feb-a5f1-3b903346bd321.gif)
![基于IC卡用電管理系統(tǒng)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/19/fe6a66f0-b361-4feb-a5f1-3b903346bd32/fe6a66f0-b361-4feb-a5f1-3b903346bd322.gif)
![基于IC卡用電管理系統(tǒng)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/19/fe6a66f0-b361-4feb-a5f1-3b903346bd32/fe6a66f0-b361-4feb-a5f1-3b903346bd323.gif)
![基于IC卡用電管理系統(tǒng)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/19/fe6a66f0-b361-4feb-a5f1-3b903346bd32/fe6a66f0-b361-4feb-a5f1-3b903346bd324.gif)
![基于IC卡用電管理系統(tǒng)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/19/fe6a66f0-b361-4feb-a5f1-3b903346bd32/fe6a66f0-b361-4feb-a5f1-3b903346bd325.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 實(shí)驗(yàn)報(bào)告 題目:基于IC卡的用電管理系統(tǒng) 組員A:何桐桐 10041258 組員B:馮君杰 10041256 班級(jí):電氣09 2013-5-17【摘要】在IC卡應(yīng)用日益廣泛的今天,IC卡用電管理系統(tǒng)以其管理的安全、可靠、高效、靈活、方便,已逐步取代傳統(tǒng)的用電管理模式。我們?cè)O(shè)計(jì)的IC卡用電管理系統(tǒng)可以方便地管理和控制應(yīng)用場(chǎng)所的用戶(hù)。本系統(tǒng)以智能化小區(qū)為應(yīng)用背景,通過(guò)上位機(jī)(電腦)與下位機(jī)(單片機(jī))串行通信的聯(lián)合操作,完成對(duì)刷卡用戶(hù)信息的顯示,記錄與管理。規(guī)定IC卡上存貯的內(nèi)容由規(guī)定的特征碼、卡號(hào)、姓名、卡內(nèi)余額以及權(quán)限等級(jí)構(gòu)成,特征碼為判別該卡合法性的依據(jù)。以單片機(jī)為核心的下位機(jī)系統(tǒng),可以方便
2、地對(duì)IC卡進(jìn)行操作,判定卡的合法性,對(duì)非法卡予以報(bào)警,對(duì)刷卡成功后的合法卡在數(shù)碼管上顯示其卡號(hào)、卡內(nèi)余額以及扣費(fèi)操作。上位機(jī)界面由C+中的MFC編寫(xiě)完成。其對(duì)刷卡人基本信息詳細(xì)顯示,同時(shí)能進(jìn)行充值電費(fèi),對(duì)于管理員權(quán)限用戶(hù),可查詢(xún)所有用戶(hù)的基本信息。系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單、便于擴(kuò)展,給管理者和用戶(hù)帶來(lái)了極大的方便。【關(guān)鍵詞】 IC24c01卡 單片機(jī) 串行通信 MFC友好界面目錄1、引言2、實(shí)驗(yàn)?zāi)康募叭蝿?wù)3、具體工作內(nèi)容3.1 技術(shù)要求3.2 工作要求4、總體設(shè)計(jì)方案及分析 4.1 總體結(jié)構(gòu)設(shè)計(jì)框圖 4.2 系統(tǒng)模塊分析 4.2.1 單片機(jī)系統(tǒng)模塊功能介紹 4.2.2 單片機(jī)與上位機(jī)的串行通信 4.2.3
3、 上位機(jī)功能實(shí)現(xiàn)及界面設(shè)計(jì)5、實(shí)驗(yàn)運(yùn)行結(jié)果及調(diào)試6、實(shí)驗(yàn)設(shè)計(jì)總結(jié)及感想7、參考資料8、附錄 8.1 源程序 8.2 原理圖及PCB圖1引言隨著智能化住宅小區(qū)的興起與迅速發(fā)展,對(duì)智能化住宅小區(qū)的現(xiàn)代化物業(yè)管理提出了更高的要求,例如用電管理。傳統(tǒng)的用電管理模式存在以下弊端:(1)人工抄表誤差大、費(fèi)時(shí)、麻煩;(2)先用電后付費(fèi),收費(fèi)慢,加之各單位門(mén)戶(hù)的防盜門(mén),很不方便,甚至一部分電費(fèi)收不回來(lái)。迅速發(fā)展的IC卡技術(shù)引入用電管理可以解決以上問(wèn)題,還可以記錄各用戶(hù)的用電情況,備份用電數(shù)據(jù),實(shí)現(xiàn)有效的監(jiān)督管理。該類(lèi)系統(tǒng)可以提高管理效率和可靠性。通過(guò)預(yù)先收費(fèi),可以增加管理部門(mén)的可用資金,為居民提供優(yōu)質(zhì)服務(wù),改
4、變對(duì)資源先消費(fèi)后收費(fèi)的不合理狀況。對(duì)于用戶(hù)而言,IC卡收費(fèi)可消除收費(fèi)人員入戶(hù)的騷擾和準(zhǔn)備現(xiàn)金零錢(qián)的煩惱;同時(shí),還有利于用戶(hù)根據(jù)自家用電情況,進(jìn)行計(jì)劃消費(fèi)。2實(shí)驗(yàn)?zāi)康募叭蝿?wù)(1)通過(guò)查閱相關(guān)資料,深入了解IC卡的原理及與單片機(jī)接口方式;(2)學(xué)習(xí)有關(guān)操作界面的設(shè)計(jì)方法及制作;(3)復(fù)習(xí)“MCS-51單片機(jī)原理及C語(yǔ)言(或匯編語(yǔ)言)程序設(shè)計(jì)”;(4)設(shè)計(jì)基于IC卡的用電管理系統(tǒng)的原理圖,構(gòu)建硬件平臺(tái); (5)采用匯編或C語(yǔ)言編寫(xiě)應(yīng)用程序,上位機(jī)可采用任一高級(jí)語(yǔ)言編寫(xiě)應(yīng)用程序; (6)制作出樣機(jī)并測(cè)試達(dá)到功能(讀、寫(xiě)的數(shù)據(jù)信息)和技術(shù)指標(biāo)要求;(7)寫(xiě)出設(shè)計(jì)報(bào)告和答辯PPT。3. 具體工作內(nèi)容 3.
5、1 技術(shù)要求(1)目標(biāo)IC卡為24C01;(2) IC卡的信息量不少于256字節(jié);(3) 可識(shí)別是否用IC卡在線(xiàn);(4)顯示用戶(hù)的相關(guān)信息;(5) 能夠鑒別非法IC卡;(6) 友好人性化操作界面;(7)可讀、寫(xiě)的數(shù)據(jù)信息;(8)利用IC卡的信息可決定用戶(hù)的權(quán)利和義務(wù)。3.2 工作要求(1)組建基于單片機(jī)的IC卡用電管理系統(tǒng)的總體結(jié)構(gòu)框圖;(2)設(shè)計(jì)詳細(xì)的原理圖,通過(guò)理論分析和計(jì)算選擇電路參數(shù);(3)根據(jù)操作功能要求,確定操作界面的控制功能;(4)按設(shè)計(jì)要求確定顯示方式及信息量;( 5 )編寫(xiě)應(yīng)用程序并調(diào)試通過(guò);( 6 )對(duì)系統(tǒng)進(jìn)行測(cè)試和結(jié)果分析; ( 7 )撰寫(xiě)設(shè)計(jì)報(bào)告和答辯PPT。4. 總體
6、設(shè)計(jì)方案及分析4.1 總體結(jié)構(gòu)設(shè)計(jì)框圖 控制開(kāi)關(guān)單片機(jī)上位機(jī)RS232接口串行通信蜂鳴器數(shù)碼管顯示指示燈IC卡IIC總線(xiàn)4.2 系統(tǒng)模塊分析4.2.1 單片機(jī)系統(tǒng)模塊功能介紹下位機(jī)系統(tǒng)的電路原理圖如附錄中所示,以下對(duì)該電路圖的基本工作原理進(jìn)行簡(jiǎn)述。 1、 晶振發(fā)生器模塊兩個(gè)輸出端分別連接單片機(jī)XTAL.1,XTAL.2端口,通過(guò)晶振與電容產(chǎn)生固定頻率的震蕩周期信號(hào),作為單片機(jī)的時(shí)鐘信號(hào)。 XTAL.1,XTAL.2端外接石英晶體作定時(shí)元件時(shí),內(nèi)部反向放大器自激振蕩,產(chǎn)生時(shí)鐘。時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,即若石英頻率為6MHz,則時(shí)鐘頻率為3MHz,本實(shí)驗(yàn)中,晶振頻率為11.0592MHz。構(gòu)成
7、石英振蕩電路的電容通常取30pF,如圖中所示。2、 復(fù)位信號(hào)發(fā)生模塊如圖,VCC產(chǎn)生的信號(hào)直接連接至EA/VPP端口。當(dāng)該端口被置位為1時(shí),地址0000H0FFFH空間訪(fǎng)問(wèn)單片機(jī)內(nèi)部ROM,或地址1000HFFFFH空間訪(fǎng)問(wèn)單片機(jī)內(nèi)部ROM,本次試驗(yàn)中該端口為12.5V。 電阻R1上的電壓傳送至單片機(jī)RST/VPD端口處。當(dāng)開(kāi)關(guān)閉合時(shí),在時(shí)鐘電路作用下,在改引腳上出現(xiàn)兩個(gè)機(jī)器周期以上的高電平,使其內(nèi)部復(fù)位。 此外,VPD為備用電源輸入。當(dāng)單片機(jī)上主電源VCC發(fā)生故障,降低到低電平規(guī)定值時(shí),VPD將為RAM提供備用電源,以保障存儲(chǔ)在RAM中的信號(hào)不會(huì)丟失。3、 外部開(kāi)關(guān)觸發(fā)裝置 通過(guò)開(kāi)關(guān)S1,S
8、2,S3產(chǎn)生低電平信號(hào),傳送至單片機(jī)。其中,S1,S3經(jīng)過(guò)與門(mén)合成信號(hào)再與S2合成為INT0送至單片機(jī)INT0號(hào)中斷接口,作為外部中斷信號(hào),設(shè)置為其下降沿有效。即當(dāng)INT0出現(xiàn)下降沿時(shí),單片機(jī)進(jìn)入中斷子程序,在中斷子程序中判斷p3.3,p3.4,p3.5端口的輸入電平就能識(shí)別是哪個(gè)開(kāi)關(guān)按下,本次實(shí)驗(yàn)中開(kāi)關(guān)S1按下時(shí)顯示卡號(hào),S2按下時(shí)顯示余額,S3按下時(shí)可以實(shí)行減1扣費(fèi)操作。4、IC卡讀寫(xiě)裝置 本系統(tǒng)設(shè)計(jì)選用的IC卡為AT24C01,AT24C01是美國(guó)ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含2568位存儲(chǔ)空間,具有工作電壓寬(2.55.5V)、擦寫(xiě)次數(shù)多(大于10000次)、
9、寫(xiě)入速度快(小于10ms)等特點(diǎn)。每寫(xiě)入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的操作。所有字節(jié)都以單一操作方式讀取。為降低總的寫(xiě)入時(shí)間,一次操作可寫(xiě)入多達(dá)8字節(jié)的數(shù)據(jù)。下圖為AT24C系列芯片的封裝圖。 各引腳功能見(jiàn)下表:其中,SDA控制連接單片機(jī)P1.6,SCL連接單片機(jī)P1.5,RST連接單片機(jī)P1.7。(具體見(jiàn)原理圖) 其工作原理為基本的I2C結(jié)構(gòu)。 IIC總線(xiàn)技術(shù)是一種高性能的芯片間串行傳輸總線(xiàn),它僅以?xún)筛B線(xiàn)實(shí)現(xiàn)了完善 n 的全雙工同步數(shù)據(jù)傳輸,即SDA與SCL。SDA是一根雙向的數(shù)據(jù)線(xiàn),SCL為一根時(shí)鐘線(xiàn),所有連接到IIC總線(xiàn)上的設(shè)備,其串行數(shù)據(jù)都要連接
10、到總線(xiàn)的SDA上,而各設(shè)備的時(shí)鐘均要連接到SCL線(xiàn)上。 在IIC總線(xiàn)進(jìn)行數(shù)據(jù)傳輸是,在時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線(xiàn)上必須保持穩(wěn)定的邏輯電平狀態(tài),高電平為數(shù)據(jù)1,低電平為數(shù)據(jù)0。只有在時(shí)鐘線(xiàn)為低電平期間,才允許數(shù)據(jù)線(xiàn)上的電平狀態(tài)變化。通過(guò)SDA與SCL的時(shí)序配合,達(dá)到傳輸與發(fā)送數(shù)據(jù)的目的。RST為寫(xiě)保護(hù)位,在寫(xiě)IC卡之前需將RST位進(jìn)行置1操作。 在數(shù)據(jù)傳送過(guò)程中,必須確認(rèn)數(shù)據(jù)傳送的開(kāi)始和結(jié)束。在I2C總線(xiàn)技術(shù)規(guī)范中,開(kāi)始和結(jié)束信號(hào)(也稱(chēng)啟動(dòng)和停止信號(hào))的定義如下:(1)開(kāi)始信號(hào):當(dāng)時(shí)鐘總線(xiàn)SCL為高電平時(shí),數(shù)據(jù)線(xiàn)SDA由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。 (2)結(jié)束信號(hào):當(dāng)SCL線(xiàn)為高電平時(shí),
11、SDA線(xiàn)從低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。 開(kāi)始和結(jié)束信號(hào)都是由主器件產(chǎn)生。在開(kāi)始信號(hào)以后,總線(xiàn)即被認(rèn)為處于忙狀態(tài),其它器件不能再產(chǎn)生開(kāi)始信號(hào)。主器件在結(jié)束信號(hào)以后退出主器件角色,經(jīng)過(guò)一段時(shí)間過(guò),總線(xiàn)被認(rèn)為是空閑的。 IIC總線(xiàn)數(shù)據(jù)傳送采用時(shí)鐘脈沖逐位串行傳送方式,在SCL的低電平期間,SDA線(xiàn)上高、低電平能變化,在高電平期間,SDA上數(shù)據(jù)必須保護(hù)穩(wěn)定,以便接收器采樣接收,時(shí)序如圖 所示。IIC總線(xiàn)發(fā)送器送到SDA線(xiàn)上的每個(gè)字節(jié)必須為8位長(zhǎng),傳送時(shí)高位在前,低位在后。與之對(duì)應(yīng),主器件在SCL線(xiàn)上產(chǎn)生8個(gè)脈沖;第9個(gè)脈沖低電平期間,發(fā)送器釋放SDA線(xiàn),接收器把SDA線(xiàn)拉低,以給出一個(gè)接收確認(rèn)位
12、;第9個(gè)脈沖高電平期間,發(fā)送器收到這個(gè)確認(rèn)位然后開(kāi)始下一字節(jié)的傳送,下一個(gè)字節(jié)的第一個(gè)脈沖低電平期間接收器釋放SDA。每個(gè)字節(jié)需要9個(gè)脈沖,每次傳送的字節(jié)數(shù)是不受限制的。 IIC總線(xiàn)的數(shù)據(jù)傳送格式是在I2C總線(xiàn)開(kāi)始信號(hào)后,送出的第一字節(jié)數(shù)據(jù)是用來(lái)選擇從器件地址的,其中前7位為地址碼,第8位為方向位(R/W)。方向位為“0”表示發(fā)送,即主器件把信息寫(xiě)到所選擇的從器件中;方向位為“1”表示主器件將從器件讀信息。格式如下:1 0 1 0 A2 A1 A0 R/W開(kāi)始信號(hào)后,系統(tǒng)中的各個(gè)器件將自己的地址和主器件送到總線(xiàn)上的地址進(jìn)行比較,如果與主器件發(fā)送到總線(xiàn)上的地址一致,則該器件即被主器件尋址的器件,
13、其接收信息還是發(fā)送信息則由第8位(R/W)決定。發(fā)送完第一個(gè)字節(jié)后再開(kāi)始發(fā)數(shù)據(jù)信號(hào)。數(shù)據(jù)傳輸必須帶響應(yīng)。相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生,當(dāng)主器件發(fā)送完一字節(jié)的數(shù)據(jù)后,接著發(fā)出對(duì)應(yīng)于SCL線(xiàn)上的一個(gè)時(shí)鐘(ACK)認(rèn)可位,此時(shí)鐘內(nèi)主器件釋放SDA線(xiàn),一字節(jié)傳送結(jié)束,而從器件的響應(yīng)信號(hào)將SDA線(xiàn)拉成低電平,使SDA在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。從器件的響應(yīng)信號(hào)結(jié)束后,SDA線(xiàn)返回高電平,進(jìn)入下一個(gè)傳送周期。 通常被尋址的接收器在接收到的每個(gè)字節(jié)后必須產(chǎn)生一個(gè)響應(yīng)。當(dāng)從機(jī)不能響應(yīng)從機(jī)地址時(shí),從機(jī)必須使數(shù)據(jù)線(xiàn)保持高電平,主機(jī)然后產(chǎn)生一個(gè)停止條件終止傳輸或者產(chǎn)生重復(fù)起始條件開(kāi)始新的傳輸。如果從機(jī)接收器
14、響應(yīng)了從機(jī)地址但是在傳輸了一段時(shí)間后不能接收更多數(shù)據(jù)字節(jié),主機(jī)必須再一次終止傳輸。這個(gè)情況用從機(jī)在第一個(gè)字節(jié)后沒(méi)有產(chǎn)生響應(yīng)來(lái)表示。從機(jī)使數(shù)據(jù)線(xiàn)保持高電平主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。具體的讀卡及寫(xiě)卡操作步驟如下。 讀卡操作流程 寫(xiě)卡操作流程5蜂鳴器報(bào)警裝置如圖,由單片機(jī)P1.0發(fā)出的電平信號(hào)經(jīng)與門(mén)處理后連接至蜂鳴器的一端,蜂鳴器另一端連接高電平信號(hào)Vcc。當(dāng)P1.0端口發(fā)出低電平信號(hào)時(shí),蜂鳴器兩端出現(xiàn)電位差,蜂鳴器導(dǎo)通鳴響;當(dāng)P1.0端口電平信號(hào)重新拉高時(shí)蜂鳴器關(guān)閉,停止鳴響。因此在本實(shí)驗(yàn)中通過(guò)單片機(jī)P1.0腳的信號(hào)來(lái)控制蜂鳴器進(jìn)行工作。6、工作狀態(tài)提示燈 由單片機(jī)P1.1端口產(chǎn)生信號(hào)經(jīng)與門(mén)
15、U6B后傳送至后級(jí)裝置。信號(hào)直接傳至二極管D2。當(dāng)P1.1為低電平信號(hào)時(shí),D2燈亮;當(dāng)P1.1為高電平信號(hào)時(shí),D2燈熄滅。本實(shí)驗(yàn)中,設(shè)置D2燈位正常工作時(shí)的指示燈。通過(guò)單片機(jī)控制判斷其工作狀態(tài),并通過(guò)該裝置進(jìn)行外部顯示。7、七段數(shù)碼管顯示其總體工作電路如上所示。由兩個(gè)74LS573寄存器從單片機(jī)數(shù)據(jù)總線(xiàn)上獲取數(shù)據(jù)信號(hào),其中寄存器U2為段碼寄存器,控制每個(gè)數(shù)碼管顯示的內(nèi)容。寄存器U3為位碼寄存器,通過(guò)連接譯碼器ULN2803A來(lái)控制哪個(gè)數(shù)碼管亮燈。在此定義寄存器U2的地址為0BFFFH,寄存器U3的地址為7FFFH。8.單片機(jī)程序模塊插入IC卡 合法卡?D2燈亮蜂鳴器響N結(jié)束減1扣費(fèi)顯示余額顯示
16、卡號(hào)IC卡初始化 等待操作Y 下位機(jī)程序流程圖下位機(jī)與上位機(jī)的通信上位機(jī)與下位機(jī)之間的通信可以采用串行通訊和并行通訊二種方式。由于串行通訊方式具有使用線(xiàn)路少、成本低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線(xiàn)路特性的不一致而被廣泛采用。在串行通信時(shí),數(shù)據(jù)一位一位地發(fā)送,此時(shí)要求通信雙方都采用一個(gè)標(biāo)準(zhǔn)接口,RS-232C接口是單片機(jī)和PC機(jī)進(jìn)行通信最常用的一種接口。單片機(jī)與PC機(jī)進(jìn)行串口通信最簡(jiǎn)單的三線(xiàn)制法(一根發(fā)送線(xiàn),一根接受線(xiàn),一根地線(xiàn)),即接收數(shù)據(jù)針腳(RXD)與發(fā)送數(shù)據(jù)針腳(TXD)相連,彼此交叉,信號(hào)地(GND)對(duì)應(yīng)相接。但是,串口還不能直接和單片機(jī)相連,可以選用MAX232進(jìn)行電平轉(zhuǎn)換。MAX
17、232 用于RS-232C標(biāo)準(zhǔn),RS-232C標(biāo)準(zhǔn)規(guī)定在碼元畸變小于4%的情況下,傳輸電纜長(zhǎng)度最大約為15 米,最高傳輸速率為20kbit/s。RS485 標(biāo)準(zhǔn)最大傳輸距離約為1219 米,最大傳輸速率約為10Mbit/s。 上位機(jī)與下位機(jī)接口電路RS232標(biāo)準(zhǔn)總線(xiàn)接口(DB9插座):?jiǎn)纹瑱C(jī)工作電平為T(mén)TL(05V),RS232 標(biāo)準(zhǔn)電平(邏輯1:-15-5V;邏輯0:+5V+15V)。采用RS232標(biāo)準(zhǔn)總線(xiàn)與單片機(jī)通信時(shí),常用MAX232作TTL與RS232的電平轉(zhuǎn)換。DB9插座信號(hào)含義如下:MAX232芯片是美信公司專(zhuān)門(mén)為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的接口電路,使用+5v單電源供電。它是
18、一種把電腦的串行口RS232信號(hào)電平(-10 ,+10v)轉(zhuǎn)換為單片機(jī)所用到的TTL信號(hào)點(diǎn)平(0 ,+5)的芯片。其結(jié)構(gòu)如下圖:其內(nèi)部結(jié)構(gòu)基本可分三個(gè)部分:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1I
19、N、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。 8051有一個(gè)可編程的全雙工串行通信接口,它可作UART用,也可作同步移位寄存器,其幀格式可有8位、10位或ll位,并能設(shè)置各種波特率,給使用者帶來(lái)很大的靈活性。1、 串行口控制字及控制寄存器 8051串行口是一個(gè)可編程接口,對(duì)它的編程只用兩個(gè)控制字分別寫(xiě)入特殊功能寄存器:串行口控制寄存器SCON(98H)和電源控制寄存器PCON(97H)即可。 8
20、051串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志等均由特殊功能寄存器SCON控制和指示。SCON控制字格式如下圖:(1)SM0和SMl 串行口工作方式選擇位。(2)REN 允許接收控制位。(3)TB8 發(fā)送數(shù)據(jù)的第9位(D8)裝入TB8中。 (4)RB8 接收數(shù)據(jù)的第9位。 (5)TI 發(fā)送中斷標(biāo)志。(6)RI 接收中斷標(biāo)志。2、 串行通信工作方式 在本系統(tǒng)設(shè)計(jì)中,我們選擇最常用的方式1作為串口工作方式,其數(shù)據(jù)字是8位異步通信串口,且波特率可變。方式1以10位數(shù)據(jù)為一幀,設(shè)有一個(gè)起始位“0”和一個(gè)停止位“1”,中間是8位數(shù)據(jù)。先發(fā)送或接收最低位。 串口方式1 發(fā)送時(shí),數(shù)據(jù)從引腳TX
21、D 端輸出,當(dāng)執(zhí)行數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF 的命令時(shí)就啟動(dòng)了發(fā)送器開(kāi)始發(fā)送。發(fā)送時(shí)的定時(shí)信號(hào),也就是發(fā)送移位時(shí)鐘(TX 時(shí)鐘),是內(nèi)部定時(shí)器T1 送來(lái)的溢出信號(hào)經(jīng)過(guò)16 分頻或32 分頻(取決SMOD 的值)而取得的。TX 時(shí)鐘就是發(fā)送波特率,可見(jiàn)方式1 波特率是可變的。發(fā)送開(kāi)始的同時(shí),SEND 變?yōu)橛行?,將起始位向TXD 輸出,此后每過(guò)個(gè)TX 時(shí)鐘周期(16 分頻計(jì)數(shù)器溢出一次為一個(gè)時(shí)鐘周期,因此,TX 時(shí)鐘頻率由波待率決定) 產(chǎn)生一個(gè)移位脈沖,并由TXD 輸出一個(gè)數(shù)據(jù)位,8 位數(shù)據(jù)位全部發(fā)送完后,置位TI,并申請(qǐng)中斷。再經(jīng)一個(gè)時(shí)鐘周期SEND 失效。3、 串口方式1波特率串行口工作之前,
22、應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制。具體步驟如下: (1)確定T1的工作方式(編程TMOD寄存器); (2)計(jì)算T1的初值,裝載TH1、TL1; (3)啟動(dòng)T1(編程TCON中的TR1位); (4)確定串行口控制(編程SCON寄存器); 同時(shí),串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。 串口方式1的移位時(shí)鐘脈沖由定時(shí)器T1的溢出率決定,因此8051串行口方式1的波特率由定時(shí)器T1的溢出率與SMOD值同時(shí)決定。 方式1的波特率定時(shí)器T1作波特率發(fā)生器使用時(shí),通常選用定時(shí)器方式2(自動(dòng)重裝初值定時(shí)器)比較實(shí)用。定時(shí)器方式2具有自動(dòng)重新加載功
23、能,即自動(dòng)加載計(jì)數(shù)初值,因此也可以說(shuō)方式2是自動(dòng)重新加載工作方式。在這種工作方式下,把16位計(jì)數(shù)器分為兩部分,即以TL0作計(jì)數(shù)器,以TH0作預(yù)置寄存器。初始化時(shí)把計(jì)數(shù)初值分別裝入TL0和TH0中。在初始化時(shí),8位計(jì)數(shù)初值同時(shí)裝入TL0和TH0中。當(dāng)TL0計(jì)數(shù)溢出時(shí),置位TF0,同時(shí)把保存在預(yù)置寄存器TH0中的計(jì)數(shù)初值自動(dòng)加載TL0,然后TL0重新計(jì)數(shù),如此重復(fù)循環(huán)。 波特率與與定時(shí)器1的對(duì)應(yīng)關(guān)系在本次設(shè)計(jì)中,805l 單片機(jī)時(shí)鐘振蕩頻率為110592MHz,選用定時(shí)器T1 模式2 作波特率發(fā)生器,波持率為9600 波特。4.2.3上位機(jī)功能實(shí)現(xiàn)與界面設(shè)計(jì)上位機(jī)界面使用C+中的MFC類(lèi)庫(kù)編寫(xiě)的,
24、通過(guò)MSComm控件實(shí)現(xiàn)串行通信。上位機(jī)界面與下位機(jī)通信程序流程圖串口開(kāi)啟并初始化參數(shù)設(shè)定握手方式,清空串口現(xiàn)有隊(duì)列讀串口?消息響應(yīng)讀串口延時(shí)等待讀是否完成?否顯示用戶(hù)信息(通過(guò)緩存區(qū)數(shù)據(jù)狀況判斷)是5. 實(shí)驗(yàn)運(yùn)行結(jié)果及調(diào)試通過(guò)多次得運(yùn)行程序及調(diào)試,使得上位機(jī)和下位機(jī)的功能實(shí)現(xiàn)較為完整,特別是MFC界面的充值電費(fèi)和查詢(xún)用戶(hù)信息的設(shè)計(jì),更加人性化。下位機(jī)較好的完成了對(duì)于蜂鳴器、工作燈及數(shù)碼管的控制顯示。上位機(jī)和下位機(jī)的串行通信也很成功。6. 實(shí)驗(yàn)設(shè)計(jì)總結(jié)及感想本次設(shè)計(jì)實(shí)驗(yàn)的綜合性較強(qiáng),很多知識(shí)都需要我們自己查資料獲得,這給我們?cè)O(shè)計(jì)的過(guò)程帶來(lái)了極大的挑戰(zhàn)。在下位機(jī)程序的編寫(xiě)上,我們參考了教材上讀寫(xiě)
25、IC卡的模塊,在主函數(shù)上通過(guò)中斷進(jìn)行相應(yīng)操作。在上位機(jī)的編程上,我們傾注了很大的精力,參考了很多書(shū)籍,使得MFC界面能較好地運(yùn)行及與下位機(jī)連接。通過(guò)本次的設(shè)計(jì)實(shí)驗(yàn),我們不僅學(xué)到了關(guān)于51單片機(jī)的基礎(chǔ)知識(shí),同時(shí)也掌握了許多相關(guān)軟件的操作,如DXP的繪圖,KeilUvision 的C語(yǔ)言編程,MFC的面板設(shè)計(jì)及與串口通信的模塊設(shè)計(jì)。當(dāng)然,在平時(shí)的授課及實(shí)驗(yàn)過(guò)程中,三位老師的幫助和輔導(dǎo)給了我們很大的鼓勵(lì)和信心。謝謝!7、參考資料1.王建校、張虹、金印彬 編著 電子系統(tǒng)設(shè)計(jì)與時(shí)間實(shí)驗(yàn)指導(dǎo)書(shū) 西安交通大學(xué)出版社2.王建校 楊建國(guó)等編著 51系列單片機(jī)及C51程序設(shè)計(jì) 科學(xué)出版社2002.4 3.侯殿友
26、編著單片機(jī)C語(yǔ)言程序設(shè)計(jì) 人民郵電出版社2010.118.附錄(1)下位機(jī)源程序:#include #include #include #include #define SEGMENT XBYTE0XBFFF#define BIT_LED XBYTE0X7FFF#define fosc 11.0592#define time0 2500sbit a=P33;sbit b=P34;sbit c=P35;sbit SCL_IC_CARD=P15; sbit SDA_IC_CARD=P16;sbit zhuangtai=P11;sbit zaixian=P14;sbit WP_IC_CARD =P1
27、7;sbit warning=P10;int sw=0,control2=0;unsigned char data display_bit ;unsigned char data time0_h,time0_l;unsigned int idata time0_times;unsigned char dat,control,control1;unsigned int sum,sum1,sum2,sum3,sum4;bdata char com_data;sbit mos_bit=com_data7;sbit low_bit=com_data0;unsigned char get_code(un
28、signed char i);void display(void);unsigned char data display_buffer8,buffer4; void delay(int n);void xianshi();void Init_Com(void);unsigned char rd_24c01(char a);void wr_24c01(char a,char b);void chushi();void rd_kahao();void rd_name();void rd_left();void rd_class();void jifei();void rd_add();/=/內(nèi)部地
29、址分配/0-7:識(shí)非法卡的密碼;/10-13:余額;/14-17:卡號(hào);/20-30: 名字;/30-31: 權(quán)限等級(jí);main( ) unsigned char i,j;EA=1;EX0=ET0=ES=1; while(!zaixian);zhuangtai=0; chushi(); Init_Com();/串口初始化while(1) if(zaixian=0) zhuangtai=1;else if(zaixian=1)zhuangtai=0;WP_IC_CARD=1;for (i=0;i=7;i+) /讀取并校驗(yàn)密碼,若為非法卡,報(bào)警 j=rd_24c01(i);delay(250);i
30、f(j!=i*i)break; if(i8) warning=0; /蜂鳴器報(bào)警delay(1000);warning=1;if(zaixian=1&control1=1) jifei(); xianshi(); control1=0;if(control=1)if(sw=1) rd_kahao();else if(sw=2) rd_name();else if(sw=3) rd_left(); else if(sw=4) rd_class(); else if(sw=5) rd_add();control=0; void chushi()unsigned char m,i; unsigned
31、 char name5;name0=t;name1=o;name2=n;name3=g; for(m=0;m=7;m=m+1) wr_24c01(m,m*m);delay(250); /將初始信息寫(xiě)入IC卡(使IC卡成為合法卡);wr_24c01(10,5);delay(250);wr_24c01(11,0);delay(250);wr_24c01(12,0);delay(250);wr_24c01(13,0);delay(250);/這是卡里剩余電量;wr_24c01(14,1);delay(250);wr_24c01(15,2);delay(250);wr_24c01(16,0);dela
32、y(250);wr_24c01(17,5);delay(250);/這是卡的編號(hào); for(i=0;i4;i+)wr_24c01(i+20,namei);delay(250);/寫(xiě)入姓名;存在name10中;wr_24c01(30,0);delay(250);wr_24c01(31,0);delay(250);/這是卡的權(quán)限等級(jí);void rd_kahao()unsigned char j; for(j=0;j4;j+)display_bufferj =rd_24c01(j+14) ;delay(250); for(j=0;j4;j+)SBUF =display_bufferj+0x30;wh
33、ile(!TI);TI=0;void rd_name()unsigned char j;for(j=0;j4;j+)display_bufferj =rd_24c01(j+20) ;delay(250);for(j=0;j4;j+)SBUF =display_bufferj;while(!TI);TI=0;void rd_left()unsigned char j; for(j=0;j4;j+)display_bufferj =rd_24c01(j+10) ;delay(250);for(j=0;j4;j+)SBUF =display_bufferj+0x30;while(!TI);TI=0;
34、void rd_class()unsigned char j; for(j=0;j2;j+)display_bufferj =rd_24c01(j+30) ;delay(250);for(j=0;j2;j+)SBUF =display_bufferj+0x30;while(!TI);TI=0;void jifei( )/減1計(jì)費(fèi)函數(shù)unsigned char i;sum=0;for (i=0;i0)sum=sum-1;for(i=0;i4;i+)buffer3-i=sum%10;sum=sum/10;xianshi( );for(i=0;i4;i+)wr_24c01(i+10,bufferi)
35、;delay(250);/delay(600);/根據(jù)需要調(diào)整void rd_add( )unsigned char i;sum4=0;sum3=0;for (i=0;i4;i+) bufferi=rd_24c01(i+10);delay(250);sum4=1000*buffer0+100*buffer1+10*buffer2+buffer3;sum3=(int)(dat-0);sum3=sum3+sum4;for(i=0;i4;i+)buffer3-i=sum3%10;sum3=sum3/10;xianshi( );for(i=0;i4;i+)wr_24c01(i+10,bufferi);
36、delay(250);/delay(600);/根據(jù)需要調(diào)整 void inter0(void) interrupt 0 /開(kāi)關(guān)S1,S2 觸發(fā)中斷,分別顯示卡號(hào)和余額unsigned char i;if(a=0)for (i=0;i4;i+) bufferi=rd_24c01(i+14);delay(250);/開(kāi)關(guān)S1觸發(fā)中斷,顯示卡號(hào)xianshi( );else if(c=0)for (i=0;i=0&dat=9)sw=5; /充值電費(fèi)/*以下為IC卡讀寫(xiě)相關(guān)程序*void start()/啟動(dòng)讀寫(xiě)時(shí)序 SDA_IC_CARD=1; SCL_IC_CARD=1; SDA_IC_CARD
37、=0; SCL_IC_CARD=0;void stop()/停止操作 SDA_IC_CARD=0; SCL_IC_CARD=1; SDA_IC_CARD=1;void ack()/應(yīng)答函數(shù) SCL_IC_CARD=1; SCL_IC_CARD=0;void shift8(char a)/8位移位輸出 data unsigned char i; com_data=a;for(i=0;i8;i+) SDA_IC_CARD=mos_bit; SCL_IC_CARD=1; SCL_IC_CARD=0; com_data=com_data*2; unsigned char rd_24c01(char a
38、)/讀IC卡函數(shù) data unsigned char i,command; SDA_IC_CARD=1; SCL_IC_CARD=0; start(); command=160; shift8(command); ack(); shift8(a); ack(); start(); command=161; shift8(command); ack(); SDA_IC_CARD=1; for(i=0;i8;i+) com_data=com_data*2;SCL_IC_CARD=1; low_bit=SDA_IC_CARD; SCL_IC_CARD=0; stop(); return(com_d
39、ata);void wr_24c01(char a,char b)/寫(xiě)IC卡函數(shù) data unsigned char command; WP_IC_CARD=0;_nop_();SDA_IC_CARD=1; SCL_IC_CARD=0; start(); command=160; shift8(command); ack(); shift8(a); ack(); shift8(b); ack(); stop();_nop_();WP_IC_CARD=1;void xianshi( ) /BIT_LED=0;TMOD=0X21;time0_times=65336-time0*fosc/12;t
40、ime0_h=(time0_times/256);time0_l=(time0_times%256);TH0=time0_h;TL0=time0_l;TR0=1;display_bit=0x01;/*以下為數(shù)碼管動(dòng)態(tài)顯示相關(guān)程序*void time0_int(void) interrupt 1 /動(dòng)態(tài)顯示控制中斷 TH0=time0_h;TL0=time0_l;display( );unsigned char get_code(unsigned char i)unsigned char p;switch(i)case 0:p=0x3f;break;case 1:p=0x06;break;cas
41、e 2:p=0x5b;break;case 3:p=0x4f;break;case 4:p=0x66;break;case 5:p=0x6d;break;case 6:p=0x7d;break;case 7:p=0x07;break;case 8:p=0x7f;break;case 9:p=0x67;break;default:break;return(p);void display(void)unsigned char i;switch(display_bit)case 1:i=0;break;case 2:i=1;break; case 4:i=2;break;case 8:i=3;bre
42、ak;default:break;BIT_LED=0;SEGMENT=get_code(buffer3-i);BIT_LED=display_bit;if(display_bit0x08)display_bit=display_bit*2;elsedisplay_bit=0x01;void Init_Com(void)/功能:串口初始化,波特率9600,方式1TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;void delay(int n)/延時(shí)函數(shù)int i;for (i=1;iLoadIcon(IDR_MA
43、INFRAME);void CMy111Dlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMy111Dlg)DDX_Control(pDX, IDC_BUTTON1, m_serial);DDX_Control(pDX, IDC_MSCOMM1, m_comm1);DDX_Text(pDX, IDC_EDIT1, m_namedata);DDX_Text(pDX, IDC_EDIT2, m_nodata);DDX_Text(pDX, IDC_EDIT3, m_leftdata);DD
44、X_Text(pDX, IDC_EDIT4, m_strText);DDX_Text(pDX, IDC_EDIT5, m_classdata);DDX_Text(pDX, IDC_EDIT6, m_adddata);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMy111Dlg, CDialog)/AFX_MSG_MAP(CMy111Dlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICK
45、ED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)ON_BN_CLICKED(IDC_BUTTON5, OnButton5)ON_BN_CLICKED(IDC_BUTTON7, OnButton7)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMy111Dlg message handlersBOOL CMy111Dlg:OnInitDialog()CDialog:OnInitDialog();/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization hereif(! m_comm1.GetPortOpen
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中亞文化交流出版合同
- 貨物運(yùn)輸承包合同模板
- 個(gè)人兼職勞動(dòng)合同范本
- 二手注塑機(jī)轉(zhuǎn)讓合同
- 中外零部件裝配項(xiàng)目合同細(xì)則
- 上海市住宅保潔服務(wù)合同
- 專(zhuān)業(yè)保潔員勞動(dòng)合同模板大全
- 二級(jí)建造師職業(yè)合同范本
- 東莞市合作協(xié)議合同樣本
- 樂(lè)器采購(gòu)合同模板
- 河北省邯鄲市永年區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試化學(xué)試卷(含答案)
- 2025年閥門(mén)和龍頭項(xiàng)目發(fā)展計(jì)劃
- 消防員證考試題庫(kù)2000題中級(jí)
- 農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)技術(shù)
- 【蟬媽媽】2024年抖音電商酒水行業(yè)趨勢(shì)洞察報(bào)告
- 海洋垃圾處理行業(yè)可行性分析報(bào)告
- 2025初級(jí)會(huì)計(jì)理論考試100題及解析
- 三兄弟分田地宅基地協(xié)議書(shū)范文
- 參觀河南省博物院
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- 《普通生物學(xué)教案》word版
評(píng)論
0/150
提交評(píng)論