摘要:本文采用軟件仿真平臺(tái)Proteus介紹了AT24C1024 EEPROM的使用及其特點(diǎn),以及在具有DS1302時(shí)鐘芯片、DS18b20溫度傳感器的具體應(yīng)用系統(tǒng)中的使用,本系統(tǒng)對(duì)每隔一段時(shí)間的溫度進(jìn)行了存儲(chǔ)。
關(guān)鍵詞:Proteus;EEPROM;DS18b20;溫度傳感器
電可擦除可編程EEPROM 在應(yīng)用系統(tǒng)中既可由軟件對(duì)其內(nèi)容進(jìn)行隨機(jī)讀寫(xiě),又可在芯片斷電的情況下長(zhǎng)時(shí)間保存信息, 因此兼?zhèn)淞薘AM 和ROM 的特點(diǎn)。EEPROM 有串行和并行兩大類(lèi),并行EEPROM 存儲(chǔ)容量較大,讀寫(xiě)方法簡(jiǎn)單,但價(jià)格較高,適用于信息量較多的場(chǎng)合。串行EEPROM結(jié)構(gòu)簡(jiǎn)單緊湊,價(jià)格低廉,但其讀寫(xiě)方法復(fù)雜,存儲(chǔ)單元較小,一般用于掉電情況下需要保存或一些數(shù)據(jù)需要在線(xiàn)修改的場(chǎng)合,這類(lèi)數(shù)據(jù)不多卻很重要,若使用常規(guī)的RAM芯片,就必須附帶一套性能可靠的掉電保護(hù)系統(tǒng),這不僅增加了線(xiàn)路設(shè)計(jì)的復(fù)雜性,同時(shí)也給設(shè)備的運(yùn)行和維護(hù)帶來(lái)了諸多不便。同時(shí)Proteus軟件是一款單片機(jī)軟硬件設(shè)計(jì)仿真平臺(tái),能實(shí)時(shí)仿真多種單片機(jī)芯片,如51單片機(jī)系列、AVR單片機(jī)系列、PIC單片機(jī)系列及Arm單片機(jī)系列等,可減少學(xué)習(xí)單片機(jī)的成本,又可達(dá)到良好的學(xué)習(xí)效果。
124C系列串行EEPROM介紹
24C系列串行EEPROM除具有一般串行EEPROM 的體積小、功耗低、工作電壓允許范圍寬等特點(diǎn)外,還具有型號(hào)多、容量大、二總線(xiàn)協(xié)議、占用I/ O 口線(xiàn)少、容量擴(kuò)展配置極其靈活方便、讀寫(xiě)操作相對(duì)簡(jiǎn)單等特點(diǎn)。本系統(tǒng)中使用的是24C1024(1024kb) ,生產(chǎn)工藝是CMOS 工藝,工作電壓在1.8~5.5V 之間,24C系列有兩種封裝形式:8 腳封裝和14 腳封裝。我國(guó)目前開(kāi)發(fā)用量最多的封裝形式是8腳PDIP 封裝,8 腳PDIP封裝中A0 、A1 、A2 為器件地址選擇位,這3 個(gè)引腳配置成不同的編碼值,在同一串行總線(xiàn)上最多可擴(kuò)展8 片同一容量或不同容量的24C 系列串行EEPROM 芯片。WP(TEST) 為硬件寫(xiě)保護(hù)控制端(測(cè)試端) ,這個(gè)引腳,各個(gè)公司生產(chǎn)的有所不同,有的公司將其定義為脈沖的上升沿將數(shù)據(jù)寫(xiě)入EEPROM,下降沿將數(shù)據(jù)從EEPROM 中讀出。SDA 為串行數(shù)據(jù)輸入輸出端,漏極開(kāi)路驅(qū)動(dòng),容量擴(kuò)展時(shí),可以將多片24C系列SDA 引腳直接相連,實(shí)際使用時(shí)要加一個(gè)上拉電阻,VCC和GND 分別是電源和地。
2 AT24C1024硬件電路的應(yīng)用設(shè)計(jì)
系統(tǒng)應(yīng)用電路如圖1所示,時(shí)鐘芯片接P1端口的P1.0、P1.1和P1.2引腳,提供實(shí)時(shí)時(shí)間;溫度傳感器接P1端口的P1.7,測(cè)量外界的溫度;由于51單片機(jī)沒(méi)有IIC接口,可以利用單片機(jī)的P3端口的P3.0和P3.1模擬IIC接口,與AT24C1024連接,每隔一定的時(shí)間存儲(chǔ)測(cè)量的溫度;液晶顯示部分與P0、P2連接。
3 AT24C1024的驅(qū)動(dòng)程序設(shè)計(jì)
AT24C1024的程序有讀和寫(xiě)兩類(lèi)操作,寫(xiě)操作又分為單字節(jié)寫(xiě)入模式和頁(yè)寫(xiě)入模式,單字節(jié)寫(xiě)入是一次寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù),頁(yè)寫(xiě)入允許CPU 在無(wú)需考慮周期時(shí)間的情況下快速、連續(xù)地向EEP2ROM寫(xiě)入多個(gè)字節(jié);在編寫(xiě)程序時(shí)由于單片機(jī)是模擬IIC接口,因此需要編寫(xiě)IIC的開(kāi)始、停止函數(shù):
void start() //開(kāi)始函數(shù)
{
sda=1;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=0;
_nop_();_nop_();_nop_();_nop_();
scl=0;
}
void stop()//停止函數(shù)
{
sda=0;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=1;
_nop_();_nop_();_nop_();_nop_();
sda=0;
}
以及讀寫(xiě)一個(gè)字節(jié)的函數(shù):
void writex(uchar j) //寫(xiě)一個(gè)字節(jié)
{
uchar i,temp;
temp=j;
for (i=0;i<8;i++){
temp=temp<<1;
scl=0;
_nop_();_nop_();_nop_();_nop_();
sda=CY;
_nop_();_nop_();
scl=1;
_nop_();_nop_();
}
scl=0;
_nop_();_nop_();
sda=1;
_nop_();_nop_();
}
uchar readx()//讀一個(gè)字節(jié)
{
uchar i,j,k=0;
scl=0;
_nop_();_nop_();_nop_();_nop_();
sda=1;
for (i=0;i<8;i++)
{
_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
if (sda==1) j=1;
else j=0;
k=(k<<1)|j;
scl=0;
}
_nop_(); _nop_();
return(k);
}
還有寫(xiě)數(shù)據(jù)函數(shù)、讀數(shù)據(jù)函數(shù)、應(yīng)答函數(shù)和非應(yīng)答函數(shù)等,如寫(xiě)數(shù)據(jù)函數(shù):
void x24c02_write(uint address,uchar info)
{
uchar addressH,addressL;
start();
writex(0xa0);
clock();
addressH=(uchar)(address/256);
addressL=(uchar)(address%256);
writex(addressH); //地址高8位
clock();//應(yīng)答信號(hào)
writex(addressL); //地址高8位
clock();
writex(info);
clock();
stop();
delay1(400);
}
4 AT24C1024的調(diào)試與仿真
Proteus 仿真時(shí),單片機(jī)需要加載程序,加載程序?yàn)?HEX 文件。本設(shè)計(jì)利用Keil μVision2, 在新建Keil 項(xiàng)目時(shí)選擇AT89C51 單片機(jī)作為CPU, 將C 語(yǔ)言源程序?qū)耄?在“OptionsFor Target”對(duì)話(huà)窗口中, 選中“Output”選項(xiàng)中的“Create HEX File”,編譯鏈接后就可以生成.HEX 文件。在Proteus ISIS 中,選中AT89C51 并單擊鼠標(biāo)左鍵,對(duì)AT89C52 進(jìn)行設(shè)置,設(shè)置單片機(jī)時(shí)鐘頻率為12MHz,按照正確的文件路徑加載.HEX 文件。對(duì)單片機(jī)設(shè)置完畢后就可以開(kāi)始仿真,本系統(tǒng)仿真以后可得到如圖2所示結(jié)果,可以看到AT24C1024中已經(jīng)把所測(cè)量的溫度存了進(jìn)去(圖中黃色的部分),圖中是每隔10秒中存取一次溫度,掉電溫度數(shù)據(jù)不丟失;本系統(tǒng)也可以存儲(chǔ)DS1302芯片得到的實(shí)時(shí)時(shí)間,得到時(shí)間和溫度的存儲(chǔ)值,掉電不丟失數(shù)據(jù)。
5結(jié)束語(yǔ)
用Proteus軟件如何進(jìn)行輔助可輔助單片機(jī)課程的教學(xué),從中可以看出能改變過(guò)去單片機(jī)課程教學(xué)實(shí)際應(yīng)用的實(shí)例不好講解的困難,可有效的提高教學(xué)的效率和學(xué)生學(xué)習(xí)的積極性,更有利的培養(yǎng)學(xué)生的創(chuàng)新能力和動(dòng)手能力以及學(xué)生更快的單片機(jī)這一門(mén)技術(shù)。
參考文獻(xiàn)
[1]吳金戌 沈慶陽(yáng) 郭庭吉.8051單片機(jī)實(shí)踐與應(yīng)用.北京:清華大學(xué)出版社,2002:1-161.
[2]周潤(rùn)景, 張麗娜. 基于PROTEUS 的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真[ M ]. 北京: 北京航空航天大學(xué)出版社, 2006.
[3]黃夙絢. Proteus 與Ultra Edit、Keil 的聯(lián)合使用[J]. 無(wú)線(xiàn)電, 2005(7):36- 37.
作者簡(jiǎn)介:袁易君(1976-),男,湖南衡陽(yáng)人,講師,碩士,主要從事單片機(jī)技術(shù)和嵌入式系統(tǒng)的研究。