版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、武漢工程大學(xué)MCS-51單片機原理及應(yīng)用課程設(shè)計實驗報告題 目 :基于89C52的液晶計算器學(xué) 校 : 學(xué) 院 : 專業(yè)班級 :學(xué) 號 :學(xué)生姓名 :指導(dǎo)老師 :2011年12月28日 目錄目錄··································
2、;···················2摘要······························
3、183;······················3Abstract··························
4、;·······················4一、設(shè)計任務(wù)·························
5、3;···················4二、正文······························
6、;···················4第1節(jié)、1602液晶與矩陣鍵盤概述··························4 1.1、 1602
7、液晶的介紹以及使用方法·················4 1.2、 矩陣鍵盤的工作原理··························6第2節(jié)、設(shè)計方案辨析
8、3;····································8第3節(jié)、硬件電路的設(shè)計···········
9、3;·······················8 3.1 矩陣鍵盤電路························
10、3;········8 3.2 1602液晶顯示電路····························10第4節(jié)、設(shè)計心得·········
11、183;·······························11三、參考文獻·················
12、····························11四、程序清單····················
13、3;························12 摘要本次課程設(shè)計基于89C52單片機,用一個1602與矩陣鍵盤來制作成一個液晶計算器。可以完成計算器的鍵盤輸入,進行加、減、乘六位數(shù)范圍內(nèi)的基本運算。,并在LCD上顯示相應(yīng)的結(jié)果。設(shè)計電路采用AT89C51單片機為主要控制電路,利用MM74C922作為計算器3*4鍵盤的掃描IC讀取鍵盤上的輸入。顯示采
14、用字符LCD靜態(tài)顯示。軟件方面使用C語言編程,并用PROTUES仿真。關(guān)鍵詞:計算器;單片機;LCDAbstractThis course design based on the 89 C52 single chip, with a 1602 and matrix keyboard to make into a liquid crystal calculator. Can complete calculator keyboard input, add, subtract, multiply six figures within the scope of the basic operations
15、. , and is displayed on LCD and the corresponding results. Circuit design AT89C51 microcontroller as the main control circuit, use as a calculator MM74C922 3 * 4 keyboard scan read keyboard input of the IC. The LCD display characters static display. The software used in the C programming language, a
16、nd PROTUES simulation. Keyords: Calculator; Single chip microcomputer; LCD 一、設(shè)計任務(wù) 1、由于設(shè)計的是簡單的計算器,可以進行四則運算,為了較好的顯示效果,采用LCD顯示數(shù)據(jù)和結(jié)果。2、另外鍵盤包括數(shù)字鍵、符號鍵、等號鍵,故只需12個鍵即可,設(shè)計中采用集成的計算鍵盤。3、執(zhí)行過程:開機顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過LCD顯示出來,當(dāng)鍵入+、×運算符,計算機在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換盒存儲,并等待再次鍵入數(shù)值,當(dāng)再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LCD上輸出運算結(jié)果。4、錯誤顯示:當(dāng)計算器執(zhí)行過程中有錯
17、誤時,會在LCD上顯示相應(yīng)的提示,如:當(dāng)輸入的數(shù)值或計算結(jié)果大于計算器的表示范圍時,計算器會在LCD上提示溢出。二、正文第1節(jié)、1602液晶與矩陣鍵盤概述1.1、1602液晶的介紹以及使用方法1602液晶是工業(yè)字符型液晶,能夠同時顯示16x02即32個字符(16列2行)。具有顯示質(zhì)量高、數(shù)字式接口、功耗低、體積小、重量輕等優(yōu)點。液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示的分類方法有很多種,通常可按其顯示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動方式來分,可以分為靜態(tài)驅(qū)動(St
18、atic)、單純矩陣驅(qū)動(Simple Matrix)和主動矩陣驅(qū)動(Active Matrix)三種。點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(dāng)(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=F
19、FH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下表所示:編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表所示:序號指令RS
20、R/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602LCD的一般初始化(復(fù)位)過程:延時15mS,寫指令38H(不檢測忙信號);延時5mS,寫指令38H(不檢測忙信號);延時5mS
21、,寫指令38H(不檢測忙信號);以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號。寫指令38H:顯示模式設(shè)置;寫指令08H:顯示關(guān)閉;寫指令01H:顯示清屏;寫指令06H:顯示光標(biāo)移動設(shè)置;寫指令0CH:顯示開及光標(biāo)設(shè)置。12、矩陣鍵盤的工作原理在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可
22、見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別方法如下所述。 確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。 行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,介紹過程如下: 1、判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電
23、平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 2、判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 下面給出一個具體的例子: 8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4
24、個上拉電阻到正電源+5V,并把列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個相交點。1、檢測當(dāng)前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。 2、去除鍵抖動。當(dāng)檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。 3、若有鍵被按下,應(yīng)識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出: P1.7 1 1 1 0 P1.6 1 1 0 1 P1.5 1 0 1 1 P1.4 0 1 1 1 在每組行輸
25、出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值 4、為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時的抖動。鍵盤掃描程序:uchar temp;P1=0xfd;temp=P1;temp=temp&0xf0;if(temp!=0xf0) delay20ms(); temp=P1; temp=temp&0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xed: key1=4;break; case
26、 0xdd: key1=5;break; case 0xbd: key1=6;break; case 0x7d: key1=7;break;while(temp!=0xf0) temp=P1; temp=temp&0xf0; 第2節(jié)、設(shè)計方案的辨析液晶顯示與數(shù)碼管顯示: (1)、通過1602液晶來顯示信號,通過讓單片機掃描按鍵并處理顯示,進而完成輸入數(shù)字及運算符來完成計算器的基本功能,液晶可以顯示的字符量更大,相對于數(shù)碼管更加方便且美觀。 (2)、通過數(shù)碼管來顯示輸出的結(jié)果,我們要控制數(shù)碼管的位選來讓每個數(shù)碼管相應(yīng)顯示各位數(shù)字。上述方案比較得 :液晶相對于數(shù)碼管更加方便且表現(xiàn)效果更好,
27、而且還可以顯示更多內(nèi)容。第3節(jié)、硬件電路的設(shè)計 硬件電路的設(shè)計大致步驟如下:3.1矩陣鍵盤電路鍵盤掃描方法:行線p1.0p1.3為輸入線,列線p1.4p1.7為輸出線。一開始單片機將行線(p1.0p1.3)全部輸出低電平,此時讀入線數(shù)據(jù),若列線全部為高電平則沒有鍵按下,當(dāng)列線有出線低電平時調(diào)用延時程序以此來去除鍵抖動,延時完成后再判斷是否有低電平,如果此時讀入列線數(shù)據(jù)還是有低電平,則說明確實有鍵按下。最后一步確定鍵值。 在鍵盤矩陣掃描時,首先檢查有否鍵按動。若無鍵按動,則清零一次鍵解讀標(biāo)志位就返回;若有鍵按下,則再查詢鍵解讀標(biāo)志位是邏輯0還是邏輯1。如果是邏輯1,表明本次按鍵已解讀過,可直接從
28、鍵掃描處理程序中返回;如果是邏輯0,說明本次按鍵尚未解讀過,則啟用消抖動延時。經(jīng)消抖動延時后即查詢鍵盤矩陣輸入口線的各端口是否有拉低。若一個端口也沒被拉低,則說明本次按鍵無效,那可能是某種干擾引起的“抖動”,立即從鍵掃描處理程序中返回;若查詢到其中之一端口的電平被拉低了,則表明本次按鍵盤是有效的,將跳轉(zhuǎn)查詢與之相交的那個掃描有效輸出口線,進而確定具體是哪一個鍵按下,并跳轉(zhuǎn)賦予其相應(yīng)的解釋處理。解釋處理后,置鍵解讀標(biāo)志位為邏輯1再返回,即完成一次鍵盤矩陣的掃描解讀。不管鍵盤矩陣有多少個鍵,其掃描確定一個具體鍵所需位查詢的總次數(shù)S不會大于行數(shù)x與列數(shù)y之和;但也不少于2次,即2Sx+y。·
29、;矩陣式鍵盤識別硬件電路原理圖如下:第一步:在“單片機系統(tǒng)”區(qū)域中,把單片機的P1.0P1.7端口通過8聯(lián)撥動撥碼開關(guān)JP3連接到“4×4行列式鍵盤”區(qū)域中的M1M4,N1N4端口上。 第二步:在“單片機系統(tǒng)”區(qū)域中,把單片機的P0.0P0.7端口連接到“靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任何一個ah端口上;要求:P0.0對應(yīng)著a,P0.1對應(yīng)著b,P0.7對應(yīng)著h。·軟件設(shè)計程序流程圖如下:P3=FFH,P3.0=0P3=FFH,P3.2=0有鍵按下嗎?有鍵按下嗎?延時10ms延時10ms真的有鍵按下嗎?真的有鍵按下嗎?根據(jù)當(dāng)前狀況識別按鍵根據(jù)當(dāng)前狀況識別按鍵P3=FFH,P3.
30、1=0P3=FFH,P3.3=0有鍵按下嗎?有鍵按下嗎?延時10ms延時10ms真的有鍵按下嗎?真的有鍵按下嗎?根據(jù)當(dāng)前狀況識別按鍵根據(jù)當(dāng)前狀況識別按鍵3.2、1602顯示電路·1602顯示硬件電路如下圖所示:此圖是1602的引腳鏈接圖,不過本圖上有一個錯誤,就是BLK,BLA接反了,本來BLK應(yīng)該接VCC,BLA接GND,本圖接錯了,這也是我在學(xué)習(xí)中的一點心得體會吧,盡信書不如無書。·軟件程序流程圖如下圖所示:第4節(jié)、設(shè)計心得一周的單片機課程設(shè)計終于順利完成了,其中包含著快樂,也有辛酸。我們選的設(shè)計題目是“液晶計算器”,大家都覺得這個題目是比較簡單的。其實不然,做了之后,
31、發(fā)現(xiàn)設(shè)計電路雖然簡單,但我們認(rèn)為它真正困難的地方是程序設(shè)計,不過在我們同心努力下最終完成了。我們剛選該題目時,真的是一頭霧水,硬件電路不知如何下手,更何談解決程序那塊,因為我們所學(xué)的都是單片機方面的理論知識,應(yīng)用到實踐中去還比較少。不過,我們四人也沒偷下懶,迅速分工去查閱和收集資料。我們?nèi)チ藞D書館借一些參考書,上網(wǎng)找一些相關(guān)資料,并且請教指導(dǎo)老師。通過不斷努力,終于把液晶計算器的思路和模型定了下來并開始分一個人去焊接硬件電路,剩下的去整理和修改程序。 在完成單片機課程設(shè)計后,我們發(fā)現(xiàn)我們還有許多不足,所學(xué)到的知識還遠(yuǎn)遠(yuǎn)不夠,以至于還有一些功能不能被動完成。但
32、通過學(xué)習(xí)這一次實踐,增強了我們的動手能力,提高和鞏固了單片機方面的知識,特別是軟件方面。從中增強了我們的團隊合作精神,并讓我們認(rèn)識到把理論應(yīng)用到實踐中去是多么重要。三、參考文獻Mcu-51單片機原理及應(yīng)用 秦實宏 徐春暉 華中科技大學(xué)出版社 自動控制原理 胡壽松 科學(xué)出版社 51單片機C語言教程 郭天祥 電子工業(yè)出版社四、程序清單 #include<reg52.h>#define uchar unsigned char #define uint unsigned intuint sum;uint m,n,k,p;uint key1;sbit P14=P14; /鍵盤定義I/O口sb
33、it P15=P15;sbit P16=P16;sbit P17=P17;uint d10=0,1,2,3,4,5,6,7,8,9;uint a4=0,0,0,0; /暫存輸入數(shù)字的數(shù)組uint b4=0,0,0,0; /暫存結(jié)果的數(shù)組void key_deal(uint key1);void keyscan();void show();void lcd_write_com(uchar com);void lcd_write_dat(uchar dat);void init_lcd();void delay1(uchar t);sbit lcdrs=P26; /定義1602的I/O口sbit
34、rw=P25 ;sbit lcden=P27;void delay20ms() uchar i,j; for(i=0;i<100;i+) for(j=0;j<60;j+);void main() /主函數(shù) init_lcd(); /液晶初始化 while(1) key1=0; /掃描全鍵盤 keyscan(); /鍵盤掃描 key_deal(key1); /鍵盤處理 show(); /顯示計算結(jié)果 void show() uchar i,temp; if(sum>1000&&sum<6555) /此處對計算結(jié)果進行判斷是否大于1000 lcd_write
35、_com(0x80+0x04); /如果大于1000,就在結(jié)果顯示欄目全部顯示E for(i=0;i<4;i+) /通過FOR循環(huán),使一排四個為E temp=0x45; /通過查ASCII,知道大寫字母E的ASCII為0x45 lcd_write_dat(temp); delay20ms(); else lcd_write_com(0x80+0x44); /在LCD上面第二排第五個開始顯示數(shù)組 for(i=0;i<4;i+) temp=(ai+'0'); /對數(shù)據(jù)進行強制轉(zhuǎn)換成液晶8位的字符型 lcd_write_dat(temp);delay20ms(); lcd
36、_write_com(0x80+0x04); /在LCD上面第一排第五個開始顯示數(shù)組bi中的字符 for(i=0;i<4;i+) temp=(bi+'0'); /對數(shù)據(jù)進行強制轉(zhuǎn)換成液晶8位的字符型 lcd_write_dat(temp);delay20ms(); /* 鍵盤處理區(qū)間*/void key_deal(uint key1) /鍵盤掃描 if(key1!=0) if(key1<10) /存儲數(shù)字 a0=a1; a1=a2; a2=a3; a3=key1; if(key1=10) /加法運算 m=a0*1000+a1*100+a2*10+a3; b0=dm/
37、1000; /千位 b1=dm%1000/100; /百位 b2=dm%100/10; /十位 b3=dm%10; /個位 a3=0,a2=0,a1=0,a0=0; /取完清零 p=1; /加法的標(biāo)志位 if(key1=11) /乘法運算 m=a0*1000+a1*100+a2*10+a3; b0=dm/1000; b1=dm%1000/100; b2=dm%100/10; b3=dm%10; a3=0,a2=0,a1=0,a0=0; /取完清零 p=2; /乘法的標(biāo)志位 if(key1=12) /減法運算 m=a0*1000+a1*100+a2*10+a3; b0=dm/1000; b1=d
38、m%1000/100; b2=dm%100/10; b3=dm%10; a3=0,a2=0,a1=0,a0=0; /取完清零 p=3; /減法的標(biāo)志位 if(key1=14) /等號運算 n=a0*1000+a1*100+a2*10+a3; /將第二個數(shù)填入 if(p=1) sum=n+m; if(p=2) sum=n*m; if(p=3) sum=m-n;/* if(sum<0) sum=-sum; lcd_write_com(0x80+0x00); lcd_write_dat(0x2d); delay20ms(); */ b0=dsum%10000/1000; b1=dsum%1000/100; b2=dsum%100/10; b3=dsum%10; if(key1=15) /清零 sum=0; b3=dsum%10000/1000; b2=dsum%1000/100; b1=dsum%100/10; b0=dsum%10; a3=0,a2=0,a1=0,a0=0; /取
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024標(biāo)準(zhǔn)合作生產(chǎn)合同
- 04年云存儲服務(wù)合同
- 2024施工合同備案表范本
- 04年光伏發(fā)電項目開發(fā)與建設(shè)合同
- 2024年互聯(lián)網(wǎng)公司提供在線教育服務(wù)合同
- 2024年光伏發(fā)電項目開發(fā)與合作建設(shè)合同
- 2024年企業(yè)宣傳與推廣合同
- 2024建設(shè)銀行外匯的借款合同范本
- 2024古董古玩版權(quán)使用許可合同
- 公司營銷部門年終工作總結(jié)
- 電力工程施工售后保障方案
- 2024年小學(xué)心理咨詢室管理制度(五篇)
- 第16講 國家出路的探索與挽救民族危亡的斗爭 課件高三統(tǒng)編版(2019)必修中外歷史綱要上一輪復(fù)習(xí)
- 機器學(xué)習(xí) 課件 第10、11章 人工神經(jīng)網(wǎng)絡(luò)、強化學(xué)習(xí)
- 北京市人民大學(xué)附屬中學(xué)2025屆高二生物第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 書籍小兵張嘎課件
- 氫氣中鹵化物、甲酸的測定 離子色譜法-編制說明
- 2024秋期國家開放大學(xué)??啤稒C械制圖》一平臺在線形考(形成性任務(wù)四)試題及答案
- 2024年黑龍江哈爾濱市通河縣所屬事業(yè)單位招聘74人(第二批)易考易錯模擬試題(共500題)試卷后附參考答案
- 私募基金管理人-廉潔從業(yè)管理準(zhǔn)則
- 房地產(chǎn)估價機構(gòu)內(nèi)部管理制度
評論
0/150
提交評論