仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
近年來,隨著計算機技術及集成電路技術的發展,嵌入式技術日漸普及,在通訊、網絡、工控、醫療、電子等領域發揮著越來越重要的作用。嵌入式系統無疑成為當前最熱門最有發展前途的IT應用領域之一。32位嵌入式系統發展很快,32位單片機已逐漸占領8位機的市場,并以很高的性價比贏得了越來越多的用戶的青睞。隨著科技和工藝的進步,32位單片機的優勢會更加突顯出來,將會成為嵌入式系統的主流。在32位嵌入式系統中,基于ARM的應用占據了大部分份額。
實時時鐘(RTC)器件是一種能提供日歷/時鐘、數據存儲等功能的專用集成電路,常用作各種計算機系統的時鐘信號源和參數設置存儲電路。RTC具有計時準確、耗電低和體積小等特點,特別適用于在各種嵌入式系統忠記錄事件發生的時間和相關信息,尤其是在通信工程、電力自動化、工業控制等自動化程度較高領域的無人職守環境。隨著集成電路技術的不斷發展,RTC器件的新品也不斷推出。這些新品不僅具有準確的RTC,還有大容量的存儲器、溫度傳感器和A/D數據采集通道等,已成為集RTC、數據采集和存儲于一體的綜合功能器件,特別適用于以微控制器為核心的嵌入式系統。
本次設計是采用LPC2138的32位芯片設計的可調萬年歷,具有調時、調分、調月、調日和準點報時的功能。當整點時,蜂鳴器響的次數為當時小時的值以及LED會閃爍相應的次數。
一、功能說明 1
二、系統硬件設計 1
21 系統結構 1
22元器件的選擇 2
三、系統軟件設計 3
31程序和芯片的初始化 3
32構建功能模塊 4
四、實驗測試 7
41IAR軟件的編譯,連接和運行 7
42protues仿真軟件的聯合調試 8
五、實驗結果 9
51仿真結果 9
52實驗板結果 10
六、心得體會 11
七、程序清單 11
一、功能說明
利用內部RTC的實時時鐘,制作一個時鐘,通過液晶顯示模塊顯示年、月、日和時間。K1鍵、K2鍵、K3鍵和K4鍵分別可用于調整月份、日、小時和分鐘數。在調整過程中,日期和時鐘以新的時間為起點繼續刷新顯示。同時,該設計具有整點報時的功能,當整點時,蜂鳴器響的次數為當時小時的值以及LED會閃爍相應的次數。
本設計采用的是OCM128128液晶顯示模塊是128×128點陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標準數據總線、6條控制線及電源線。采用T6963C驅動IC進行控制。本實驗板中采用的是3.3V的液晶模塊,可以直接連接到LPC2138的GPIO上,而不需要進行電平轉換。
二、系統硬件設計2.1 系統結構
本實驗是基于LPC2138ARM處理器而設計的實時時鐘,綜合性較強,涉及到RTC外部中斷,引腳的GPIO功能,C語言編程等知識。
首先要定義P0口為基本I\O功能,然后通過引腳功能選擇寄存器PINSEL0及PINSEL1定義輸入輸出外部中斷口所在的位,另外還要對外部中斷進行初始化,其中有規定他們的優先級,中斷觸發方式,中斷地址分配,
本實驗采用液晶模塊OCM128128同時顯示實時時間,同樣要對他們進行初始化,包括檢查總線忙與閑,傳送地址,傳送數據及顯示函數的編程、
LPC2138微控制器自帶有一個實時時鐘RTC帶日歷和時鐘功能,要使用它也要進行一下的基本操作:
設置RTC基準時鐘分頻器
初始化RTC的時鐘值如,YEAR,MONTH,HOUR等
啟動RTC即CCR的CLKEN位職位
讀取完整時間寄存器值或等待中斷。
陳述完以上的模塊初始化后,下面簡要說明一下程序的流程。先調用以上各個模塊的初始化函數lcd_int(),RTCint()。然后開啟RTC時鐘,并調用LCD顯示函數SendTimetRtc(),如果沒用中斷發生就判斷實時時間是否與以設定的報警時間相同,如果相同就馬上接通蜂鳴器報警并且點亮LED燈。假如有中斷發生,在無效狀態下,馬上給中斷標志寄存器EXTINT對應位,然后寫1清零,然后轉到中斷服務程序。
根據項目要求,確定該系統的設計方案,圖2-1為該系統設計方案的結構框圖。硬件電路由6個部分組成,即ARMLPC2138處理器、時鐘電路、復位電路、液晶顯示模塊、時間調整模塊、整點報時模塊。
2.2元器件的選擇
選用嵌入式arm 7系列的LPC2138芯片和LCDPG128128a顯示器:
三、系統軟件設計
3.1程序和芯片的初始化
程序中包括:Lcd的初始化:
void init_lcd (void)
{
IO0CLR=rst;
IO0SET=rst;
delay1(50);
IO0CLR=ce;
IO0SET=wr;
IO0SET=rd;
wr_xd(addr_w,0x40); //文本顯示區首地址
wr_xd(addr_t,0x42); //圖形顯示區首地址
wr_td(width,0x00,0x41); //文本顯示區寬度
wr_td(width,0x00,0x43); //圖形顯示區寬度
wr_comm(0x81); //邏輯"異或"
wr_td(0x56,0x00,0x22); //CGRAM偏置地址設置
wr_comm(0x9c); //啟用文本顯示,啟用圖形顯示
}
中斷向量的初始化:
VICIntSelect =0x00000000;
VICVectCntl0 = 0x20|13;
VICVectAddr0 = (uint32)RTC_int;
ILR=0x03;
VICIntEnable = (1<<13);
__enable_irq();
RTC的初始化:
void RTC_int(void)
{
uint32 i,h;
uint8hh[2];
h=HOUR;
hh[0] =HOUR /10+0x30;
hh[1] =HOUR% 10+0x30;
clrram(); //清屏
disp_img(0,16,64,nBitmapDot); //顯示圖畫
disp_zf(0,12,"Current Time:");
for(i=0;i<2;i++)
{
disp_zfyg(13+i,12,hh);
}
for(i=0;i<h;i++)
{
IO0CLR=LED;
IO0SET=BEAK;
DelayNS(30);
IO0SET=LED;
IO0CLR=BEAK;
DelayNS(30);
}
ILR = 0x03;
VICVectAddr= 0x00;
clrram(); //清屏
}
3.2構建功能模塊
調整時間和日期的函數
void key()
{
if((IO0PIN&ATH)==0)
{
CIIR=0x00;
HOUR++;
if(HOUR>23)HOUR=0;
CIIR=0x04;
while((IO0PIN&ATH)==0);
}
if((IO0PIN&ATM)==0)
{
CIIR=0x00;
MIN++;
if(MIN>59) MIN=0;
CIIR=0x04;
while((IO0PIN&ATM)==0);
}
if((IO0PIN&ATS)==0)
{
CIIR=0x00;
MONTH++;
if(MONTH>12) MONTH=0;
CIIR=0x04;
while((IO0PIN&ATS)==0);
}
if((IO0PIN&ATD)==0)
{
CIIR=0x00;
DOM++;
CIIR=0x04;
while((IO0PIN&ATD)==0);
}
}
延時函數
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
整點報時函數
void RTC_int(void)
{
uint32 i,h;
uint8 hh[2];
h=HOUR;
hh[0] = HOUR /10+0x30;
hh[1] = HOUR% 10+0x30;
clrram(); //清屏
disp_img(0,16,64,nBitmapDot); //顯示圖畫
disp_zf(0,12,"CurrentTime:");
for(i=0;i<2;i++)
{
disp_zfyg(13+i,12,hh);
}
for(i=0;i<h;i++)
{
IO0CLR=LED;
IO0SET=BEAK;
DelayNS(30);
IO0SET=LED;
IO0CLR=BEAK;
DelayNS(30);
}
ILR = 0x03;
VICVectAddr = 0x00;
clrram(); //清屏
}
輸出字符串函數
void disp_zf(uint32 x,uint32 y,uint8 *str)
{
char c;
wr_xd((addr_w+16*y+x),0x24);
wr_comm(0xb0);
while(*str!='\0')
{
c = (*str);
wr_auto(c-32);
str++;
}
wr_comm(0xb2);
}
輸出一個字符的函數
void disp_zfyg(uint32 x,uint32 y,uint8 str)
{
char c;
wr_xd((addr_w+16*y+x),0x24);
wr_comm(0xb0);
c = str;
wr_auto(c-32);
wr_comm(0xb2);
}
四、實驗測試4.1IAR軟件的編譯,連接和運行
構建完整的程序:
添加頭文件,中斷處理匯編程序段,初始化函數和主函數:
4.2protues仿真軟件的聯合調試
為LPC2138芯片選擇Hex文件路徑:
五、實驗結果5.1仿真結果
5.2實驗板結果
六、心得體會
眾所周知,ARM微處理器功能特別的強大,與MC51單片機相比,它更適合做中高端數字系統的微處理器,ARM已經成了現代主流微處理器內核,目前,絕大多數碼產品,如,手機,MP3,MP4,數碼相機,他們的系統都嵌入了ARM系列內核,ARM微處理器更新換代很快,現在的諾基亞N系列智能手機如N78,N79已經采用了ARM11了,使得運行于塞班操作系統S60第三版的應用程序流暢自如。
回顧起此次設計,至今我仍感慨頗多,從理論到實踐,在整整半個月的日子里,我學到很多很多的東西,不僅鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的內容。通過這次設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才是真正的知識,才能提高自己的實際動手能力和獨立思考的能力。在設計的過程遇到了各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次設計,把以前所學過的知識重新溫故,鞏固了所學的知識。
七、程序清單
全部資料51hei下載地址:
f742b19390cf1f8d6846f64f49a49657.rar
(193.42 KB, 下載次數: 193)
2019-6-10 03:02 上傳
點擊文件名下載附件
1
|