基于51單片機(jī)的簡(jiǎn)易計(jì)算器_第1頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器_第2頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器_第3頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器_第4頁(yè)
基于51單片機(jī)的簡(jiǎn)易計(jì)算器_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 目錄 摘要.第一章 緒論. 1.1課題簡(jiǎn)介. 1.2設(shè)計(jì)目的. 1.3簡(jiǎn)易計(jì)算器系統(tǒng)簡(jiǎn)介.第二章 總體電路設(shè)計(jì).第三章 主要模塊介紹. 3.1AT89C51. 3.2LED數(shù)碼管的結(jié)構(gòu)及工作原理. 3.3 矩陣按鍵. 3.4 蜂鳴器模塊.第四章 計(jì)算器系統(tǒng)設(shè)計(jì). 4.1 計(jì)算器硬件. 4.2 系統(tǒng)框圖. 4.3 程序設(shè)計(jì).結(jié)語(yǔ) .參考文獻(xiàn). 摘 要 課程設(shè)計(jì)教學(xué)環(huán)節(jié)是為了學(xué)生能夠更好地鞏固和實(shí)踐所學(xué)專業(yè)知識(shí)而設(shè)置的,在本次課程設(shè)計(jì)中,我以MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用課程中所學(xué)知識(shí)為基礎(chǔ),設(shè)計(jì)了簡(jiǎn)易計(jì)算器。本系統(tǒng)以MCS-51系列中的AT89C51單片機(jī)為核心,能夠?qū)崿F(xiàn)六位數(shù)的四則運(yùn)

2、算。該系統(tǒng)通過(guò)檢測(cè)矩陣鍵盤掃描,判斷是否按鍵,經(jīng)數(shù)據(jù)轉(zhuǎn)換把數(shù)值送入數(shù)碼管顯示。本系統(tǒng)的設(shè)計(jì)說(shuō)明重點(diǎn)介紹了如下幾方面的內(nèi)容:1)基于單片機(jī)簡(jiǎn)易計(jì)算器的基本功能,同時(shí)對(duì)矩陣鍵盤及LED數(shù)碼管顯示原理進(jìn)行了簡(jiǎn)單的闡述;2)介紹了系統(tǒng)的總體設(shè)計(jì)、給出了系統(tǒng)的整體流程框圖,并對(duì)其進(jìn)行了功能模塊劃分及所采用的元器件進(jìn)行了詳細(xì)說(shuō)明;3)對(duì)系統(tǒng)各功能模塊的軟、硬件實(shí)現(xiàn)進(jìn)行了設(shè)計(jì)說(shuō)明。關(guān)鍵詞:MCS-51單片機(jī);計(jì)算器;加減乘除 第一章 緒論1.1課題簡(jiǎn)介單片機(jī)由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域中。在工業(yè)生產(chǎn)中。單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。單

3、片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),特別適用于控制領(lǐng)域,故又稱為微控制器。本系統(tǒng)就是充分利用了51芯片的I/O引腳。系統(tǒng)統(tǒng)采用MSC-51系列單片機(jī)AT89C51為中心器件來(lái)設(shè)計(jì)計(jì)算器控制器。1.2設(shè)計(jì)目的通過(guò)本次工程實(shí)踐,運(yùn)用MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用所學(xué)知識(shí)及查閱相關(guān)資料,完成簡(jiǎn)易計(jì)算器的設(shè)計(jì),達(dá)到理論知識(shí)與實(shí)踐更好結(jié)合、提高綜合運(yùn)用所學(xué)知識(shí)和設(shè)計(jì)能力的目的。通過(guò)本次設(shè)計(jì)訓(xùn)練,可以使我們?cè)诨舅悸泛突痉椒ㄉ蠈?duì)基于MCS-51單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。1.3 簡(jiǎn)易計(jì)算器系統(tǒng)簡(jiǎn)介本計(jì)算器是以MCS-51系列AT89C51單片機(jī)為核心構(gòu)成的簡(jiǎn)易計(jì)算

4、器系統(tǒng)。該系統(tǒng)通過(guò)單片機(jī)控制,實(shí)現(xiàn)對(duì)4*4鍵盤掃描進(jìn)行實(shí)時(shí)的按鍵檢測(cè),并把檢測(cè)數(shù)據(jù)存儲(chǔ)下來(lái)。整個(gè)計(jì)算器系統(tǒng)的工作過(guò)程為:首先存儲(chǔ)單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機(jī)則對(duì)數(shù)據(jù)進(jìn)行儲(chǔ)存與相應(yīng)處理轉(zhuǎn)換,之后送入LED數(shù)碼管顯示。整個(gè)系統(tǒng)可分為三個(gè)主要功能模塊:功能模塊一,實(shí)時(shí)鍵盤掃描;功能模塊二,數(shù)據(jù)轉(zhuǎn)換為了數(shù)碼管顯示;功能模塊三,LED數(shù)碼管顯示。 第二章 總體電路設(shè)計(jì)本次設(shè)計(jì)采用AT89C51單片機(jī)作為控制芯片,采用單片機(jī)上的按鍵來(lái)模仿輸入信號(hào)。通過(guò)鍵盤掃描將輸入按鍵信號(hào)讀入單片機(jī),根據(jù)按鍵的號(hào)碼進(jìn)行不同的顯示,并通過(guò)蜂鳴器發(fā)出信號(hào)。顯示模塊則利用六位八段數(shù)碼管

5、,進(jìn)行按鍵號(hào)碼的顯示。 本系統(tǒng)功能由硬件和軟件兩大部分協(xié)調(diào)完成,硬件部分主要完成按鍵輸入的模擬、蜂鳴器的驅(qū)動(dòng)、按鍵號(hào)碼的顯示等功能;而軟件主要完成對(duì)按鍵輸入的掃描、中斷對(duì)數(shù)據(jù)初始化及數(shù)碼顯示管的顯示控制等功能。 第三章 主要模塊介紹3.1 AT89C51簡(jiǎn)介 AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATM

6、EL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C51是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 圖1 AT89C51芯片內(nèi)部引腳圖 3.2 LED數(shù)碼管的結(jié)構(gòu)及工作原理 LED數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電極。LED數(shù)碼管常用段數(shù)一般為7段有的另加一個(gè)小數(shù)點(diǎn),還有一種是類似于3位“+

7、1”型。位數(shù)有半位,1,2,3,4,5,6,8,10位等等.,LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽(yáng)兩類,了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。圖4.5是共陰和共陽(yáng)極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍(lán),黃等幾種。LED數(shù)碼管廣泛用于儀表,時(shí)鐘,車站,家電等場(chǎng)合。選用時(shí)要注意產(chǎn)品尺寸顏色,功耗,亮度,波長(zhǎng)等。下面將介紹常用LED數(shù)碼管內(nèi)部引腳圖。 圖2 這是一個(gè)八段兩位帶小數(shù)點(diǎn)10引腳的LED數(shù)碼管每一筆劃都是對(duì)應(yīng)一個(gè)字母表示 DP是小數(shù)點(diǎn).數(shù)碼管分為共陽(yáng)極的LED

8、數(shù)碼管、共陰極的LED數(shù)碼管兩種。下圖例舉的是共陽(yáng)極的LED數(shù)碼管,共陽(yáng)就是8段的顯示字碼共用一個(gè)電源的正。LED數(shù)碼管原理圖示意如圖3: 圖3 LED數(shù)碼管原理圖 從上圖可以看出,要是數(shù)碼管顯示數(shù)字,有兩個(gè)條件:1、是要在VT端(3/8腳)加正電源;2、要使(a,b,c,d,e,f,g,dp)端接低電平或“0”電平。這樣才能顯示的。共陽(yáng)極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖: 圖4 共陽(yáng)極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖:圖5 共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖表1 顯示數(shù)字對(duì)應(yīng)的二進(jìn)制電平信號(hào)LED數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們

9、要的數(shù)位,因此根據(jù)LED數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。靜態(tài)顯示驅(qū)動(dòng): 靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)位轉(zhuǎn)換器進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O口多。3.3 矩陣按鍵 鍵盤是單片機(jī)系統(tǒng)中最常用的人機(jī)對(duì)話輸入設(shè)備,用戶通過(guò)鍵盤向單片機(jī)輸入數(shù)據(jù)或指令。鍵盤控制程序需完成的任務(wù)有:監(jiān)測(cè)是否有鍵按下,有鍵按下時(shí),在無(wú)硬件去抖的動(dòng)電路時(shí),應(yīng)用軟件延時(shí)方法消除按鍵抖動(dòng)影響;當(dāng)有多個(gè)鍵同時(shí)按下時(shí),只處理一個(gè)按鍵,不管一次按鍵持續(xù)多長(zhǎng)時(shí)間,僅執(zhí)行一次按鍵功能程序。矩陣按鍵掃描

10、程序是一種節(jié)省IO口的方法,按鍵數(shù)目越多節(jié)省IO口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡(jiǎn)單的方法,使得程序效率最高。本程序中,如果檢測(cè)到某鍵按下了,就不再檢測(cè)其它的按鍵,這完全能滿足絕大多數(shù)需要,又能節(jié)省大量的CPU時(shí)間。本鍵盤掃描程序的優(yōu)點(diǎn)在于:不用專門的按鍵延時(shí)程序,提高了CPU效率,也不用中斷來(lái)掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時(shí)最短,不論有鍵按下或者無(wú)鍵按下都可以在很短的時(shí)間完成一次掃描。 圖6 矩陣鍵盤電路圖3.4 蜂鳴器模塊單片機(jī)的P0.7經(jīng)三極管驅(qū)動(dòng)揚(yáng)聲器,當(dāng)有按鍵輸入時(shí),

11、單片機(jī)P0.7輸出低電平,與此引腳相連的PNP型三極管基電極也為低電平,三極管導(dǎo)通,壓電蜂鳴器兩端獲得+5V電壓而鳴叫;當(dāng)P0.7輸出高電平時(shí),三極管截止,蜂鳴器停止發(fā)聲。蜂鳴器模塊如圖3.9所示: 圖7蜂鳴器模塊電路原理圖 第四章 計(jì)算器系統(tǒng)設(shè)計(jì)4.1 計(jì)算器硬件AT89C51單片機(jī)一片,4*4鍵盤一個(gè),6位共陽(yáng)極的八段數(shù)碼管一個(gè),連線和電阻和開關(guān)若干。51單片機(jī)的P2口作鍵盤口,其中為鍵盤掃描輸出線,為鍵盤掃描輸入線。鍵盤由4*4共16個(gè)按鍵組成,10個(gè)數(shù)字鍵(由0-9組成)5個(gè)運(yùn)算符號(hào)(加減乘除等于)組成,1個(gè)清除鍵(作用相當(dāng)于整體復(fù)位)。6個(gè)數(shù)碼管用于顯示當(dāng)前數(shù)值的十萬(wàn),萬(wàn),千,百,十

12、,個(gè),P1口接6個(gè)數(shù)碼管的八段,P0口分別接6個(gè)數(shù)碼管的公共端,P1口輸出數(shù)碼管的字形碼,P0口輸出數(shù)碼管的字位碼。4.2 系統(tǒng)框圖:1.主程序流程圖圖8 主程序流程圖2.鍵盤掃描流程圖 圖9 鍵盤掃描流程圖4.3 程序設(shè)計(jì)#include#define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27;sbit beep=P23;uchar temp,key;uchar fun;long int num1,num2,res;uchar aa,dis;uchar code table=0x00,0x3

13、f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code weixuan=0xdf,0xef,0xf7,0xfb,0xfd,0xfe;void delay(unsigned char i)uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void bee()beep=0;delay(255);delay(255);beep=1;key_scan() P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0

14、) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xed:

15、 key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: key=10; b

16、reak; case 0x7b: key=11; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; while(temp!=0xf0) temp=P

17、3; temp=temp&0xf0; void Init()num1=0;num2=0;wela=1;P0=0xdf;wela=0;dula=1;P0=table1;dula=0;key=16;aa=0;dis=0;res=0;void dis_play(long int nm)uchar a1,a6;long int shu;shu=nm;if(shu=0) wela=1; P0=0xdf; wela=0; dula=1; P0=table1; dula=0;elsefor(a6=0;a6=10)switch (key) case 10:Init();break; / CE case 11:

18、 switch (fun) case 0:res=num1+num2,dis=2;break; case 1:res=num1-num2,dis=2;break; case 2:res=num1*num2,dis=2;break; case 3:res=num1/num2,dis=2;break; ;break; / = case 12:fun=0,aa=1,shanshuo();break; / + case 13:fun=1,aa=1,shanshuo();break; / - case 14:fun=2,aa=1,shanshuo();break; / * case 15:fun=3,aa=1,shanshuo();break; / / else switch (aa) case 0:num1=num1*10+key; ;break; case 1:dis=1;num2=num2*10+key; ;break; key=16;void main()Init();

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論