單片機技術(shù)課程設(shè)計--簡易計算器_第1頁
單片機技術(shù)課程設(shè)計--簡易計算器_第2頁
單片機技術(shù)課程設(shè)計--簡易計算器_第3頁
單片機技術(shù)課程設(shè)計--簡易計算器_第4頁
單片機技術(shù)課程設(shè)計--簡易計算器_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課設(shè)報告題 目: 簡易計算器班 級: 姓 名: 學(xué) 號: 指導(dǎo)老師: 日 期: 2021 年 10月 11 日 目錄一前言1二課程設(shè)計的目的和要求121課程設(shè)計的目的12.2課程設(shè)計要求1三總體設(shè)計2根本工作原理2系統(tǒng)組成單元2四硬件設(shè)計鍵盤輸入局部4簡易計算器的電路原理圖4系統(tǒng)選用的主要元器件54.2.1 AT89C51簡介 54.2.2 LCD顯示器(1602)56五軟件設(shè)計6六 心得體會7七源程序8一前言單片機課程設(shè)計是單片機原理課程的實踐性環(huán)節(jié)。是在我們學(xué)習(xí)了?單片機原理?等課程的根底上進行的綜合性訓(xùn)練,我們組這次訓(xùn)練的課題是基于單片機簡易計算器。此次課程設(shè)計的課題是針對我們

2、學(xué)習(xí)?單片機原理?這門課程的根底上,并在其輔助下完成的。此次進行的綜合性訓(xùn)練,不僅培養(yǎng)了我如何合理運用課本中所學(xué)到的理論知識與實踐緊密結(jié)合,獨立解決實際問題的能力二課程設(shè)計的目的和要求21課程設(shè)計的目的首先,綜合運用單片機原理與接口技術(shù)課程中所學(xué)到的理論知識來獨立完成此次設(shè)計課題,培養(yǎng)我們查閱手冊和文獻資料的良好習(xí)慣,以及培養(yǎng)我們獨立分析和解決實際問題的能力。其次,在學(xué)習(xí)了理論知識的根底上進一步熟悉常用電子器件的類型和特征,并掌握合理選用的原那么。再次,就是學(xué)會電子電路的安裝與調(diào)試技能,以及與同組的組員的團結(jié)合作的精神。2.2課程設(shè)計要求利用89c51作為主控器組成一個四那么運算的計算器。三總

3、體設(shè)計根本工作原理本設(shè)計利用AT89C51單片機來控制液晶顯示器和矩陣式鍵盤,實現(xiàn)了簡易的計算器功能。通過鍵盤輸入需要計算的計算式子,該式子會顯示在液晶的第一行,當(dāng)鍵入等于號后,計算結(jié)果會顯示在液晶的第二行。本設(shè)計中液晶選用1602字符型液晶顯示器,顯示參與運算的數(shù)字以及最終的運算結(jié)果,鍵盤采用4*4矩陣式鍵盤。系統(tǒng)組成單元中央處理單元CPU選用AT89C51對整個系統(tǒng)進行控制:它將數(shù)據(jù)輸出到顯示屏,實現(xiàn)鍵入、輸出的顯示;根據(jù)鍵盤輸入調(diào)用相應(yīng)鍵處理子程序,實現(xiàn)數(shù)據(jù)的計算;單片機的管腳如下所述:AT89C51的管腳分布如下:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/

4、O口,每腳可吸收8TTL門電流。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有

5、效的/PSEN 3信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,那么在此期間外部程序存儲器0000H-FFFFH,不管是否有內(nèi)部程序存儲器。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。電源電路局部在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成局部,它是電子設(shè)備唯一能量來源,它的設(shè)計思路是根據(jù)我們以前學(xué)過的模電電子技術(shù),要想得到我們所要的+6V輸出電壓,就需將交流220V的電壓經(jīng)過變壓器、整流電路、濾波電路和穩(wěn)壓電路四個局部。LCD輸出顯示局部1602采用標(biāo)準(zhǔn)的16腳接口,其管腳功能介紹如下:1:VSS為電源地2:VDD接5V電源正極3:V0

6、為液晶顯示器比照度調(diào)整端,接正電源時比照度最弱,接地電源時比照度最高。4:RS為存放器選擇,高電平1時選擇數(shù)據(jù)存放器、低電平0時選擇指令存放器。 5:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 6:E(或EN)端為使能(enable)端。714:D0D7為8位雙向數(shù)據(jù)端。1516:空腳或背燈電源。15腳背光正極,16腳背光負極。四硬件設(shè)計鍵盤輸入局部矩陣式鍵盤由行線和列線組成,按鍵位于行和列的交叉點上,很明顯,在所需按鍵數(shù)量較多時能節(jié)省很多的I/O口。簡易計算器的電路原理圖系統(tǒng)選用的主要元器件4.2.1 AT89C51簡介 AT89C51是一種帶4K 字節(jié)

7、FLASH 存儲器FPEROMFlash Programmable and Erasable Read Only Memory的低電壓、高性能CMOS 8位 微處理器,俗稱 單片機。AT89C2051是一種帶2K 字節(jié)閃存可編程可擦除 只讀存儲器的 單片機。 單片機的可擦除 只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失 存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍 存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51 單片機為很多 嵌入式控制系統(tǒng)提供了

8、一種靈活性高且價廉的方案。4.2.2 LCD顯示器(1602) 工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。16列2行1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由假設(shè)干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形用自定義CGRAM,顯示效果也不好。 1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊顯示字符和數(shù)字。 按鈕開關(guān)(SW-PB),排阻9管腳,1k,電阻、電容、晶振

9、、發(fā)光二極管等假設(shè)干。五軟件設(shè)計該計算器系統(tǒng)的軟件設(shè)計分為以下幾個模塊:(1)主程序模塊,(2)鍵盤掃描及識別子程序,(3)顯示子程序,(4)計算程序。6 得體會 此次課程設(shè)計我和同學(xué)通過團隊合作完成,從中知道以及團隊合作的重要性。本次課程設(shè)計用到了單片機的多塊模塊,團隊分工完成彼此的模塊,從而提高團隊合作的效率。實驗的完成讓我更加了解單片機的編程和單片機的各個模塊的工作方式。七源程序如下:#include<reg51.h>#include<intrins.h>#define int8 unsigned char#define int16 unsigned intsbi

10、t EN=P23; /定義引腳sbit RS=P24;sbit RW=P20;sbit busy=P07;char code num= 7,8,9,'*', 4,5,6,'/', 1,2,3,'-', 'c',0,'=','+'char code num1='0','1','2','3','4','5','6','7','8','9'stat

11、ic char ckey; /當(dāng)前按鍵字符long a,b;/前后兩數(shù) char flag;/是否有符號鍵按下char f;/判斷按下的是什么符號鍵(+,-,*,/)long result;/運算結(jié)果static int16 c=0;/字符顯示位置void delay_ms(int8 z); / 延遲函數(shù)void wait_busy();/忙等待void write_cmd(int8 cmd);/寫指令void write_data(int8 dat);/寫數(shù)據(jù)void Initialize_LCD(); /1602 初始化void LCD_ShowString(int8 r, int8 c,

12、int8 *str); /在指定位置顯示字符串void keyboard();/鍵盤按鍵掃描void digit_a();/加減乘除處理void digit_b();/a和b運算的結(jié)果在1602上顯示void digit_c();/把輸入的數(shù)存入到a和b/-/名稱:lcd1602液晶屏控制與顯示程序/-/-/延時/-void delay_ms(int8 z) / 延遲函數(shù)int8 y;for(z;z>0;z-)for(y=0;y<110;y+); /-/忙等待/-void wait_busy() do P0=0XFF; RS=0; RW=1; EN=0; delay_ms(1);

13、EN=1; while(busy=1);/-/寫指令/-void write_cmd(int8 cmd) P0=cmd; RS=0; RW=0; EN=0; wait_busy(); EN=1; /-/寫數(shù)據(jù)/-void write_data(int8 dat) P0=dat; RS=1; RW=0; EN=0; wait_busy(); EN=1; /-/1602 初始化/-void Initialize_LCD() write_cmd(0x38); write_cmd(0x0c); write_cmd(0x06); write_cmd(0x80); write_cmd(0x01); a=0

14、;b=0; flag=0; result=0; c=0; ckey=0;/-/在指定位置顯示字符串/-void LCD_ShowString(int8 r, int8 c,int8 *str) int8 i=0; code int8 DDRAM=0X80,0XC0; write_cmd(DDRAMr | c); for(i=0;stri && i<16;i+) write_data(stri); for(;i<16;i+) write_data(' ');/-/鍵盤按鍵掃描/-void keyboard() int16 h_code,l_code,k

15、ey_code; P3=0xf0; h_code=P3; h_code=h_code&0xf0; delay_ms(200); P3=0x0f; l_code=P3; l_code=l_code&0x0f; delay_ms(200); key_code=h_code|l_code; if(key_code!=0xFF) switch(key_code) case 0xee: LCD_ShowString(0,c+,"7");ckey=num0;digit_c(); break; /輸入字符7 case 0xde: LCD_ShowString(0,c+,&

16、quot;8");ckey=num1;digit_c(); break; /輸入字符8 case 0xbe: LCD_ShowString(0,c+,"9");ckey=num2;digit_c(); break; /輸入字符9 case 0x7e: LCD_ShowString(0,c+,"*");flag=1;f=0; break; /輸入字符* case 0xed: LCD_ShowString(0,c+,"4");ckey=num4;digit_c();break; /輸入字符4 case 0xdd: LCD_Sho

17、wString(0,c+,"5");ckey=num5;digit_c(); break; /輸入字符5 ; case 0xbd: LCD_ShowString(0,c+,"6");ckey=num6;digit_c();break; /輸入字符6 case 0x7d: LCD_ShowString(0,c+,"/");flag=1;f=1; break; /輸入字符 case 0xeb: LCD_ShowString(0,c+,"1");ckey=num8;digit_c(); break; /輸入字符1 cas

18、e 0xdb: LCD_ShowString(0,c+,"2");ckey=num9; digit_c(); break; /輸入字符2 case 0xbb: LCD_ShowString(0,c+,"3");ckey=num10;digit_c(); break; /輸入字符3 case 0x7b: LCD_ShowString(0,c+,"-");flag=1;f=2; break; /輸入字符- case 0xe7: flag=0;f=4;digit_a();break; /輸入字符c case 0xd7: LCD_ShowString(0,c+,"0");ckey=num13;digit_c();break; /輸入字符0 case 0xb7: digit_a();break; /輸入字符= case 0x77: LCD_ShowString(0,c+,"+");flag=1;f=3; break; /輸入字符+ default : break; if(c>15) c=0; /-/ 數(shù)據(jù)處理/-void d

溫馨提示

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

評論

0/150

提交評論