




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄1. 引言.11.1本設計的意義.11.2本設計任務和主要內容.22. 硬件設計.22.1系統框圖.32.2最小系統.42.3矩陣鍵盤.52.4 LCD1602硬件設計 .63.軟件設計.73.1矩陣鍵盤掃描原理.83.2 LCD1602引腳功能時序圖.93.3計算器流程圖.104設計小結.12參考文獻.14附錄:課程設計程序清單.15福建電力職業技術學院 課程設計-智能儀器1.引言隨著社會的發展,科學的進步,人們的生活水平在逐步地提高,尤其是微電子技術的發展猶如雨后春筍般的變化。電子產品的更新速度快就不足驚奇了。計算器在人們的日常中是比較常見的電子產品之一,如何使計算器技術更加的成熟,
2、充分利用已有的軟件和硬件條件,設計出更出色的計算器,使其更好地為各個行業服務,成了如今電子領域重要的研究課題。現如今,人們的日常生活中已經離不開計算器了,社會的各個角落都有它的身影,比如商店、辦公室、學校因此設計一款簡單實用的計算器會有很大的實際意義。本設計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統的硬軟件設計,加強對實際應用系統設計的能力。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的基本方法,并能綜合運用本科階段所學軟、硬件知識分析實際問題,提高解決畢業設計實際問題的能力,為單片機應用和開發打下良好的基礎。1.1 本設計的意義計算器在人們的日常中是比較常見的電子產品之一,
3、如何使計算器技術更加的成熟,充分利用已有的軟件和硬件條件,設計出更出色的計算器,使其更好地為各個行業服務,成了如今電子領域重要的研究課題。現如今,人們的日常生活中已經離不開計算器了,社會的各個角落都有它的身影,比如商店、辦公室、學校因此設計一款簡單實用的計算器會有很大的實際意義。本設計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統的硬軟件設計,加強對實際應用系統設計的能力。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的基本方法,并能綜合運用本科階段所學軟、硬件知識分析實際問題,提高解決畢業設計實際問題的能力,為單片機應用和開發打下良好的基礎。如今可編程控制器是應用面最廣、功能強大
4、、使用方便的通用工業控制裝置。人機界面的應用,實現了人機界面與現場互動,降低了集成難度,提高了系統的可靠性。1.2本設計任務和主要內容采用LCD1602液晶顯示,其特點是:可以調節其背光亮度,這種顯示方式接口,編程雖然有些麻煩,但管理較方便,占用的I/O口資源線也不多。在計算器運算中,需顯示的數字、符號較多,按很據個方面的特點,而后可以發現LCD液晶顯示,雖然在價格上的確是稍貴于LED數碼管;但數碼管在硬件設計電路中,會因線太多、線路復雜而過于繁瑣,則舍棄LED數碼管,選擇LCD1602液晶顯示。本設計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統的硬軟件設計,加強對實際應用系統設計的能力
5、。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的基本方法,并能綜合運用本科階段所學軟、硬件知識分析實際問題,提高解決畢業設計實際問題的能力,為單片機應用和開發打下良好的基礎。對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調用及外特性有較清楚的認識,并會使用LCD(液晶顯示模塊)實現計算結果的顯示;掌握液晶顯示模塊的驅動和編程,設計LCD和單片機的接口電路,以及利用單片機對液晶顯示模塊的驅動和操作;在充分分析內部邏輯的概念,進行軟件和調試,學會使用,并能夠以其為平臺設計出具有四則運算能力簡易計算器的硬件電路和軟件程。2. 硬件設計2.1 系統框圖如圖2.1.1所示,在該設計中采用
6、STC89C52 單片機作為核心處理器,因此在電路中首先需要設計的是STC89C52 的最小系統。AT89S52 單片機的最小系統電路包含以下幾個部分。單片機供電電路:STC89C52 需要5V 供電,在電路圖中的VCC 和GNG 為供電網絡標識符;晶振電路電路:STC89C52 需要一個穩定的振蕩電路才能正常工作,在該電路中采用24MHZ的晶振作為STC89C52 的時鐘源;復位電路:復位電路是單片機正常運行的一個必要部分,復位電路應該保證單片機在上電瞬間進行一次有效的復位,在單片機正常工作時將RST 引腳置低。此外通過一個按鍵進行手動復位,在單片機運行不正常時使用。 圖2.1.1系統框圖2
7、.2 最小系統如圖2.2.1所示STC89C52 單片機概述:STC89C52是一個低功耗,高性能CMOS 8位單片機,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案。STC89C52具有如下特點:40個引腳,8k的flash存儲器,128 bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5 個中斷優先級 2 層中斷嵌套中斷,2 個16位可編程定時計數器,2 個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。單片機最小系統,或者稱為最小應用系統,是指用最少的元件組成的單片機可以工作的系統。對51系列單片機來說,最小系
8、統一般應該包括:單片機、晶振電路、復位電路。 圖2.2.1最小系統2.3 矩陣鍵盤2.3.1 獨立按鍵與矩陣鍵盤區別計算器輸入數字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會比較簡單,但是會占用大量的IO口資源,因此在很多情況下都不采用這種方式。矩陣鍵盤掃描程序的優點在于,不用專門的按鍵延時程序,提高了CPU效率,也不用中斷來掃描鍵盤,節省了硬件資源。此外,本鍵盤掃描程序每次掃描占用CPU時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。因為單片機上面的I/O口有限,所以本設計選用矩陣鍵盤節省I/O口最為合適。2.3.2 矩陣按鍵電路接口 將矩陣鍵盤
9、的接口接到單片機所對應的引腳(這里就是根據你的程序來接線了)。然后就是通過按下按鍵,松開。讓所按得值顯示在LCD1602液晶上面。在程序的里面輸入計算器的頭文件,還有一些必要的程序。則再通過矩陣鍵盤的按鍵就可以在LCD1602液晶上面顯示簡單的(兩位數)加減乘除。 2.4 LCD1602硬件設計2.4.1 LCD1602簡介液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器有厚度薄、適用于大規模集成電路直接驅動、易于實現全彩色顯示的特點,目前已經被廣泛應用在便攜式計算機、數字攝像機、PDA移動通信工具等眾多領域。LCD1602液晶顯
10、示器采用HD44780及其兼容芯片作為點陣式LCD的控制器驅動器,還采用HD44100進行LCD的時分割驅動。HD44780的內部結構主要包括顯示數據RAM(DDRAM)、字符發生器ROM(CGROM)、字符發生器RAM(CGRAM)、指令寄存器IR、數據寄存器DR、地址計數器AC(Address Counter)和忙標志BF(Busy Flag)等邏輯電路。1602液晶模塊內部的控制器共有11條控制指令,豐富的指令可以完成液晶的時序控制、工作方式設置和數據顯示等。2.4.2 LCD1602與單片機接口 根據LCD1602的引腳介紹,把LCD1602上的口對應的引腳接到單片機上面,然后把自己寫
11、好的程序燒到單片機里面,進行調試。(根據3.2的時序圖來接線)我自己接線時候 是將LCD1602焊接在一個電路板上,在上面添加個調節光度的可調電阻,讓LCD1602的背光度隨之發生變化。這里做一些補充下LCD1602可以顯示一些數字,字母及溫度等符號。圖2.4.2LCD1602引腳圖3. 軟件設計3.1 矩陣鍵盤掃描原理 圖3.1.1矩陣鍵盤 輸入P1.0 P1.1 P1.2 P1.3=0,掃描P1.4 P1.5 P1.6 P1.7判斷高低平。 逐行掃描P1.0=0 P1.1 P1.2 P1.3=1掃描。 逐行掃描P1.1=0 P1.0 P1.2 P1.3=1掃描。 逐行掃描P1.2=0 P1
12、.0 P1.1 P1.3=1掃描。 逐行掃描P1.3=0 P1.0 P1.1 P1.2=1掃描。 依此類推 如果掃出低電平 ,則讀出按鍵。先復位使行線輸出口全為0,給高四位低電平,使其處于列線讀取狀態。然后判斷低四位電平狀況,如果沒有鍵被按下,則表示沒有鍵被按下,如果有鍵按下的話,行線和列線的交點處就會被導通,就會出現電平變化。“0c/n”相當于計算器的復位鍵(清零),“+”就相當計算器的加,“-”就相當計算器的減,“*”就相當計算器的乘,“/”就相當計算器的除,“=”就相當計算器的結果。3.2 LCD1602時序圖1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明
13、圖3.2.1所示:第1腳:VSS為地電源 第2腳:VDD接5V正電源 第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。 第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數據。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。 第714腳:D0D7為8位
14、雙向數據線。 第15腳:背光源正極。第16腳:背光源負極 編號 符號 引腳說明編號 符號 引腳說明 1 VSS 電源地 9 D2 數據 2 VDD 電源正極 10 D3 數據 3 VL 液晶顯示偏壓 11 D4 數據 4 RS 數據/命令選擇 12 D5 數據 5 R/W 讀/寫選擇 13 D6 數據 6 E 使能信號 14 D7 數據 7 D0 數據 15 BLA 背光源正極 8 D1 數據 16 BLK 背光源負極表3.2.1引腳接口說明表3.3 計算器設計將程序燒到單片機之后,通過Keil進行調試,當然不是一燒到單片機就可以在LCD1602上面顯示了,我自己之前也遇到過一些麻煩,不煩與大
15、家分享下。首先,是你所寫的內容是不是顯示在LCD1602上面,如果沒有顯示出來,則可能是你所寫的程序是不是所指定的地址錯了。(一般是第一行是0x80 ,第二行是0xc0)還有計算器的輸出的結果會跑到第一行去,這是因為你在主函數前沒有先定義下,這樣就行了。以下是本人自己對計算器制作的流程圖。3.4計算器流程圖 如圖所示3.4.1所示,是制作計算器大概的流程圖,首先是判斷是否有按鍵按下,如果有的話,則執行下一步,如果沒有的沒有的話則退到初始化。然后輸入第一個數值,接著輸入運算符,跟著就是輸入第二數值,得出結果顯示在LCD1602液晶上面。接著就是清零,為下一次的運算做好準備。 圖3.4.1計算器流
16、程圖 4. 設計小結經過了三個星期的課程設計,在設計中我們遇到了很多編程問題,最后我們大家齊心合力的攻克一個個難關,我們組做得是計算器的設計,內容包括很多。運用的函數也很復雜。測試階段中發現了幾處錯誤導致程序不能編譯,去圖書館查找相關的資料, 又同學一起討論。通過耐心的分析源代碼終于編好了一個完整無誤的程序。在這次的c語言程序設計實習中遇到了現實編程中必然見到的問題通過這些問題的解決積累了編程的實踐經驗。在實際的編程操作中發現自己c語言知識的不足,加深了對c語言的理解。在學習之余體驗到收獲的感覺.善于總結,也是學習能力的一種體現,每次完成一個編程任務,完成一段代碼,都應當有目的的跟蹤該程序的應
17、用狀況,隨時總結,找到自己的不足,這樣所編寫的程序才能逐步提高.課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新月異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發技術是十分重要的。通過這次課程設計,我拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。安排課程設計的基本目的,在于通過理論與實際的結合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養成為能夠主動適應社會主義現代化建設需要的高素質的復合型人才。作為整個學
18、習體系的有機組成部分,課程設計雖然安排在一周進行,但并不具有絕對獨立的意義。它的一個重要功能,在于運用學習成果,檢驗學習成果。運用學習成果,把課堂上學到的系統化的理論知識,嘗試性地應用于實際設計工作,并從理論的高度對設計工作的現代化提出一些有針對性的建議和設想。檢驗學習成果,看一看課堂學習與實際工作到底有多大距離,并通過綜合分析,找出學習中存在的不足,以便為完善學習計劃,改變學習內容與方法提供實踐依據。而這種實際能力的培養單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。這也是一次預演和準備畢業設計工作。通過課程設計,讓我們找出自身狀況與實際需要的差距,并在以后的學習期間及時補充相關知識,為求職與
19、正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。課程設計促進了我系人才培養計劃的完善和課程設置的調整。參考文獻1 李明.物理學M.北京:科學出版社,1977:58-62.2 王健.建筑物防火系統可靠性分析D.天津:天津大學,1997.3 姚光起.一種癢化鋯材料的制備方法P.中國專利:891056088,1980-07-03.4 王傳昌.高分子化工的研究對象J.天津大學學報,1997,53(3):1-7.程序6#include<reg52.h>#include <intrins.h>#include<string.h>#include &
20、lt;math.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intuchar key,sym,sumsz13,adders=0; / 定義變量float sum,number1=0,number2=0; / 定義變量bit flag=0; / 定義位變量標志位sbit lcdrs=P20; / 定義液晶的讀IO口sbit lcdwr=P21; / 定義液晶的寫IO口sbit lcden=P22; / 定義液晶的使能IO口uchar lcd_s='0','1
21、39;,'2','3','4','5','6','7','8','9','+','-','*',/,'.','='/uchar curpos=0xc0;void keyscan(); /函數聲明void delayms(uchar z); void write_com(uchar com);void write_data(uchar dat);void init(); void delay
22、(int z); bit buzz();void yuans();void clear();/*主函數*/void main() init(); /液晶初始化 while(1) /循環函數 write_com(0x80);write_data(' ');write_data(' ');write_data(' ');write_data('C');write_data('a');write_data('l');write_data('c');write_data('u'
23、;);write_data('l');write_data('a');write_data('t');write_data('e');write_data('r'); keyscan(); /調用鍵盤掃描函數 /*鍵盤掃面*/void keyscan() uchar temp=0; P1=0xfe; /第1次判斷函數 temp=P1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); temp=P1; temp=temp&0xf0; if(temp!=0xf0)
24、 temp=P1; adders+; /確定按鍵按下,執行if函數 switch(temp) case 0xee: key=1;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break;/顯示字符1,并記入相加的變量 case 0xde: key=2;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else nu
25、mber2=number2*10+key;break;/顯示字符2,并記入相加的變量 case 0xbe: key=3;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break;/顯示字符3,并記入相加的變量 case 0x7e: key=10;write_com(curpos);curpos+;write_data(lcd_skey);sym='+'flag=1; break;/顯示'+'號
26、,并將sym付'+' while(P1&0xf0)!=0xf0); /等待按鍵釋放 P1=0xfd; /第2次判斷 temp=P1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); temp=P1; temp=temp&0xf0; if(temp!=0xf0) temp=P1;adders+; /確定按鍵按下,執行if函數 switch(temp) case 0xed: key=4;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=nu
27、mber1*10+key; else number2=number2*10+key; break;/顯示字符4,并記入相加的變量 case 0xdd: key=5;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符5,并記入相加的變量 case 0xbd: key=6;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=numb
28、er1*10+key; else number2=number2*10+key;break; /顯示字符6,并記入相加的變量 case 0x7d: key=11;write_com(curpos);curpos+;write_data(lcd_skey);sym='-'flag=1; break;/顯示'-'號,并將sym付'-' while(P1&0xf0)!=0xf0); P1=0xfb; /第3次判斷 temp=P1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); temp=P1;
29、temp=temp&0xf0; if(temp!=0xf0) temp=P1;adders+; /確定按鍵按下,執行if函數 switch(temp) case 0xeb: key=7;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符7,并記入相加的變量 case 0xdb: key=8;write_com(curpos);curpos+;write_data(lcd_skey);if(flag
30、=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符8,并記入相加的變量 case 0xbb: key=9;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break; /顯示字符9,并記入相加的變量 case 0x7b: key=12;write_com(curpos);curpos+;write_data(lcd_skey);sym='
31、;*'flag=1; break;/顯示'*'號,并將sym付'*' while(P1&0xf0)!=0xf0); /等待按鍵釋放 P1=0xf7; / 第4次判斷 temp=P1; temp=temp&0xf0; If (temp!=0xf0) delayms(15); temp=P1; temp=temp&0xf0; if(temp!=0xf0) temp=P1;adders+; /確定按鍵按下,執行if函數 switch(temp) case 0xe7: key=0; write_com(curpos);curpos+;wr
32、ite_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符0,并記入相加的變量 case 0xd7: key=14;clear(); break;/調用清零函數 case 0xb7: key=15;yuans();flag=1;adders-;break;/調用運算函數 case 0x77: key=13;write_com(curpos);curpos+;write_data(lcd_skey);sym='/'flag=1; break;/顯示
33、9;/'號,并將sym付'/' while(P1&0xf0)!=0xf0); /等待按鍵釋放 /*液晶*/void write_com(uchar com) /液晶寫指令程序while(buzz() ; lcdrs=0; / lcdwr=0; / lcden=0; P0=com; / _nop_(); _nop_(); _nop_(); _nop_(); lcden=1; / _nop_(); _nop_(); _nop_(); _nop_(); lcden=0; /void write_data(uchar dat) /液晶寫數據程序 while(buzz(); lcdrs = 1; lcdwr = 0; lcden = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); lcden = 1; _nop_(); _nop_(); _nop_(); _nop_(); lcden = 0; void init() / 液晶初始化程序 lcden=0; / write_com(0x38);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計單位文件管理制度
- 設計裝飾公司管理制度
- 診室護士日常管理制度
- 診所污水采樣管理制度
- 試劑耗材存放管理制度
- 財務資金收款管理制度
- 財政補助收入管理制度
- 貨架生產倉庫管理制度
- 貨物進出碼頭管理制度
- 貨運電梯安全管理制度
- 藝術教學課件模板
- 豬場分場長競聘述職報告
- 專利技術交底書
- 2024年變電設備檢修工(高級)技能鑒定理論考試題庫-上(選擇題)
- 《香包的制作》教學設計(課比賽教案)()
- 北京朝陽社區工作者招聘歷年真題
- 護士中級職稱競聘述職課件
- 2024年北京市普通高中第一次合格性學業水平考試英語試題
- 總復習(教案)2023-2024學年數學 四年級下冊 北師大版
- 安全及文明施工承諾書
- 工程量計算書(全部)
評論
0/150
提交評論