版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、智能儀器課程設(shè)計(jì)報(bào)告題 目簡(jiǎn)易計(jì)算器設(shè)計(jì)院 系機(jī)械與電子工程學(xué)院專業(yè)班級(jí)姓 名學(xué) 號(hào)指 導(dǎo) 老 師 2015年 1 月13日- 0 -概要隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研等各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種用單片機(jī)設(shè)計(jì)的簡(jiǎn)單計(jì)算器。這個(gè)計(jì)算器除了會(huì)加減乘除的運(yùn)算功能以外,還具有連續(xù)運(yùn)算的功能。本文首先簡(jiǎn)單描述了硬件系統(tǒng)的工作原理,且附以硬件系統(tǒng)的設(shè)計(jì)框圖,論述了本次課程設(shè)計(jì)所應(yīng)用的硬件接口技術(shù)和各個(gè)接口模塊的功能及工作過(guò)程, 并具體描述了外接電路接口的軟、硬件調(diào)試。其次闡述了程序的流程和實(shí)現(xiàn)過(guò)程。本次課程設(shè)計(jì)就是以C51來(lái)進(jìn)行軟件設(shè)計(jì),軟件的設(shè)計(jì)
2、采用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡(jiǎn)潔明了。使硬件在軟件的控制下協(xié)調(diào)運(yùn)作。本文撰寫的主導(dǎo)思想是軟、硬件相結(jié)合,以硬件為基礎(chǔ),來(lái)進(jìn)行各功能模塊的編寫。關(guān)鍵詞: 計(jì)算器,單片機(jī),AT89C51,匯編語(yǔ)言,模塊化目 錄 概 要-1第1章 課程設(shè)計(jì)選題及設(shè)計(jì)要求-3 1.1課程設(shè)計(jì)選題-3 1.2課題設(shè)計(jì)要求-3第2章 方案選擇-4 2.1單片機(jī)芯片的選擇方案-4 2.2 顯示模塊選擇方案-4 2.3 電路設(shè)計(jì)最終方案-4第三章 硬件電路設(shè)計(jì)-5 3.1硬件電路設(shè)計(jì)圖-5 3.2 主要單元電路介紹-6 3.2.1 單片機(jī)最小系統(tǒng)-6 3.2.2 鍵盤控制電路-7 3.2.3 LCD顯示電路-9第
3、四章 軟件編程設(shè)計(jì)-13 4.1流程圖-13 4.2 設(shè)計(jì)思路分析-14 4.3 源程序-15第5章 調(diào)試程序-27 5.1 調(diào)試結(jié)果分析-27 5.2存在的問題及解決方法-28 設(shè)計(jì)總結(jié)及體會(huì)-30參考文獻(xiàn)-31- 30 -第1章 課程設(shè)計(jì)選題與功能要求1.1課程設(shè)計(jì)選題: 此次課程設(shè)計(jì)包含九個(gè)課題,存在幾個(gè)比較難得課題但大部分還是算比較簡(jiǎn)單的,像簡(jiǎn)易數(shù)字示波器就比較有難度,因?yàn)樯婕暗哪K比較多,像AD采集轉(zhuǎn)換、LCD12864,而且自己對(duì)LCD12864不是很熟悉,在一個(gè)禮拜的課程設(shè)計(jì)的時(shí)間里很難熟練地掌握和應(yīng)用,故沒有選擇;課題中相對(duì)來(lái)說(shuō)也存在幾個(gè)簡(jiǎn)單的課題,像燈光控制器,交通燈,因?yàn)樽?/p>
4、己先前做過(guò)類似的實(shí)驗(yàn),所以沒有選擇。 在考慮課題難度及時(shí)間的情況下,再綜合自己的實(shí)踐能力,我就選擇難度不是很大的“簡(jiǎn)易計(jì)算器設(shè)計(jì)”這一個(gè)課題。一是因?yàn)樽约簩?duì)這個(gè)課題感興趣,而且經(jīng)常在學(xué)習(xí)中使用;二是自己對(duì)這個(gè)課題有一定的理論基礎(chǔ)和完成這個(gè)課題的構(gòu)思,所以就定下了這課題。1.2 課題設(shè)計(jì)要求1.能進(jìn)行多字節(jié)的整數(shù)的單獨(dú)運(yùn)算,結(jié)果用十進(jìn)制的數(shù)字顯示;2.嘗試編寫連加、連減的運(yùn)算程序并進(jìn)行演示;3.嘗試編寫混合的運(yùn)算程序并進(jìn)行演示;4.嘗試編寫實(shí)數(shù)的連加、連減運(yùn)算程序。 第二章 方案選擇2.1單片機(jī)芯片的選擇:方案一: 采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM
5、存儲(chǔ)空間,能于3V的超低壓工作。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能、CMOS、8位單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,而且與MCS-51系列單片機(jī)完全兼容。2.2 顯示模塊的選擇:方案一: 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以不用此種作為顯示.方案二:采用LED數(shù)碼管動(dòng)態(tài)掃描,雖然LED數(shù)碼管價(jià)格適中,但要顯示多個(gè)數(shù)字所需要
6、的個(gè)數(shù)偏多,功耗較大,所以也不用此種作為顯示。方案三: 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,與普通數(shù)碼管相比功耗較小,硬件連接簡(jiǎn)單。所以顯示部分采用1602液晶。 2.3 電路設(shè)計(jì)最終方案:綜上各方案所述,對(duì)本次設(shè)計(jì)的方案選定為: 1.采用AT89C51作為主控制系統(tǒng); 2.4X4矩陣鍵盤和獨(dú)立鍵盤作為輸入模塊;3.1602液晶作為顯示模塊。 第三章 硬件電路設(shè)計(jì)3.1總體框圖設(shè)計(jì)1本設(shè)計(jì)里用到的單片機(jī)芯片是AT89C51芯片,除此之外還包括:晶振電路和復(fù)位電路構(gòu)成單片機(jī)最小應(yīng)用系統(tǒng);24x4矩陣鍵盤;3LCD顯示電路。 總體設(shè)計(jì)框圖 3.
7、2 主要單元電路 3.2.1 TC89C52RC 單片機(jī)介紹 STC89C52RC 單片機(jī)是宏晶科技推出的新一代高速/低功耗/超強(qiáng)抗干擾的單 片機(jī),指令代碼完全兼容傳統(tǒng) 8051 單片機(jī),12 時(shí)鐘/機(jī)器周期和 6 時(shí)鐘/機(jī)器周 期可以任意選擇。 主要特性如下: 1. 增強(qiáng)型 8051 單片機(jī),6 時(shí)鐘/機(jī)器周期和 12 時(shí)鐘/機(jī)器周期可以任 意選擇,指令代碼完全兼容傳統(tǒng) 8051. 2. 工作電壓:5.5V3.3V(5V 單片機(jī))/3.8V2.0V(3V 單片機(jī)) 3. 工作頻率范圍:040MHz,相當(dāng)于普通 8051 的 080MHz,實(shí)際工 作頻率可達(dá) 48MHz 4. 用戶應(yīng)用程序空間
8、為 8K 字節(jié) 5. 片上集成 512 字節(jié) RAM 6. 通用 I/O 口 (32 個(gè)) 復(fù)位后為: , P1/P2/P3/P4 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。 7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程) ,無(wú)需專用編程器,無(wú) 需專用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片 8. 具有 EEPROM 功能 9. 具有看門狗功能 10. 共 3 個(gè) 16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器 T0、T1、T2 11. 外部中斷 4 路,下降沿中斷或低電平觸發(fā)
9、電路,Power Down 模式可 由外部中斷低電平觸發(fā)中斷方式喚醒 12. 通用異步串行口(UART) ,還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè) UART 13. 工作溫度范圍:-40+85(工業(yè)級(jí))/075(商業(yè)級(jí)) 14. PDIP 封裝 STC89C52RC 單片機(jī)的工作模式 掉電模式:典型功耗0.1A,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原 程序 空閑模式:典型功耗 2mA 典型功耗 正常工作模式:典型功耗 4Ma7mA 典型功耗 掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統(tǒng)及便攜設(shè)備 STC89C52RC 引腳功能說(shuō)明 VCC(40 引腳):電源電壓 VS S(20 引腳):接地
10、P0 端口(P0.0P0.7 P0.7,3932 引腳) :P0 口是一個(gè)漏極開路的 8 位雙向 I/O 口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng) 8 個(gè) TTL 負(fù)載,對(duì)端口 P0 寫入 每個(gè)引腳能驅(qū)動(dòng) 寫入“1”時(shí),可 以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí) 在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也可以提供低 8 位 地址和 8 位數(shù)據(jù)的復(fù)用總線 位數(shù)據(jù)的復(fù)用總線。此時(shí),P0 口內(nèi)部上拉電阻有效。在 Flash ROM 編 在 程時(shí),P0 端口接收指令字節(jié) 端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié) 則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。 P1 端口(P1.0P1.7,18 引腳
11、) :P1 口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 口。P1 的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4 個(gè) TTL 輸入。對(duì)端 口寫入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1 口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電 流( ) 。 此外,P1.0 和 P1.1 還可以作為定時(shí)器/計(jì)數(shù)器 2 的外部技術(shù)輸入(P1.0/T2) 和定時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX) ,具體參見下表: 在對(duì) Flash ROM 編程和程序校驗(yàn)時(shí),P1 接收低 8 位地址。 表 XX P1.0 和 P1.1 引腳復(fù)用功能 P2 端口(
12、P2.0P2.7,2128 引腳) :P2 口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙 向 I/O 端口。P2 的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4 個(gè) TTL 輸入。 對(duì)端口寫入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。 P2 作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì) 輸出一個(gè)電流(I) 。 在訪問外部程序存儲(chǔ)器和 16 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX DPTR”指令)時(shí),P2 送出高 8 位地址。在訪問 8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如 執(zhí)行“MOVX R1”指令)時(shí),P2 口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū) 中的 P2 寄存
13、器的內(nèi)容) ,在整個(gè)訪問期間不會(huì)改變。 在對(duì) Flash ROM 編程和程序校驗(yàn)期間, P2也接收高位地址和一些控制信號(hào)。 P3 端口(P3.0P3.7,1017 引腳) :P3 是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 端口。P3 的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4 個(gè) TTL 輸入。對(duì)端 口寫入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3 做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一 個(gè)電流( ) 。 在對(duì) Flash ROM 編程或程序校驗(yàn)時(shí),P3 還接收一些控制信號(hào)。 P3 口除作為一般 I/O 口外,還有其他一些復(fù)用功能,如
14、下表所示: 表 XX P3 口引腳復(fù)用功能 復(fù)用功能 RST(9 引腳) :復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效, 用來(lái)完成單片機(jī)單片機(jī)的復(fù)位初始化操作??撮T狗計(jì)時(shí)完成后,RST 引腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功 能無(wú)效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。 ALE/ ROG (30 引腳) 地址鎖存控制信號(hào) : (ALE) 是訪問外部程序存儲(chǔ)器時(shí), 鎖存低 8 位地址的輸出脈沖。在 Flash 編程時(shí),此引腳( ROG)也用作編程輸入 脈沖。 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可
15、用來(lái)作為外部 定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE 脈沖 將會(huì)跳過(guò)。 如果需要,通過(guò)將地址位 8EH 的 SFR 的第 0 位置“1” ,ALE 操作將無(wú)效。這 一位置“1” ,ALE 僅在執(zhí)行 MOVX 或 MOV 指令時(shí)有效。否則,ALE 將被微弱拉 高。這個(gè) ALE 使能標(biāo)志位(地址位 8EH 的 SFR 的第 0 位)的設(shè)置對(duì)微控制器處于 外部執(zhí)行模式下無(wú)效。:外部程序存儲(chǔ)器選通信號(hào)( SEN)是外部程序存儲(chǔ)器選 SEN(29 引腳)通信號(hào)。當(dāng) AT89C51RC 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí), SEN在每個(gè)機(jī)器周 期被激活兩次,而訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)
16、, SEN將不被激活。 A/VPP (31 引腳) 訪問外部程序存儲(chǔ)器控制信號(hào)。 : 為使能從 0000H 到 FFFFH 的外部程序存儲(chǔ)器讀取指令, A必須接 GND。注意加密方式 1 時(shí), A將內(nèi)部鎖 定位 RESET。為了執(zhí)行內(nèi)部程序指令, A應(yīng)該接 VCC。在 Flash 編程期間, A也 接收 12 伏 VPP 電壓。 XTAL1(19 引腳) :振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。 XTAL2(18 引腳) :振蕩器反相放大器的輸入端。 3.2.2 4X4鍵盤控制電路矩陣式鍵盤的結(jié)構(gòu)與工作原理:在鍵盤中的按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖
17、2.5所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,只需要單片機(jī)的一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤比較是合理的。由于本系統(tǒng)按鍵較多,在這里采用矩陣式4*4鍵盤,這樣可以合理應(yīng)用硬件資源,用一個(gè)8位I/O口控制, 如圖2.5所示:圖2.5 按鍵電路矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,圖2.5中,列線通過(guò)電阻接正電源,并將行線所
18、接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。一旦有鍵按下,則輸入線就會(huì)被拉低,行線輸出是低電平。這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程方法如2.3.2所述。矩陣式鍵盤的工作方法:為了確定矩陣式鍵盤上何鍵被按下,我們采用一種“掃描法”。掃描法 :掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法。以圖2.5所示鍵盤電路為例,介紹過(guò)程如下:1.判斷鍵盤中有無(wú)鍵按下 將全部行線X0-X3置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低
19、電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無(wú)鍵按下。2.判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它行線為高電平。在確定某根行線為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。如圖2.5所示。AT89C51單片機(jī)的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的高4位,鍵盤的行線接到P1口的低4位。列線P14-P17分別接有4個(gè)上拉電阻到正電源+5V,并把行線P10-P13設(shè)置為輸出線,列線P14-P17設(shè)置為輸入線。4根行線
20、和4根列線形成16個(gè)相交點(diǎn)。1.檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P10-P13輸出全“0”,讀取P14-P17的狀態(tài),若P14-P17為全“1”,則無(wú)鍵閉合,否則有鍵閉合。2.去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。3.若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤的行線進(jìn)行掃描。P10-P13按下述4種組合依次輸出:P13 1 1 1 0P12 1 1 0 1P11 1 0 1 1P10 0 1 1 1在每組行輸出時(shí)讀取P14-P17,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行
21、值和列值轉(zhuǎn)換成所定義的鍵值。4. 為了保證鍵每閉合一次CPU僅作一次處理,必須消除鍵釋放時(shí)的抖動(dòng)。 3.2.3 LCD顯示電路1. 1602介紹 字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長(zhǎng)沙太陽(yáng)人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖:圖- 4 1602字符型液晶顯示器實(shí)物圖2. 1602LCD的基本參數(shù)及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無(wú)差別,兩者尺寸差別如
22、下圖所示: 性能參數(shù): 顯示容量:162個(gè)字符 芯片工作電壓:4.55.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.954.35(WH)mm引腳功能說(shuō)明:編號(hào)符號(hào)引腳說(shuō)明 編號(hào) 符號(hào) 引腳說(shuō)明1 VSS 電源地 9 D2 數(shù)據(jù)2 VDD 電源正極 10 D3 數(shù)據(jù)3 VL 液晶顯示偏壓11 D4 數(shù)據(jù)4 RS 數(shù)據(jù)/命令選擇12 D5 數(shù)據(jù)5 R/W 讀/寫選擇 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腳:VL為
23、液晶顯示器對(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為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平 時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電 平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。3. 1602LCD的
24、指令說(shuō)明及時(shí)序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表-4所示:序號(hào)指令 RSR/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計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表-4:控制命令表1602液晶模
25、塊的讀寫操作、屏幕和光標(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)方向,高電平右移,低電平左移 屏幕上所有文字是否左 移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控 制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍, 低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:
26、功能設(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:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。 第四章 軟件編程設(shè)計(jì)4.1流程圖4.2 設(shè)計(jì)思路分析 總的來(lái)說(shuō),我的設(shè)計(jì)思路主要由以下幾個(gè)模塊來(lái)構(gòu)成的: 1. 實(shí)時(shí)鍵盤掃描模塊(4*4矩陣鍵盤和多個(gè)獨(dú)立按鍵):鍵盤作為輸入設(shè)備,提供給使用者使用。因?yàn)橐龅绞褂谜?/p>
27、一按鍵,系統(tǒng)就能響應(yīng),因此此模塊需實(shí)時(shí)進(jìn)行掃描輸入,故此模塊使用了一個(gè)定時(shí)器(T0)進(jìn)行間隔10ms的掃描。 2. 實(shí)時(shí)顯示模塊(LCD1602):1602液晶顯示屏用作按鍵所對(duì)應(yīng)的鍵值的顯示和數(shù)據(jù)運(yùn)算結(jié)果的輸出。因?yàn)橐獙?shí)時(shí)顯示按鍵所對(duì)應(yīng)的值,故此模塊也需通過(guò)定時(shí)器(T1)進(jìn)行實(shí)時(shí)的顯示輸出。 3. 數(shù)據(jù)處理模塊:此模塊又可細(xì)分為四個(gè)小模塊來(lái)進(jìn)行更好的理解;第一個(gè)是取值存儲(chǔ)模塊,第二個(gè)是運(yùn)算處理模塊,第三個(gè)是符號(hào)判斷模塊,第四個(gè)是結(jié)果輸出模塊。此模塊的四個(gè)小模塊為順序執(zhí)行。 當(dāng)一個(gè)鍵盤按下的時(shí)候,經(jīng)過(guò)按鍵程序判斷按鍵所代表的字符,轉(zhuǎn)向顯示子程序來(lái)顯示,并在相應(yīng)的數(shù)組中進(jìn)行存儲(chǔ),然后等待下一個(gè)按
28、鍵按下,直到所按下的鍵代表“=”時(shí),程序轉(zhuǎn)向數(shù)據(jù)處理模塊,經(jīng)過(guò)上述所講的四個(gè)小模塊就能得到運(yùn)算的結(jié)果并進(jìn)行結(jié)果的輸出顯示。 資源分配(包含端口): P1口用做4*4矩形鍵盤的輸出響應(yīng)端口; P0口用作LCD1602液晶顯示模塊的輸入控制端口; P3.2 、P3.3端口用作獨(dú)立鍵盤的輸出響應(yīng)端口; 定時(shí)器T0用作定時(shí)(30ms)掃描4*4矩陣鍵盤; 定時(shí)器T1用作定時(shí)(10ms)掃描顯示輸出; 端口和變量的定義:因在下述程序中可以看到本程序所有使用的變量,故可參考下述 詳細(xì)程序的變量定義。4.3 源程序4.3.1主程序 #include#include#define uchar unsigned
29、 char#define uint unsigned intuchar code tab=1,7,8,9,/,4,5,6,*,1,2,3,-,0,.,=,+;uchar flag=0,flag1=0,fuhao=0;uint keyvalue,result4,sign=0,p=0; /全局變量注: int為2個(gè)字節(jié)int i,datagroup15,signgroup15;sbit reset=P32;sbit delete=P33; void timer0_init();void timer1_init();void jianpan_scanning();void delay10ms(uin
30、t z);void display(); void catch_keyvalue(/*uint keyvalue1*/);/取數(shù)并存于數(shù)組函數(shù)/void outputview1(uint result1); /輸出顯示函數(shù)void outputview2(uint result2);uint judge_fuhao(int result3);void signgroup_prioritycompare();/符號(hào)數(shù)組優(yōu)先級(jí)比較及數(shù)據(jù)處理函數(shù)void sortfunction1( uint flag); /數(shù)組變化后重新排序子函數(shù),應(yīng)用于void signgroup_prioritycompar
31、e()函數(shù)中void sortfunction2( uint flag);/void datagroupinit(); /數(shù)據(jù)數(shù)組清零/void signgroupinit(); /符號(hào)數(shù)組清零/void signmatch();/符號(hào)對(duì)比函數(shù)uint add(uint temp1,uint temp2); /+函數(shù)uint sub(uint temp1,uint temp2); /-函數(shù)uint mul(uint temp1,uint temp2); /*函數(shù)uint div(uint temp1,uint temp2); /函數(shù) void reset(); /獨(dú)立按鍵復(fù)位void dele
32、te(); /獨(dú)立按鍵回刪void main() timer0_init(); timer1_init(); LcdInit(); LcdWriteData(0x30); LcdWriteCom(0x80); while(1)/ display(); / datagroupinit(); signgroupinit(); catch_keyvalue(); /取值 signgroup_prioritycompare(); /處理 / datagroup0=-123/3; judge_fuhao(datagroup0); /處理結(jié)果判斷正負(fù)數(shù)outputview2(result4);/結(jié)果輸出顯
33、示keyvalue=0;p=0; sign=0; /i=0; datagroupinit(); signgroupinit();void catch_keyvalue(/*uint keyvalue1*/)/取值函數(shù) keyvalue1=keyvalue uint a=0,keyvalue1;/* datagroup10,signgroup10,pointer=0,sign=0,*/ do /display();if( (keyvalue != 0) & (flag1=1) ) keyvalue1 = tabkeyvalue; if( (keyvalue1 = 0) & (keyvalue1
34、= 9) /*& (flag1=1)*/ ) a=(keyvalue1-48); /*字符0-9轉(zhuǎn)變?yōu)閿?shù)字0-9*/ datagroupp=datagroupp*10+a; else if(keyvalue1 != =) & (keyvalue1 != .) /*& (flag1=1)*/ ) / if(signgroupsign) signgroupsign=keyvalue1; /* temp2=data_grouppointer;*/ p=p+1; sign=sign+1; / else signgroupsign=keyvalue1; /* temp1=data_grouppointe
35、r;*/ +pointer; +sign; flag1=0; while(keyvalue1 != =); signgroupsign=!; void signgroup_prioritycompare()/處理函數(shù),一按=號(hào)就運(yùn)行此函數(shù), signgroupsign/ i, 全局變量 i,sign,pointer,for(i=0;isign;i+) /先對(duì)*,/號(hào)進(jìn)行運(yùn)算 if(signgroupi=*) | (signgroupi=/) if( signgroupi=* ) datagroupi+1=mul(datagroupi,datagroupi+1); sortfunction1(p); sortfunction2(sign); i=i-1; / sortfunction()為數(shù)組排序子函數(shù) 從i開始排 else /if( signgroupi=/ ) datagroupi+1=div(datagroupi,datagroupi+1); sortfunction1(p); sortfunction2(sign); i=i-1; /依次+,-號(hào)運(yùn)算/ for(i=0;i=0) result4=result3;return (result4);elsefuhao=1;result4=(-result3);retur
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 5 Safety Fun Time(說(shuō)課稿)-2024-2025學(xué)年人教新起點(diǎn)版英語(yǔ)四年級(jí)上冊(cè)
- 2025年班干部個(gè)人工作計(jì)劃范文
- 2025年教學(xué)質(zhì)量監(jiān)控工作計(jì)劃
- 2025年辦公室文秘個(gè)人工作計(jì)劃例文
- 人教版九年級(jí)下冊(cè)歷史與社會(huì)第七單元第三課《世界多極化趨勢(shì)》說(shuō)課稿
- CNJ202型低壓甲醇催化劑相關(guān)行業(yè)投資方案
- 檔案管理知識(shí)培訓(xùn)課件
- CMOS圖像傳感器相關(guān)行業(yè)投資方案范本
- 氟碳涂料相關(guān)項(xiàng)目投資計(jì)劃書范本
- 工具臺(tái)車相關(guān)項(xiàng)目投資計(jì)劃書范本
- DB52T 1776.1-2023 耕地質(zhì)量等別評(píng)價(jià) 第1部分:評(píng)價(jià)規(guī)范
- BIM工程師年終總結(jié)
- 2024秋季新教材人教版體育與健康一年級(jí)上冊(cè)課件:1我們愛運(yùn)動(dòng)
- 領(lǐng)導(dǎo)年終總結(jié)匯報(bào)工作
- CQI-23模塑系統(tǒng)評(píng)估審核表-中英文
- 2024年大型游樂設(shè)施操作(Y2)特種作業(yè)取證(廣東)考試復(fù)習(xí)題庫(kù)(含答案)
- 【教案】Unit+4+My+Favourite+Subject大單元整體教學(xué)設(shè)計(jì)人教版英語(yǔ)七年級(jí)上冊(cè)
- 2024年省國(guó)資委選聘兼職外部董事人選高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024-2030年中國(guó)工控機(jī)行業(yè)需求狀況及發(fā)展趨勢(shì)分析研究報(bào)告
- 離職證明(標(biāo)準(zhǔn)模版)
- 遼寧省名校聯(lián)盟2024年高三9月份聯(lián)合考試 英語(yǔ)試卷(含答案詳解)
評(píng)論
0/150
提交評(píng)論