久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 21801|回復: 4
打印 上一主題 下一主題
收起左側

基于單片機的電話按鍵及撥號顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:155595 發表于 2016-12-18 13:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
文檔下載,初學作品,僅供參考:
基于單片機的LCD顯示電話撥號鍵盤按鍵.doc (645 KB, 下載次數: 54)

摘要
電話在人們的日常生活中是比較的常見的電子產品之一,它已進入我們的每一個家庭。本文設計了一款基于單片機的LCD顯示電話撥號鍵盤按鍵系統。
系統采用AT89C51單片機作為電話鍵盤撥號按鍵顯示的核心部件,行列式鍵盤作為輸入電路,1602LCD作為顯示電路。軟件部分主要采用簡單且通用性強的C語言編寫實現。該設計具有電路簡單、讀取方便、顯示直觀、操作簡單、編程容易和成本廉價等優點,可用于一般的生活和工作,也可通過改裝,提高其性能,增加功能,從而給人們的生活帶來更多的方便。
關鍵詞:單片機;鍵盤;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;KeyboardLCD; Proteus simulation.
朗讀
顯示對應的拉丁字符的拼音

字典
朗讀
顯示對應的拉丁字符的拼音

字典
朗讀
顯示對應的拉丁字符的拼音

字典


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



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

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


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



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




















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









致謝
本次設計是在高老師的悉心關懷和精心指導下完成的,她嚴肅的科學態度,嚴謹的治學精神,精益求精的工作作風,深深地感染和激勵著我。我從課題的開始到最后完成,我不僅學到了扎實、寬廣的專業知識,也學到了許多做人的道理。
在我的課題開展過程中傾注著高老師辛勤的汗水和心血。老師的為人師表、淵博的知識、寬廣的胸懷讓我倍受教益,在此謹向老師們致以誠摯的謝意和崇高的敬意!
   我能順利地完成學業,與父母多年一如既往的支持和關懷是分不開的,在此,向任勞任怨、含辛茹苦的父母致以衷心的感謝!
   衷心感謝在我成長的路上指點和幫助我的前輩和朋友們!
   衷心感謝在百忙之中評閱論文的各位老師!





評分

參與人數 2黑幣 +55 收起 理由
pomeloo + 5 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:352449 發表于 2018-6-15 12:23 | 只看該作者
非常好,非常感謝,感謝
回復

使用道具 舉報

板凳
ID:352449 發表于 2018-6-15 21:44 | 只看該作者
非常好,非常感謝,感謝
回復

使用道具 舉報

地板
ID:428828 發表于 2018-11-18 19:49 | 只看該作者
非常有用,謝謝
回復

使用道具 舉報

5#
ID:728182 發表于 2020-6-16 09:48 | 只看該作者
還不錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区三区久久久 | 天天操天天玩 | 亚洲 成人 av | 蜜桃特黄a∨片免费观看 | 亚洲九九精品 | aaaaaaa片毛片免费观看 | 欧美综合一区二区 | 欧美一级片免费看 | 视频在线一区二区 | 天堂视频免费 | 操久久 | 欧美一区二区久久 | 午夜欧美日韩 | 欧美一区二区三区一在线观看 | 亚洲成人黄色 | 午夜在线小视频 | 欧美成人a∨高清免费观看 91伊人 | a欧美| 国产偷自视频区视频 | 天天射视频 | 欧美国产日韩一区二区三区 | 精品一区二区在线观看 | 狠狠干网站 | 日韩一区二区成人 | 亚洲一区二区三区在线播放 | 色噜噜色综合 | 一级做a爰片久久毛片免费看 | 亚洲视频在线观看 | 亚洲人成人一区二区在线观看 | 久久美女视频 | 中文字幕一区二区在线观看 | 女同久久另类99精品国产 | 婷婷综合久久 | 久久69精品久久久久久久电影好 | 久久亚洲国产 | 中文字幕一区二区三区四区五区 | 欧美精三区欧美精三区 | 亚洲一区二区三区四区五区中文 | 男女性毛片| 日韩精品免费一区二区在线观看 | 欧美精品一区二区三区在线播放 |