許潔靜 姚博 李濱玉
【摘 要】為了擴(kuò)展單片機(jī)的存儲(chǔ)資源及串口,采用基于單片機(jī) (AT89S52-24PI)外部存儲(chǔ)器的擴(kuò)展及基于單片機(jī)控制的多通道串口擴(kuò)展電路設(shè)計(jì)及具體實(shí)現(xiàn)方法。并以雙端口存儲(chǔ)器 IDT70V261S25PFI和串行通訊控制器TL16C754BPN及以C51系列單片機(jī)軟件開發(fā)環(huán)境Keil μVision4為例實(shí)現(xiàn)單片機(jī)的外部電路控制。實(shí)驗(yàn)結(jié)果表明,該方案接口簡(jiǎn)單、使用方便、穩(wěn)定可靠。
【關(guān)鍵詞】單片機(jī);存儲(chǔ)器;串行通訊;Keil μVision4
【中圖分類號(hào)】 TN45【文獻(xiàn)標(biāo)識(shí)碼】 A【文章編號(hào)】1672-5158(2013)07-0055-02
Expansion of the circuit control based on MCU external
XU Jie-jing,YAO Bo,LI Bin-yu
(Shanxi Huanghe Group Ltd.,Xiˇ?an 710043,China)
【Abstract】In order to storage resources and serial port expansion chip,based on MCU (AT89S52-24PI) external memory expansion and based on multichannel serial MCU control circuit design and realization method of expansion.And with the dual port memory IDT70V261S25PFI and serial communication controller TL16C754BPN and C51 series single-chip microcomputer software development environment Keil μ Vision4 for example the realization of the external circuit of the single chip control.The experimental results show that, this scheme has simple interface, easy to use,stable and reliable。
【Key words】MCU;Memory;Serial communication; Keil μVision4
引言
目前,應(yīng)用單片機(jī)的產(chǎn)品已經(jīng)滲透到我們生活的各個(gè)領(lǐng)域,因此單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用是社會(huì)發(fā)展的必然需求。但單片機(jī)的資源及接口又非常的有限,所以更加突出了單片機(jī)外部擴(kuò)展技術(shù)的重要性。在需要大量數(shù)據(jù)緩沖的單片機(jī)應(yīng)用系統(tǒng)中,需要在外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器;單片機(jī)通常提供一個(gè)串行通道,當(dāng)單片機(jī)系統(tǒng)需要更多的串行通訊通道時(shí),需通過外部串行通訊控制器進(jìn)行擴(kuò)展。本文主要介紹基于單片機(jī) (AT89S52-24PI)外部存儲(chǔ)器的擴(kuò)展及基于單片機(jī)控制的多通道串口擴(kuò)展電路設(shè)計(jì)及控制方法的具體實(shí)現(xiàn)。
1 概述
單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域的廣泛應(yīng)用。
AT89S52為ATMEL所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K的系統(tǒng)可編程Flash存儲(chǔ)器。主要功能列舉如下:擁有靈巧的8位CPU和系統(tǒng)可編程Flash;晶片內(nèi)部具有時(shí)鐘振蕩器(傳統(tǒng)最高工作頻率可至12MHZ);內(nèi)部程序存儲(chǔ)器(ROM)為8KB;內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)為256字節(jié);32個(gè)可編程I/0口線;8個(gè)中斷向量源;三個(gè)16位定時(shí)器/計(jì)數(shù)器;三級(jí)加密程序存儲(chǔ)器;全雙工UART串行通道。
2 硬件實(shí)現(xiàn)方法
2.1 總體設(shè)計(jì)思路
單片機(jī)的P0口作為數(shù)據(jù)線接到雙端口存儲(chǔ)器 IDT70V261S25PFI和串行通訊控制器TL16C754BPN的數(shù)據(jù)口,同時(shí)接到FPGA與單片機(jī)的ALE譯出雙端口低8位地址;P2口作為高8位地址線輸出到雙端口存儲(chǔ)器IDT70V261S25PFI高8位地址口和串行通訊控制器TL16C754BPN的3位地址口;FPGA通過地址譯碼譯出雙端口存儲(chǔ)器的片選和串行通訊控制器的4路片選信號(hào);單片機(jī)的讀寫信號(hào)接到雙端口存儲(chǔ)器和串行通訊控制器的讀寫。原理框圖如下圖所示: AT89S52來組成外存儲(chǔ)器擴(kuò)展電路,除了本文介紹的外存儲(chǔ)芯片外,其它的外存儲(chǔ)芯片(EEPROM、RAM等)的使用方法類似。單片機(jī)系統(tǒng)擴(kuò)展首先要構(gòu)建系統(tǒng)總線,然后再往系統(tǒng)總線上“掛”存儲(chǔ)芯片或I/O接口芯片。如下圖所示:
通過地址空間分配和外部地址鎖存器。常用的存儲(chǔ)器地址分配有兩種方法,線選法和譯碼法。線選法直接利用系統(tǒng)的高位地址線作為存儲(chǔ)器芯片的片選信號(hào);譯碼法是對(duì)高位地址進(jìn)行譯碼,譯碼輸出作為存儲(chǔ)器芯片的片選信號(hào)。常用的外部地址鎖存器芯片有74LS373和74LS573。外部地址鎖存器應(yīng)用如下圖所示:
3 系統(tǒng)軟件設(shè)計(jì)
本文采用的軟件開發(fā)平臺(tái),旨在提高開發(fā)人員的生產(chǎn)力,實(shí)現(xiàn)更快,更有效的程序開發(fā)。μVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,支持多顯示器窗口,增加了很多大眾化的功能。
51單片機(jī)軟件開發(fā)平臺(tái),keil C51μVision集成開發(fā)環(huán)境是德國Keil公司針對(duì)51系列單片機(jī)推出的基于32位windows環(huán)境,以51系列單片為開發(fā)目標(biāo),以高效率的C語言為基礎(chǔ)的集成開發(fā)平臺(tái)。Keil c51從最初的5. 20版本一直發(fā)展到最新的v7.20版本。主要包括:C51交叉編譯器,A51宏匯編器,BL51連接定位器等工具和windows集成編譯環(huán)境μVision,以及單片機(jī)軟件仿真器Dscope51.是一個(gè)非常優(yōu)秀的51單片機(jī)開發(fā)平臺(tái),對(duì)C高級(jí)語言的編譯支持幾乎達(dá)到了完美的程度,當(dāng)然它也同時(shí)支持A51宏匯編。同時(shí)它內(nèi)嵌的仿真調(diào)試軟件可以讓用戶采用模擬仿真和實(shí)時(shí)在線仿真兩種方式對(duì)目標(biāo)系統(tǒng)進(jìn)行開發(fā)。軟件仿真時(shí),除了可以模擬單片機(jī)的I/O口、定時(shí)器、中斷外,甚至可以仿真單片機(jī)的串行通信。
軟件設(shè)計(jì)上對(duì)于外部存儲(chǔ)器的擴(kuò)展沒有什么特別的設(shè)置,只需對(duì)片選選中地址空間進(jìn)行讀寫操作即可;對(duì)于多串口擴(kuò)展需要對(duì)片選選中地址空間進(jìn)行操作, 在工作軟件初始化部分,應(yīng)調(diào)用初始化通訊控制器函數(shù)對(duì)串行通訊控制器中的四路串行通訊口全部進(jìn)行初始化。程序代碼以下為例說明:
void COMMInitA(void) //軟件初始化函數(shù)
{XBYTE[CSA+LCR]=0x80;/*置波特率分頻系數(shù)設(shè)置允許位*/
/*設(shè)置波特率分頻系數(shù)為1,外部晶振24MHz,波特率為1.5MBPS;
外部晶振22.1184MHz,波特率為1.3824MBPS*/
XBYTE[CSA+DLL]=0x01;
XBYTE[CSA+DLM]=0x00;
/*清除波特率分頻設(shè)置允許位,設(shè)置串口數(shù)據(jù)格式設(shè)置為1位起始位、8位數(shù)據(jù)位、1位停止位、奇偶校驗(yàn)為奇校驗(yàn)*/
XBYTE[CSA+LCR]=0x1b; //奇校驗(yàn)
/*允許接收數(shù)據(jù)完成中斷*/
XBYTE[CSA+IER]=0x05;
/*中斷總允許*/
XBYTE[CSA+MCR]=0x00;
/*允許使用并清空FIFO,設(shè)置接收FIFO門限為60字節(jié)*/
XBYTE[CSA+FCR]=0x61; }
在發(fā)送數(shù)據(jù)時(shí)應(yīng)首先形成發(fā)送數(shù)據(jù)并存儲(chǔ)在發(fā)送數(shù)據(jù)緩沖區(qū)中,然后調(diào)用數(shù)據(jù)發(fā)送函數(shù)完成數(shù)據(jù)發(fā)送功能,程序代碼以下為例說明:
void ZD_SEND(void)
{ tmp=0; for(j=2;j<6;j++) //計(jì)算校驗(yàn)和,從第2個(gè)字節(jié)開始{ tmp=tmp+zd_txd[j]; } tmp=tmp+zd_txd[0]; zd_txd[1]=tmp; for(j=0;j<6;j++)
{ XBYTE[CSA]=zd_txd[j];//發(fā)送6個(gè)字節(jié)} }
在數(shù)據(jù)接收完成中斷服務(wù)程序中調(diào)用數(shù)據(jù)接收函數(shù),根據(jù)數(shù)據(jù)接收狀態(tài)將已接收到的數(shù)據(jù)存儲(chǔ)在接收緩沖區(qū)中,程序代碼以下為例說明:
void ZD_REC(void)
{ for(j=0;j<15;j++)//串口接收數(shù)據(jù),15個(gè)字節(jié)
{ tmp=XBYTE[CSA+LSR]; if((tmp & 0x01)==0x01) buf_rxd[j]=XBYTE[CSA]; }
j=0; while(((XBYTE[CSA+LSR] & 0x01)==0x01) && (j<64))
{ j++; tmp=XBYTE[CSA]; } COMMInitA(); //接收結(jié)束
tmp=0; for(j=2;j<15;j++) //計(jì)算校驗(yàn)和,從第2個(gè)字節(jié)開始{ tmp=tmp+buf_rxd[j]; } tmp=tmp+buf_rxd[0];
if((buf_rxd[1]==tmp)&&(buf_rxd[0]==0x0f)) //校驗(yàn)正確,接收緩沖區(qū)數(shù)據(jù)轉(zhuǎn)到工作數(shù)據(jù)區(qū) { for(j=0;j<15;j++) { zd_rxd[j]=buf_rxd[j]; } bit_gzgzled=0x0; } else bit_gzgzled=0x1; }
為了保持?jǐn)?shù)據(jù)通訊過程的持續(xù)穩(wěn)定,同時(shí)避免不可預(yù)見沖突對(duì)數(shù)據(jù)通訊過程的干擾引起的工作異常,在必要的時(shí)刻需要對(duì)數(shù)據(jù)通訊控制器的FIFO 進(jìn)行定期復(fù)位并清空數(shù)據(jù)區(qū)。
4 結(jié)束語
本文介紹了基于51系列單片機(jī)進(jìn)行外圍擴(kuò)展電路的具體實(shí)現(xiàn)方法,既解決了單片機(jī)的存儲(chǔ)器容量過小及串行通訊通道不足的限制,又提供了一種具有良好的通用性、規(guī)范性的單片機(jī)外圍擴(kuò)展存儲(chǔ)器及多通道串行通訊的實(shí)施方案,為51系列單片機(jī)提供了更多更廣的應(yīng)用空間。
參考文獻(xiàn)
[1] 張文德,等.單片機(jī)微機(jī)原理應(yīng)用與實(shí)驗(yàn)[M].上海 復(fù)旦大學(xué)出版社,1996
[2] 江志紅.51單片機(jī)技術(shù)與應(yīng)用開發(fā)案例精選[M].清華大學(xué)出版社.2008.20-70
[3] 李學(xué)軍.如何用MCS-51單片機(jī)擴(kuò)展串口進(jìn)行通訊[J].寧夏機(jī)械, 2003,(2)
[4] Keil公司的幫助文件