




免費預覽已結束,剩余16頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
沈陽理工大學創(chuàng)新實踐周課程設計 摘 要近幾年單片機技術的發(fā)展很快,其中,電子產(chǎn)品的更新速度迅猛。計算器是日常生活中比較常見的電子產(chǎn)品之一。如何才能使計算器技術更加的成熟,充分利用已有的硬件和軟件條件,設計出更出色的計算器。本設計是以STC89C52單片機為核心的計算器模擬系統(tǒng)設計,輸入采用4*4矩陣鍵盤,可以進行加、減、乘、除帶符號數(shù)字運算,并在液晶顯示屏LCD1602上靜態(tài)顯示操作過程及結果。關鍵詞: 單片機; 液晶顯示屏; 計算器; 矩陣鍵盤19 目 錄 1 背景與意義12 設計要求13 方案設計與選擇13.1 輸入模塊23.2 顯示模塊34 硬件電路設計44.1 系統(tǒng)組成及硬件框圖44.2 計算器硬件方案及硬件資源分配44.3 鍵盤電路的設計44.3 顯示電路的設計54.4 電路原理圖65 軟件設計75.1 計算器的軟件規(guī)劃75.2 主模塊的程序設計75.3 顯示模塊的程序設計85.4 鍵盤模塊的程序設計106 總結11參考文獻12附錄 軟件程序131 背景與意義隨著社會的發(fā)展,科學的進步,人們的生活水平在逐步地提高,尤其是微電子技術的發(fā)展猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計算器在人們的日常中是比較常見的電子產(chǎn)品之一,如何使計算器技術更加的成熟,充分利用已有的軟件和硬件條件,設計出更出色的計算器,使其更好地為各個行業(yè)服務,成了如今電子領域重要的研究課題?,F(xiàn)如今,人們的日常生活中已經(jīng)離不開計算器了,社會的各個角落都有它的身影,比如商店、辦公室、學校因此設計一款簡單實用的計算器會有很大的實際意義。本設計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統(tǒng)的硬軟件設計,加強對實際應用系統(tǒng)設計的能力。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的基本方法,并能綜合運用本科階段所學軟、硬件知識分析實際問題,提高解決畢業(yè)設計實際問題的能力,為單片機應用和開發(fā)打下良好的基礎。對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調用及外特性有較清楚的認識,并會使用LCD(液晶顯示模塊)實現(xiàn)計算結果的顯示;掌握液晶顯示模塊的驅動和編程,設計LCD和單片機的接口電路,以及利用單片機對液晶顯示模塊的驅動和操作;在充分分析內部邏輯的概念,進行軟件和調試,學會使用,并能夠以其為平臺設計出具有四則運算能力簡易計算器的硬件電路和軟件程序。2 設計要求 實現(xiàn)普通十進制計算器的功能,按鍵采用實驗箱上的44鍵盤,顯示采用LCD1602顯示器,鍵盤按鍵包括0-9、+、-、*、%和清除按鍵“C”按C后清除LCD屏幕上的顯示。 LCD的第一行顯示運算式,第二行顯示運算結果。比如要計算機12+34,在鍵盤上按下相應鍵后,LCD的第一行顯示“12+34”,按下“=”號后,LCD的第二行末尾顯示“=46”。其 他功能同普通計算器相同。 3 方案設計與選擇3.1 輸入模塊 方案一:采用獨立式按鍵作為輸入模塊獨立式按鍵輸入模塊,其特點是:直接用I/O口構成單個按鍵電路,接口電路配置靈活、按鍵識別和軟件結構簡單;但是當鍵數(shù)較多時,占用I/O口較多,比較浪費資源。其原理圖如圖3-1所示。圖 3-1 獨立的功能按鍵 方案二:采用矩陣式鍵盤作為輸入模塊矩陣式按鍵輸入模塊,其特點是:電路和軟件稍復雜,但相比之下,當鍵數(shù)越多時,越節(jié)約I/O口,比較節(jié)省資源。其原理圖如圖3-2所示。圖 3-2 矩陣鍵盤輸入本設計中的輸入模塊使用的是矩陣鍵盤輸入。鍵盤輸入預置用于計算,按鍵較多。若是采用獨立按鍵,需頻繁按鍵,為軟件設計增加負擔,且操作界面不友好;若是采用矩陣式按鍵,可以方便地輸入一個數(shù)值,使操作界面更具有人性化,且節(jié)約了寶貴的I/O口資源。通過對比,故采用方案二作為系統(tǒng)輸入模塊。3.2 顯示模塊 方案一:采用LED數(shù)碼管靜態(tài)顯示采用LED數(shù)碼管的靜態(tài)顯示,其特點是:其亮度較高;這種顯示方式接口,編程容易且管理簡單;不足的是,占用的I/O的線資源較多。如果采用單片機或CPLD/FPGA來控制的話,勢必存在浪費I/O口資源的問題。如圖3-3所示。圖 3-3 4位數(shù)碼管靜態(tài)顯示 方案二:采用LED數(shù)碼管動態(tài)顯示采用LED數(shù)碼管的動態(tài)顯示,其特點是:其亮度比靜態(tài)顯示的亮度要差一些;但其電路比較簡單,適合于顯示位數(shù)較多的情況。如圖3-4所示。圖 3-4 4位數(shù)碼管的動態(tài)顯示 方案三:采用LCD1602液晶顯示采用LCD1602液晶顯示,其特點是:可以調節(jié)其背光亮度,這種顯示方式接口,編程雖然有些麻煩,但管理較方便,占用的I/O口資源線也不多。本設計中的顯示模塊使用的是LCD1602液晶顯示。在計算器運算中,需顯示的數(shù)字、符號較多,按很據(jù)個方面的特點,而后可以發(fā)現(xiàn)LCD液晶顯示,雖然在價格上的確是稍貴于LED數(shù)碼管;但數(shù)碼管在硬件設計電路中,會因線太多、線路復雜而過于繁瑣,則舍棄LED數(shù)碼管,選擇LCD液晶顯示。通過對比,故采用方案三作為系統(tǒng)顯示模塊。4 硬件電路設計4.1 系統(tǒng)組成及硬件框圖 圖4-1 系統(tǒng)組成及硬件框圖4.2 計算器硬件方案及硬件資源分配主要用到的硬件:單片機STC89C52 、液晶顯示屏LCD1602 、4*4按鍵鍵盤。硬件分配:1、P3口:作為輸入口,與鍵盤連接,實現(xiàn)數(shù)據(jù)的輸入;2、P0、P2口:作為輸出口(P2口為高位,P0口為低位),控制LCD液晶顯示屏顯示數(shù)據(jù)的結果;3、液晶顯示屏LCD1602顯示輸出。4.3 鍵盤電路的設計鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅動芯片的組合;當按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預。通用計算機使用的鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口HD7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅動,其相關的接口電路和接口軟件均可在芯片資料中得到。當系統(tǒng)功能比較復雜,按鍵數(shù)量很多時,采用編碼鍵盤可以簡化軟件設計。非編碼鍵盤成本低廉。從成本角度出發(fā),本設計選用的是非編碼鍵盤。如圖4-2所示。圖 4-2 鍵盤電路4.3 顯示電路的設計當系統(tǒng)需要顯示少量數(shù)據(jù)時,采用LCD液晶顯示屏進行顯示是一種經(jīng)濟實用的方法。P0口作為液晶顯示的數(shù)據(jù)端口。最終顯示電路如圖4-3所示。 圖4-3 LCD液晶顯示屏顯示4.4 電路原理圖 圖4-4所示為簡易計算器的電路原理圖。P3口用于鍵盤輸入,接4*4矩陣鍵盤,鍵值與鍵盤的對應表如表-所示,p0口和p2口用于顯示,p2口用于顯示數(shù)值的高位,po口用于顯示數(shù)值的低位。圖4-4 簡易計算器電路原理圖5 軟件設計5.1 計算器的軟件規(guī)劃 簡易計算器的程序主要包括以下功能模塊:1、讀鍵程序、判鍵程序段、運算操作子程序等部分;2、基于LCD液晶顯示屏的顯示模塊;3、主模塊,為系統(tǒng)的初始化。5.2 主模塊的程序設計主程序主要用來對LCD液晶顯示屏進行初始化的。計算器流程圖(如圖5-1)。圖 5-1 主程序框圖void main() uchar i,j; init(); write_cmd(0x80); /將液晶指針定位在第一行第一個單元 key=15; i=flag1=0; while(1) write_cmd(0x80+0x40); /將液晶指針定位在第二行第一個單元 jscl(); flag1=0;在以上的程序中“write_cmd(0x80);”,被賦值為“0x80”,則是根據(jù)圖 2-2-6 DDRAM單元地址與顯示屏字符位的對應關系中便能找到,第一行第一個單元的值為80H,則第二行第一個單元的值就為80H+40H,即得出“write_cmd(0x80+0x40);”。5.3 顯示模塊的程序設計顯示模塊程序首先要對顯示模塊進行初始化;然后控制光標的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設置清屏、關閉顯示、歸位、開顯示、顯示位置的首地址等等。顯示模塊的流程圖如圖5-2所示。 圖 5-2 顯示程序框圖void jscl() /計算并顯示函數(shù) uchar i,j,n; for(j=0;jk1+1;j+) /存放第一操作數(shù) for(i=0;ik1-j;i+) for(j=k1+1;j0;i-) /在液晶上顯示結果 write_data(tablebi-1); 通過其顯示子程序,發(fā)現(xiàn)要顯示其最終結果,就必須先存放第一操作數(shù)、第二操作數(shù),之后來判定使用四則運算中的哪一種運算,其后進行運算處理,最后便能在LCD液晶顯示屏上顯示其最終結果。5.4 鍵盤模塊的程序設計鍵盤掃描子程序,首先讀出P3口的低四位,然后讀出P3口的高四位。然后鍵值并顯示緩存。而后,將鍵盤上的值轉換為ASCII碼,最后就可以用軟件來設置硬件按鍵各個鍵所代表的內容。系統(tǒng)中連接的是4*4行列式按鍵鍵盤,其中“0-9”為數(shù)字鍵;“+、-、*、/、=”為符號鍵;“C”為功能鍵(清屏鍵),在程序中會加入一個記憶功能鍵,而與其搭配的硬件按鍵為符號鍵中的“=”,以為求方便。數(shù)字鍵按下則將相應的數(shù)字送入數(shù)字緩沖區(qū);符號鍵按下則將送入符號緩沖區(qū);功能鍵按下則執(zhí)行相應的程序;最終進行運算后,綜合結果將送入結果緩沖區(qū),并在LCD液晶顯示屏上顯示出來。鍵盤模塊程序也可相當于一個中斷服務子程序,如圖5-3所示。圖 5-3 中斷服務程序框圖void keyscan() /鍵盤掃描程序 uchar temp,uu=0xf7; uint i; for(i=0;i4;i+) uu=_crol_(uu,1); /_crol_為左移函數(shù) case 0xee: key=0; break; case 0xde: key=1; break; case 0x77: key=15; break; 在以上的程序中,其中的“key=0key=15”是按鍵“0-9、+、-、*、/、=、C”16個鍵。而“case 0xee: key=0; break;”中,被賦值為“0xee”,則是因為行信息是P3口的低四位,若是按鍵按下為“0”,則P3.0為“0”,P3.1-P3.3為“1”;同時,列信息是P3口的高四位,若是按鍵按下為“0”,則P3.4為“0”,P3.5-P3.7為“1”;由此可得,其被賦值為“0xee”。以此類推,之后一直到“case 0x77: key=15; break;”為止,都是采用相同的方法去賦值的。6 總結 按照原理圖進行元件焊接后可以進行簡單的+、-、*、%運算,實現(xiàn)了課程設計的要求,但還有缺陷,如不能進行連續(xù)的運算,進行一次運算后不能對結果進行二次運算,有待改進。另外,只能進行簡單的四則運算,不能進行復雜的科學計算,有進一步改進的空間。下圖為最終完成實物圖及運算結果。 圖 6-1 最終實物圖參考文獻1 胡輝.單片機原理與應用.北京水利水電出版社,2007.2 郭天祥.新概念51單片機c語言教程.電子工業(yè)出版社,2009.3 閻石.數(shù)字電子技術基礎.高等教育出版社,2006.4 傅豐林.陳健.低頻電子線路.高等教育出版社,2008.5 李建忠.單片機原理及應用.西安電子科技大學出版社,2010.附錄 軟件程序#include#include #define uchar unsigned char#define uint unsigned intsbit lcden=P22;/這是LCD使能端sbit lcdrw=P21;/這是LCD讀寫選擇端sbit lcdrs=P20;/這是LCD數(shù)據(jù)命令選擇端uchar code table=0,1,2,3,4,5,6,7,8,9, +,-,*,/,=,.;uchar key,flag1,js,k1,k2;uchar a20,b20;float jieguo=0;void delay(uchar z)/延時函數(shù) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);void write_cmd(uchar cmd)/LCD寫命令函數(shù) lcdrs=0;/寫指令控制端為低 P0=cmd; delay(5); lcden=1;/給個高脈沖結束 delay(4); lcden=0;void write_data(uchar date)/寫數(shù)據(jù)函數(shù) lcdrs=1;/寫數(shù)據(jù)控制端高電平 P0=date; delay(5); lcden=1;/給個高脈沖結束 delay(5); lcden=0; void init()/液晶初始化函數(shù)lcdrw=0; lcden=0; write_cmd(0x38);/設置16*2顯示,8位數(shù)據(jù)接口 write_cmd(0x0c);/設置開顯示,不顯示光標 (關顯示是0x08) write_cmd(0x06);/寫一個字符后地址指針加1 write_cmd(0x01);/清屏void keyscan()/鍵盤掃描程序 uchar temp,uu=0xf7; uint i; for(i=0;i4;i+) uu=_crol_(uu,1);/_crol_為左移函數(shù) P3=uu; temp=P3; temp=temp&0x0f; if(temp!=0x0f) delay(10); temp=P3;temp=temp&0x0f;if(temp!=0x0f) temp=P3; switch(temp) case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: key=10; break; case 0x7b: key=11; break; case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; while(temp!=0x0f) temp=P3; temp=temp&0x0f; flag1=1; void jscl()/計算并顯示函數(shù) uchar i,j,n; float s,temp2; long int s1,s2,a1,b1,c1,temp1; a1=b1=1; s1=s2=0; s=0; if(k2!=0) for(j=0;jk1+1;j+)/存放第一操作數(shù) for(i=0;ik1-j;i+) a1=a1*10; s1=s1+aj*a1; a1=1; for(j=k1+1;jk2+
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲企業(yè)財務經(jīng)理聘用合同樣本
- 廠區(qū)轉讓及品牌使用權與銷售權協(xié)議
- 出租車司機安全駕駛責任保險合同
- 車棚綠化設計與施工一體化合同
- 城市共享單車借用運營管理合同
- 車間內部承包經(jīng)營與智能機器人應用合同范本
- 老兵精神班會課件
- 大使館崗位分級考試題及答案
- 美術老師課件入場介紹
- 訂貨會培訓課件
- 嘉峪關市招聘公辦幼兒園編制外聘用制教師考試真題2022
- 農(nóng)村小城鎮(zhèn)建設論文3000字范文
- 重癥患者SOFA評分表實用文檔
- 2022年7月浙江省普通高校招生學考科目考試歷史試題及答案
- 特種設備壓力管道基礎知識
- GB/T 5976-2006鋼絲繩夾
- GB/T 18981-2008射釘
- 新《高等教育學》考試復習題庫450題(含各題型)
- 日照正濟藥業(yè)有限公司創(chuàng)新原料藥及制劑研發(fā)生產(chǎn)項目一期工程職業(yè)病危害預評價報告
- CSC-2000變電站自動監(jiān)控系統(tǒng)使用說明書
- MES七大功能-MES項目解決方案
評論
0/150
提交評論