單片機簡單計算器設計方案書與仿真_第1頁
單片機簡單計算器設計方案書與仿真_第2頁
單片機簡單計算器設計方案書與仿真_第3頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、東北大學秦皇島分校自動化工程系自動控制系統(tǒng)課程設計基于單片機地簡易計算器設計與仿真專業(yè)名稱班級學號 學生姓名 指導教師 設計時間自動化5080512張爽王宏偉2011.6.272010.7.8東北大學秦皇島分校自動化工程系自動控制系統(tǒng)課程設計任務書專業(yè): 自動化 班級: 50805姓名: 張爽設計題目:基于單片機地簡易計算器設計與仿真一、設計實驗條件:地 點:自動化系實驗室實驗設備: PC 機( 裝有 Keil ; Protues; Word ; Visio )二、設計任務:本系統(tǒng)選用AT89C5單片機為主控機.通過擴展必要地外圍接口電路,實現(xiàn)對 計算器地設計 , 具體設計如下:(1)由于設計

2、地計算器要進行四則運算 , 為了得到較好地顯示效果 , 經(jīng)綜合分析 后,最后采用LCD顯示數(shù)據(jù)和結果.(2)采用鍵盤輸入方式,鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、X、十)、 清除鍵(onc)和等號鍵(=),故只需要16個按鍵即可,設計中采用集成地計算鍵 盤.(3)在執(zhí)行過程中,開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LCD顯示出來, 當鍵入+、 -、 *、 /運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲 ,并等待再次鍵入數(shù) 值,當再鍵入數(shù)值后將顯示鍵入地數(shù)值,按等號就會在LCDk輸出運算結果.(4) 錯誤提示:當計算器執(zhí)行過程中有錯誤時,會在LCDt顯示相應地提示,如: 當輸入地數(shù)值或計算得到

3、地結果大于計算器地表示范圍時 ,計算器會在LCDk提 示overflow ;當除數(shù)為0時,計算器會在LCDk提示error.設計要求:分別對鍵盤輸入檢測模塊;LCD顯示模塊;算術運算模塊;錯誤處理 及提示模塊進行設計,并用Visio畫系統(tǒng)方框圖,keil與protues仿真 分析其設計結果 .三、設計時間與設計時間安排:1、設計時間: 6月27日7月8日2、設計時間安排:熟悉課題、收集資料:具體設計(含上機實驗) 編寫課程設計說明書: 答辯:四、設計說明書地內(nèi)容:3天(6月27日6月29日)6天(6月30日7月5日)2天(7月6日7月7日)1天(7月8日)1、前言:(自己寫,組員之間不能相同,

4、寫完后將紅字刪除,排版時注意對齊)本設計是基于51系列單片機來進行地數(shù)字計算器系統(tǒng)設計,可以完成計算 器地鍵盤輸入,進行加、減、乘、除基本四則運算,并在LCD上顯示相應地結果; 設計電路采用AT89C51單片機為主要控制電路,利用MM74C922乍為計算器4*4 鍵盤地掃描IC讀取鍵盤上地輸入;顯示采用字符 LCD靜態(tài)顯示;軟件方面使用 C語言編程,并用PROTUE仿真.2、設計題目與設計任務:現(xiàn)實生活中人們熟知地計算器,其功能主要如下:(1)鍵盤輸入;(2)數(shù) 值顯示;(3)加、減、乘、除四則運算;(4)對錯誤地控制及提示.針對上述功能,計算器軟件程序要完成以下模塊地設計:(1)鍵盤輸入檢測

5、模 塊;(2) LCD示模塊;(3)算術運算模塊;(4)錯誤處理及提示模塊.3、主體設計部分:(1)、系統(tǒng)模塊圖:(2)、算術運算程序流程圖:(4)、硬件設計:(一)、總體硬件設計:本設計選用AT89C51單片機為主控單元; 顯示部分:采用LCD靜態(tài)顯示;按鍵部分:采用4*4鍵盤;用MM74C92為4*4鍵盤掃描IC,讀取輸入地鍵值總體設計效果如下圖:UEL口 書呼 Cl * li ID1? i:a'tniPRi / IB4« 咤RKi廠PDIYAUg PD.WD1 POADZ FH PD.P* PUSDf FDJVADfi FD.TMbi.乂說 F32WWI FZMM1 F

6、Z.椒 12 2弐g F3M申 PZJfttSPiurnxi P3.a(PUirTO 陽 HliiTTi3LBTTQ P1ST1F3fiVJTnfrinr”0回回冃EEECHHTE<T(二八單片機接口電路說明:1、手動上電復位電路:當VCC上電時,C充電,在10K電阻上出現(xiàn)電壓,使得單片機復位;幾個毫秒 后,C充滿,10K電阻上電流降為0,電壓也為0,使得單片機進入工作狀態(tài).工作期間,按下S,C放電.S松手,C又充電,在10K電阻上出現(xiàn)電壓,使得單片機復位幾個毫秒后,單片機進入工作狀態(tài)2、內(nèi)部時鐘模式電路:XTTAL2XTTALI當單片機工作于內(nèi)部時鐘模式地時候,只需在XTAL和XTAL

7、引腳連接一個晶 體振蕩器或者陶瓷振蕩器,并接兩個電容后接地即可,在使用時對于電容地選擇 有一定地要求:當外接晶體振蕩器地時候,電容值一般選擇3= C2=30+10p或30-10pF;當外接陶瓷振蕩器地時候,電容值一般選擇3= C2=40+10p或40-10pF;3、AT89C5單片機引腳介紹:VCC 供電電壓.GND接地.P0口 : P0口為一個8位漏級開路雙向I/O 口 ,每腳可吸收8TTL門電流.當P0口地 管腳第一次寫1時,被定義為高阻輸入.P0能夠用于外部程序數(shù)據(jù)存儲 器,它可以被定義為數(shù)據(jù) /地址地第八位在FIASH編程時,P0 口作為 原碼輸入口 ,當FIASH進行校驗時,P0輸出

8、原碼,此時P0外部必須被拉 高P1 口: P1 口是一個內(nèi)部提供上拉電阻地8位雙向I/O 口 ,P1 口緩沖器能接收輸出4TTL門電流.P1 口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1 口 被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉地緣故在FLASH®程和校驗時,P1 口作為第八位地址接收.P2口 : P2口為一個內(nèi)部上拉電阻地 8位雙向I/O 口 ,P2 口緩沖器可接收,輸出4 個TTL門電流,當P2口被寫“ 1 ”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入.并因此作為輸入時,P2 口地管腳被外部拉低,將輸出電流這是由于內(nèi)部上拉地緣故 .P2 口當用于外部程序存儲器或1

9、6位地址外部數(shù)據(jù)存儲器進行存取時,P2 口輸出地址地高八位.在給出地址“ 1”時,它利 用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2 口輸出其特殊功能寄存器地內(nèi)容 .P2 口在FLASH編程和校驗時接收高八位地址 信號和控制信號 .P3口: P3口管腳是8個帶內(nèi)部上拉電阻地雙向I/O 口 ,可接收輸出4個TTL門電流.當P3口寫入“ 1”后,它們被內(nèi)部上拉為高電平,并用作輸入作為 輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL )這是由于上拉 地緣故 .P3口也可作為 AT89C51地一些特殊功能口:P3.0 RXD(串行輸入口) P3.1 TXD (串行輸出口)P3.2

10、 /INTO (外部中斷 0)P3.3 /INT1 (外部中斷1)P3.4 TO (記時器0外部輸入) P3.5 T1 (記 時器1外部輸入)P3.6 /WR (外部數(shù)據(jù)存儲器寫選通) P3.7 /RD (外部數(shù)據(jù)存儲器讀 選通)P3 口同時為閃爍編程和編程校驗接收一些控制信號RST:復位輸入.當振蕩器復位器件時,要保持RST腳兩個機器周期地高電平時 間.ALE/PROG當訪問外部存儲器時,地址鎖存允許地輸出電平用于鎖存地址地 地位字節(jié).在FLASHS程期間,此引腳用于輸入編程脈沖.在平時,ALE端以不變地頻率周期輸出正脈沖信號 , 此頻率為振蕩器頻率地 1/6. 因 此它可用作對外部輸出地脈

11、沖或用于定時目地 . 然而要注意地是:每 當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE永沖.如想禁止ALE地輸出可在SFR8E地址上置0.此時,ALE只有在執(zhí)行 MOVX,MOVC令是ALE才 起作用 . 另外 , 該引腳被略微拉高 . 如果微處理器在外部執(zhí)行狀態(tài) ALE 禁止 , 置位無效 ./PSEN:外部程序存儲器地選通信號.在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效.但在訪問外部數(shù)據(jù)存儲器時,這兩次有效地/PSEN信號將不出現(xiàn)./EA/VPP :當/EA保持低電平時,則在此期間外部程序存儲器(OOOOH-FFFFH),不管是否有內(nèi)部程序存儲器注意加密方式1時,/EA將內(nèi)部鎖

12、定為 RESET當/EA端保持高電平時,此間內(nèi)部程序存儲器在FLASH編程期 間,此引腳也用于施加12V編程電源(VPF).XTAL1 :反向振蕩放大器地輸入及內(nèi)部時鐘工作電路地輸入XTAL2:來自反向振蕩器地輸出.4、單片機與復位、時鐘電路連接電路圖:C3U2.30pF 7EXT>C4口 SvSTAL30pF<TEXT>|-IBillR2 再"Ou1kJ .-TEXT>. >XTAL1PO.O/ADOP0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6F?STP0.7/AD7P2.0/A8P2.VA

13、9P2.2/A10PSENP2.3fA11ALEP2.4/A12EAP2.5/A13P2.6/A14P2 7fA15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/IMT0P1.3P3.3/irrriP1.4P3.4/T0P1.5P3.5mP1.6P3.6/WRP1.7P3.7/RD:29:7oR1DBil12;77:瓦14173921 ;IT23 :25/26 ;2728 :(三)、鍵盤接口電路:計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵地方式 在這種情況下,編程會很簡單,但是會占用大量地I/O 口資源,因此在很多情況下 都不采用這種方式,而是采用矩陣鍵盤

14、地方案矩陣鍵盤采用四條I/O線作為行 線,四條I/O線作為列線組成鍵盤,在行線和列線地每個交叉點上設置一個按鍵 這樣鍵盤上按鍵地個數(shù)就為4X4個.這種行列式鍵盤結構能有效地提高單片機系 統(tǒng)中I/O 口地利用率.矩陣鍵盤地工作原理:計算器地鍵盤布局如圖1所示:一般有16個鍵組成,在單片機中正好可以用一個P 口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中也最常用圖1 矩陣鍵盤布局圖矩陣鍵盤內(nèi)部電路圖如圖2所示:1aii «c _ Qffi一前ntjd° 葩一*11O O-廠BiOOaJIUUIT為了進一步節(jié)省單片機I/O 口資源,我們在設計中使用了 MM74C92芯片.MM74C

15、92是一款4*4鍵盤掃描IC,它可檢測到與之相連地4*4鍵盤地按鍵輸入,并通過數(shù)據(jù)輸出口將按鍵相應地編碼輸出其引腳圖如圖3所示:Pin Assignment for DIPflOWYl ROWV?丄Rawn 24now ¥4 5DSCILLATDH G iKEVBOUNCE NASK COLUMN X4 丄egLUHNXJ 丄上VccDAIA OUT ADATA fl UTSDATA CUI CDATA DUJ oUTPUrrNATFDATA AVAILABLECOLUMftXlCOLtJMM 程Top ViewMM94C922圖3 MM94C22硬件圖MM74C922I 腳說明:Y

16、1Y4 (腳1腳4): 4*4鍵盤第一列至第四.X1X4 (腳11、10、8、7): 4*4鍵盤第一行至第四行.(3) DOADOD Dataout AD,腳 1417):按鍵之 BCD碼輸出,其中 DO/為 LSBQOD 為 MSB.VCC (腳18):電源腳,+3V+15V.ab126計算公式大全GND (腳9):接地管腳.新藝圖庫OSC( Oscillator,腳5):鍵盤掃描電路之頻率所需外加電容地連引腳.KBM(Keyboard Mask,腳6):內(nèi)部消除開關彈跳電路所外加電容地引腳.(8)OE( Output Enable,腳13):芯片使能腳,接低電位可使芯片使能.(9)DA(

17、Data Available,腳12):數(shù)據(jù)有效輸出腳.任一按鍵按下時,此腳位會輸出高電位,按鍵釋放后此腳又會恢復為低電位.MM74C92對各按鍵地響應如下表所示:Truth Tables(Pins 0 through It)Switch Position0Y1.X11nxa23YVX44V2,X15Y2,X26¥2rX37Y2.X4sY3,X19 Y3rX210Y3.X311DAA01010101D101TB00I10C110011AC00fl1l1100DQ0D000000001111UE (Note 1)0000D000Q0D0T(Pir>s 12 through 19)

18、Switch Position12¥4PX11314¥4,X315Y4,X416¥6(Note1rX117 Y5 (Note 1),X218YfifNote I), X319re (Note 1), x+AA0101D101T00011001iAC111100000D11110000UEfNcte 1)D0011IITNote 1:Omrtlof MM 74CH 2如下圖4所示,在本設計中,計算器輸入鍵盤地4條行線、列線分別連接到MM74C92地X1-X4、Y1-Y4引腳,MM74C922地數(shù)據(jù)輸出口與單片機地 P2 口相連,MM74C92地 DA引腳經(jīng)過一個非門

19、連接到單片機地 /INTO腳,當MM74C92檢測 到鍵盤輸入時,DA產(chǎn)生高電平,與之相連地/INTO檢測到低電平,給單片機一個中 斷,單片機從P2 口地低四位讀入鍵盤上按下地鍵地值. (Jr ' r '1'1'''*'' r '"'" B'1' ' r - r -'-F4IK04t?aTg14:U3:B'74 GMIWM74匚興? <TfetV> hcHSDD圖4 鍵盤接口電路圖(四八LCD顯示模塊:本設計采用LCD液晶顯示器來顯示輸出數(shù)據(jù).

20、通過D0-D7引腳向LCD寫指令字或?qū)憯?shù)據(jù)以使LCD實現(xiàn)不同地功能或顯示相應數(shù)據(jù)圖5 LCD模塊(五)運算模塊(單片機控制):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)高智能,高效 率,以及高可靠性!因此

21、我們采用單片機作為計算器地主要功能部件,可以很快地 實現(xiàn)運算功能3.5、軟件編程:1、主函數(shù)設計:函數(shù)聲明/*#in clude<reg51.h>#in clude<math.h> #defi ne uchar un sig ned char #defi ne uint un sig ned int char tran slate(i nt keycode); void arithmetic。;void ini t_LCM();void write_data(char ddata); void write_com(char comma nd); void check_B

22、F();void clearLCD(); void display(l ong a); void dealerror(); void dataoverflow();定義變量和數(shù)組/*long x=0,y=0,num=0;int operators,input,iny=0; char key;char error5="error"char overflow8="overflow"sbit EN=P3A4;sbit R_W=P3A5; sbit RS=P3A6;主函數(shù) */* main()EA=1;EX0=1;IT0=1;P2=0xff; display(0

23、); init_LCM();write_data(0x30); while(1) 2、分塊程序設計: (1)、鍵盤輸入檢測程序設計:有鍵按下時,單片機響應外部中斷 0,轉(zhuǎn)入外部中斷 0中斷處理函數(shù) ,在中斷處理函數(shù)中完成對按鍵地判斷 , 以進行下一步地程序處理鍵值轉(zhuǎn)化為鍵盤上按鍵值函數(shù) */char translate(int keycode)switch(keycode)case 0: return '7' break; case 1: return '4' break; case 2:return '1'break;case 3:return

24、 'c' break;case 4:return '8' break;case 5:return '5' break;case 6:return '2' break;case 7:return '0' break;case 8:return '9' break;case 9:return '6' break;case 10:return '3' break;case 11:return '=' break;case 12:return '/&#

25、39; break;case 13:return '*' break;case 14:return '-' break;case 15:return '+'break;外部中斷 0處理函數(shù) */void INT_0(void) interrupt 0 using 0 key=translate(P2&0x0f);if(key<='9'&&key>='0') / 判斷按下地鍵是否為數(shù)值 num=num*10+(key-'0');if (operators>0)

26、 y=num;iny=1;else x=num;if(num<134217728&&num>-134217728) / 當前數(shù)值是否超出限定范圍 display(num);elsedataoverflow();elseswitch(key)case 'c':x=0; y=0; num=0; iny=0; operators=0; display(num); break;case '=':arithmetic(); iny=0; operators=0; num=0; break;case '+':if (operato

27、rs) arithmetic(); operators=1; num=0; break;case '-':if (operators) arithmetic(); operators=2; num=0; break;case '*':if (operators) arithmetic(); operators=3; num=0; break;case '/':if (operators) arithmetic(); operators=4; num=0; break;(2)、算術運算程序設計:/*算術運算函數(shù) */void arithmetic(

28、)if (iny)switch(operators)case 1: x=x+y;num=x;if(num<134217728&&num>-134217728) display(num);else dataoverflow(); break;case 2: x=x-y;num=x;if(num<134217728&&num>-134217728) display(num);else dataoverflow(); break;case 3:x=x*y;num=x;if(num<134217728&&num>-13

29、4217728) display(num);else dataoverflow(); break;case 4:if (y=0) dealerror(); else x=x/y; num=x; if(num<134217728&&num>-134217728) display(num);else dataoverflow();break;y=0;(3)、LCD顯示程序設計:LCD完成不同功能或利用LCD靜態(tài)顯示,通過程序向LCD寫指令字或數(shù)據(jù)使 顯示相應數(shù)據(jù) .*LCD初始化函數(shù)void init_LCM()write_com(0x30);write_com(0x3

30、0);write_com(0x30);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0e);LCD寫數(shù)據(jù)函數(shù)void write_data(char ddata)RS=1;/* 寫指令 */R_W=0;EN=1;/* 使能信號開 */P仁ddata;/*將數(shù)據(jù)送入pl 口 */EN=O;/*使能信號關*/ check_BF();/*LCD寫指令函數(shù) */void write_com(char command)RS=O;/*寫指令*/R_W=O;EN=1;/*使能信號開*/P仁comma nd;/*將數(shù)據(jù)送入pl 口 */E

溫馨提示

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

評論

0/150

提交評論