?

基于單片機的外部擴展電路控制

2013-09-03 06:32許潔靜姚博李濱玉
中國信息化·學術版 2013年7期
關鍵詞:存儲器單片機

許潔靜 姚博 李濱玉

【摘 要】為了擴展單片機的存儲資源及串口,采用基于單片機 (AT89S52-24PI)外部存儲器的擴展及基于單片機控制的多通道串口擴展電路設計及具體實現方法。并以雙端口存儲器 IDT70V261S25PFI和串行通訊控制器TL16C754BPN及以C51系列單片機軟件開發環境Keil μVision4為例實現單片機的外部電路控制。實驗結果表明,該方案接口簡單、使用方便、穩定可靠。

【關鍵詞】單片機;存儲器;串行通訊;Keil μVision4

【中圖分類號】 TN45【文獻標識碼】 A【文章編號】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

引言

目前,應用單片機的產品已經滲透到我們生活的各個領域,因此單片機的學習、開發與應用是社會發展的必然需求。但單片機的資源及接口又非常的有限,所以更加突出了單片機外部擴展技術的重要性。在需要大量數據緩沖的單片機應用系統中,需要在外部擴展數據存儲器;單片機通常提供一個串行通道,當單片機系統需要更多的串行通訊通道時,需通過外部串行通訊控制器進行擴展。本文主要介紹基于單片機 (AT89S52-24PI)外部存儲器的擴展及基于單片機控制的多通道串口擴展電路設計及控制方法的具體實現。

1 概述

單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域的廣泛應用。

AT89S52為ATMEL所生產的一種低功耗、高性能CMOS8位微控制器,具有8K的系統可編程Flash存儲器。主要功能列舉如下:擁有靈巧的8位CPU和系統可編程Flash;晶片內部具有時鐘振蕩器(傳統最高工作頻率可至12MHZ);內部程序存儲器(ROM)為8KB;內部數據存儲器(RAM)為256字節;32個可編程I/0口線;8個中斷向量源;三個16位定時器/計數器;三級加密程序存儲器;全雙工UART串行通道。

2 硬件實現方法

2.1 總體設計思路

單片機的P0口作為數據線接到雙端口存儲器 IDT70V261S25PFI和串行通訊控制器TL16C754BPN的數據口,同時接到FPGA與單片機的ALE譯出雙端口低8位地址;P2口作為高8位地址線輸出到雙端口存儲器IDT70V261S25PFI高8位地址口和串行通訊控制器TL16C754BPN的3位地址口;FPGA通過地址譯碼譯出雙端口存儲器的片選和串行通訊控制器的4路片選信號;單片機的讀寫信號接到雙端口存儲器和串行通訊控制器的讀寫。原理框圖如下圖所示: AT89S52來組成外存儲器擴展電路,除了本文介紹的外存儲芯片外,其它的外存儲芯片(EEPROM、RAM等)的使用方法類似。單片機系統擴展首先要構建系統總線,然后再往系統總線上“掛”存儲芯片或I/O接口芯片。如下圖所示:

通過地址空間分配和外部地址鎖存器。常用的存儲器地址分配有兩種方法,線選法和譯碼法。線選法直接利用系統的高位地址線作為存儲器芯片的片選信號;譯碼法是對高位地址進行譯碼,譯碼輸出作為存儲器芯片的片選信號。常用的外部地址鎖存器芯片有74LS373和74LS573。外部地址鎖存器應用如下圖所示:

3 系統軟件設計

本文采用的軟件開發平臺,旨在提高開發人員的生產力,實現更快,更有效的程序開發。μVision4引入了靈活的窗口管理系統,能夠拖放到視圖內的任何地方,支持多顯示器窗口,增加了很多大眾化的功能。

51單片機軟件開發平臺,keil C51μVision集成開發環境是德國Keil公司針對51系列單片機推出的基于32位windows環境,以51系列單片為開發目標,以高效率的C語言為基礎的集成開發平臺。Keil c51從最初的5. 20版本一直發展到最新的v7.20版本。主要包括:C51交叉編譯器,A51宏匯編器,BL51連接定位器等工具和windows集成編譯環境μVision,以及單片機軟件仿真器Dscope51.是一個非常優秀的51單片機開發平臺,對C高級語言的編譯支持幾乎達到了完美的程度,當然它也同時支持A51宏匯編。同時它內嵌的仿真調試軟件可以讓用戶采用模擬仿真和實時在線仿真兩種方式對目標系統進行開發。軟件仿真時,除了可以模擬單片機的I/O口、定時器、中斷外,甚至可以仿真單片機的串行通信。

軟件設計上對于外部存儲器的擴展沒有什么特別的設置,只需對片選選中地址空間進行讀寫操作即可;對于多串口擴展需要對片選選中地址空間進行操作, 在工作軟件初始化部分,應調用初始化通訊控制器函數對串行通訊控制器中的四路串行通訊口全部進行初始化。程序代碼以下為例說明:

void COMMInitA(void) //軟件初始化函數

{XBYTE[CSA+LCR]=0x80;/*置波特率分頻系數設置允許位*/

/*設置波特率分頻系數為1,外部晶振24MHz,波特率為1.5MBPS;

外部晶振22.1184MHz,波特率為1.3824MBPS*/

XBYTE[CSA+DLL]=0x01;

XBYTE[CSA+DLM]=0x00;

/*清除波特率分頻設置允許位,設置串口數據格式設置為1位起始位、8位數據位、1位停止位、奇偶校驗為奇校驗*/

XBYTE[CSA+LCR]=0x1b; //奇校驗

/*允許接收數據完成中斷*/

XBYTE[CSA+IER]=0x05;

/*中斷總允許*/

XBYTE[CSA+MCR]=0x00;

/*允許使用并清空FIFO,設置接收FIFO門限為60字節*/

XBYTE[CSA+FCR]=0x61; }

在發送數據時應首先形成發送數據并存儲在發送數據緩沖區中,然后調用數據發送函數完成數據發送功能,程序代碼以下為例說明:

void ZD_SEND(void)

{ tmp=0; for(j=2;j<6;j++) //計算校驗和,從第2個字節開始{ 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];//發送6個字節} }

在數據接收完成中斷服務程序中調用數據接收函數,根據數據接收狀態將已接收到的數據存儲在接收緩沖區中,程序代碼以下為例說明:

void ZD_REC(void)

{ for(j=0;j<15;j++)//串口接收數據,15個字節

{ 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(); //接收結束

tmp=0; for(j=2;j<15;j++) //計算校驗和,從第2個字節開始{ tmp=tmp+buf_rxd[j]; } tmp=tmp+buf_rxd[0];

if((buf_rxd[1]==tmp)&&(buf_rxd[0]==0x0f)) //校驗正確,接收緩沖區數據轉到工作數據區 { for(j=0;j<15;j++) { zd_rxd[j]=buf_rxd[j]; } bit_gzgzled=0x0; } else bit_gzgzled=0x1; }

為了保持數據通訊過程的持續穩定,同時避免不可預見沖突對數據通訊過程的干擾引起的工作異常,在必要的時刻需要對數據通訊控制器的FIFO 進行定期復位并清空數據區。

4 結束語

本文介紹了基于51系列單片機進行外圍擴展電路的具體實現方法,既解決了單片機的存儲器容量過小及串行通訊通道不足的限制,又提供了一種具有良好的通用性、規范性的單片機外圍擴展存儲器及多通道串行通訊的實施方案,為51系列單片機提供了更多更廣的應用空間。

參考文獻

[1] 張文德,等.單片機微機原理應用與實驗[M].上海 復旦大學出版社,1996

[2] 江志紅.51單片機技術與應用開發案例精選[M].清華大學出版社.2008.20-70

[3] 李學軍.如何用MCS-51單片機擴展串口進行通訊[J].寧夏機械, 2003,(2)

[4] Keil公司的幫助文件

猜你喜歡
存儲器單片機
Flash存儲器W25Q16JVSNIQ替換M25P16的可行性研究
單片機在智能控制中的應用
獨立拼裝手機
C8051F020與80C51單片機的異同點
存儲器——安格爾(墨西哥)▲
Buffalo推出四硬盤網絡存儲器 主打Soho一族
容器
單片機I/O口模擬串行通訊的C51實現方法
單片機調試方法的探討
用PIC單片機制作的時間繼電器
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合