基于通用單片機(jī)的最小系統(tǒng)設(shè)計(jì)
單片機(jī)最小系統(tǒng),是指用最少的元件組成的可以工作的單片機(jī)系統(tǒng)。為了方便設(shè)計(jì)者自行開發(fā)和應(yīng)用,文章設(shè)計(jì)了基于一個(gè)通用的單片機(jī)的最小系統(tǒng)。該系統(tǒng)以C8051F320為主控芯片,設(shè)計(jì)了電源電路、復(fù)位電路、時(shí)鐘電路、存儲(chǔ)器擴(kuò)展電路、串口通信電路和液晶顯示電路,并介紹了各部分的功能。實(shí)驗(yàn)證明改最小系統(tǒng)原理正確,工作可靠??捎糜诳蒲小㈦娮与娐吩O(shè)計(jì)等領(lǐng)域。
單片機(jī)(MCU)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。隨著計(jì)算機(jī)技術(shù)的高速發(fā)展,單片機(jī)以其自身的特點(diǎn),己廣泛應(yīng)用于工業(yè)控制、家用電器、智能儀器、電子玩具市場。
本文的最小系統(tǒng)以C805 1 F320為主控芯片,C8051F320/1系列器件使用SILICon Labs的專利CIP-51微控制器內(nèi)核。CIP-51內(nèi)核具有標(biāo)準(zhǔn)8052的所有外設(shè)部件,包括4個(gè)16位計(jì)數(shù)器/定時(shí)器、一個(gè)具有增強(qiáng)波特率配置的全雙工UART、一個(gè)增強(qiáng)型SPI端口、2304字節(jié)內(nèi)部RAM、128字節(jié)特殊功能寄存器(SFR)地址空間及25/21個(gè)I/O引腳。C8051F320片內(nèi)調(diào)試電路提供全速、非侵入式的在系統(tǒng)調(diào)試(不需仿真器);支持?jǐn)帱c(diǎn)、單步、觀察/修改存儲(chǔ)器和寄存器,比使用仿真芯片、目標(biāo)仿真頭和仿真插座的仿真系統(tǒng)有更優(yōu)越的性能。
1 最小系統(tǒng)實(shí)現(xiàn)方案
單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包含兩部分內(nèi)容:一是系統(tǒng)擴(kuò)展,即單片機(jī)內(nèi)部的功能單元,如ROM、RAM、I/O、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等不能滿足應(yīng)用系統(tǒng)的要求時(shí),必須在片外進(jìn)行擴(kuò)展,選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路。二是系統(tǒng)的配置,即按照系統(tǒng)功能要求配置外圍設(shè)備,如電源、A/D、D/A轉(zhuǎn)換器等。要設(shè)計(jì)合適的接口電路。
此最小系統(tǒng)要求:電源,電路中我們可以用外部電源,也可以用自帶的充電電池;串口通信,能與計(jì)算機(jī)之間進(jìn)行通信:時(shí)鐘,為CPU提供所需的時(shí)鐘或日歷;外接存儲(chǔ)器模塊;液晶顯示,可以按我們的要求顯示漢字、字符、數(shù)字及圖形。系統(tǒng)框圖如圖1所示。
1.1 電源電路
系統(tǒng)中所有的芯片都是用的3V的電壓,選用的芯片是TPS78930,這是一種低壓差穩(wěn)壓器,與傳統(tǒng)的低壓差穩(wěn)壓器相比,具有超低的靜態(tài)電流。輸入電壓為4~10V,輸出電壓3V。輸出電流為100mA。在電源模塊中通過4個(gè)電容進(jìn)行電源穩(wěn)壓濾波,為系統(tǒng)提供穩(wěn)定的電源。另外,我們的系統(tǒng)中帶可充電的鋰電池,充電芯片采用MAX1501,其輸入電壓為4.5~6.5V,輸出為4.2V電壓。電網(wǎng)電壓經(jīng)5V的適配器可以只給電池充電,也可以只給系統(tǒng)供電,或一邊給電池充電,一邊給系統(tǒng)供電。給電池充電過程中,充電指示燈RLED亮,電池充滿后,滿電指示燈亮。在電池給系統(tǒng)供電過程中,電池電壓經(jīng)過兩個(gè)100k的電阻分壓后接到單片機(jī)的P15口,檢測到電池電壓低時(shí),電壓低的指示燈亮。電源電路如圖2所示。
1.2 復(fù)位電路
系統(tǒng)的復(fù)位模式有三種:上電復(fù)位、用戶按鍵復(fù)位和軟件復(fù)位。電路如圖3所示,該復(fù)位電路的工作原理如下:在系統(tǒng)上電時(shí),通過電阻R1向電容C1、C2充電,當(dāng)C1、C2兩端的電壓未達(dá)到高電平的門限電壓時(shí),REST端輸出為低電平,系統(tǒng)處于復(fù)位狀態(tài);當(dāng)C1、C2兩端的電壓達(dá)到高電平的門限電壓時(shí),REST端輸出為高電平,系統(tǒng)進(jìn)入正常工作狀態(tài)。當(dāng)用戶按下按鈕S時(shí),C1、C2兩端的電荷被泄放掉,REST端輸出為低電平,系統(tǒng)進(jìn)入復(fù)位狀態(tài)。軟件可以通過向寄存RSTSRC中的PINRSF位寫“1”來強(qiáng)制產(chǎn)生一次上電復(fù)位。當(dāng)發(fā)生掉電或因電源波動(dòng)導(dǎo)致VDD降到VRST以下時(shí),電源監(jiān)視器將/RST引腳驅(qū)動(dòng)為低電平并使CIP-5 1保持復(fù)位狀態(tài)。當(dāng)VDD又回到高于VRST的電平時(shí),CIP-51將退出復(fù)位狀態(tài)。在選擇VDD監(jiān)視器作為復(fù)位源之前,必須使能VDD監(jiān)視器。
1.3 時(shí)鐘電路
C8051F320有一個(gè)可編程內(nèi)部振蕩器、一個(gè)外部振蕩器驅(qū)動(dòng)電路和一個(gè)4倍時(shí)鐘乘法器。系統(tǒng)時(shí)鐘(SYSCLK)可以來自內(nèi)部振蕩器、外部振蕩器電路或4倍時(shí)鐘乘法器二分頻。
如果使用內(nèi)部振蕩器,可以通過對OSCICN和OSCICL寄存器編程來使能/禁止內(nèi)部振蕩器和調(diào)節(jié)其輸出頻率。當(dāng)使用外部振蕩器電路時(shí),必須對所用端口引腳進(jìn)行配置。當(dāng)外部振蕩器電路被配置為晶體/諧振器方式時(shí),端口引腳P0.2和P0.3分別被用作XTAL1和XTAL2。當(dāng)外部振蕩器電路被配置為RC、電容或CMOS時(shí)鐘方式時(shí),端口引腳P0.3被用作XTAL2。
我們在外部振蕩器模式時(shí)使用了一個(gè)CMOS時(shí)鐘芯片S3530,它與CPU之間是通過兩根線連接,具有兩個(gè)中斷/報(bào)警功能。所有的地址和數(shù)據(jù)通過I2C總線接收。電路如圖4所示。
時(shí)鐘電路產(chǎn)生整個(gè)電路的工作時(shí)序脈沖,它是系統(tǒng)正常工作的關(guān)鍵,又是單片機(jī)系統(tǒng)的主要噪聲源。我們采用以下措施來減小噪聲:1)時(shí)鐘脈沖電路要盡量靠近MPU,引線應(yīng)短而粗;2)用地線包圍振蕩電路,并將晶體振蕩器外殼接地;3)整個(gè)系統(tǒng)走線中,大電流信號線,電源變壓器要遠(yuǎn)離晶振走線;4)如果時(shí)鐘電路為其它芯片提供時(shí)鐘,應(yīng)充分做好隔離;5)若是雙面印制電路板,有導(dǎo)線不可避免地經(jīng)過時(shí)鐘電路,走線應(yīng)該垂直、交叉但不能平行。
1.4UART串口通信電路
串行通訊只需較少的端口就可以實(shí)現(xiàn)單片機(jī)和PC機(jī)的通信,具有無可比擬的優(yōu)勢。串行通訊有兩種方式:異步模式和同步模式。本設(shè)計(jì)中利用C805 1 F320的UART模塊來實(shí)現(xiàn)C805 1 F320與PC機(jī)之間的串行通信。PC機(jī)接口是RS-232,RS-232標(biāo)準(zhǔn)采用負(fù)邏輯方式,標(biāo)準(zhǔn)邏輯“1”對應(yīng)-5~-15 V電平,標(biāo)準(zhǔn)邏輯“0”對應(yīng)+5~+15V電平。C8051F320的接口為TTL電平。顯然,和PC機(jī)的RS232C電平不兼容,兩者間要進(jìn)行通信必須經(jīng)過信號電平的轉(zhuǎn)換,所以連接時(shí)必須使用電平轉(zhuǎn)換芯片。
本設(shè)計(jì)選用符合RS-232標(biāo)準(zhǔn)的SP3223驅(qū)動(dòng)芯片進(jìn)行串行通信。SP3 22 3電源3~5V,這里是3V供電。具有兩個(gè)發(fā)送和接收通道。SP3223的T1IN與C8051F320的TX0(P04)連接,R10U與C805 1 F320的RX0(P05)連接。串口電路如圖5所示。
1.5存儲(chǔ)器模塊電路
存儲(chǔ)器模塊包括Flash存儲(chǔ)器和SRAM存儲(chǔ)器兩個(gè)部分。C8051F320內(nèi)部有16kB可在系統(tǒng)編程的FLASH存儲(chǔ)器,2304字節(jié)片內(nèi)RAM。一般來說,應(yīng)該在片外擴(kuò)展存儲(chǔ)器用來存放用戶的程序代碼。另外,考慮到系統(tǒng)運(yùn)行中,MCU往往要做大量的數(shù)據(jù)處理工作,經(jīng)常有一些采集到的或生成的數(shù)據(jù)需要及時(shí)進(jìn)行存儲(chǔ)或調(diào)用,因此當(dāng)片上16kB的FLASH存儲(chǔ)器不夠用時(shí),需要外部擴(kuò)展Flash存儲(chǔ)器,而且即使掉電,程序和數(shù)據(jù)都不會(huì)丟失。我們選用的是Flash存儲(chǔ)器AT45DB041B,其電壓為2.5~3.6V,適合我們的系統(tǒng)電壓3V。存儲(chǔ)容量為2048頁,每頁有264個(gè)字節(jié)。支持塊和頁的自動(dòng)擦除。AT45DB041B芯片通過SPI總線與單片機(jī)的連接,接口為MOSI、MISO、SCK。
1.6 液晶顯示電路
以往單片機(jī)最小系統(tǒng)都是數(shù)碼顯示,電路比較簡單,但是只能顯示數(shù)字不能顯示漢字,這里用液晶顯示,不但可以顯示數(shù)字,還可以顯示漢字和圖形、符號。我們用的液晶是LCM6432ZK,3V電源供電,液晶屏幕為64×32,可顯示兩行,每行可顯示4個(gè)漢字。低功耗設(shè)計(jì)可滿足產(chǎn)品的省電要求;同時(shí)與單片機(jī)等微控器的接口界面靈活(三種模式:并行8位/4位,串行3線/2線)。這里為了節(jié)省單片的I/O口,我們用串行2線。SID為輸入串行數(shù)據(jù),SCLK為輸入串行脈沖。液晶顯示電路如圖7所示。
考慮到系統(tǒng)的通用性問題,因此還應(yīng)將單片機(jī)的一些必要引腳用接口插座引出,以方便使用。例如:USB主機(jī)與設(shè)備接口,A/D、D/A與單片機(jī)接口,I/O總線擴(kuò)展接口等。
2 系統(tǒng)軟硬件調(diào)試
用protel軟件繪制電路板圖。系統(tǒng)上電前,用萬用表仔細(xì)檢查電源是否有短路,元件是否有虛焊。系統(tǒng)上電后,檢查電路板上電壓是否正常,復(fù)位電路是否工作。
軟件是用C語言編程,與以往的匯編語言比較,它的可擴(kuò)充性、可移植性比匯編語言要好。本系統(tǒng)支持在線調(diào)試,調(diào)試比用仿真器要更容易,使用更方便。
3 結(jié)束語
本文中所設(shè)計(jì)的最小系統(tǒng)經(jīng)過調(diào)試,上述幾部分功能已經(jīng)實(shí)現(xiàn),系統(tǒng)可靠性好。此最小系統(tǒng)應(yīng)用在智能小車,成功控制智能小車前進(jìn)、后退、轉(zhuǎn)彎,顯示到達(dá)目的地所用時(shí)間。