




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
基于單片機簡易計算器的設計基于單片機簡易計算器的設計全文共23頁,當前為第1頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第1頁。PAGEPAGE18《單片機課程設計》課程設計報告書課題名稱簡易計算器的設計姓名周運鴻學號2010118010208專業(yè)電氣工程及其自動化指導教師皮大能機電與控制工程學院年月日基于單片機簡易計算器的設計全文共23頁,當前為第2頁。基于單片機簡易計算器的設計全文共23頁,當前為第2頁。摘要近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,但僅單片機方面的知識是不夠的,還應根據(jù)具體硬件結(jié)構(gòu)、軟硬件結(jié)合,來加以完善。計算機在人們的日常生活中是比較常見的電子產(chǎn)品之一。可是它還在發(fā)展之中,以后必將出現(xiàn)功能更加強大的計算機,基于這樣的理念,本次設計是用AT89S51單片機、LCD顯示器、控制按鍵為元件來設計的計算器。利用此設計熟悉單片機微控制器及C語言編程,對其片資源及各個I/O端口的功能和基本用途的了解。掌握keil應用程序開發(fā)環(huán)境,常用的LCD顯示器的使用方法和一般鍵盤的使用方法。關鍵詞:51單片機;LCD;控制按鍵基于單片機簡易計算器的設計全文共23頁,當前為第3頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第3頁。目錄1課程設計內(nèi)容………………………21.1任務內(nèi)容………………………21.2任務分析………………………22計算器設計基本原理………………32.1AT89C51系列單片機簡介……………………32.2LCD顯示模塊…………………62.3運算模塊……………………82.4鍵盤接口電路………………93主程序設計………………………104結(jié)論…………………4系統(tǒng)仿真圖………………………22基于單片機簡易計算器的設計全文共23頁,當前為第4頁。
1.基于單片機簡易計算器的設計全文共23頁,當前為第4頁。1.1任務內(nèi)容本系統(tǒng)就是充分利用了8051芯片的I/O引腳。系統(tǒng)以采用MCS-51系列單片機Intel8051為中心器件來設計計算器控制器,實現(xiàn)了能根據(jù)實際輸入值顯示并存儲的功能,計算程序則是參照教材。至于位數(shù)和功能,如果有需要可以通過設計擴充原系統(tǒng)來實現(xiàn)。具體設計如下:1、由于要設計的是簡單的計算器,可以進行四則運算,為了得到教好的顯示效果,采用LCD顯示數(shù)據(jù)和結(jié)果。2、另外鍵盤包括數(shù)字鍵(0-9)、符號鍵(+、-、*、/)、等號鍵,故只需要16個按鍵即可,設計中采用手焊接的4*4矩陣鍵盤。3、執(zhí)行程序:開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LCD顯示出來,當鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LCD上輸出運算結(jié)果。本計算器是以MCS-51系列8051單片機為核心構(gòu)成的簡易計算器系統(tǒng)。該系統(tǒng)通過單片機控制,實現(xiàn)對4*4鍵盤掃描進行實時的按鍵檢測,并把檢測數(shù)據(jù)存儲下來。整個計算器系統(tǒng)的工作過程為:首先存儲單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機則對數(shù)據(jù)進行儲存與相應處理轉(zhuǎn)換,之后送入LED顯示器動態(tài)顯示。整個系統(tǒng)可分為三個主要功能模塊:功能模塊一,實時鍵盤掃描;功能模塊二,數(shù)據(jù)轉(zhuǎn)換成顯示器顯示;功能模塊三,顯示器動態(tài)顯示。1.2任務分析在本次課程設計中,主要完成如下方面的設計任務:1、簡要闡述單片機技術發(fā)展的國內(nèi)外現(xiàn)狀及LED動態(tài)顯示和矩陣鍵盤基本原理;2、掌握51系列某種產(chǎn)品的最小電路及外圍擴展電路的設計方法;3、了解單片機數(shù)據(jù)轉(zhuǎn)換功能及工作過程;4、完成主要功能模塊的硬件電路設計及必要的參數(shù)確定;基于單片機簡易計算器的設計全文共23頁,當前為第5頁。5、用proteus基于單片機簡易計算器的設計全文共23頁,當前為第5頁。通過本次課題設計,應用《單片機應用基礎》、《計算機應用基礎》等所學相關知識及查閱資料,完成簡易計算器的設計,以達到理論與實踐更好的結(jié)合、進一步提高綜合運用所學知識和設計的能力的目的。2.簡易計算器設計基本原理根據(jù)功能和指示要求,本系統(tǒng)選用以MCS-51單片機為主控機。通過擴展必要的外圍接口電路,實現(xiàn)對計算器的設計。2.189c51系列單片機簡介89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡版本。89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。STC89c51的引腳說明:MCS-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直插DIP結(jié)構(gòu),下圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用?,F(xiàn)在對這些引腳的功能加以說明:如圖2.3所示?;趩纹瑱C簡易計算器的設計全文共基于單片機簡易計算器的設計全文共23頁,當前為第6頁。圖2.1雙列直插式封裝引腳圖Pin9:RESET/Vpc復位信號復用腳,當8051通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”8051的復位方式可以是自動復位,也可以是手動復位。此外,RESET/Vpd還是一復用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM的數(shù)據(jù)不丟失。見下圖2.4為兩種復位方式和兩種時鐘方式:基于單片機簡易計算器的設計全文共基于單片機簡易計算器的設計全文共23頁,當前為第7頁。上電自動復位手動復位電路內(nèi)部時鐘方式外部時鐘方式圖2.2復位方式和時鐘方式硬件系統(tǒng)是指構(gòu)成微機系統(tǒng)的實體和裝置,通常由運算器、控制器、存儲器、輸入接口電路和輸入設備、輸出接口電路和輸出設備等組成。單片機實質(zhì)上是一個硬件的芯片,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展接口電路、外部設備、被控對象等硬件和軟件,才能構(gòu)成一個單片機應用系統(tǒng)。本設計選用以AT89S51單片機為主控單元。顯示部分:采用LCD靜態(tài)顯示。按鍵部分,采用4*4鍵盤。硬件電路原理圖如圖3.1所示:2.2LCD顯示模塊基于單片機簡易計算器的設計全文共23頁,當前為第8頁。本設計采用LCD液晶顯示器來顯示輸出數(shù)據(jù)。LCD的特性有:1、+5V電壓,對比可調(diào)度;2、內(nèi)含復位電路;3、提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種基于單片機簡易計算器的設計全文共23頁,當前為第8頁。本設計通過D0-D7引腳向LCD寫指令字或?qū)憯?shù)據(jù)以使LCD實現(xiàn)不同的功能或顯示相應的數(shù)據(jù)。其接口電路如圖3.3所示。圖2.31602LCD引腳圖表2.4LCD的引腳說明符號引腳說明符號引腳說明VSS電源地DB4DataI/OVDD電源正極(+5V)DB5DataI/OV0液晶顯示偏壓輸入DB6DataI/ORS數(shù)據(jù)/命令選擇端(H/L)DB7DataI/OR/W讀寫控制信號(H/L)E使能信號DB0DataI/ORST復位端(H:正常工作,L:復位)DB1DataI/OVEE負電源輸出(-10V)DB2DataI/OBLA背光源正極(+4.2)DB3DataI/OBLK背光源正極2.3運算模塊基于單片機簡易計算器的設計全文共23頁,當前為第9頁。MCS-51單片機是在一塊芯片中集成了CPU、RAM、ROM、定時器/計數(shù)器和多功能I/O等計算機所需要的基本功能部件。如果按功能劃分,它由以下功能部件組成,即微處理器(CPU),數(shù)據(jù)存儲器(RAM),程序存儲器(ROM/EPROM),并行I/O口,串行口,定時器/計數(shù)器,中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的一些功能,通過使用單片機編寫的程序可以實現(xiàn)高智能、高效率以及高可靠性,因此采用單片機作為計算器的主要功能部件,可以很快的實現(xiàn)基于單片機簡易計算器的設計全文共23頁,當前為第9頁。運算模塊由鍵盤和顯示屏組成。單片機通過按鍵來實現(xiàn)輸入數(shù)據(jù)和操作方式的控制,在運算過程中,對所設的數(shù)據(jù)進行四則運算時,要先確定選用的是哪一個運算符,若是+或*,則要判斷結(jié)果是否會溢出,溢出則顯示錯誤提示,沒有溢出則顯示運算結(jié)果,若是/,則要判斷除數(shù)是否為零,為零時顯示錯誤提示,不為零顯示運算結(jié)果。2.4鍵盤接口電路計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的I/O口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這樣鍵盤上按鍵的個數(shù)就為4×4個。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機系統(tǒng)中I/O口的利用率。矩陣鍵盤的工作原理:計算器的鍵盤布局如圖2所示:一般有16個鍵組成,在單片機中正好可以用一個P口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中也最常用。圖2.5矩陣鍵盤內(nèi)部電路圖基于單片機簡易計算器的設計全文共23頁,當前為第10頁。第三章基于單片機簡易計算器的設計全文共23頁,當前為第10頁。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細介紹KeilC51開發(fā)系統(tǒng)各部分功能和使用。KeilC51單片機軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)C51工具包的整體結(jié)構(gòu),如圖3.1所示,其中uVision與Ishell分別是C51forWindows和forDOS的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標準的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。普通計算器課程序設計://****************************************////通用計算器的編寫,能夠?qū)崿F(xiàn)兩位的加減計算+,-,*,///設計人:周運鴻。指導人:皮大能//2013-6-6#include<reg51.h>#include<string.h>#include"LCD1602.h"#include"keyboard.h"#include"calculation.h"#defineucharunsignedchar#defineuintunsignedintdoublenum[2];ucharsign[2];ucharnumble1[10];ucharnumble2[10];voidmain(){inti=0,j=0,k=0,flag=0,a=0,b,c=0,e=0,opNum=0;longintsum1,sum0;doublesum2;init();基于單片機簡易計算器的設計全文共23頁,當前為第11頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第11頁。while(!mark){matrixkeyscan();}mark=0;while(expression[j]!='='){if(!In(expression[j],OP)) //如否不是運算符就入操作數(shù)棧{if(opNum==0){opNum=expression[j]-48;++j;if(In(expression[j],OP))flag=1;}else{opNum=opNum*10+(expression[j]-48);++j;if(In(expression[j],OP))flag=1;}if(flag==1){num[i]=opNum;opNum=0;i++;flag=0;}}else{ sign[k]=expression[j];++j;k++;}}sum1=Operator(num[0],sign[0],num[1]);sum2=Operator(num[0],sign[0],num[1]);sum0=sum1;while(sum1!=0){numble1[a]=sum1%10+48;sum1=sum1/10;a++;}b=strlen(numble1);基于單片機簡易計算器的設計全文共23頁,當前為第12頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第12頁。for(c=b-1;c>=0;c--){write_data(numble1[c]);delayms(10);}write_data('.');sum2=sum2*1000;sum0=sum2-sum0*1000;numble2[0]=sum0/100+48;numble2[2]=sum0%10+48;numble2[1]=(sum0/10)%10+48;if(numble2[2]>=(5+48))numble2[1]=numble2[1]+1;write_data(numble2[0]);delayms(5);write_data(numble2[1]);delayms(5);while(1);}//**************************//鍵盤掃描程序驅(qū)動//文件名:keyboard.h//**************************#ifndef__keyboard_H__#define__keyboard_H__#include<reg51.h>#include"LCD1602.h"#defineucharunsignedchar#defineuintunsignedintuintmove=0;ucharmark=0;ucharcodetable[]={'0','1','2','3','4','5','6','7','8','9'};ucharexpression[20];ucharcodeOP[]={'+','-','*','/','=','\n'};voidmatrixkeyscan() { uchartemp,key; P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) {delayms(10); temp=P3;基于單片機簡易計算器的設計全文共23頁,當前為第13頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第13頁。 if(temp!=0xf0) {temp=P3; switch(temp) { case0xee:key=0;break; case0xde:key=1;break; case0xbe:key=2;break; case0x7e:key=3;break; } while(temp!=0xf0) {temp=P3; temp=temp&0xf0; } write_data(table[key]); delayms(5); expression[move]=table[key]; move++; } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) {delayms(10); temp=P3; temp=P3&0xf0; if(temp!=0xf0) {temp=P3; switch(temp) {case0xed:key=4;break; case0xdd:key=5;break; case0xbd:key=6;break; case0x7d:key=7;break; } while(temp!=0xf0) {temp=P3; temp=temp&0xf0; }write_data(table[key]);delayms(5);expression[move]=table[key]; move++; }基于單片機簡易計算器的設計全文共23頁,當前為第14頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第14頁。 P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) {delayms(10); temp=P3; temp=P3&0xf0; if(temp!=0xf0) {temp=P3; switch(temp) {case0xeb:key=8;break; case0xdb:key=9;break; case0xbb:key=10;break; case0x7b:key=11;break; } while(temp!=0xf0) {temp=P3; temp=temp&0xf0; }if(key<10){write_data(table[key]);delayms(5);}else{write_data(OP[key-10]);delayms(5);}expression[move]=table[key]; move++; } } P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) {delayms(10); temp=P3; temp=P3&0xf0; if(temp!=0xf0) {temp=P3; switch(temp) {case0xe7:key=12;break; case0xd7:key=13;break; case0xb7:key=14;break; case0x77:key=15;break;基于單片機簡易計算器的設計全文共23頁,當前為第15頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第15頁。 while(temp!=0xf0) {temp=P3; temp=temp&0xf0; }if(key==14)mark=1;write_data(OP[key-10]);delayms(5);expression[move]=table[key]; move++; } } }#endif//***********************************************//LCD1602驅(qū)動程序//文件名:LCD1602.h//***********************************************#ifndef__LCD1602_H__#define__LCD1602_H__#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitlcden=P2^4;sbitlcdrs=P2^5;voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}voidwrite_com(ucharcom){lcdrs=0;P0=com;delayms(5);lcden=1;delayms(5);lcden=0;}voidwrite_data(uchardate){lcdrs=1;基于單片機簡易計算器的設計全文共23頁,當前為第16頁?;趩纹瑱C簡易計算器的設計全文共23頁,當前為第16頁。delayms(5);lcden=1;delayms(5);lcden=0;}voidinit(){lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}#endif//***************************************************//數(shù)學計算程序//文件名:calculation.h//****************************************************#ifndef__calculation_H__#define__calculation_H__#defineucharunsignedchar#defineuintunsignedintdoubleOperator(doublefirst,chartheta,doublesecond){ switch(theta) { case'+': returnfirst+second; break; case'-': returnfirst-second; break; case'*': returnfirst*second; break; case'/': returnfirst/second; break; default: break; }基于單片機簡易計算器的設計全文共23頁,當前為第17頁。基于單片機簡易計算器的設計全文共23頁,當前為第17頁。charIn(charc,char*OP){ inti=0; while(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 禪城區(qū)柴油車道路施工方案
- 高二體育特長生管理協(xié)議
- 先進科室發(fā)言稿
- 技能比賽發(fā)言稿
- 選組長的發(fā)言稿100字
- 新生代表發(fā)言稿大學
- 述職報告-化學質(zhì)控
- 新品營銷季度報告
- 三年級學習總結(jié)
- 趣味運動會的發(fā)言稿
- 2025年度汽車行業(yè)薪資水平及員工激勵機制3篇
- 失語癥的分類及臨床特征
- 循環(huán)流化床鍋爐操作工安全技術操作規(guī)程模版(3篇)
- 2024院感培訓課件
- 2024-2030年中國稅務師事務所行業(yè)管理模式及投資前景展望報告版
- 2024年全國高考英語試題及答案-湖南卷
- 《少兒汽車知識講座》課件
- 部編人教版小學四年級下冊道德與法治全冊教案及每課教學反思
- 中建吊籃安拆專項施工方案(專家論證版)
- 《汽車維修接待實務》 課件全套 孫麗學習情景1-8 汽車維修服務接待認知 -新能源汽車維修接待
- 2020年礦建監(jiān)理工作總結(jié)
評論
0/150
提交評論