找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 21852|回復(fù): 4
收起左側(cè)

基于單片機(jī)的電話按鍵及撥號(hào)顯示

[復(fù)制鏈接]
ID:155595 發(fā)表于 2016-12-18 13:55 | 顯示全部樓層 |閱讀模式
文檔下載,初學(xué)作品,僅供參考:
基于單片機(jī)的LCD顯示電話撥號(hào)鍵盤(pán)按鍵.doc (645 KB, 下載次數(shù): 54)

摘要
電話在人們的日常生活中是比較的常見(jiàn)的電子產(chǎn)品之一,它已進(jìn)入我們的每一個(gè)家庭。本文設(shè)計(jì)了一款基于單片機(jī)的LCD顯示電話撥號(hào)鍵盤(pán)按鍵系統(tǒng)。
系統(tǒng)采用AT89C51單片機(jī)作為電話鍵盤(pán)撥號(hào)按鍵顯示的核心部件,行列式鍵盤(pán)作為輸入電路,1602LCD作為顯示電路。軟件部分主要采用簡(jiǎn)單且通用性強(qiáng)的C語(yǔ)言編寫(xiě)實(shí)現(xiàn)。該設(shè)計(jì)具有電路簡(jiǎn)單、讀取方便、顯示直觀、操作簡(jiǎn)單、編程容易和成本廉價(jià)等優(yōu)點(diǎn),可用于一般的生活和工作,也可通過(guò)改裝,提高其性能,增加功能,從而給人們的生活帶來(lái)更多的方便。
關(guān)鍵詞:單片機(jī);鍵盤(pán);LCD;Proteus仿真。


Abstract
Telephone in People's Daily life is more of a common electronic products, it has entered one of each of our family. This paper designed a microcontroller based LCD display system phone dialpad keys.
System uses AT89C51 as phone keyboard dial-up buttons show core parts, determinants as input circuit, 1602LCD keyboard as display circuit. Software mainly uses the simple and practical written in C language realization. This design has circuit is simple, convenient, direct display reads, simple operation and programming easy and cost advantages, and can be used for cheap general life and work, also can through the modification, improve the performance, increase function, so as to bring to the life of people more convenient.
Keywords: microcontroller;Keyboard;LCD; Proteus simulation.
朗讀
顯示對(duì)應(yīng)的拉丁字符的拼音

字典
朗讀
顯示對(duì)應(yīng)的拉丁字符的拼音

字典
朗讀
顯示對(duì)應(yīng)的拉丁字符的拼音

字典


1引言        1
1.1 目的和意義        1
1.2 本系統(tǒng)主要研究?jī)?nèi)容        1
2 系統(tǒng)分析        2
2.1系統(tǒng)基本方案與論證file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC55C.tmp.png        2
2.1.1控制部分的選擇方案與論證        2
2.1.2 輸出顯示電路模塊的選擇方案與論證        2
2.1.3鍵盤(pán)輸入電路模塊的選擇方案與論證        3
2.1.4電路設(shè)計(jì)最終方案        3
2.2 系統(tǒng)組成        3
2.3系統(tǒng)工作原理        4
3 系統(tǒng)硬件設(shè)計(jì)        4
3.1 系統(tǒng)硬件總電路圖        4
3.2 主芯片模塊(AT89C51單片機(jī)        5
3.2.1 主要特性        6
3.2.2 管腳說(shuō)明        6
3.2.3 振蕩器特性        8
3.2.4 芯片擦除        8
3.3 晶振和復(fù)位電路模塊        9
3.3.1 復(fù)位電路        9
3.3.2 晶振電路        9
3.4 顯示電路模塊(1602LCD)        10
3.4.1 1602LCD簡(jiǎn)介        10
3.4.2 1602LCDRAM地址映射及標(biāo)準(zhǔn)字庫(kù)表        13
3.4.3 1602LCD的一般初始化(復(fù)位)過(guò)程        14
3.5 行列鍵盤(pán)輸入電路        14
3.5.1 行列式鍵盤(pán)的基本結(jié)構(gòu)        14
3.5.2 行列式鍵盤(pán)的按鍵識(shí)別方法        15
4 系統(tǒng)軟件設(shè)計(jì)        16
4.1 程序設(shè)計(jì)整體思路        16
4.2 程序流程圖        17
4.2.1 主程序流程圖        17
4.2.2 鍵盤(pán)掃描子程序流程圖        18
4.2.3 LCD顯示子程序        20
5系統(tǒng)使用說(shuō)明        20
5.1 系統(tǒng)運(yùn)行環(huán)境        20
5.2 系統(tǒng)操作說(shuō)明        21
5.2.1 KEIL調(diào)試        21
5.2.2 Proteus調(diào)試        21
5.2.3 ProteusKeil連調(diào)實(shí)現(xiàn)電路仿真        21
6結(jié)論        22
參考文獻(xiàn)        24
致謝        25
附件1        26
附件2        32



1引言                
隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步的提高,尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。各種數(shù)字顯示儀器中的顯示、廣告牌、數(shù)碼產(chǎn)品等,傳統(tǒng)的數(shù)碼管顯示已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足各行各業(yè)的需求。單片機(jī)的應(yīng)用已經(jīng)越來(lái)越貼近生活,用單片機(jī)來(lái)實(shí)現(xiàn)一些電子設(shè)計(jì)也變得容易起來(lái)。基于單片機(jī)的LCD顯示是一種用單片機(jī)來(lái)控制的一種顯示系統(tǒng),它不僅能顯示種各數(shù)字、字母、還能顯示各種字體的漢字以及一些簡(jiǎn)單的圖象,使用起來(lái)極為方便,只要通過(guò)對(duì)單片機(jī)寫(xiě)入一定的程序來(lái)控制LCD的顯示即可完成,根據(jù)程序的不同而產(chǎn)生不同不效果。隨著單片機(jī)產(chǎn)品以及LCD產(chǎn)品的不斷涌現(xiàn),這一領(lǐng)域已經(jīng)得到了飛速的發(fā)展。
1.1 目的和意義
計(jì)算機(jī)最初的設(shè)計(jì)目的是為了提高計(jì)算數(shù)據(jù)的速度和完成海量數(shù)據(jù)的計(jì)算。隨著技術(shù)的發(fā)展,人們發(fā)現(xiàn)計(jì)算機(jī)在邏輯處理以及工業(yè)控制等方面也具有非凡的能力。在控制領(lǐng)域,人們更多的關(guān)心計(jì)算機(jī)的低成本,小體積,運(yùn)行的可靠性和控制靈活性.單片機(jī)體積小,價(jià)格低,可靠性高,其非凡的嵌入式應(yīng)用形態(tài)對(duì)于滿足嵌入式應(yīng)用需求具有獨(dú)特的優(yōu)勢(shì)。目前,單片機(jī)應(yīng)用技術(shù)已經(jīng)成為電子應(yīng)用系統(tǒng)設(shè)計(jì)最為常用的手段。在微電子技術(shù)基礎(chǔ)上發(fā)展起來(lái)的單片機(jī)及其外圍器件,使儀表技術(shù)進(jìn)入了一個(gè)嶄新的智能化時(shí)代。
在電話出現(xiàn)之前人們通信的方式有信鴿、人工送信等,不僅消息不能及時(shí)得到,而且浪費(fèi)了大量的時(shí)間。自從電話出現(xiàn)以后,人與人之間的通信在瞬間即可完成,以便我們及時(shí)去處理突發(fā)事件,因此它給我們的生活帶來(lái)了極大的方便。
電話發(fā)展的短短幾十年,從無(wú)號(hào)碼顯示到有號(hào)碼顯示,再到可視電話,在每一個(gè)轉(zhuǎn)變過(guò)程中都有重大的突破。可是它還在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的電話,基于這樣的理念,本次設(shè)計(jì)是用單片機(jī)來(lái)設(shè)計(jì)的電話撥號(hào)鍵盤(pán)按鍵的顯示。
1.2 本系統(tǒng)主要研究?jī)?nèi)容
本系統(tǒng)的主要研究?jī)?nèi)容是:

1)實(shí)現(xiàn)電話鍵盤(pán)撥號(hào)按鍵顯示基本功能。
2)根據(jù)選用的電話芯片設(shè)計(jì)外圍電路和單片機(jī)的接口電路。
3)在硬件設(shè)計(jì)時(shí),結(jié)構(gòu)要盡量簡(jiǎn)單實(shí)用,易于實(shí)現(xiàn)。
4)1602液晶進(jìn)行顯示,顯示輸出的字符和數(shù)字。
5)根據(jù)硬件電路,編寫(xiě)單片機(jī)AT89C51芯片的程序,通過(guò)編程、編譯、調(diào)試,把程序下載到單片機(jī)上運(yùn)行,并實(shí)現(xiàn)本設(shè)計(jì)的功能。
2 系統(tǒng)分析2.1系統(tǒng)基本方案與論證file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC56D.tmp.png2.1.1控制部分的選擇方案與論證
方案一:用可編程邏輯器件設(shè)計(jì)
可采用PLD器件,設(shè)計(jì)起來(lái)結(jié)構(gòu)清晰,各個(gè)模塊從硬件上設(shè)計(jì)起來(lái)相對(duì)簡(jiǎn)單,控制與顯示的模塊間連接也會(huì)比較方便。但是考慮到本設(shè)計(jì)的特點(diǎn),EDA在能夠擴(kuò)展上比較受局限,占用的資源也多。從成本上講,可編程邏輯器件價(jià)格比較高。
方案二:用單片機(jī)設(shè)計(jì)
單片機(jī)芯片作為控制部分,單片機(jī)有豐富的中斷源,它的準(zhǔn)確度相當(dāng)高,并且C語(yǔ)言的靈活運(yùn)用,給編程帶來(lái)了方便。單片機(jī)I/O功能也比較強(qiáng)大,容易對(duì)其進(jìn)行擴(kuò)展,使設(shè)計(jì)更加完善,此外單片機(jī)的成本也比較低。
綜上所述,單片機(jī)資源豐富,程序編寫(xiě)也靈活簡(jiǎn)單,可移植性強(qiáng),性?xún)r(jià)比也高,所以選擇單片機(jī)作為主控芯片。
2.1.2 輸出顯示電路模塊的選擇方案與論證
方案一:用數(shù)碼管進(jìn)行顯示
數(shù)碼管由于顯示速度快,使用簡(jiǎn)單,顯示效果簡(jiǎn)潔明了而得到了廣泛應(yīng)用。但是由于我們計(jì)劃顯示英語(yǔ)字母和數(shù)字,內(nèi)容多。用數(shù)碼管無(wú)法顯示如此豐富的內(nèi)容,因此我們放棄了此方案。
方案二:用LCD液晶進(jìn)行顯示
LCD由于其顯示清晰,顯示內(nèi)容豐富,顯示信息量大,使用方便,顯示快速而得到了廣泛的應(yīng)用。
對(duì)于此系統(tǒng)我們選用的LCD液晶能夠顯示英語(yǔ)字母和數(shù)字,能夠很好的滿足顯示要求,因此我們選擇了此方案。
2.1.3鍵盤(pán)輸入電路模塊的選擇方案與論證
鍵盤(pán)用于實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)中的數(shù)據(jù)和控制命令的輸入, 鍵盤(pán)輸入也是單片機(jī)應(yīng)用系統(tǒng)中使用最廣泛的一種輸入方式。鍵盤(pán)輸入的主要對(duì)象是各種按鍵或開(kāi)關(guān)。這些按健或者開(kāi)關(guān)可以獨(dú)立使用, 也可以組合成鍵陣使用。單片機(jī)中常用的按鍵式鍵盤(pán)可以分為兩類(lèi): 獨(dú)立連接式和行列式。每類(lèi)按譯碼方式的不同又分為編碼式和非編碼式兩種。單片機(jī)中一般使用的都是用軟件來(lái)識(shí)別和產(chǎn)生鍵代碼的非編碼鍵盤(pán)。行列式鍵盤(pán)的編碼方式有靜態(tài)和動(dòng)態(tài)兩種。靜態(tài)接口主要由一個(gè)行編碼器和一個(gè)列編碼器構(gòu)成;動(dòng)態(tài)接口可采用計(jì)數(shù)器,譯碼器和數(shù)據(jù)選擇器構(gòu)成。這兩種鍵盤(pán)由硬件完成鍵的辨碼任務(wù)。一般在小型儀器儀表和控制系統(tǒng)中,使用較多的是行列式和獨(dú)立式的非編碼鍵盤(pán);如果系統(tǒng)要求實(shí)現(xiàn)多鍵同時(shí)按下的處理,則用非編碼獨(dú)立方式較為合適。
方案一:采用獨(dú)立式按鍵電路
獨(dú)立式按鍵電路每個(gè)按鍵單獨(dú)占有一根I/O接口線, 每個(gè)I/O口的工作狀態(tài)互不影響,此類(lèi)鍵盤(pán)采用端口直接掃描方式。缺點(diǎn)為當(dāng)按鍵較多時(shí)占用單片機(jī)的I/O口數(shù)目較多,優(yōu)點(diǎn)為電路設(shè)計(jì)簡(jiǎn)單,且編程相對(duì)比較容易。
方案二:采用行列式鍵盤(pán)電路
行列式鍵盤(pán)為4*3矩陣式行列掃描,雖然軟件較為復(fù)雜,但是當(dāng)按鍵較多時(shí)可降低占用單片機(jī)的I/O口數(shù)目。
對(duì)于此系統(tǒng),由于按鍵數(shù)目多,故采用方案二。
2.1.4電路設(shè)計(jì)最終方案
本系統(tǒng)包括主芯片模塊、顯示電路模塊、鍵盤(pán)輸入模塊、晶振和復(fù)位電路模塊。綜上各方案所述,確定最終設(shè)計(jì)方案為:采用單片機(jī)作為主控制系統(tǒng),LCD液晶作為顯示部分,行列式按鍵作為鍵盤(pán)輸入模塊。
2.2 系統(tǒng)組成
整個(gè)硬件電路由單片機(jī)及單片機(jī)的復(fù)位和晶振電路、單片機(jī)中斷、液晶顯示器和4*3矩陣鍵盤(pán)組成。其整體結(jié)構(gòu)如圖1所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC56E.tmp.png
1 系統(tǒng)整體硬件組成
2.3系統(tǒng)工作原理
總的來(lái)說(shuō),此系統(tǒng)的工作原理就是由單片機(jī)通過(guò)掃描鍵盤(pán)上所按下的鍵,然后顯示在1602 LED顯示屏上,鍵盤(pán)接在單片機(jī)的P3端口,LCD顯示屏接在單片機(jī)的P0端口,P0端沒(méi)有上拉電阻,所以外接RP1。在這一系統(tǒng)中單片機(jī)為核心部件,通過(guò)對(duì)單片機(jī)編寫(xiě)程序,采用行掃描法對(duì)鍵盤(pán)進(jìn)行識(shí)別。判斷有無(wú)按鍵按下的方法:將全部行線置低電平,全部列線置高電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下。判斷按鍵所在位置的方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其他根行線為高電平。在確定某根行線為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某根列線為低電平,則該列線與置為低電平的行線交叉處的按鍵就是所按下的按鍵。獲取按鍵后,由單片機(jī)控制LCD顯示。1602LCD液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,LCD內(nèi)帶字符發(fā)生器的控制器,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的ASCII碼即可顯示。
3 系統(tǒng)硬件設(shè)計(jì)3.1 系統(tǒng)硬件總電路圖
將電話撥號(hào)鍵盤(pán)上所撥號(hào)碼顯示在1602液晶屏上的電路如圖2:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC57F.tmp.jpg
2 系統(tǒng)總硬件圖
3.2主芯片模塊(AT89C51單片機(jī))
AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱(chēng)單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C51單片
機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。其截圖如3:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC58F.tmp.jpg
3 AT89C51芯片
3.2.1主要特性
·與MCS-51 兼容
·4K字節(jié)可編程閃爍存儲(chǔ)器
·壽命:1000寫(xiě)/擦循環(huán)
·數(shù)據(jù)保留時(shí)間:10年
·全靜態(tài)工作:0Hz-24Hz
·三級(jí)程序存儲(chǔ)器鎖定
·128*8位內(nèi)部RAM
·32可編程I/O線
·兩個(gè)16位定時(shí)器/計(jì)數(shù)器
·5個(gè)中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時(shí)鐘電路
3.2.2 管腳說(shuō)明
VCC:供電電壓。
GND:接地。
P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(記時(shí)器0外部輸入)
P3.5 T1(記時(shí)器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)
P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。
/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2:來(lái)自反向振蕩器的輸出。
3.2.3振蕩器特性
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。
3.2.4芯片擦除
整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保
ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
    AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種
軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。
3.3晶振和復(fù)位電路模塊
晶振和復(fù)位電路模塊是系統(tǒng)中很重要的一部分。其截圖如圖4:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC590.tmp.pngfile:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC5A1.tmp.jpg
     4 晶振和復(fù)位電路
3.3.1 復(fù)位電路
單片機(jī)需要復(fù)位以后才能正常工作,復(fù)位的目的就是使單片機(jī)處于一個(gè)基準(zhǔn)點(diǎn),在這個(gè)基準(zhǔn)點(diǎn),程序?qū)?huì)從C51的main()主函數(shù)的第一條語(yǔ)句開(kāi)始執(zhí)行。復(fù)位工作是一個(gè)純硬件的工作,一般是在上電開(kāi)始幾毫秒內(nèi)執(zhí)行完畢。
復(fù)位的過(guò)程很簡(jiǎn)單,在電源剛剛合上時(shí),電流經(jīng)過(guò)電阻對(duì)電解電容器充電,這樣在電阻上就形成一個(gè)電壓,對(duì)于單片機(jī)來(lái)說(shuō),這個(gè)電壓就是復(fù)位電壓。經(jīng)過(guò)若干毫秒以后,電解電容器被充滿電,這時(shí)電阻就沒(méi)有電流流過(guò),電阻兩端也就沒(méi)有電壓,單片機(jī)的復(fù)位腳電壓恢復(fù)為0,復(fù)位工作結(jié)束,單片機(jī)開(kāi)始工作。
3.3.2晶振電路
AT89C51單片機(jī)內(nèi)部有一振蕩電路,只要在單片機(jī)的XTAL1和XTAL2引腳外接晶振,就改成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào)。
如圖4所示,單片機(jī)工作的時(shí)間基準(zhǔn)是由時(shí)鐘電路提供的。在單片機(jī)的XTAL1和XTAL2兩個(gè)引腳間,接一個(gè)晶振及兩只電容就構(gòu)成了時(shí)鐘電路。
電路中的器件可以通過(guò)計(jì)算和實(shí)驗(yàn)確定,也可以參考一些典型電路參數(shù)。電路中,電容器C1和C2對(duì)晶振器頻率有微調(diào)作用,通常取值范圍30+10pF;石英晶體選擇6MHZ或12MHZ都可以。其結(jié)果只是機(jī)器周期時(shí)間不同,影響計(jì)算器的計(jì)數(shù)初值。
3.4顯示電路模塊(1602LCD)
本設(shè)計(jì)中重點(diǎn)部分是基于單片機(jī)系統(tǒng)的液晶顯示部分。液晶顯示模塊是一種將液晶顯示器件、連接件、集成電路、PCB線路板、背光源、結(jié)構(gòu)件裝配在一起的組件,英文名叫“LCD Module”, 簡(jiǎn)稱(chēng)“LCM”,中文一般為“液晶顯示模塊”。在單片機(jī)系統(tǒng)中使用液晶顯示模塊作為輸出有以下優(yōu)點(diǎn):顯示資料高、數(shù)字式接口、功率消耗小、電路中的應(yīng)用。
3.4.1 1602LCD簡(jiǎn)介
工業(yè)字符型液晶能夠同時(shí)顯示16*02即32個(gè)字符。(16列2行),1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來(lái)的兩條是背光電源線。 一般1602字符型液晶顯示器實(shí)物如圖5:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC5C1.tmp.png
圖5 1602LCD的實(shí)物圖
1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,應(yīng)用中并無(wú)差別。
1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明如表1所示:


表1:引腳接口說(shuō)明表
編號(hào)
符號(hào)
引腳說(shuō)明
編號(hào)
符號(hào)
引腳說(shuō)明
1
VSS
電源地
9
D2
數(shù)據(jù)
2
VDD
電源正極
10
D3
數(shù)據(jù)
3
VEE
液晶顯示偏壓
11
D4
數(shù)據(jù)
4
RS
數(shù)據(jù)/命令選擇
12
D5
數(shù)據(jù)
5
R/W
讀/寫(xiě)選擇
13
D6
數(shù)據(jù)
6
E
使能信號(hào)
14
D7
數(shù)據(jù)
7
D0
數(shù)據(jù)
15
BLA
背光源正極
8
D1
數(shù)據(jù)
16
BLK
背光源負(fù)極
1腳:VSS為地電源。
2腳:VDD接5V正電源。
3腳:VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。
4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。
5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。
6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。
7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
15腳:背光源正極。
16腳:背光源負(fù)極。



表2:控制命令表
序號(hào)
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清顯示
0
0
0
0
0
0
0
0
0
1
2
光標(biāo)返回
0
0
0
0
0
0
0
0
1
*
3
置輸入模式
0
0
0
0
0
0
0
1
I/D
S
4
顯示開(kāi)/關(guān)控制
0
0
0
0
0
0
1
D
C
B
5
光標(biāo)或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符發(fā)生存貯器地址
0
0
0
1
字符發(fā)生存貯器地址
8
置數(shù)據(jù)存貯器地址
0
0
1
顯示數(shù)據(jù)存貯器地址
9
讀忙標(biāo)志或地址
0
1
BF
計(jì)數(shù)器地址
10
寫(xiě)數(shù)到CGRAM或DDRAM)
1
0
要寫(xiě)的數(shù)據(jù)內(nèi)容
11
從CGRAM或DDRAM讀數(shù)
1
1
讀出的數(shù)據(jù)內(nèi)容
1602液晶模塊的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H, 光標(biāo)復(fù)位到地址00H位置。
指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。
指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S: 屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。
指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。
指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。
指令7:字符發(fā)生器RAM地址設(shè)置。
指令8:DDRAM地址設(shè)置。
指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。
指令10:寫(xiě)數(shù)據(jù)。
指令11:讀數(shù)據(jù)。
3.4.2 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表
液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖61602的內(nèi)部顯示地址。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC5E1.tmp.png
圖6 1602LCD內(nèi)部顯示地址
例如第二行第一個(gè)字符的地址是40H,那么是否直接寫(xiě)入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷?xiě)入顯示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B (80H) =11000000B (C0H) 。
在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。其中字符代碼與字符圖形對(duì)應(yīng)關(guān)系如圖7所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC5E2.tmp.jpg
7字符代碼與字符圖形對(duì)應(yīng)關(guān)系
3.4.3 1602LCD的一般初始化(復(fù)位)過(guò)程
延時(shí)15mS
寫(xiě)指令38H(不檢測(cè)忙信號(hào))
延時(shí)5mS
寫(xiě)指令38H(不檢測(cè)忙信號(hào))
延時(shí)5mS
寫(xiě)指令38H(不檢測(cè)忙信號(hào))
以后每次寫(xiě)指令、讀/寫(xiě)數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)
寫(xiě)指令38H:顯示模式設(shè)置
寫(xiě)指令08H:顯示關(guān)閉
寫(xiě)指令01H:顯示清屏
寫(xiě)指令06H:顯示光標(biāo)移動(dòng)設(shè)置
寫(xiě)指令0CH:顯示開(kāi)及光標(biāo)設(shè)置
3.5行列鍵盤(pán)輸入電路3.5.1行列式鍵盤(pán)的基本結(jié)構(gòu)
行列式鍵盤(pán)中的鍵實(shí)際上就是一個(gè)機(jī)械開(kāi)關(guān),位于行線和列線的交點(diǎn)處,圖8所示為本設(shè)計(jì)中使用的4×3列的12鍵行列式鍵盤(pán),當(dāng)鍵被按下時(shí),其交點(diǎn)的行線和列線接通,使相應(yīng)行線或列線上的電平發(fā)生變化,根據(jù)電平變化情況確定被按下的鍵。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC5F3.tmp.jpgfile:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC604.tmp.jpg
8鍵盤(pán)外觀                         9鍵盤(pán)內(nèi)部鏈接電路
3.5.2行列式鍵盤(pán)的按鍵識(shí)別方法
常用的鍵盤(pán)識(shí)別方法有:行掃描法,線翻轉(zhuǎn)法和利用8279鍵盤(pán)接口的中斷法。前兩種方法相當(dāng)于查詢(xún)法,需要反復(fù)查詢(xún)按鍵的狀態(tài),會(huì)占用大量的CPU時(shí)間。后一種方法在有鍵按下時(shí)向CPU申請(qǐng)中斷,平時(shí)并不需要占用CPU時(shí)間。在本系統(tǒng)中,完全可以不使用中斷法完成鍵盤(pán)接口, 這是由系統(tǒng)的特殊性決定的。首先,對(duì)于本系統(tǒng)而言,要實(shí)現(xiàn)便攜式的設(shè)計(jì),硬件電路使用的器件越少越好。其次,被測(cè)信號(hào)由外中斷引腳輸入,未占用單片機(jī)4個(gè)并行I/O口中的任何一個(gè),系統(tǒng)有足夠的資源利用自身I/O 口完成接口。最后,只有當(dāng)傳感器輸出信號(hào)頻率為空載頻率,系統(tǒng)處于空閑待測(cè)的狀態(tài)下,才允許鍵盤(pán)輸入,因此鍵盤(pán)識(shí)別占用的CPU時(shí)間不會(huì)對(duì)系統(tǒng)正常工作造成影響。因此直接利用單片機(jī)并行接口完成鍵盤(pán)的接口,采用行掃描法進(jìn)行鍵盤(pán)識(shí)別。
行掃描法又稱(chēng)為逐行(或列)掃描查詢(xún)法,是一種最常用的按鍵識(shí)別方法,如圖9所示鍵盤(pán),介紹過(guò)程如下:
1、判斷鍵盤(pán)上是否有鍵閉合
將全部行線置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤(pán)中無(wú)鍵按下。
2、去除鍵的機(jī)械抖動(dòng)
為保證鍵的正確識(shí)別, 需要進(jìn)行去抖動(dòng)處理。其方法是得知鍵盤(pán)上有鍵閉合后延遲一段時(shí)間, 再判別鍵盤(pán)的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤(pán)上有一個(gè)鍵處于穩(wěn)定的閉合期, 否則認(rèn)為是鍵的抖動(dòng)或者是干擾。
3、確定閉合鍵的物理位置
在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。
4、得到閉合鍵的編號(hào)
在得到閉合鍵的物理位置的基礎(chǔ)上,根據(jù)給定的按鍵編號(hào)規(guī)律,計(jì)算得出閉合鍵的編號(hào)。
5、確保CPU對(duì)鍵的一次閉合僅做一次處理
為實(shí)現(xiàn)這一功能, 可以采用等待閉合鍵釋放以后在處理的方法。
4 系統(tǒng)軟件設(shè)計(jì)
C51單片機(jī)可以應(yīng)用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。匯編語(yǔ)言與機(jī)器指令一一對(duì)應(yīng),所以用匯編語(yǔ)言編寫(xiě)的程序在單片機(jī)里運(yùn)行起來(lái)效率較高,但可移植性差。C語(yǔ)言程序可讀性高,也便于移植到其它系統(tǒng)中,故本次設(shè)計(jì)使用C語(yǔ)言編程。
4.1 程序設(shè)計(jì)整體思路
此設(shè)計(jì)是由單片機(jī)控制的LCD顯示系統(tǒng),另外鍵盤(pán)來(lái)控制顯示的方式。
P3口作為鍵盤(pán)的輸入端,對(duì)于按鍵的識(shí)別方式可以是中斷也可以是查詢(xún),在此設(shè)計(jì)中所選用的是行掃描法進(jìn)行鍵盤(pán)識(shí)別。
P0口作為LCD的顯示控制端,由于此LCD的顯示屏被分為了兩部分,所以應(yīng)該對(duì)LCD顯示位置進(jìn)行設(shè)置。由此LCD的顯示時(shí)序可知,在顯示過(guò)程中還需要一定的延時(shí)并且在顯示前需將一些特定的控制端置相應(yīng)的電平,所以還需要一個(gè)適當(dāng)?shù)难訒r(shí)子程序以及輸入數(shù)據(jù)前的準(zhǔn)備程序。除了這些外,還應(yīng)寫(xiě)一個(gè)初始化程序,用來(lái)對(duì)LCD進(jìn)行初始化設(shè)置。
最后就是主函數(shù),它的主要功能就是判斷鍵盤(pán)上是否有按鍵閉合,若有按鍵閉合,然后根據(jù)按下的是哪一個(gè)鍵來(lái)執(zhí)行相應(yīng)的程序,選擇相應(yīng)的顯示方式。其總體設(shè)計(jì)框圖如圖10所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC614.tmp.jpg
10 設(shè)計(jì)框圖
劃分模塊時(shí)應(yīng)遵循下述原則:
(1) 每個(gè)模塊應(yīng)具有獨(dú)立的功能,能產(chǎn)生一個(gè)明確的結(jié)果。
(2) 模塊之間的控制參數(shù)應(yīng)盡量簡(jiǎn)單,數(shù)據(jù)參數(shù)應(yīng)盡量少。
(3) 模塊長(zhǎng)度適中。
(4) 根據(jù)模塊的劃分原則,將該程序劃分成5個(gè)模塊。
4.2 程序流程圖4.2.1主程序流程圖
系統(tǒng)第一次上電后,先進(jìn)行初始化,初始化LCD模塊,設(shè)置LCD中各個(gè)部分的顯示內(nèi)容,然后進(jìn)行鍵盤(pán)掃描,獲取按鍵,以及根據(jù)各按鍵的不同執(zhí)行相應(yīng)的操作,最后等待釋放,釋放之后再進(jìn)行鍵盤(pán)掃描,循環(huán)以上操作。
系統(tǒng)主程序流程圖如圖11,其源代碼見(jiàn)附件1。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC615.tmp.png
11 主程序流程圖
4.2.2 鍵盤(pán)掃描子程序流程圖
鍵盤(pán)上有很多鍵,每一個(gè)鍵對(duì)應(yīng)一個(gè)鍵碼,以便根據(jù)鍵碼轉(zhuǎn)到相應(yīng)的鍵處理子程序,進(jìn)一步實(shí)現(xiàn)數(shù)據(jù)輸入和命令處理的功能。
鍵盤(pán)掃描子程序流程如圖12所示,其源代碼見(jiàn)附件1。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC626.tmp.png
12鍵盤(pán)掃描方式子程序流程圖
下面給出一個(gè)具體的例子解釋圖12:
如圖3所示,AT89C51單片機(jī)的P3口用作鍵盤(pán)I/O口,鍵盤(pán)的列線接到P3口的低4位,鍵盤(pán)的行線接到P3口的高4位。列線P3.0-P3.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P3.0-P3.3設(shè)置為輸入線,行線P3.4-P3.7設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。
1)檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P3.4-P3.7輸出全“0”,讀取P3.0-P3.3的狀態(tài),若P3.0-P3.3為全“1”,則無(wú)鍵閉合,否則有鍵閉合。
2)去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。
3)若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤(pán)的行線進(jìn)行掃描。P3.4-P3.7按下述4種組合依次輸出:
P3.7 1  1  1  0
P3.6 1  1  0  1
P3.5 1  0  1  1
P3.4 0  1  1  1
4)在每組行輸出時(shí)讀取P3.0-P3.3,若全為“1”,則表示為“0”這一行沒(méi)有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。
4.2.3 LCD顯示子程序
LCD LM016L的顯示函數(shù)很簡(jiǎn)單,只要嚴(yán)格按照其時(shí)序圖操作,并結(jié)合其相關(guān)指令集,寫(xiě)好LCD的初始化程序,清屏程序,寫(xiě)指令程序,寫(xiě)數(shù)據(jù)程序,讀數(shù)據(jù)程序等一系列驅(qū)動(dòng)程序,即可完成LCD的所有顯示需要。在本設(shè)計(jì)中,由于需要顯示的內(nèi)容比較多,且有些需要重復(fù)顯示,有些只要顯示一次,故只畫(huà)出液晶顯示的基本流程。
LCD顯示流程圖如圖13所示,其源代碼見(jiàn)附件1。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC627.tmp.png
13 LCD顯示子程序流程圖
5系統(tǒng)使用說(shuō)明5.1系統(tǒng)運(yùn)行環(huán)境
1、本系統(tǒng)的硬件電路是在Proteus電路仿真軟件上運(yùn)行的。
2、本系統(tǒng)的軟件是在 Keil uVision3 上編譯運(yùn)行的。
3、通過(guò)Proteus與Keil連調(diào)實(shí)現(xiàn)電路仿真。
5.2 系統(tǒng)操作說(shuō)明5.2.1 KEIL調(diào)試
打開(kāi)Keil新建工程文件,然后添加源程序文件,保存時(shí)把文件后綴名改成“.c”,再直接導(dǎo)入新建的工程中。
把源程序全部錄入后,先粗略的檢查一遍,主要改正明顯的各種錯(cuò)誤,這樣可以減少之后的修改工作量。接著Options for Target “Target 1” ,點(diǎn)擊Output ,勾選Create Hex 那個(gè)選項(xiàng),一邊生成可執(zhí)行的文件。然后點(diǎn)擊Project菜單下的Built Target命令然后再進(jìn)行編譯、連接,形成目標(biāo)文件。編譯、連接用Project菜單下的Built Target命令(或快捷鍵F7),也可以直接點(diǎn)擊工具欄中相對(duì)應(yīng)的圖標(biāo)。.
編譯、連接時(shí),如果程序存在語(yǔ)法有錯(cuò),則不會(huì)通過(guò)編譯,并在下面的信息窗口給出相應(yīng)的出錯(cuò)提示信息,其中錯(cuò)誤是一定得改正的,警告可以忽略。雙擊下面顯示錯(cuò)誤信息的那一行,可以直接定位錯(cuò)誤所在的行,用戶(hù)可以方便的對(duì)程序進(jìn)行修改。修改后再編譯、連接,繼續(xù)進(jìn)行調(diào)試,這個(gè)過(guò)程可能會(huì)重復(fù)多次。如果沒(méi)有任何語(yǔ)法上的錯(cuò)誤,則編譯、連接成功,并且信息窗口給出提示信息。
5.2.2 Proteus調(diào)試
在Proteus軟件中先從元件庫(kù)中加載要使用的那些元件,然后把元件放在圖紙上一個(gè)一個(gè)的接線,盡量不讓線交錯(cuò),便于查看、分析,有必要時(shí),使用接線標(biāo)號(hào)法,完成所有元器件的接線。
5.2.3 Proteus與Keil連調(diào)實(shí)現(xiàn)電路仿真
Proteus中雙擊AT89C51,在彈出的窗口中Program File后面選擇在Keil中生成的以“.hex”為后綴名的文件,為單片機(jī)添加可執(zhí)行文件。然后點(diǎn)擊左下角的相關(guān)圖標(biāo),開(kāi)始進(jìn)行仿真。
仿真運(yùn)行結(jié)果如下圖14所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC637.tmp.jpg
14 仿真圖
6結(jié)論
隨著電子技術(shù)的不斷進(jìn)步,普通的電話已漸漸不能滿足人們?nèi)粘5男枨螅《氖枪δ芨鼜?qiáng)大的電話。本系統(tǒng)就是基于這樣一個(gè)背景下開(kāi)始設(shè)計(jì)的。系統(tǒng)以AT89C51芯片作為主控模塊,鍵盤(pán)作為輸入電路模塊,1602LCD作為顯示電路模塊,實(shí)現(xiàn)了以下功能如下:
1)系統(tǒng)運(yùn)行時(shí)將所按下的鍵盤(pán)顯示在液晶屏上;
2)電話號(hào)碼鍵盤(pán)上的“*”鍵能夠?qū)崿F(xiàn)退格功能;
3)電話號(hào)碼鍵盤(pán)上的“#”鍵能夠?qū)崿F(xiàn)清除功能;
4)每按下一個(gè)鍵盤(pán)能夠發(fā)出聲音;
通過(guò)此次設(shè)計(jì)本人在各方面有了一定的提高。
首先通過(guò)這次畢業(yè)設(shè)計(jì),我不僅對(duì)理論有了更深一步的認(rèn)識(shí),增強(qiáng)了和外界技術(shù)的溝通,還培養(yǎng)了自學(xué)能力和分析解決問(wèn)題的能力,更重要的是,培養(yǎng)了克服困難的勇氣和信心。
其次,培養(yǎng)了自己的市場(chǎng)觀念。一個(gè)商品是否能夠搶占市場(chǎng),除了必須的功能和質(zhì)量要求外,其價(jià)格是最大的競(jìng)爭(zhēng)優(yōu)勢(shì)。如何在保證質(zhì)量和完成同等功能的情況下,把產(chǎn)品的成本降到最低。是每個(gè)設(shè)計(jì)人員在作出方案時(shí)首要考慮的因素。
由于本人能力有限,系統(tǒng)仍然存在著一些問(wèn)題。
1)本系統(tǒng)只顯示了所按下的鍵,系統(tǒng)可以再集成一些其它模塊,將所按下的鍵通過(guò)聲音發(fā)出來(lái)。
2)作為家用電話,本系統(tǒng)還不能顯示時(shí)間和日期,這有待于在以后的學(xué)習(xí)中進(jìn)一步探討。
總之,畢業(yè)設(shè)計(jì)完成了,但又面臨著工作。我相信我會(huì)把自己的熱情和所學(xué)奉獻(xiàn)到自己的工作中,不斷努力,不斷進(jìn)取。




















參考文獻(xiàn)
[1] 侯玉寶等.基于proteus的51系列單片機(jī)設(shè)計(jì)與仿真.北京:電子工業(yè)出版社,2008.
[2] 李朝青.單片機(jī)原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,2006.
[3] 朱清慧等Proteus——電子線路設(shè)計(jì)、制版與仿真.北京:清華大學(xué)出版社,2008.
[4] Http://www.Sunman.cn/lcm/product/SMG12864A.him
[5] 張毅剛.單片機(jī)原理極其應(yīng)用.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004
[6] 趙建領(lǐng)編著,51系列單片機(jī)開(kāi)發(fā)寶典,電子工業(yè)出版社,2007
[7] 潘永雄編著,新編單片機(jī)原理與應(yīng)用,西安電子科技大學(xué)出版社,2003
[8] 李國(guó)興、李偉編著,單片機(jī)開(kāi)發(fā)應(yīng)用技術(shù),北京大學(xué)出版社,2007
[9] 劉瑞新編著,單片機(jī)原理及應(yīng)用教程,機(jī)械工業(yè)出版社,2003
[10] 李光飛,樓然苗 ,單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo),第一版,北京航空航天大學(xué)出版社,2004
[11] 譚浩強(qiáng). C程序設(shè)計(jì)(第二版) [M]. 北京: 清華大學(xué)出版社, 1999.12.
[12] 付軍. Visual Basic 實(shí)用編程100例 [M]. 北京: 中國(guó)鐵道出版社, 2003.5.
[13] 李長(zhǎng)林. Visual Basic串口通信技術(shù)與典型實(shí)例 [M]. 北京: 清華大學(xué)出版社, 2004.1









致謝
本次設(shè)計(jì)是在高老師的悉心關(guān)懷和精心指導(dǎo)下完成的,她嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。我從課題的開(kāi)始到最后完成,我不僅學(xué)到了扎實(shí)、寬廣的專(zhuān)業(yè)知識(shí),也學(xué)到了許多做人的道理。
在我的課題開(kāi)展過(guò)程中傾注著高老師辛勤的汗水和心血。老師的為人師表、淵博的知識(shí)、寬廣的胸懷讓我倍受教益,在此謹(jǐn)向老師們致以誠(chéng)摯的謝意和崇高的敬意!
   我能順利地完成學(xué)業(yè),與父母多年一如既往的支持和關(guān)懷是分不開(kāi)的,在此,向任勞任怨、含辛茹苦的父母致以衷心的感謝!
   衷心感謝在我成長(zhǎng)的路上指點(diǎn)和幫助我的前輩和朋友們!
   衷心感謝在百忙之中評(píng)閱論文的各位老師!





評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
pomeloo + 5 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:352449 發(fā)表于 2018-6-15 12:23 | 顯示全部樓層
非常好,非常感謝,感謝
回復(fù)

使用道具 舉報(bào)

ID:352449 發(fā)表于 2018-6-15 21:44 | 顯示全部樓層
非常好,非常感謝,感謝
回復(fù)

使用道具 舉報(bào)

ID:428828 發(fā)表于 2018-11-18 19:49 | 顯示全部樓層
非常有用,謝謝
回復(fù)

使用道具 舉報(bào)

ID:728182 發(fā)表于 2020-6-16 09:48 | 顯示全部樓層
還不錯(cuò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表