常洪波
摘要: 在科學(xué)技術(shù)飛速發(fā)展的今天,單片機(jī)技術(shù)不斷進(jìn)步并且得到了廣泛應(yīng)用。單片機(jī)在一定程度上實(shí)現(xiàn)了自動(dòng)化、智能化,滿足了人們的各種需要。單片機(jī)的引腳和越來越多的器件的限制使我們不得不采用I2C等總線來進(jìn)行擴(kuò)展操作,它可以大大簡(jiǎn)化設(shè)計(jì)、減小系統(tǒng)的體積并提高系統(tǒng)可靠性。而且,系統(tǒng)的更改和擴(kuò)充也變得很容易。因?yàn)閱纹瑱C(jī)需要強(qiáng)大的功能和較大的數(shù)據(jù)存儲(chǔ)空間,我們需要用到外部存儲(chǔ)器EEPROM等。本文以I2C與EEPROM的連接和數(shù)據(jù)存儲(chǔ)、交換為主要內(nèi)容,利用AT89C51單片機(jī)和LED數(shù)碼管等元件和Proteus軟件、Keil軟件來開發(fā),借助C語言程序?qū)崿F(xiàn)了本設(shè)計(jì)的全部功能,包括數(shù)碼顯示、數(shù)據(jù)傳輸、讀寫功能等。本設(shè)計(jì)實(shí)現(xiàn)了簡(jiǎn)單的單片機(jī)實(shí)現(xiàn)不了的大容量數(shù)據(jù)傳輸,解決了掉電后存儲(chǔ)數(shù)據(jù)丟失的問題,而且避免了控制多個(gè)對(duì)象時(shí)I/O口不夠用的現(xiàn)象。
Abstract: With the development of science and technology, single-chip technology in the continuous progress has been widely used, in particular, is widely applied in the field of mechanical and electrical products. To a certain extent, the microcontroller is automated and intelligent, and meet people's daily needs. MCU pin and a growing number of device limitations make us have to use the I2C bus to extend operation, it can greatly simplify the design, reduce system size and improve system reliability. Moreover, the single-chip system changes and expansion has become easier. The microcontroller requires strong functions and data storage requirements so that we need external memory EEPROM. This article describes the I2C and EEPROM connection and data storage, data exchange. It uses AT89C51 microcontroller and LED digital tube and Proteus Software Keil software, C language to realize the full functionality of the design, including the key treatment, liquid crystal display, the data transfer, the data read and write functions. The design solves the problem of large-capacity data transmission, to solve the problem after power loss of stored data, and also solves the problem of I/O port is not enough to control multiple objects.
關(guān)鍵詞: I2C總線;EEPROM;數(shù)據(jù)讀寫功能;單片機(jī)
Key words: I2C bus;EEPROM;Data read and write capabilities;MCU
中圖分類號(hào):TN201 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2017)10-0225-03
0 引言
如今單片機(jī)的應(yīng)用領(lǐng)域越來越廣泛。但實(shí)際應(yīng)用中經(jīng)常會(huì)遇到單片機(jī)I/O接口資源不夠用的情形,在一些復(fù)雜應(yīng)用系統(tǒng)中,被控對(duì)象較多(如控制多個(gè)LED數(shù)碼管的顯示、超過30路狀態(tài)的顯示)時(shí),端口供需矛盾就會(huì)十分突出,一般可以采用外接8155、8255、8259、74HC164及74LS245等外擴(kuò)I/O接口來解決[1],但這樣會(huì)使系統(tǒng)更加復(fù)雜,增加成本,可靠性下降[2]。鑒于此,在單片機(jī)設(shè)計(jì)應(yīng)用時(shí)就需要使用總線進(jìn)行擴(kuò)展,最合適的應(yīng)用最廣的是I2C總線。I2C串行總線可以使系統(tǒng)的硬件設(shè)計(jì)簡(jiǎn)單化、系統(tǒng)體積減小,它可靠性高,系統(tǒng)更改、擴(kuò)充也很容易。為解決單片系統(tǒng)功能強(qiáng)大、強(qiáng)處理能力、大數(shù)據(jù)存儲(chǔ)需求和掉電后存儲(chǔ)數(shù)據(jù)丟失的問題,我們一般使用EEPROM存儲(chǔ)器進(jìn)行擴(kuò)展[3]。EEPROM是一種電可擦可寫可編程的外部存儲(chǔ)器,它有較大的存儲(chǔ)容量,在很多系統(tǒng)中被大量采用。
1 硬件系統(tǒng)設(shè)計(jì)
1.1 總體設(shè)計(jì)
選用AT89C51為主控制器,選用AT24C系列進(jìn)行存儲(chǔ)。本課題擬采用Proteus軟件和Keil的聯(lián)調(diào)將硬件仿真的過程完美展現(xiàn)。因此,可以用仿真軟件先完成測(cè)試再進(jìn)行實(shí)際器件的操作[4]。采用的軟件是Proteus來對(duì)單片機(jī)及其單片機(jī)外圍的電路進(jìn)行了仿真,實(shí)驗(yàn)流程清晰,變化的程序在仿真元件性質(zhì)的變化上得到了很好的體現(xiàn),實(shí)驗(yàn)原理得到恰當(dāng)?shù)脑忈?,設(shè)計(jì)原理也很容易理解[5],實(shí)驗(yàn)結(jié)果應(yīng)用到實(shí)際電路上可行、有效,可以大大提高設(shè)計(jì)效率[6]。如此的仿真實(shí)驗(yàn),從某種意義上講,彌補(bǔ)了實(shí)驗(yàn)和工程應(yīng)用之間的脫節(jié)問題。系統(tǒng)方案設(shè)計(jì)框圖如圖1所示。
1.2 總線設(shè)計(jì)
I2C總線可以大幅度節(jié)約單片機(jī)的接口線。I2C總線協(xié)議規(guī)定:發(fā)送器是指任何將數(shù)據(jù)傳輸?shù)娇偩€上的器件,接收器是指任何從總線接收數(shù)據(jù)的器件。并且每個(gè)接到I2C總線上的器件的地址是唯一不變的。若數(shù)據(jù)是由主機(jī)發(fā)送到其它器件,這時(shí)主機(jī)為發(fā)送器,接收數(shù)據(jù)的器件為接收器[7]。51單片機(jī)系統(tǒng)的串行總線擴(kuò)展中,常以AT89C51單片機(jī)為主機(jī),其它接口器件為從機(jī)??偩€流程圖如圖2所示。
1.3 EEPROM設(shè)計(jì)
AT24C02是一種EEPROM芯片,AT24C02是由ATMEL公司提供的,是由CMOS工藝制造的。I2C總線的串行EEPROM,它的容量是2kb,工作電壓是處于1.8V~5.5V之間的[8],它是一種串行電可擦可編程存儲(chǔ)器,它結(jié)構(gòu)緊湊、存儲(chǔ)容量大,可以在I2C總線上并接芯片,適用于大容量數(shù)據(jù)存儲(chǔ)。EEPROM流程圖如圖3所示。
2 系統(tǒng)原理圖
本次設(shè)計(jì)主器件為8051單片機(jī),從器件為AT24C02,其仿真電路如圖4所示。8051單片機(jī)本身沒有I2C接口,但我們可以利用8051的兩根I/O口線來實(shí)現(xiàn)該功能。因單片機(jī)主控制器系統(tǒng)中僅由主控制器驅(qū)動(dòng)時(shí)鐘線[9],可以利用8051芯片的其中一根I/O口線來作為信號(hào)線(SCL),并且將它設(shè)置為“輸出方式”,由軟件來控制以及產(chǎn)生串行時(shí)鐘信號(hào);我們使用另一根I/O口線作為I2C總線數(shù)據(jù)線(SDA),軟件來控制在時(shí)鐘脈沖低電平期間的讀取以及輸出數(shù)據(jù)。圖4中P3.4口作為串行時(shí)鐘控制線(SCL),P3.5口作為串行數(shù)據(jù)傳輸線(SDA)。
3 軟件與調(diào)試
8051對(duì)AT24C02的讀寫操作的過程中,首先AT24C02被寫入3字節(jié)的數(shù)據(jù),然后AT24C02中的數(shù)據(jù)將會(huì)被讀出。程序?qū)崿F(xiàn)了用8051單片機(jī)來對(duì)AT24C02進(jìn)行寫入、讀出操作。程序中首先AT24C02以0x010開頭的3個(gè)連續(xù)的字節(jié)單元會(huì)被寫入數(shù)組buffer1中的3個(gè)字節(jié),然后數(shù)據(jù)會(huì)從這3個(gè)連續(xù)的字節(jié)單元中被讀出,并存放在RAM中的buffer2里。部分代碼如圖5所示。
如圖6所示,程序?qū)崿F(xiàn)了I2C與EEPROM之間的數(shù)據(jù)傳送并顯示出了0-99數(shù)字連續(xù)顯示。
4 結(jié)論
本文對(duì)單片機(jī)的I/O不夠用的問題,提出了一種非常實(shí)用的解決方法,一種基于I2C的單片機(jī)EEPROM設(shè)計(jì),將單片機(jī)與I2C總線以及EEPROM進(jìn)行了有機(jī)結(jié)合,給出了較好的系統(tǒng)原理圖,并且進(jìn)行了仿真程序?qū)崿F(xiàn)了I2C與EEPROM之間的數(shù)據(jù)傳送并顯示出了0-99數(shù)字連續(xù)顯示,驗(yàn)證效果良好。
參考文獻(xiàn):
[1]張毅剛,趙光權(quán),劉旺.單片機(jī)原理及應(yīng)用[M].高等教育出版社,2016.
[2]胡漢才.單片機(jī)原理及其接口技術(shù)[J].三版.北京:清華大學(xué)出版社,2010.
[3]張鵬,王琪,袁明新.利用proteus仿真平臺(tái)提高機(jī)械類學(xué)生單片機(jī)應(yīng)用能力[J].科教導(dǎo)刊,2015(13):23-24.
[4]侯進(jìn)旺,楊曉晴.基于AT89S2051單片機(jī)串行通信接口的I/O擴(kuò)展技術(shù)研究[J].現(xiàn)代電子技術(shù),2015(7):160-162.
[5]劉韜,樓興華.數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航[M].人民郵電出版社,2005,6.
[6]劉霞,孟濤,魏青梅.電子設(shè)計(jì)與實(shí)踐[M].電子工業(yè)出版社, 2015.
[7]王毅,萬英.基于IIC總線的溫濕度測(cè)量系統(tǒng)的設(shè)計(jì)[J].福建師范大學(xué)學(xué)報(bào):自然科學(xué)版,2014(6):40-45.
[8]呂國芳.AT24C02在電壓控制系統(tǒng)中的應(yīng)用[J].國外電子測(cè)量技術(shù),2004.
[9]沈大林.C語言程序設(shè)計(jì)案例教程[M].中國鐵道出版社,2007,6.