基于大容量IC卡AT45D041的出租車數(shù)據(jù)采集系統(tǒng)
2004年6月B版
摘 要:本文介紹了基于大容量IC卡AT45D041的出租車數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法,討論了IC卡AT45D041的主要特點(diǎn)及其使用方法;介紹了PIC單片機(jī)和PC機(jī)串行通信的硬件、軟件方法。
關(guān)鍵詞:出租車;IC卡;AT45D041;單片機(jī);串行通信
引言
隨著出租車行業(yè)的發(fā)展,對出租車管理的要求也越來越高。通常,出租車管理部門需要經(jīng)常采集出租車計(jì)費(fèi)器中存儲(chǔ)的各種數(shù)據(jù),這些數(shù)據(jù)主要包括累積數(shù)據(jù)(如總行駛里程、總收費(fèi)里程、總收費(fèi)時(shí)間、總車資等)和乘客記錄數(shù)據(jù)(如起止時(shí)間、收費(fèi)里程、收費(fèi)時(shí)間、郊區(qū)或夜間收費(fèi)里程、1公里單價(jià)、車資等)。一般來說,出租車的計(jì)費(fèi)器可存儲(chǔ)300次以上的乘客記錄,每條乘客記錄約占50字節(jié),這樣300次乘客記錄約占15K字節(jié)。大容量IC卡AT45D041的容量為4Mbit(約500K字節(jié)),利用該IC卡來采集出租車計(jì)費(fèi)器中存儲(chǔ)的數(shù)據(jù),不僅攜帶方便,而且可一次采集多達(dá)33臺(tái)出租車的數(shù)據(jù)。數(shù)據(jù)采集完后,可通過串行接口控制器將數(shù)據(jù)輸入給出租車管理部門的PC機(jī),然后對這些數(shù)據(jù)進(jìn)行分析、匯總、打印等各種處理。下面具體介紹基于大容量IC卡AT45D041的出租車數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法。
出租車數(shù)據(jù)采集系統(tǒng)的原理框圖如圖1所示,由圖可知,該系統(tǒng)由出租車計(jì)費(fèi)器、串行接口控制器、PC機(jī)及大容量IC卡AT45D041等四個(gè)部分組成。AT45D041采集多臺(tái)出租車計(jì)費(fèi)器中存儲(chǔ)的總累積和乘客記錄等數(shù)據(jù),然后通過串行接口控制器即可將所采集的數(shù)據(jù)輸入給管理部門的PC機(jī),PC機(jī)根據(jù)車牌號(hào)或計(jì)費(fèi)器編號(hào)可區(qū)分每臺(tái)車所對應(yīng)的數(shù)據(jù)。AT45D041與出租車計(jì)費(fèi)器及串行接口控制器之間數(shù)據(jù)的交換均是通過其中的單片機(jī)來完成的,而串行接口控制器與PC機(jī)之間的數(shù)據(jù)交換主要是通過PC機(jī)的串行口來實(shí)現(xiàn)的;因此,該數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)的關(guān)鍵是AT45D041與單片機(jī)接口軟、硬件設(shè)計(jì)及單片機(jī)通過串行口與PC機(jī)之間串行通信的軟、硬件設(shè)計(jì)。
AT45D041的性能特點(diǎn)及其使用方法
AT45D041的性能特點(diǎn)及內(nèi)部結(jié)構(gòu)
AT45D041是一由單5V供電、帶串行接口的快閃存儲(chǔ)器,該芯片特別適合于在系統(tǒng)(in-system)反復(fù)編程,其4兆位的存儲(chǔ)容量被分為2048頁,每頁264個(gè)字節(jié)。除了主存儲(chǔ)頁外,AT45D041還包含2個(gè)SRAM數(shù)據(jù)緩沖區(qū),每個(gè)區(qū)的容量均為264個(gè)字節(jié),當(dāng)主存儲(chǔ)頁正在編程時(shí),緩沖區(qū)可接收外部數(shù)據(jù)。傳統(tǒng)快閃存儲(chǔ)器往往利用多條地址線和并行接口來實(shí)現(xiàn)隨機(jī)存取數(shù)據(jù),而AT45D041則利用串行接口來實(shí)現(xiàn)連續(xù)存取數(shù)據(jù)。簡單的串行接口簡化了硬件電路,使線路板尺寸變小,成本降低,抗干擾能力增強(qiáng),系統(tǒng)的可靠性得以提高。數(shù)據(jù)編程寫入時(shí),不需要高編程輸入電壓,只需要單5V(范圍為4.5V至5.5V)即可完成數(shù)據(jù)的寫入及讀出。
AT45D041的內(nèi)部結(jié)構(gòu)圖如圖2所示,由圖可知,該IC卡有九個(gè)引腳,其中SCK為串行時(shí)鐘輸入腳,SI和SO分別為串行數(shù)據(jù)輸入、輸出腳。
AT45D041的使用方法
通過單片機(jī)的控制可完成對AT45D041中數(shù)據(jù)的讀出及寫入操作,當(dāng)芯片使能腳為低電平時(shí),在時(shí)鐘輸入腳(SCK)的控制下,通過串行數(shù)據(jù)輸入腳(SI),便可將命令碼、主存儲(chǔ)頁或緩沖區(qū)地址碼串行輸入給該芯片,然后即可讀或?qū)懭霐?shù)據(jù)。值得注意的是,所有的命令碼、地址、數(shù)據(jù)串行輸入時(shí),均是高位在前,低位在后。下面具體介紹數(shù)據(jù)的讀寫方法。
數(shù)據(jù)的讀出
數(shù)據(jù)的讀出包括主存儲(chǔ)頁直接讀出、從主存儲(chǔ)頁讀取數(shù)據(jù)至緩沖區(qū)、從緩沖區(qū)讀數(shù)據(jù)、讀狀態(tài)寄存器等四種,除命令碼不同外,讀取數(shù)據(jù)的方法均大同小異。由于本數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)只用到了主存儲(chǔ)頁直接讀出,下面只介紹從主存儲(chǔ)頁直接讀取數(shù)據(jù)的方法。主存儲(chǔ)頁直接讀取數(shù)據(jù)的時(shí)序波形圖如圖3所示。主存儲(chǔ)頁讀允許用戶從2048主存儲(chǔ)頁的任一頁中讀取數(shù)據(jù),在SCK時(shí)鐘脈沖的控制下,先串行輸入命令碼52H、緊接著是4個(gè)保留位、然后是20個(gè)地址位(即11個(gè)頁地址位和9個(gè)頁中數(shù)據(jù)起始地址位)、最后是32個(gè)無關(guān)位0。4個(gè)保留位是用于將來擴(kuò)展該芯片的容量而設(shè)置的,對于AT45D041可輸入4個(gè)0,32個(gè)無關(guān)位用于初始化讀操作。數(shù)據(jù)通過SO腳串行輸出,在數(shù)據(jù)的讀出過程中,芯片使能腳必須保持低電平,當(dāng)一頁數(shù)據(jù)的最后一個(gè)字節(jié)讀完后,會(huì)從該頁的第一個(gè)字節(jié)開始繼續(xù)讀取數(shù)據(jù)。當(dāng)芯片使能腳(CS)由低電平變?yōu)楦唠娖綍r(shí),將終止數(shù)據(jù)的讀取,SO腳保持高阻態(tài)。
數(shù)據(jù)的寫入
數(shù)據(jù)的寫入包括將數(shù)據(jù)直接寫入主存儲(chǔ)器頁、寫入緩沖區(qū)、通過緩沖區(qū)將數(shù)據(jù)寫入主存儲(chǔ)頁(帶內(nèi)置擦除功能)、通過緩沖區(qū)將數(shù)據(jù)寫入主存儲(chǔ)頁(不帶內(nèi)置擦除功能)、主存儲(chǔ)頁自動(dòng)重寫等五種。除命令碼不同外,數(shù)據(jù)寫入的方法均差不多。在本數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)中使用的是將數(shù)據(jù)直接寫入主存儲(chǔ)頁的方法,該方法的時(shí)序波形如圖3所示,要寫入的數(shù)據(jù)須事先寫入緩沖區(qū)1或緩沖區(qū)2,然后再利用帶內(nèi)置擦除功能的緩沖區(qū)至主存儲(chǔ)頁寫入功能將數(shù)據(jù)寫入至指定的主存儲(chǔ)頁。在SCK時(shí)鐘脈沖的控制下,先串行輸入命令碼82H或85H、緊接著是4個(gè)保留位、然后是11個(gè)頁地址位(表示數(shù)據(jù)要寫入的指定主存儲(chǔ)頁)、最后是9個(gè)數(shù)據(jù)起始地址位(表示緩沖區(qū)第一個(gè)字節(jié)的起始地址)。當(dāng)所有的地址位均串行輸入后,芯片通過SI腳開始接收數(shù)據(jù)并存儲(chǔ)在緩沖區(qū)1或緩沖區(qū)2中,當(dāng)緩沖區(qū)存滿后,將從緩沖區(qū)的第一個(gè)字節(jié)處開始存儲(chǔ)數(shù)據(jù)。當(dāng)芯片使能腳CS由低電平變?yōu)楦唠娖綍r(shí),芯片將首先擦除指定的主存儲(chǔ)頁,然后再將存儲(chǔ)在緩沖區(qū)中的數(shù)據(jù)寫入指定的主存儲(chǔ)頁。
硬件寫保護(hù)及復(fù)位功能
當(dāng)寫保護(hù)腳(WP)為低電平時(shí),主存儲(chǔ)頁的前256頁不能寫入數(shù)據(jù)。當(dāng)復(fù)位腳(RESET)變?yōu)榈碗娖綍r(shí),將中斷所有正在進(jìn)行的讀操作,并將內(nèi)部置成空閑狀態(tài)。一旦該腳變?yōu)楦唠娖?,即可對芯片進(jìn)行正常的讀寫操作。
AT45D041與出租車計(jì)費(fèi)器及串行接口控制器的接口設(shè)計(jì)
AT45D041用于出租車數(shù)據(jù)采集系統(tǒng)時(shí),一方面它采集出租車計(jì)費(fèi)器中存儲(chǔ)的各種數(shù)據(jù),此時(shí)計(jì)費(fèi)器中的單片機(jī)將數(shù)據(jù)寫入到AT45D041中的主存儲(chǔ)頁中;另一方面通過串行接口控制器將數(shù)據(jù)輸入給管理部門的PC機(jī),此時(shí)串行接口控制器中的單片機(jī)從AT45D041中的主存儲(chǔ)頁讀取數(shù)據(jù),然后再將數(shù)據(jù)通過串行口傳送到PC機(jī)中。因此AT45D041與出租車計(jì)費(fèi)器及串行接口控制器的接口設(shè)計(jì)主要表現(xiàn)為AT45D041與單片機(jī)的接口設(shè)計(jì),假設(shè)單片機(jī)為AT89C51,則單片機(jī)與AT45D041的接口如圖4所示。圖中R、C是使AT45D041具有上電復(fù)位功能,寫保護(hù)腳(WP)接VCC是讓AT45D041的前256頁也能寫入數(shù)據(jù)。
串行接口控制器的主要作用是從AT45D041的主存儲(chǔ)中讀出數(shù)據(jù),然后再將數(shù)據(jù)輸入給PC機(jī),它的核心是單片機(jī),利用單片機(jī)來實(shí)現(xiàn)和PC機(jī)的串行通信。圖5所示為串行接口控制器的硬件電路圖,因PIC系列單片機(jī)由于具有實(shí)用、低價(jià)、省電、小巧和高速等優(yōu)點(diǎn),所以串行接口控制器中的單片機(jī)選PIC16C57,由于該單片機(jī)沒有專用的異步通訊口(RXD,TXD)及波特率發(fā)生器,因此要實(shí)現(xiàn)PIC單片機(jī)與PC機(jī)的串行通信,必須由軟件指定PIC的兩個(gè)I/O端口(如RA0為RXD,RA1為TXD)為異步通訊口,并按照預(yù)定的波特率編寫軟件延時(shí)子程序。 圖中電阻為10KΩ,電容為10_F,電源電壓Vcc為5V。MAX232為一電平轉(zhuǎn)換芯片,它將單片機(jī)輸出的TTL電平轉(zhuǎn)換成PC機(jī)能接收的RS-232電平,并將PC機(jī)串行口輸出的RS-232電平轉(zhuǎn)換成單片機(jī)能接收的TTL電平。
系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)由兩個(gè)部分組成:單片機(jī)讀寫AT45D041中的數(shù)據(jù)及單片機(jī)和PC機(jī)之間的串行通信。單片機(jī)讀寫AT45D041中數(shù)據(jù)的軟件設(shè)計(jì)比較簡單,這里不再敘述。下面主要介紹單片機(jī)和PC機(jī)之間串行通信的軟件設(shè)計(jì),由于VB6.0提供了串行通訊MSComm(電話盒)控件來為應(yīng)用程序提供串行通信,它將串口設(shè)備當(dāng)作一個(gè)目標(biāo)封裝起來,容易操作,編程很方便,其良好的用戶界面、簡單方便的串行通信和實(shí)用性強(qiáng)的優(yōu)點(diǎn),無須借用其他語言就可以開發(fā)出優(yōu)秀的通信軟件,因而PC機(jī)軟件采用VB6.0語言編寫。MSComm控件的調(diào)出及其主要屬性如下。
MSComm控件的調(diào)出
VB 6.0的MSComm控件并不會(huì)主動(dòng)出現(xiàn)在工具箱中,當(dāng)我們需要它時(shí),讓它出現(xiàn)在工具箱中的步驟如下:
MSComm屬性
MSComm屬性很多,其重要的屬性說明如下:
軟件設(shè)計(jì)時(shí)應(yīng)注意的幾個(gè)問題
結(jié)語
本文所介紹的出租車數(shù)據(jù)采集系統(tǒng)使用了大容量IC卡AT45D041、PC機(jī)串行口及VB6.0來實(shí)現(xiàn)數(shù)據(jù)的采集和傳輸,不僅數(shù)據(jù)采集方便,且系統(tǒng)的硬件和軟件設(shè)計(jì)均較簡單,軟件升級容易。降低了系統(tǒng)成本,提高了系統(tǒng)的可靠性,目前該系統(tǒng)已在許多大中城市的出租車公司得到了廣泛的應(yīng)用?!?BR>
參考文獻(xiàn):
1.薛棟梁. ‘MCS-51/151/251 單片機(jī)原理與應(yīng)用(二)’, 中國水利水電出版社,2001
2.范逸之. ‘Visual Basic 與 RS232 串行通訊控制’, 中國青年出版社, 2001
評論