摘 要: 自動取款機系統采用高可靠性的AT89C52單片機作為核心控制芯片,采用具備I2C總線接口的FM24C02芯片完成密碼與金額的存儲,通過液晶顯示器128×64顯示運行狀態和操作步驟。軟件設計采用具有較好移植性和可讀性的C51語言編寫程序,以便修改和增減功能。通過Proteus軟件成功實現了自動取款機的仿真過程。經仿真表明,利用Proteus軟件進行仿真設計可極大地簡化單片機程序在目標硬件上的調試工作。
關鍵詞: Proteus; 自動取款機; 液晶顯示; AT89C52
中圖分類號: TN710.9?34 文獻標識碼: A 文章編號: 1004?373X(2013)24?0130?04
Design and simulation of ATM based on Proteus
WANG Ze?kun
(Huaxia College, Wuhan University of Technology, Wuhan 430223, China)
Abstract: A high reliable microcontroller AT89C52 is used as the core control chip in the ATM system, in which FM24C02 chip with I2C bus interface is adopted to complete the storage of the cipher code and amount of money, and LCD128x64 is used to prompt the program’s running state and operating procedures. The system is convenient to modify or add/subtract function by using C51 language program, which is more transplantable and reliable. The simulation process of ATM was successfully realized by Proteus software. The simulation result shows that the SCM program debugging on the target hardware can be greatly simplified by using Proteus software.
Keywords: Proteus; ATM; LCD; AT89C52
0 引 言
自動取款機,簡稱ATM(Automatic Teller Machine),它使用現代技術實現自動取款、修改密碼、查詢余額等操作,是業務電子化的一種機器設備,由于其便利性和實用性受到了人們的青睞。本文設計了一種自動取款機系統[1],模擬自動取款機的基本功能(取款、查詢余額、修改密碼、取卡),使人們了解利用Proteus軟件來實現自動取款機的仿真過程。
1 系統總體設計
本系統主要由微控制器模塊、液晶顯示模塊、鍵盤輸入模塊、存儲模塊、蜂鳴電路所組成。系統結構如圖1所示。
微控制器模塊主要完成對整個系統操作過程的控制;液晶顯示模塊模擬自動取款機的人機交互界面;鍵盤輸入模塊完成對密碼的輸入及修改功能;存儲模塊完成對模擬銀行卡密碼及金額的存儲功能。
圖1 系統結構框圖
2 系統硬件電路設計
系統硬件電路仿真圖如圖2所示。微控制器采用Atmel公司的AT89C52[2],存儲器采用具備I2C總線接口的FM24C02[3]芯片,液晶顯示采用LCD 128×64模塊[4?6]。
液晶顯示模塊是128×64點陣的漢字圖形型液晶顯示模塊,可顯示漢字及圖形,內置8 192個中文漢字(16×16點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)??膳c微處理器直接相連,提供兩種界面來連接微處理器:8位并行及串行兩種連接方式。利用該模塊靈活的接口方式,可構成全中文人機交互圖形界面。
FM24C02是2 048位的串行電可擦除只讀存儲器,內部組織為256 B,其作用是存儲模擬銀行卡的密碼及金額。
由圖2可知,AT89C52的P0口通過上拉電阻RP1與LCD 128×64的數據端口DB0~DB7相連,使讀取或寫入的數據顯示在液晶模塊上。P1.0~P1.5實現對模擬銀行卡的操作,如密碼的輸入與修改,查詢余額,取款,取卡等;P2.0,P2.1,P2.2分別接LCD 128×64的使能端,讀/寫數據控制端口及片選端口;P2.5,P2.6端口作為模擬銀行卡“CARD1”,“CARD2”按鍵輸入端,當LCD 128×64液晶顯示界面出現“請插卡”時,按下相應的按鍵即表示了插入銀行卡;P3.0~P3.6端口實現對鍵盤的掃描,實現密碼的輸入、修改等功能;P3.7接蜂鳴電路,當對模擬銀行卡操作時,就會發出聲響提示操作已經完成。
3 系統軟件設計
本系統軟件包括主程序模塊、鍵盤輸入掃描模塊、液晶顯示模塊等。采用C51 語言對系統的各個模塊編寫程序。系統程序流程如圖3所示[7?9]。
3.1 主程序模塊
主程序主要用于定義全局變量,給全局變量賦初值,初始化E2PROM,從FM24C02中讀取或寫入密碼,驅動顯示等,為整個程序提供數據。FM24C02讀/寫數據部分子程序如下:
void write_add (uchar address,uchar date)
//向FM24C02寫數據
{ start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_add (uchar addr) //從FM24C02讀數據
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(addr);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}
圖3 系統程序流程圖
3.2 鍵盤輸入掃描模塊
該模塊具備掃描鍵盤確定被按鍵的具體位置、判斷鍵盤上有無鍵按下、消除去抖動、判斷閉合的按鍵是否釋放等功能。
3.3 液晶顯示模塊
此模塊包括液晶初始化、命令的輸入、顯示數據的輸入。
向LCD 128×64里寫數據部分子程序如下:
void write_ldate (uchar date)
{
lede=1;
ledrw=1;
ledrs=0;
ledrw=0;
ledrs=1;
ledcs2=1;
ledcs1=0;
P0=date;
lede=0;
}
void write_rdate (uchar date)
{
lede=1;
ledrw=1;
ledrs=0;
ledrw=0;
ledrs=1;
ledcs2=0;
ledcs1=1;
P0=date;
lede=0;
}
4 系統仿真結果
本文采用具有強大的EDA 仿真功能的Proteus軟件進行仿真[10],仿真測試結果如圖4所示。
圖4 系統仿真結果圖
當按下運行的Proteus軟件中的“play”按鈕時,即啟動系統,此時LCD液晶屏顯示如圖4(a)所示的界面。按下仿真電路中 “CARD1”按鍵或“CARD2”按鍵,出現圖4(b)所示畫面,在鍵盤輸入界面中輸入銀行卡“CARD1”或“CARD2”密碼。若在密碼輸入的過程中,出現錯誤,則可按 “key0” 鍵進行修改。密碼輸入完成之后,按下仿真電路圖中“key1”按鍵確定,若密碼輸入錯誤,則出現圖4(c)所示界面,3 s鐘之后轉向圖4(d)所示界面,重新輸入密碼。密碼輸入錯誤3次及以上,出現圖4(e)所示界面,提示“此卡已被凍結”,再按“key1”按鍵取卡;若密碼正確,則會出現圖4(f)所示界面。在圖4(f)所示界面下,按下“key0” 按鍵選擇“修改密碼”功能,出現圖4(g)界面,輸入新的密碼,修改成功之后跳轉圖4(h)界面;按下“key2” 按鍵選擇“查詢余額”功能,出現圖4(i)界面;按下“key3” 按鍵選擇“取款”功能,出現圖4(j)界面,選擇相應的金額按鍵按下(key0按鍵表示1 000,key2按鍵表示2 000,key3按鍵表示3 000),之后出現圖4(k)界面,按下“key4”按鍵取鈔,界面跳轉到圖4(l),完成取款操作。若要繼續選擇業務功能,則按下 “key5”按鍵,界面重新跳轉到圖4(f)界面;若要取卡,則按下“key1”按鍵,則界面跳轉到圖4(a),對重新插入的銀行卡進行操作。
5 結 語
本文利用Proteus與Keil μVision3軟件對自動取款機系統進行了仿真設計與實現。從仿真結果可知,利用Proteus軟件進行仿真設計可極大地簡化單片機程序在目標硬件上的調試工作,同時也可直觀展示系統的運行界面,實現了自動取款機的基本功能,證明了此設計方案的可行性與正確性。
參考文獻
[1] 吳振雷,張昕.基于單片機AT89C52模擬AMT自動提款機系統[J].科學與財富,2013(4):207?208.
[2] 電子驛站.AT89C52 [EB/OL]. [2007?12?09]. http://www.ourmpu.com.
[3] 上海復旦微電子股份有限公司.FM24C02/04/08(A)/16 兩線制串行E2PROM[EB/OL].[2007?05?06].http://wenku.baidu.com/view/6f7c682ee2bd960590c67796.html.
[4] 深圳漢昇實業有限公司.HS12864?15系列中文圖形液晶顯示模塊說明書[EB/OL].[2008?03?09].http://wenku.baidu.com/view/4b6bbd5f804d2b160b4ec046.html.
[5] 彭真真.單片機驅動LCD12864的應用[J].電子制作,2011(4): 44?46.
[6] 陳一鳴.基于51單片機的圖形液晶顯示器漢字顯示方法分析[J].自動化與儀器儀表,2011(6):70?71.
[7] 楊云,李詩泉.自動取款機智能判定系統軟件設計[J].寧波職業技術學院學報,2012(4):74?76.
[8] 郭天祥.新概念51單片機C語言教程:入門、提高、開發、拓展全攻略[M].北京:電子工業出版社,2009.
[9] 彭偉.單片機C語言程序設計實例100例:基于PIC+Proteus仿真[M].北京:電子工業出版社,2011.
[10] 范海紹.零起點學Proteus單片機仿真技術[M].北京:機械工業出版社,2012.
[11] 李軍,王艷.基于單片機的智能泊車系統設計[J].現代電子技術,2011,34(23):164?166.
[12] 楊晶晶.基于AT89C52的電化學工作站設計[J].電子科技,2011(9):45?47.