版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄TOC\o"1-2"\h\z\u1設計任務和性能指標 11.1設計任務 11.2性能指標 12設計方案 12.1需求分析 12.2方案論證 13系統(tǒng)硬件設計 23.1總體框圖設計 23.2單片機選型 23.3單片機附屬電路設計 33.4LCD液晶顯示 44系統(tǒng)軟件設計 44.1設計思路 44.2總體流程圖 44.3子程序設計 54.4總程序清單 65仿真與調試 65.1調試環(huán)節(jié) 65.2仿真成果及性能分析 86總結 8參照文獻 8附錄1系統(tǒng)硬件電路圖 10附錄2程序清單 111設計任務和性能指標1.1設計任務電子計算器設計1、能實現(xiàn)4位整數(shù)加減法和2位整數(shù)乘法;2、成果通過5個LED數(shù)碼管顯示(4位整數(shù)加法會有進位)或通過液晶顯示屏顯示。1.2性能指標1.用數(shù)字鍵盤輸入4位整數(shù),通過LED數(shù)碼顯示管或液晶顯示屏顯示。2.完畢四位數(shù)加減法應算。當四位數(shù)想加時產(chǎn)生進位時,顯示進位。3.顯示2位,并進行2位整數(shù)乘法。4.設計4*4矩陣鍵盤輸入線連接。2設計方案2.1需求分析咱們尋常生活開支,大額數(shù)字或是多倍小數(shù)計算都需要計算器協(xié)助,解決數(shù)字開方、正余弦都離不開計算器。雖然當前計算器價格比較低廉,但是功能過于簡樸不能滿足個人需求,功能多價格較貴,操作不便不說,諸多功能主線用不到。因此,咱們想到可不可以用自己所學為自己設計開發(fā)一種屬于自己簡樸計算器來完畢尋常生活需求。2.2方案論證使用單片機為ATMEL公司生產(chǎn)AT89C51,AT89C51提供如下原則功能:4K字節(jié)FLASH閃速存儲器,128字節(jié)內部RAM,32個I/O口線,兩個16位定期/計數(shù)器,一種向量兩級中斷構造,一種全雙工串行通訊口,內置一種精密比較器,片內振蕩器及時鐘電路,同步AT89C51可降至0Hz靜態(tài)邏輯操作,并支持兩種軟件可選工作模式,空閑方式停止CPU工作,但容許RAM,定期計數(shù)器,串行通信及中斷系統(tǒng)繼續(xù)工作。顯示用LCD液晶顯示屏,減少線路連接。用C言編寫程序,易進行調試修改。采用4*4矩陣鍵盤作為輸入。3系統(tǒng)硬件設計3.1總體框圖設計電路圖如附錄13.2單片機選型AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)低電壓,高性能、CMOS、8位單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)原則MCS-51指令集和輸出管腳相兼容。AT89C51管腳圖如圖2.2所示。圖3-13.3單片機附屬電路設計一、晶體振蕩電路1.晶體振蕩器作用石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選取頻率,是一種可以取代LC諧振回路晶體諧振元件。2.本設計所用晶體振蕩電路如圖2.3所示:圖3-2晶振電路此晶振電路所選用石英晶振頻率為12MHZ。一、晶體振蕩電路單片機復位條件是:必要使RST/Vpd或RST引腳加上持續(xù)兩個機器周期(即24個振蕩周期)高電平。圖3-2復位電路該電路除具備上電復位功能外,若要復位,只需按圖中BUTTON鍵,此時電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生復位高電平。3.44*4矩陣鍵盤控制電路矩陣式鍵盤構造與工作原理:在鍵盤中按鍵數(shù)量較多時,為了減少I/O口占用,普通將按鍵排列成矩陣形式,其內部簡圖如圖3-3在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一種按鍵加以連接。這樣,只需要單片機一種端口(如P1口)就可以構成4*4=16個按鍵,比直接將端口線用于鍵盤多余了一倍,并且線數(shù)越多,區(qū)別越明顯,例如再多加一條線就可以構成20鍵鍵盤,而直接用端口線則只能多余一鍵(9鍵)。由此可見,在需要鍵數(shù)比較多時,采用矩陣法來做鍵盤比較是合理。由于本系統(tǒng)按鍵較多,在這里采用矩陣式4*4鍵盤,這樣可以合理應用硬件資源,用一種8位I/O口控制,如圖3-3所示:圖3-3按鍵內部電路簡圖矩陣式鍵盤按鍵辨認辦法一、擬定矩陣式鍵盤上何鍵被按下,咱們采用一種“行掃描法”。行掃描法:行掃描法又稱為逐行(或列)掃描查詢法,是一種最慣用按鍵辨認辦法。3.4LCD液晶顯示1602LCD采用原則14腳(無背光)接口,各引腳接口闡明如表所示:編號符號引腳闡明編號符號引腳闡明1VSS電源地8D1數(shù)據(jù)2VDD電源正極9D2數(shù)據(jù)3VEE液晶顯示偏壓10D3數(shù)據(jù)4RS數(shù)據(jù)/命令選取11D4數(shù)據(jù)5RW讀/寫選取12D5數(shù)據(jù)6E使能信號13D6數(shù)據(jù)7D0數(shù)據(jù)14D7數(shù)據(jù)4系統(tǒng)軟件設計4.1設計思路1.要有顯示子程序,當鍵入一種數(shù)值或符號時顯示程序要把這個鍵入值給顯示出來。通過運算在按下等號之后顯示出本次運算成果。2.就是按鍵程序,當一種鍵盤按下時候,按鍵程序要判斷是哪個按鍵按下,如果是數(shù)字鍵按下就要轉向顯示子程序來顯示出這個數(shù)字,然后等待下一種鍵值輸入,再次判斷按下是什么鍵,如果是功能鍵就要依照上次功能鍵和輸入數(shù)據(jù)來計算成果,然后保存成果和功能鍵,成果送顯示緩沖區(qū)顯示。等待下個數(shù)值輸入,如此重復。4.2總體流程圖開始開始初始化數(shù)據(jù)據(jù)LCD顯示有鍵輸入讀鍵值鍵碼是?數(shù)字鍵清零鍵功能鍵輸入值狀態(tài)清零數(shù)值送顯示緩存根基功能鍵和輸入數(shù)據(jù)計算成果保存成果成果送顯示緩存等待數(shù)值輸入4.3子程序設計1.讀和寫數(shù)據(jù)子程序voidwrite_com(charcom)//寫指令函數(shù){P0=com;//com指令付給P0口rs=0;rw=0;lcden=0;check();lcden=1;}voidwrite_date(chardate)//寫數(shù)據(jù)函數(shù){P0=date;rs=1;rw=0;lcden=0;check();lcden=1;}4.4總程序清單見附錄25仿真與調試5.1調試環(huán)節(jié)1.采用KEIL開發(fā)89c51單片機應用程序調試環(huán)節(jié):(1)在uVision集成開發(fā)環(huán)境中創(chuàng)立新項目(Project),擴展文獻名為.UV2,并為該項目選定適當單片機CPU器件(本設計采用ATMEL公司下AT89C51)(2)用uVision文本編輯器編寫源文獻,可以是匯編文獻(.ASM),也可以使C語言文獻(擴展名.C),并將該文獻添加到項目中去。一種項目文獻可以包括各種文獻,除了源程序文獻外,還可以是庫文獻、頭文獻或文本闡明文獻。(3)通過uVision2有關選取項,配備編譯環(huán)境、連接定位器以及Debug調試器功能。(4)對項目中源文獻進行編譯連接,生成絕對目的代碼和可選HEX文獻,如果浮現(xiàn)編譯連接錯誤則返回到第2步,修改源文獻中錯誤后重構整個項目。圖5-1Keil調試2用Proteus對于本設計仿真操作環(huán)節(jié)如下:(1)進入proteusISIS集成環(huán)境,在工作前,在systerm菜單下設立界面顏色、圖形界面大小等項目,也可采用了系統(tǒng)默認值。
(2)通過工具欄中(從庫中選取元件命令)命令,在pickdevices窗口中選取電路所需元件,放置元件到編輯區(qū)并調節(jié)其相對位置,進行元件參數(shù)設立,元器件間連線。(3)連線并加上設立參數(shù),并完畢仿真原理圖,如圖5-2所示。(4)加載程序。將編譯調試完畢簡易計算器機器碼程序(hex文獻)加載到AT89C51單片機中。(5)單擊仿真工具欄中仿真鍵,觀測仿真成果??梢园磿和?、繼續(xù)、單步、等按鈕,查看效果。圖5-2操作闡明:1)本計算器實現(xiàn)4位數(shù)加減,2位數(shù)乘除運算。2)按下數(shù)值鍵,顯示按下“數(shù)字”,按運算符,顯示符號,按第2個操作數(shù),顯示,按“=”鍵,得到運算成果。3)按“清零”鍵清除運算成果,可重新開始。(6)調試與思考5.2仿真成果及性能分析6總結通過這段時間設計,終于完畢了我計算器設計,雖然只是一種非常簡樸計算器,可是我也通過了一翻很大努力才完全達到設計規(guī)定,從心底里說,還是挺高興,畢竟這次設計所規(guī)定東西都做了出來,然而高興之余不得不深思呀!在本次設計過程中,我發(fā)現(xiàn)諸多問題,雖然此前還做過這樣設計但這次設計真讓我長進了諸多,單片機設計重點就在于軟件程序設計,需要有很巧妙編程辦法,在編程時,由于粗心大意馬虎,有些語句看似沒問題,可就是不出效果,經(jīng)仔細揣摩修改后,程序才正常運營。學習單機片機更是如此,程序只有在經(jīng)常寫與讀過程中才干提高。從這次課程設計中,我真真正正意識到,在后來學習中,要理論聯(lián)系實際,把咱們所學理論知識用到實際當中,理論指引實踐,在實踐中對理論知識加以理解。還要有獨立思考能力和團隊協(xié)作精神,個人能力固然重要,集體力量更是偉大。由于時間比較倉促,我所設計這個計算器非常簡樸,咱們可以考慮在以日后改進一下,使它功能更加完善,強大。參照文獻[1]劉和平,劉躍,單片機原理及應用,重慶:重慶大學出版社,[2]楊西明,朱騏,單片機編程與入門,北京:機械工業(yè)出版社,[3]陳明熒,89C51單片機課程設計實訓教材,北京:北京清華大學出版社,[4]劉瑞新,單片機原理及應用教程,北京:機械工業(yè)出版社,[5樓然苗,李光飛,51系列單片機設計實例,北京:北京航空航天大學出版社,附錄1系統(tǒng)硬件電路圖附錄2程序清單#include<reg51.h>//頭文獻#defineuintunsignedint//#defineucharunsignedcharsbitlcden=P2^3;//定義引腳sbitrs=P2^4;sbitrw=P2^0;sbitbusy=P0^7;chari,j,temp,num,num_1;inta,b,c;//a,第一種數(shù)b,第二個數(shù)c,得數(shù)floata_c,b_c;ucharflag,fuhao;//flag表達與否有符號鍵按下,fuhao表征按下是哪個符號ucharcodetable[]={7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0};ucharcodetable1[]={7,8,9,0x2f-0x30,4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30};voiddelay(ucharz)//延遲函數(shù){uchary;for(z;z>0;z--)for(y=0;y<100;y++);}voidcheck()//判斷忙或空閑{do{P0=0xFF;rs=0;//指令rw=1;//讀lcden=0;//禁止讀寫delay(1);//等待,液晶顯示屏解決數(shù)據(jù)lcden=1;//容許讀寫}while(busy==1);//判斷與否為空閑,1為忙,0為空閑}voidwrite_com(charcom)//寫指令函數(shù){P0=com;//com指令付給P0口rs=0;rw=0;lcden=0;check();lcden=1;}voidwrite_date(chardate)//寫數(shù)據(jù)函數(shù){P0=date;rs=1;rw=0;lcden=0;check();lcden=1;}voidinit()//初始化{num=-1;lcden=1;//使能信號為高電平write_com(0x38);//8位,2行write_com(0x0c);//顯示開,光標關,不閃爍*/write_com(0x06);//增量方式不移位顯竟獗暌貧柚?write_com(0x80);//檢測忙信號write_com(0x01);//顯示開,光標關,不閃爍num_1=0;i=0;j=0;a=0;//第一種參加運算數(shù)b=0;//第二個參加運算數(shù)c=0;flag=0;//flag表達與否有符號鍵按下,fuhao=0;//fuhao表征按下是哪個符號}voidkeyscan()//鍵盤掃描程序{P3=0xfe;if(P3!=0xfe){delay(20);if(P3!=0xfe){temp=P3&0xf0;switch(temp){case0xe0:num=0;break;case0xd0:num=1;break;case0xb0:num=2;break;case0x70:num=3;break;}}while(P3!=0xfe);if(num==0||num==1||num==2)//如果按下是'7','8'或'9{if(j!=0){write_com(0x01);j=0;}if(flag==0)//沒有按過符號鍵{ do{a=a*10+table[num]; } while(a>10000);}else//如果按過符號鍵 { do{ b=b*10+table[num];} while(b>10000); }}else//如果按下是'/'{if(a<100) {flag=1;fuhao=4; }; //4表達除號已按}i=table1[num];write_date(0x30+i);}P3=0xfd;if(P3!=0xfd){delay(5);if(P3!=0xfd){temp=P3&0xf0;switch(temp){case0xe0:num=4;break;case0xd0:num=5;break;case0xb0:num=6;break;case0x70:num=7;break;}}while(P3!=0xfd);if(num==4||num==5||num==6&&num!=7)//如果按下是'4','5'或'6'{if(j!=0){write_com(0x01);j=0;}if(flag==0)//沒有按過符號鍵{ do {a=a*10+table[num];} while(a>10000); }else//如果按過符號鍵{do {b=b*10+table[num]; } while(B>10000);}}else//如果按下是'*'{if(a<100){flag=1;fuhao=3; }//3表達乘號已按}i=table1[num];write_date(0x30+i);}P3=0xfb;if(P3!=0xfb){delay(5);if(P3!=0xfb){temp=P3&0xf0;switch(temp){case0xe0:num=8;break;case0xd0:num=9;break;case0xb0:num=10;break;case0x70:num=11;break;}}while(P3!=0xfb);if(num==8||num==9||num==10)//如果按下是'1','2'或'3'{if(j!=0){write_com(0x01);j=0;}if(flag==0)//沒有按過符號鍵{ do {a=a*10+table[num];} while(a>10000); }else//如果按過符號鍵{ do {b=b*10+table[num];} while(b>10000);}}elseif(num==11)//如果按下是'-'{flag=1;fuhao=2;//2表達減號已按}i=table1[num];write_date(0x30+i);}P3=0xf7;if(P3!=0xf7){delay(5);if(P3!=0xf7){temp=P3&0xf0;switch(temp){case0xe0:num=12;break;case0xd0:num=13;break;case0xb0:num=14;break;case0x70:num=15;break;}}while(P3!=0xf7);switch(num){case12:{write_com(0x01);a=0;b=0;flag=0;fuhao=0;}//按下是"清零"break;case13:{//按下是"0"if(flag==0)//沒有按過符號鍵{a=a*10;write_date(0x30);P1=0;}elseif(flag==1)//如果按過符號鍵{b=b*10;write_date(0x30);}}break;case14:{j=1;if(fuhao==1){write_com(0x80+0x4f);//按下等于鍵,光標邁進至第二行最后一種顯示處write_com(0x04);//設立從后住前寫數(shù)據(jù),每寫完一種數(shù)據(jù),光標后退一格c=a+b;while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d);//再寫"="a=0;b=0;flag=0;fuhao=0;}elseif(fuhao==2){write_com(0x80+0x4f);//光標邁進至第二行最后一種顯示處write_com(0x04);//設立從后住前寫數(shù)據(jù),每寫完一種數(shù)據(jù),光標后退一格(這個照理說順序不對,可顯示和上段同樣)if(a-b>0)c=a-b;elsec=b-a;while(c!=0){write_date(0x30+c%10);c=c/10;}if(a-b<0)write_date(0x2d);write_date(0x3d);//再寫"="
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年山西省運城市高二下學期期中考試歷史試題(解析版)
- 2024-2025學年山東省臨沂市河東區(qū)、費縣高二下學期期中聯(lián)考歷史試題(解析版)
- 2026年虛擬現(xiàn)實VR開發(fā)工程師考試題目及答案
- 2026年國際貿(mào)易實務國際市場分析與營銷策略測試題
- 2026年程序設計基礎語言CC試題
- 2026年化學實驗技術化學分析測試方法與技術題集
- 2026年國際關系國際政治經(jīng)濟合作題庫集
- 2026年文化研究與文化現(xiàn)象解讀問題集
- 2026年法律行業(yè)律師資格考試案例分析題
- 2026年電氣工程能源系統(tǒng)工程設計題集
- 南京市五校聯(lián)盟2024-2025學年高二上學期期末考試英語試卷(含答案詳解)
- 云南省昆明市五華區(qū)2024-2025學年高一上學期1月期末考試地理試題(解析版)
- 人教部編版五年級語文上冊1-8單元習作作文范文 寫作指導
- (人教版)地理七年級下冊填圖訓練及重點知識
- 二十四點大全
- TB-T 3263.1-2023 動車組座椅 第1部分:一等座椅和二等座椅
- 延遲焦化操作工(中級)考試(題庫版)
- 《研學旅行課程設計》課件-理解研學課程設計內涵
- AQT 1089-2020 煤礦加固煤巖體用高分子材料
- 鄭氏規(guī)范全文及譯文
- 中國泌尿外科圍手術期血栓預防與管理專家共識
評論
0/150
提交評論