單片機(jī)課程設(shè)計報告(共11頁)_第1頁
單片機(jī)課程設(shè)計報告(共11頁)_第2頁
單片機(jī)課程設(shè)計報告(共11頁)_第3頁
單片機(jī)課程設(shè)計報告(共11頁)_第4頁
單片機(jī)課程設(shè)計報告(共11頁)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)實(shí)訓(xùn)報告 簡易計算器姓 名 * 學(xué) 號 * 專 業(yè) * 學(xué) 校 * 指導(dǎo)教師 * 實(shí)訓(xùn)時間 2014.06.23-2014.06.29 目錄中文摘要1關(guān)鍵詞 1 2.1 方案論證1 2.2 系統(tǒng)框圖23 控制軟件設(shè)計 2 3.1 程序時序總圖 2 3.2 液晶顯示軟件設(shè)計3 3.3 鍵盤輸入軟件設(shè)計 5 3.4 計算函數(shù)設(shè)置 74 軟件調(diào)試8個人小結(jié)8參考文獻(xiàn)9附錄9專心-專注-專業(yè)摘 要:計算器是人們的日常生活中是最常見的電子產(chǎn)品之一,它應(yīng)用極廣、發(fā)展迅猛,并且不斷出現(xiàn)著擁有更加強(qiáng)大功能的計算器。為了解和研究計算器,本次實(shí)訓(xùn)設(shè)計制作了一個簡易計算器,能夠在五位

2、的計算范圍內(nèi)進(jìn)行“+”、“-”、“*”、“/”的基本運(yùn)算,能進(jìn)行負(fù)數(shù)的精確結(jié)果顯示。該計算器以AT89C51單片機(jī)芯片作為核心。采用LCD1602工業(yè)字符液晶進(jìn)行顯示。完成的計算器經(jīng)過檢驗(yàn)?zāi)軌蛲暾膶?shí)現(xiàn)預(yù)設(shè)功能,各種細(xì)節(jié)完善,具有很高的使用價值。關(guān)鍵詞:單片機(jī);簡易計算器;AT89C51;LCD16021實(shí)訓(xùn)任務(wù)1.1 主要功能設(shè)計以AT89C51單片機(jī)芯片為核心來制作一個簡易計算器,外部由4*4矩陣鍵盤和一個LCD1602工業(yè)字符型液晶顯示屏構(gòu)成,內(nèi)部由一塊AT89C51單片機(jī)構(gòu)成,通過軟件編程可實(shí)現(xiàn)簡單加減乘除。1.2 任務(wù)目的通過本次實(shí)訓(xùn)提高我們的單片機(jī)硬件設(shè)計、軟件編程能力,自主學(xué)習(xí)到

3、更多的單片機(jī)應(yīng)用知識。2 整體設(shè)計方案2.1 方案論證計算器電路包括三個部分:顯示電路、4*4鍵掃描電路、單片機(jī)微控制電路。 具體如下:(1)LCD顯示電路LCD1602作為一個成熟的產(chǎn)品,使用簡單,模式固定,便于移植到各種類型的程序,但是初學(xué)者往往要注意結(jié)合LCD本身的時序圖來完善初始化程序。又以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點(diǎn),故采用LCD.(2)4*4鍵盤掃描電路對鍵盤上的某一行送低電平,其他行為高電平,然后讀取列值。若列值中有一位是低,則表明該行與低電平對應(yīng)列的鍵被按下;否則,掃描下一行。根據(jù)讀到的值組合就可以查表1 得到的鍵碼,因?yàn)榫幊痰姆绞?,本次?shí)訓(xùn)采用逐行掃描來

4、讀取鍵值,方便程序編寫。(3)單片機(jī)微控制電路:微控制電路就是以AT89C51為核心的控制核心,主要注意晶振電路的接法和復(fù)位電路的接法。2.2 系統(tǒng)框圖51系列單片機(jī)系統(tǒng)4*4鍵盤LCD顯示 時鐘電路復(fù)位電路系統(tǒng)框圖3 控制軟件設(shè)計:實(shí)訓(xùn)中采用C語言對單片機(jī)進(jìn)行編程,采用的是自下而上的設(shè)計方式,先設(shè)計出每一個模塊(子程序),然后再慢慢擴(kuò)大,最后組成程序。3.1 程序總時序圖3.2 液晶顯示軟件設(shè)計(1)顯示流程液晶初始化調(diào)用顯示字序液晶顯示結(jié)束開始(2)1602液晶顯示時序圖,通過時序圖,所有編程問題都可以得以解決。(3)由時序圖可以寫出液晶的初始化函數(shù)、功能設(shè)置函數(shù)、清屏函數(shù)、寫指令函數(shù)、寫

5、數(shù)據(jù)函數(shù)。void delay1() /采用軟件實(shí)現(xiàn)延時,5個機(jī)器周期_nop_();_nop_();_nop_();void int1() /LCD初始化lcd_w_cmd(0x3c);lcd_w_cmd(0x0c);lcd_w_cmd(0x01);lcd_w_cmd(0x06);lcd_w_cmd(0x80);unsigned char lcd_r_start() /讀狀態(tài)字unsigned char s;RW=1;delay1();RS=0;delay1();E=1;delay1();s=P1;delay1();E=0;delay1();RW=0;delay1();return(s);v

6、oid lcd_w_cmd(unsigned char com) /寫命令字unsigned char g;dog=lcd_r_start();g=g&0x80;delay(2);while(g!=0);RW=0;delay1();RS=0;delay1();E=1;delay1();P1=com;delay1();E=0;delay1();RW=1;delay(255);void lcd_w_dat (unsigned char dat) /寫數(shù)據(jù)unsigned char g;dog=lcd_r_start();g=g&0x80;delay(2);while(g!=0);R

7、W=0;delay1();RS=1;delay1();E=1;delay1();P1=dat;delay1();E=0;delay1();RW=1;delay(255);3.3 鍵盤輸入軟件設(shè)計(1)鍵盤輸入程序運(yùn)行時序圖(2)鍵盤掃描程序unsigned char scan_key()unsigned char i,temp,m,n,k;bit find=0;P0=0xff;k=0x01;for(i=0;i<4;i+)P2=k;temp=P0;temp=temp&0x0f;k<<=1;if(temp!=0x00)m=i;find=1;switch(temp)case

8、 0x01:n=0;break;case 0x02:n=1;break;case 0x04:n=2;break;case 0x08:n=3;break;default:break;if(find=0) return 0xff;else return(n*4+m);3.4 計算函數(shù)設(shè)置因?yàn)橹挥?6個健,所以計算上只設(shè)計了加減乘除的功能,下面是幾個計算的程序unsigned int jian() /減法函數(shù)if(a>=b)q=0;return(a-b);if(a<b)q=1;return(b-a);if(a2i<10&&m=0) /第一個數(shù)a=a*10+a2i;i

9、f(a2i!=14&&a2i>9) /四則運(yùn)算的判斷m=1; w=a2i;if(a2i<10&&m=1) /第二個數(shù)b=b*10+a2i;if(a2i=13|o=1) /清零o=0;lcd_w_cmd(0x01);lcd_w_cmd(0x80);a=0;b=0;wan=0;qian=0;bai=0;shi=0;ge=0;m=0;sum=0;if(a2i=14) /等號l+;p=jian(); /調(diào)用減法函數(shù)switch(w)case 10:sum=a/b;break; /除法case 11:sum=a*b;break; /乘法case 12:sum=

10、p;if(q=1)lcd_w_dat('-');break; /減法case 15:sum=a+b;break; /加法default:break;wan=sum/10000; /萬位qian=(sum-wan*10000)/1000; /千位bai=(sum-wan*10000-qian*1000)/100; /百位shi=(sum-wan*10000-qian*1000-bai*100)/10; /十位ge=sum%10; /個位if(wan!=0) /萬位顯示lcd_w_dat(a1wan);lcd_w_dat(a1qian);lcd_w_dat(a1bai);lcd_w

11、_dat(a1shi);lcd_w_dat(a1ge);if(wan=0&&qian!=0) /千位顯示lcd_w_dat(a1qian);lcd_w_dat(a1bai);lcd_w_dat(a1shi);lcd_w_dat(a1ge);if(wan=0&&qian=0&&bai!=0) /百位顯示lcd_w_dat(a1bai);lcd_w_dat(a1shi);lcd_w_dat(a1ge);if(wan=0&&qian=0&&bai=0&&shi!=0) /十位顯示lcd_w_dat(a1s

12、hi);lcd_w_dat(a1ge);if(wan=0&&qian=0&&bai=0&&shi=0) /個位顯示lcd_w_dat(a1ge);if(l%2!=0) /換行l(wèi)cd_w_cmd(0xc0);if(l%2=0) /換屏lcd_w_cmd(0x80);o=1;a=0;b=0;wan=0;qian=0;bai=0;shi=0;ge=0;m=0;sum=0; /運(yùn)算完一次全部清零4 軟件調(diào)試:(1)編程前先畫了流程圖,這樣思路清晰,能按部就班的完成。(2)子函數(shù)有顯示部分、鍵盤掃描部分和計算部分,編寫好后綜合在一起。(3)在將程序?qū)懺谝黄鸬倪^程中,使用ISIS進(jìn)行了仿真,仿真過程模擬了鍵盤的輸入,同時觀察各種情況時液晶的輸出情況。個人小結(jié):第一天:剛開始不知道實(shí)訓(xùn)室的電腦不行,走很多彎路,弄了整整一天,只是把教材的程序搬了上去,僅此而已,可以說,毫無收獲。第二天:早上也是毫無收獲,下午才發(fā)現(xiàn)電腦的問題,一下子就搞好了鍵盤輸入。可是

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論