單片機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì).doc_第1頁(yè)
單片機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì).doc_第2頁(yè)
單片機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì).doc_第3頁(yè)
單片機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì).doc_第4頁(yè)
單片機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì).doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余16頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

沈陽(yáng)理工大學(xué)創(chuàng)新實(shí)踐周課程設(shè)計(jì) 摘 要近幾年單片機(jī)技術(shù)的發(fā)展很快,其中,電子產(chǎn)品的更新速度迅猛。計(jì)算器是日常生活中比較常見(jiàn)的電子產(chǎn)品之一。如何才能使計(jì)算器技術(shù)更加的成熟,充分利用已有的硬件和軟件條件,設(shè)計(jì)出更出色的計(jì)算器。本設(shè)計(jì)是以STC89C52單片機(jī)為核心的計(jì)算器模擬系統(tǒng)設(shè)計(jì),輸入采用4*4矩陣鍵盤,可以進(jìn)行加、減、乘、除帶符號(hào)數(shù)字運(yùn)算,并在液晶顯示屏LCD1602上靜態(tài)顯示操作過(guò)程及結(jié)果。關(guān)鍵詞: 單片機(jī); 液晶顯示屏; 計(jì)算器; 矩陣鍵盤19 目 錄 1 背景與意義12 設(shè)計(jì)要求13 方案設(shè)計(jì)與選擇13.1 輸入模塊23.2 顯示模塊34 硬件電路設(shè)計(jì)44.1 系統(tǒng)組成及硬件框圖44.2 計(jì)算器硬件方案及硬件資源分配44.3 鍵盤電路的設(shè)計(jì)44.3 顯示電路的設(shè)計(jì)54.4 電路原理圖65 軟件設(shè)計(jì)75.1 計(jì)算器的軟件規(guī)劃75.2 主模塊的程序設(shè)計(jì)75.3 顯示模塊的程序設(shè)計(jì)85.4 鍵盤模塊的程序設(shè)計(jì)106 總結(jié)11參考文獻(xiàn)12附錄 軟件程序131 背景與意義隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步地提高,尤其是微電子技術(shù)的發(fā)展猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計(jì)算器在人們的日常中是比較常見(jiàn)的電子產(chǎn)品之一,如何使計(jì)算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計(jì)出更出色的計(jì)算器,使其更好地為各個(gè)行業(yè)服務(wù),成了如今電子領(lǐng)域重要的研究課題?,F(xiàn)如今,人們的日常生活中已經(jīng)離不開(kāi)計(jì)算器了,社會(huì)的各個(gè)角落都有它的身影,比如商店、辦公室、學(xué)校因此設(shè)計(jì)一款簡(jiǎn)單實(shí)用的計(jì)算器會(huì)有很大的實(shí)際意義。本設(shè)計(jì)旨在進(jìn)一步掌握單片機(jī)理論知識(shí),理解嵌入式單片機(jī)系統(tǒng)的硬軟件設(shè)計(jì),加強(qiáng)對(duì)實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)的能力。通過(guò)本設(shè)計(jì)的學(xué)習(xí),使我掌握單片機(jī)程序設(shè)計(jì)和微機(jī)接口應(yīng)用的基本方法,并能綜合運(yùn)用本科階段所學(xué)軟、硬件知識(shí)分析實(shí)際問(wèn)題,提高解決畢業(yè)設(shè)計(jì)實(shí)際問(wèn)題的能力,為單片機(jī)應(yīng)用和開(kāi)發(fā)打下良好的基礎(chǔ)。對(duì)字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認(rèn)識(shí),并會(huì)使用LCD(液晶顯示模塊)實(shí)現(xiàn)計(jì)算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動(dòng)和編程,設(shè)計(jì)LCD和單片機(jī)的接口電路,以及利用單片機(jī)對(duì)液晶顯示模塊的驅(qū)動(dòng)和操作;在充分分析內(nèi)部邏輯的概念,進(jìn)行軟件和調(diào)試,學(xué)會(huì)使用,并能夠以其為平臺(tái)設(shè)計(jì)出具有四則運(yùn)算能力簡(jiǎn)易計(jì)算器的硬件電路和軟件程序。2 設(shè)計(jì)要求 實(shí)現(xiàn)普通十進(jìn)制計(jì)算器的功能,按鍵采用實(shí)驗(yàn)箱上的44鍵盤,顯示采用LCD1602顯示器,鍵盤按鍵包括0-9、+、-、*、%和清除按鍵“C”按C后清除LCD屏幕上的顯示。 LCD的第一行顯示運(yùn)算式,第二行顯示運(yùn)算結(jié)果。比如要計(jì)算機(jī)12+34,在鍵盤上按下相應(yīng)鍵后,LCD的第一行顯示“12+34”,按下“=”號(hào)后,LCD的第二行末尾顯示“=46”。其 他功能同普通計(jì)算器相同。 3 方案設(shè)計(jì)與選擇3.1 輸入模塊 方案一:采用獨(dú)立式按鍵作為輸入模塊獨(dú)立式按鍵輸入模塊,其特點(diǎn)是:直接用I/O口構(gòu)成單個(gè)按鍵電路,接口電路配置靈活、按鍵識(shí)別和軟件結(jié)構(gòu)簡(jiǎn)單;但是當(dāng)鍵數(shù)較多時(shí),占用I/O口較多,比較浪費(fèi)資源。其原理圖如圖3-1所示。圖 3-1 獨(dú)立的功能按鍵 方案二:采用矩陣式鍵盤作為輸入模塊矩陣式按鍵輸入模塊,其特點(diǎn)是:電路和軟件稍復(fù)雜,但相比之下,當(dāng)鍵數(shù)越多時(shí),越節(jié)約I/O口,比較節(jié)省資源。其原理圖如圖3-2所示。圖 3-2 矩陣鍵盤輸入本設(shè)計(jì)中的輸入模塊使用的是矩陣鍵盤輸入。鍵盤輸入預(yù)置用于計(jì)算,按鍵較多。若是采用獨(dú)立按鍵,需頻繁按鍵,為軟件設(shè)計(jì)增加負(fù)擔(dān),且操作界面不友好;若是采用矩陣式按鍵,可以方便地輸入一個(gè)數(shù)值,使操作界面更具有人性化,且節(jié)約了寶貴的I/O口資源。通過(guò)對(duì)比,故采用方案二作為系統(tǒng)輸入模塊。3.2 顯示模塊 方案一:采用LED數(shù)碼管靜態(tài)顯示采用LED數(shù)碼管的靜態(tài)顯示,其特點(diǎn)是:其亮度較高;這種顯示方式接口,編程容易且管理簡(jiǎn)單;不足的是,占用的I/O的線資源較多。如果采用單片機(jī)或CPLD/FPGA來(lái)控制的話,勢(shì)必存在浪費(fèi)I/O口資源的問(wèn)題。如圖3-3所示。圖 3-3 4位數(shù)碼管靜態(tài)顯示 方案二:采用LED數(shù)碼管動(dòng)態(tài)顯示采用LED數(shù)碼管的動(dòng)態(tài)顯示,其特點(diǎn)是:其亮度比靜態(tài)顯示的亮度要差一些;但其電路比較簡(jiǎn)單,適合于顯示位數(shù)較多的情況。如圖3-4所示。圖 3-4 4位數(shù)碼管的動(dòng)態(tài)顯示 方案三:采用LCD1602液晶顯示采用LCD1602液晶顯示,其特點(diǎn)是:可以調(diào)節(jié)其背光亮度,這種顯示方式接口,編程雖然有些麻煩,但管理較方便,占用的I/O口資源線也不多。本設(shè)計(jì)中的顯示模塊使用的是LCD1602液晶顯示。在計(jì)算器運(yùn)算中,需顯示的數(shù)字、符號(hào)較多,按很據(jù)個(gè)方面的特點(diǎn),而后可以發(fā)現(xiàn)LCD液晶顯示,雖然在價(jià)格上的確是稍貴于LED數(shù)碼管;但數(shù)碼管在硬件設(shè)計(jì)電路中,會(huì)因線太多、線路復(fù)雜而過(guò)于繁瑣,則舍棄LED數(shù)碼管,選擇LCD液晶顯示。通過(guò)對(duì)比,故采用方案三作為系統(tǒng)顯示模塊。4 硬件電路設(shè)計(jì)4.1 系統(tǒng)組成及硬件框圖 圖4-1 系統(tǒng)組成及硬件框圖4.2 計(jì)算器硬件方案及硬件資源分配主要用到的硬件:?jiǎn)纹瑱C(jī)STC89C52 、液晶顯示屏LCD1602 、4*4按鍵鍵盤。硬件分配:1、P3口:作為輸入口,與鍵盤連接,實(shí)現(xiàn)數(shù)據(jù)的輸入;2、P0、P2口:作為輸出口(P2口為高位,P0口為低位),控制LCD液晶顯示屏顯示數(shù)據(jù)的結(jié)果;3、液晶顯示屏LCD1602顯示輸出。4.3 鍵盤電路的設(shè)計(jì)鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個(gè)以上)和專用驅(qū)動(dòng)芯片的組合;當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動(dòng)、連擊等問(wèn)題,直接輸出按鍵的編碼,無(wú)需系統(tǒng)軟件干預(yù)。通用計(jì)算機(jī)使用的鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口HD7279均可以組成編碼鍵盤,同時(shí)還可以兼顧數(shù)碼管的顯示驅(qū)動(dòng),其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時(shí),采用編碼鍵盤可以簡(jiǎn)化軟件設(shè)計(jì)。非編碼鍵盤成本低廉。從成本角度出發(fā),本設(shè)計(jì)選用的是非編碼鍵盤。如圖4-2所示。圖 4-2 鍵盤電路4.3 顯示電路的設(shè)計(jì)當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LCD液晶顯示屏進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。P0口作為液晶顯示的數(shù)據(jù)端口。最終顯示電路如圖4-3所示。 圖4-3 LCD液晶顯示屏顯示4.4 電路原理圖 圖4-4所示為簡(jiǎn)易計(jì)算器的電路原理圖。P3口用于鍵盤輸入,接4*4矩陣鍵盤,鍵值與鍵盤的對(duì)應(yīng)表如表-所示,p0口和p2口用于顯示,p2口用于顯示數(shù)值的高位,po口用于顯示數(shù)值的低位。圖4-4 簡(jiǎn)易計(jì)算器電路原理圖5 軟件設(shè)計(jì)5.1 計(jì)算器的軟件規(guī)劃 簡(jiǎn)易計(jì)算器的程序主要包括以下功能模塊:1、讀鍵程序、判鍵程序段、運(yùn)算操作子程序等部分;2、基于LCD液晶顯示屏的顯示模塊;3、主模塊,為系統(tǒng)的初始化。5.2 主模塊的程序設(shè)計(jì)主程序主要用來(lái)對(duì)LCD液晶顯示屏進(jìn)行初始化的。計(jì)算器流程圖(如圖5-1)。圖 5-1 主程序框圖void main() uchar i,j; init(); write_cmd(0x80); /將液晶指針定位在第一行第一個(gè)單元 key=15; i=flag1=0; while(1) write_cmd(0x80+0x40); /將液晶指針定位在第二行第一個(gè)單元 jscl(); flag1=0;在以上的程序中“write_cmd(0x80);”,被賦值為“0x80”,則是根據(jù)圖 2-2-6 DDRAM單元地址與顯示屏字符位的對(duì)應(yīng)關(guān)系中便能找到,第一行第一個(gè)單元的值為80H,則第二行第一個(gè)單元的值就為80H+40H,即得出“write_cmd(0x80+0x40);”。5.3 顯示模塊的程序設(shè)計(jì)顯示模塊程序首先要對(duì)顯示模塊進(jìn)行初始化;然后控制光標(biāo)的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設(shè)置清屏、關(guān)閉顯示、歸位、開(kāi)顯示、顯示位置的首地址等等。顯示模塊的流程圖如圖5-2所示。 圖 5-2 顯示程序框圖void jscl() /計(jì)算并顯示函數(shù) uchar i,j,n; for(j=0;jk1+1;j+) /存放第一操作數(shù) for(i=0;ik1-j;i+) for(j=k1+1;j0;i-) /在液晶上顯示結(jié)果 write_data(tablebi-1); 通過(guò)其顯示子程序,發(fā)現(xiàn)要顯示其最終結(jié)果,就必須先存放第一操作數(shù)、第二操作數(shù),之后來(lái)判定使用四則運(yùn)算中的哪一種運(yùn)算,其后進(jìn)行運(yùn)算處理,最后便能在LCD液晶顯示屏上顯示其最終結(jié)果。5.4 鍵盤模塊的程序設(shè)計(jì)鍵盤掃描子程序,首先讀出P3口的低四位,然后讀出P3口的高四位。然后鍵值并顯示緩存。而后,將鍵盤上的值轉(zhuǎn)換為ASCII碼,最后就可以用軟件來(lái)設(shè)置硬件按鍵各個(gè)鍵所代表的內(nèi)容。系統(tǒng)中連接的是4*4行列式按鍵鍵盤,其中“0-9”為數(shù)字鍵;“+、-、*、/、=”為符號(hào)鍵;“C”為功能鍵(清屏鍵),在程序中會(huì)加入一個(gè)記憶功能鍵,而與其搭配的硬件按鍵為符號(hào)鍵中的“=”,以為求方便。數(shù)字鍵按下則將相應(yīng)的數(shù)字送入數(shù)字緩沖區(qū);符號(hào)鍵按下則將送入符號(hào)緩沖區(qū);功能鍵按下則執(zhí)行相應(yīng)的程序;最終進(jìn)行運(yùn)算后,綜合結(jié)果將送入結(jié)果緩沖區(qū),并在LCD液晶顯示屏上顯示出來(lái)。鍵盤模塊程序也可相當(dāng)于一個(gè)中斷服務(wù)子程序,如圖5-3所示。圖 5-3 中斷服務(wù)程序框圖void keyscan() /鍵盤掃描程序 uchar temp,uu=0xf7; uint i; for(i=0;i4;i+) uu=_crol_(uu,1); /_crol_為左移函數(shù) case 0xee: key=0; break; case 0xde: key=1; break; case 0x77: key=15; break; 在以上的程序中,其中的“key=0key=15”是按鍵“0-9、+、-、*、/、=、C”16個(gè)鍵。而“case 0xee: key=0; break;”中,被賦值為“0xee”,則是因?yàn)樾行畔⑹荘3口的低四位,若是按鍵按下為“0”,則P3.0為“0”,P3.1-P3.3為“1”;同時(shí),列信息是P3口的高四位,若是按鍵按下為“0”,則P3.4為“0”,P3.5-P3.7為“1”;由此可得,其被賦值為“0xee”。以此類推,之后一直到“case 0x77: key=15; break;”為止,都是采用相同的方法去賦值的。6 總結(jié) 按照原理圖進(jìn)行元件焊接后可以進(jìn)行簡(jiǎn)單的+、-、*、%運(yùn)算,實(shí)現(xiàn)了課程設(shè)計(jì)的要求,但還有缺陷,如不能進(jìn)行連續(xù)的運(yùn)算,進(jìn)行一次運(yùn)算后不能對(duì)結(jié)果進(jìn)行二次運(yùn)算,有待改進(jìn)。另外,只能進(jìn)行簡(jiǎn)單的四則運(yùn)算,不能進(jìn)行復(fù)雜的科學(xué)計(jì)算,有進(jìn)一步改進(jìn)的空間。下圖為最終完成實(shí)物圖及運(yùn)算結(jié)果。 圖 6-1 最終實(shí)物圖參考文獻(xiàn)1 胡輝.單片機(jī)原理與應(yīng)用.北京水利水電出版社,2007.2 郭天祥.新概念51單片機(jī)c語(yǔ)言教程.電子工業(yè)出版社,2009.3 閻石.數(shù)字電子技術(shù)基礎(chǔ).高等教育出版社,2006.4 傅豐林.陳健.低頻電子線路.高等教育出版社,2008.5 李建忠.單片機(jī)原理及應(yīng)用.西安電子科技大學(xué)出版社,2010.附錄 軟件程序#include#include #define uchar unsigned char#define uint unsigned intsbit lcden=P22;/這是LCD使能端sbit lcdrw=P21;/這是LCD讀寫(xiě)選擇端sbit lcdrs=P20;/這是LCD數(shù)據(jù)命令選擇端uchar code table=0,1,2,3,4,5,6,7,8,9, +,-,*,/,=,.;uchar key,flag1,js,k1,k2;uchar a20,b20;float jieguo=0;void delay(uchar z)/延時(shí)函數(shù) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);void write_cmd(uchar cmd)/LCD寫(xiě)命令函數(shù) lcdrs=0;/寫(xiě)指令控制端為低 P0=cmd; delay(5); lcden=1;/給個(gè)高脈沖結(jié)束 delay(4); lcden=0;void write_data(uchar date)/寫(xiě)數(shù)據(jù)函數(shù) lcdrs=1;/寫(xiě)數(shù)據(jù)控制端高電平 P0=date; delay(5); lcden=1;/給個(gè)高脈沖結(jié)束 delay(5); lcden=0; void init()/液晶初始化函數(shù)lcdrw=0; lcden=0; write_cmd(0x38);/設(shè)置16*2顯示,8位數(shù)據(jù)接口 write_cmd(0x0c);/設(shè)置開(kāi)顯示,不顯示光標(biāo) (關(guān)顯示是0x08) write_cmd(0x06);/寫(xiě)一個(gè)字符后地址指針加1 write_cmd(0x01);/清屏void keyscan()/鍵盤掃描程序 uchar temp,uu=0xf7; uint i; for(i=0;i4;i+) uu=_crol_(uu,1);/_crol_為左移函數(shù) P3=uu; temp=P3; temp=temp&0x0f; if(temp!=0x0f) delay(10); temp=P3;temp=temp&0x0f;if(temp!=0x0f) temp=P3; switch(temp) case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: key=10; break; case 0x7b: key=11; break; case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; while(temp!=0x0f) temp=P3; temp=temp&0x0f; flag1=1; void jscl()/計(jì)算并顯示函數(shù) uchar i,j,n; float s,temp2; long int s1,s2,a1,b1,c1,temp1; a1=b1=1; s1=s2=0; s=0; if(k2!=0) for(j=0;jk1+1;j+)/存放第一操作數(shù) for(i=0;ik1-j;i+) a1=a1*10; s1=s1+aj*a1; a1=1; for(j=k1+1;jk2+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論