單片機最小系統試驗設計_第1頁
單片機最小系統試驗設計_第2頁
單片機最小系統試驗設計_第3頁
單片機最小系統試驗設計_第4頁
單片機最小系統試驗設計_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘要近年來隨著計算機在社會領域的滲透, 單片機的應用正在不斷地走向深入,同時帶動傳統控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。單片機最小系統是在以51單片機為基礎上擴展,使其能更方便地運用于測試系統中。本設計主要在51單片機上擴展I/O口,擴展定時器定時范圍,擴展鍵盤顯示接口并寫好底層程序。本文首先在緒論介紹了此系統的研究意義和使用的開發(fā)環(huán)境,以及使用MCS-51系列的單片機芯片。在第二章論述了總體設計過程及器件的選擇,第三章著重描述了系統硬件電

2、路設計、硬件設計框圖及所使用的各種芯片功能與特性,在第四章中重點剖析了軟件設計的過程.關鍵詞:單片機技術,8255A, 液晶顯示ABSTRACTWith the infiltration in the social field of the computer in recent years, the application of the one-chip computer is moving towards deepening constantly, drive tradition is it measure crescent benefit to upgrade day to control

3、 at the same time. In measuring in real time and automatically controlled one-chip computer application system, the one-chip computer often uses as a key part, only one-chip computer respect knowledge is not enough, should also follow the structure of the concrete hardware , and direct against and u

4、se the software of target's characteristic to combine concretly, in order to do perfectly. The smallest system one chip computer is in expands at the base of MCS-51 one chip computer. Make it used more convient in the test system. this design mainly expands I/O in the take 51 on chip computer, e

5、xpands the timer fixed time scope, expands the keyboard to demonstrate the connection and writes the first floor procedure.This text has introduced the research meaning of this system and development environment used in the introduction at first, developing the one-chip computer chip of MCS-51 serie

6、s used. Have described the overall design process in chapter two, have confirmed chapter three of choice of device has described emphatically that designs the block diagram and various kinds of chip functions and characteristics used in circuit design of the systematic hardware , hardware, have anal

7、yzed the design course of the software especially in chapter four. Keyword:technology of the one-chip computer, 8255A, Liquid crystal display46 / 52文檔可自由編輯打印目錄第一章 緒論.11.1 選題意義.11.2 單片機的發(fā)展和應用.11.3 單片機編程語言介紹.3第二章 系統設計及工作原理.52.1 系統原理框圖及器件選擇.52.2 系統工作原理及總體電路框圖.5第三章 系統硬件設計.83.1 硬件模塊設計.83.1.1 數字輸入輸出模塊設計.9

8、3.1.2 顯示接口電路的設計.93.1.3 鍵盤接口電路的設計133.1.4 定是模塊設計163.1.5 數據存儲器單元的設計173.1.6 模數轉換單元設計193.2 相關芯片的介紹.213.2.1 AT89C52芯片的介紹.213.2.2 并行接口芯片8255A.223.2.3 8254可編程計數/定時芯片簡介233.2.4 D/A轉換器.24第四章 系統軟件設計.274.1 系統工作主程序流程圖274.2 系統軟件流程284.2.1 液晶驅動程序流程圖.284.2.2 鍵盤掃描程序流程.30第五章 結論.33致謝35參考文獻37附錄1.39附錄2.43附錄3.45附錄4.46第一章 緒

9、論1.1 選題意義由于單片機技術在各個領域正得到越來越廣泛的應用,世界上許多集成電路生產廠家相繼推出了各種類型的單片機,在單片機家族的眾多成員中,MCS-51系列單片機以其優(yōu)越的性能、成熟的技術及高可靠性和高性能價格比,迅速占領了工業(yè)測控和自動化工程應用的主要市場,成為國內單片機應用領域中的主流。目前,可用于MCS-51系列單片機開發(fā)的硬件越來越多,與其配套的各類開發(fā)系統、各種軟件也日趨完善,因此,可以極方便地利用現有資源,開發(fā)出用于不同目的的各類應用系統。單片機最小系統是在以MCS-51單片機為基礎上擴展,使其能更方便地運用于測試系統中,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大

10、幅度提高被測試的技術指標,從而能夠大大提高產品的質量和數量。單片機以其功能強、體積小、可靠性高、造價低和開發(fā)周期短等優(yōu)點,稱為在實時檢測和自動控制領域中廣泛應用的器件,在工業(yè)生產中稱為必不可少的器件,尤其是在日常生活中發(fā)揮的作用也越來越大。本課題設計主要在MCS-51單片機上擴展I/O口,擴展定時器定時范圍,擴展鍵盤顯示接口。本文以它為例進行介紹,希望能收到舉一反三和觸類旁通的效果。1.2 單片機的發(fā)展和應用自1971年美國INTEL公司制造出第一塊4位微處理器以來,其發(fā)展十分迅猛,到目前為止,大致可分以下五個階段。(1) 四位單片機(19711974)1971年11月,INTEL公司設計了集

11、成度為2000只晶體管片的4位微處理器INTEL4004,并配有RAM、ROM和移位寄存器,構成第一臺MCS-4微處理。這種微處理器雖僅用于簡單控制,但價格便宜,至今仍不斷有多功能的4位機問世。(2) 低檔8位單片機(19741978)這類單片機不帶串行接口,尋址范圍一般在4KB內。其功能可滿足一般工業(yè)控制和智能化儀器等的需要,如INTEL公司的8048,MOSTEK公司的3870等。(3) 高檔8位單片機(19781982)這類單片機帶有串行接口,尋址范圍可達64KB,有多級中斷處理系統、16位定時計數器。其功能較強,是目前應用的主要產品,如INTEL公司的8051、MOTOROLA公司的Z

12、8和NEC公司的MPD7800等產品。(4) 16位單片機(1982-1990)MOSTEK公司于1982年首先推出了16位單片機68200,隨后和INTEL公司于1983年推出了16位單片機8096,其公司也相繼推出了同檔次的產品。由于16位單片機采用最新的制造工藝,其計算速度和控制功能大幅度提高,具有很強的實時處理能力。Microchip新推49款16位單片機和數字信號控制器(5) 新一代單片機(90年代以來)這類單片機在結構上采用雙CPU或內部流水線,CPU位數有8位、16位、32位,時鐘頻率高達20MHZ片內帶有PWM輸出、監(jiān)視定時器WDT、可編程計數器陣列PCA、DMA傳輸、調制解調

13、器等。芯片向高度集成化、低功耗方向發(fā)展,使得單片機在大量數據的實時處理、高級通信系統、數字信號處理、復雜工業(yè)過程控制、高級機器人以及局域網等方面得到大量應用。這類單片機有NEC公司的MPD7800,MITSUBISHIM公司337700,REVKWELLR公司6500 21、 R65C29 ,INTEL公司的8044、UPI-452等。單片機的應用:單片機具有體積小、重量輕、價格便宜、低功耗、控制功能強及運算速度快等特點,故在國民經濟建設、軍事及家用電器的領域均得到廣泛的運用。在一個應用系統中,只有一個單片機,這是目前應用最多的方式,主要應用領域有:(1) 測控系統。用單片機可構成各種工業(yè)控制

14、系統、自適應系統、數據采集系統等。例如,溫室人工氣候控制、水閘自動控制、電鍍生產線自動控制、汽輪機電液調節(jié)系統、車輛檢測系統、機器人軸處理器。(2) 智能儀表。用單片機改造原有的測量、控制儀表,數字化、智能化、綜合化、柔性化發(fā)展。如溫度、壓力、流量、能度等的測量、顯示及儀表控制。通過采用單片機軟件編程技術,使測量儀表中長期存在的誤差修正,線性化處理等難題迎刃而解。(3) 機電一體化產品。單片機與傳統的機械產品結合,使傳統機械產品結構簡化,控制智能化。這類產品如:簡易數控機床,電腦繡花機,醫(yī)療器械等。1.3 單片機編程語言介紹對于51系列單片機,現在主要有兩種語言支持,即匯編、單片機C語言。C語

15、言是一種源于UNIX編寫操作系統的語言,它是一種結構化語言,可產生壓縮代碼。C語言結構是以括號而不識字和特殊符號的語言。C可以進行許多機器函數控制而不用匯編語言。與匯編相比,有如下優(yōu)點:對單片機的指令系統不要求了解,僅要求對51的存儲器結構由初步了解寄存器分配、不同存儲器的尋址及數據類型等細節(jié)可由編譯管理程序有規(guī)范的結構,可分為不同的函數。這種方式可使程序結構化將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性編程及程序調試時間顯著縮短,從而提高效率,提供的庫包含許多標準子程序,具有較強的數據處理能力將已編好程序可統一的植入新程序,因為他又方便的模塊化編程技術C語言作為一種非常方便的語

16、言而得到廣泛的支持,C語言程序本并不依賴于硬件系統,基本上不作修改就可根據單片機的不同較快地移植過來。51的匯編語言非常像其他匯編語言。指令系統比第一代微處理器要強一些。51的不同存儲區(qū)域使得其復雜一些。懂得匯編語言指令就可以使用在片內RAM作變量的優(yōu)勢,因為片外變量需要幾條指令才能設置累加器和數據指針進行存取。要求使用浮點和啟用函數是只有具備匯編編程經驗才能避免生成龐大的、效率低的程序,單片機編程者應是由匯編轉用C而不是原來用過標準C語言的人。第二章 系統設計及工作原理2.1 系統原理框圖及器件選擇本系統的硬件電路圖結構由AT89C52單片機,并行擴展接口芯片8255,鍵盤輸入,液晶顯示器M

17、GLS-12032A,定時/計數器8254,數據存儲器EEPROM2864A,DAC1208及串行接口電路組成。單片機系統原理框圖如圖2.1所示。8255AMCS-51串行接口復位電路數據存儲器接口電路PC機鍵盤輸入LCD顯示D/A轉換器接口電路路圖2.1 單片機最小系統原理框圖通過鍵盤輸入指令或數字,單片機經過鍵盤掃描從8255讀回鍵值,根據鍵值執(zhí)行相應的子程序。假設輸入測試命令鍵,單片機將調用測試子程序,并將測試結果送到顯示器上顯示(“good”or“bad”);假設輸入數字鍵,單片機會自動將輸入的數字顯示到顯示器上;假設輸入其它命令鍵,單片機將調用相應的功能子程序,執(zhí)行相應的命令。 2.

18、2 系統工作原理及總體電路框圖系統軟件由主程序和若干子程序構成。有顯示子程序、鍵盤掃描子程序、鍵值處理子程序組成。系統開機后,首先執(zhí)行主程序,完成系統初始化工作,然后調用顯示子程序,在顯示器上給出提示符rd,告訴操作者機器已準備好,可以接收鍵盤輸入;當顯示器上出現提示符rd后,立即調入鍵盤掃描子程序,此時,操作者可通過鍵盤輸入數據或命令,經鍵盤掃描后從8255讀回鍵值并進行按鍵分析,判斷按下的鍵是數字鍵還是功能鍵,如果是數字鍵,則將與鍵號相對應的數據送往顯示緩沖區(qū)顯示;如果是功能鍵,則轉入相應的功能鍵處理程序,最后返回到顯示程序,開機狀態(tài)一直重復這個過程。相應功能鍵處理程序功能包括8254定時

19、器定時范圍擴展的功能,單片機需要每隔一定的時間就對處理對象進行采樣,再對獲得的數據進行處理,所以要對單片機設定一定的時間范圍值。EEPROM2864數據存儲器功能用于存儲現場采集的原始數據,運算結果等。D/A轉換器DAC1208功能可以直接從89C52輸入數字量,并轉換成模擬量而推動執(zhí)行機構動作,以控制被控實體的工作過程。液晶顯示模塊MGLS-12032A功能,在單片機89C52的控制下,通過選通8255的PB口作為對數據的輸出端口,按照要求的格式顯示接收到的數據。各部分的功能具體連接系統總體電路框圖如圖2.2所示。圖2.2 系統總體電圖框圖編制軟件時,在掃描鍵盤前應熄滅顯示器,這樣,不會因為

20、對鍵盤的掃描而干擾顯示器的顯示。鍵盤掃描的延時10ms消抖,既可用專用的延時子程序實現,也可用采用RS觸發(fā)器構成的硬件電路來實現。本設計中,采用的鍵盤消抖方法是常用的軟件延時方法,在鍵盤輸入的掃描過程中嵌入一段程序段,則能方便的實現鍵盤輸出的消抖功能。 第三章 系統硬件設計3.1 硬件模塊設計一個單片機應用系統的硬件電路設計包含兩部分內容:一是系統擴展,即單片機內部的功能單元,如ROM、RAM、I/O、定時器/計數器、中斷系統等不能滿足應用系統的要求時,必須在片外進行擴展,選擇適當的芯片,設計相應的電路。二是系統的配置,即按照系統功能要求配置外圍設備,如鍵盤、顯示器、打印機、A/D、D/A轉換

21、器等,根據本次設計要求,做出一下設計。3.1.1 數字量輸入輸出模塊設計可編程的接口芯片是指其功能可由微處理機的指令來加以改變的接口芯片,利用編程的方法,可以使一個接口芯片執(zhí)行不同的接口功能。MCS-51單片機常用的兩種接口芯片是8255以及8155,本設計主要用8255來擴展I/O端口。8255和MCS-51相連,可以為外設提供3個8位的I/O端口,A口、B口和C口,三個端口的功能完全由編程來決定。8255和單片機的接口需要一個8位的地址鎖存器即可。鎖存器用來鎖存P0口輸出的低8位地址信息。通過Q6、Q7及讀寫信號對8255A的A口、B口和C口進行選通控制,圖3.1為8255A的接口原理圖。

22、 圖3.1 8255的接口電路原理圖在圖3.1中,8255的8根數據線D0D7直接和P0口一一對應相連。復位線RESET與89C52的復位端相連,都接到89C52的復位電路上(在圖中未畫出)。8255的和與89C52的和相連。A,A控制信號分別由89C52的P0.7、P0.6經地址鎖存器74LS373后提供,對A口、B口、C口進行選擇。當然的接法不是唯一的。當系統要同時擴展外部RAM時,就要和RAM芯片的片選端一起經地址譯碼電路來獲得,以免發(fā)生地址沖突。根據上述接法,8255的A、B、C以及控制口的地址分別為0000H、0040H、0080H和00C0H(假設無關位都取0)。根據設計需要連接的

23、外部設備。本設計中A口作為鍵盤擴展接口,列輸出由PAPA口提供,行輸入由PAPA口提供,B口作為LCD液晶顯示器的接口, B口作輸出口。C口未用。3.1.2 顯示接口電路的設計在單片機系統中,液晶顯示是單片機系統中反映輸出和輸入的有效操縱。本課題選擇了較為常用的點陣圖形液晶模塊,從而使設計更具備廣泛性。系統使用的液晶顯示模塊為香港精電公司(VARITRONIX)點陣圖形式液晶顯示模塊,型號為MGLS-12032A,是內置SED1520控制驅動器的圖形液晶顯示模塊,點陣數為120×32,點大小0.6×0.425mm,模塊尺寸75.0×54.0mm,視頻尺寸60

24、15;26.5mm,如圖附錄4所示。1 MGLS-12032A液晶模塊的特性:MGLS-12032A液晶模塊是由兩片SED1520驅動的,兩個SED1520都只用了其中的60個列驅動口(SEG0SEG59)。分別驅動液晶顯示器的左右半屏。其內部邏輯電路如圖3.2所示。2 液晶模塊接口的設計:由于單片機通用并行接口有限,只能利用其他輸入輸出接口芯片來實現連接,因此本課題選擇了并行接口的擴展芯片8255A的PB口作為液晶顯示器的接口,接口電路如圖3.3所示,將液晶模塊的數據總線與8255A的PB口直接相連,液晶模塊的片選控制引腳與高8位地址總線P2.2、P2.3、P2.4、P2.5相連,這樣對液晶

25、模塊的各種指令操作,實際上就是與相應的控制地址交換數據。MGLS-12032A液晶模塊的接口端共16個管腳,各管腳的具體說明見表3.1所示。LCD MGLS-12032ASED1520(1)SED1520(2) VCCGNDV0E1E2RSR/WDB0DB7 圖3.2 SED1520顯示RAM結構圖 按照圖3.3的連接方式,當要顯示接收到的數據時,首先單片機對8255A的控制口A,A寫入控制字01,選中PB口作為數據輸出端口,同時單片機的高8位地址線P2.2、P2.3、P2.4、P2.5對液晶顯示模塊輸入控制指令。當P2.2=A0=1選擇指令通道,P2.3=R/W=0選通寫操作。由于LCD并沒

26、有獨立的片選信號,所以使用單片機的讀寫信號進行選通,而74LS00、74LS04則是轉換讀寫信號的電平,同時作為片選信號,E1=1選擇驅動器1,E2=1時選擇驅動器2。相反當P2.2= A=0、P2.3=R/W=1時液晶顯示器就對數據或結果進行輸出顯示。液晶模塊的各基本指令操作對應的控制地址如表3.2所示。表3.1 MGLS-12032A液晶模塊接口的定義序號管腳符號管腳名稱說明1GND邏輯電源地2Vcc邏輯電源+5V3V0工作負電壓提供對比度調節(jié)負電壓4A0數據/指令通道選擇A0=0選擇數據通道A0=1選擇指令通道5R/W讀/寫選擇信號R/W=0寫操作;R/W=1讀操作6E1控制器1的讀寫使

27、能E1=0禁用;E1=1允許使用7E2控制器2的讀寫使能E2=0禁用;E2=1允許使用8NC空916DB0DB7三態(tài)數據總線圖3.3 液晶模塊和8255A的接口電路表3.2 液晶模塊控制地址的定義操作E1地址E2地址寫指令代碼1440H2440H讀狀態(tài)字1C40H2C40H寫顯示數據1040H2040H讀顯示數據1840H2840H要對液晶模塊進行控制,需要3個最基本的控制操作:分別向兩個SED1520控制器寫指令代碼、寫顯示數據和讀顯示數據,完成這三項操作的前提條件是相應SED1520處與準備好的狀態(tài),當SED1520處于忙得狀態(tài)時,除了讀狀態(tài)字指令外,其他指令均不起作用,因此在訪問SED1

28、520前,都要先去讀控制字當前狀態(tài),判斷是否準備好。3 液晶顯示的字符輸出:由于單片機內部ROM容量的限制,使用西文字符庫進行顯示,每個字符大小為6×8點陣,以二維數組的格式存放在ROM中,二維數組的一行表示一個字符,行號即為字符的代碼,計算公式:字符代碼=ASC碼-30H;二維數組的每個元素對應各字符的每列中8點狀態(tài)得列數據。像液晶模塊輸出1個字符的過程就是,有液晶屏顯示區(qū)的制定字符的指定列開始,連續(xù)輸出該字符對應的字符庫中的6個列數據。MGLS-12032A液晶模塊中液晶屏顯示區(qū)為120×32點陣,每8個像素行組成1頁(字符行),整個顯示區(qū)共分為4頁;顯示區(qū)的左半區(qū)受E

29、1控制器的60個列驅動器控制,右半區(qū)受E2控制器的60個列驅動器控制。4 液晶顯示的漢字輸出:ASCII碼只對英文字母、數字和標點符號進行了編碼。為了用計算機處理漢字,同樣也需要對漢字進行編碼。漢字編碼主要分為四大類:漢字輸入碼、漢字交換碼、漢字內碼和漢字字形碼。這幾種編碼的關系如圖3.4所示。漢字輸入碼(外碼)漢字交換碼(國標碼)漢字內碼(機內碼)漢字字形碼(輸出碼) 圖3.4 編碼關系圖 漢字的外部碼即輸人碼,是輸人漢字的一組鍵盤符號。交換碼即為國標碼,國標碼規(guī)定,每個漢字用兩個字節(jié)表示,每個字節(jié)僅用低7位,最高位為0。漢字的內碼和國標碼有一對應關系,即將高位加l,國標碼就變?yōu)閮?/p>

30、碼。字形碼又稱輸出碼,可通過編程使有筆畫處的點為1,無筆畫處的點為0。這樣,漢字的點陣可以對應若干字節(jié)長的字形碼。由于一個SED1520顯示控制器能控制80×16點陣液晶的顯示,其顯示RAM共16行,分2頁,每頁8行。連續(xù)16列相鄰2頁的32字節(jié)顯示RAM就可以控制一個漢字的顯示區(qū)域。對這些顯示RAM賦以相應值就可以顯示出一個漢字??芍狹GLS12032A液晶顯示器一次可顯示兩排14個漢字。在液晶顯示器上要顯示“單片機測試系統設計”首先在鍵盤上輸入漢字的外部碼即十進制的區(qū)位碼,如“單”為2105,第一字節(jié)為區(qū)號值,第二字節(jié)為位號值,及21為區(qū)號,05為位號,通過鍵盤輸入。第二步轉換成

31、漢字交換碼及國標碼GB2312碼,即在區(qū)號值和位號值上分別加上32,轉換后高位為0x35H,低位為0x25H,編碼為3525H。再轉變成GB2312的通行編碼,即在原始編碼3525H高低位上分別再加128,最后為B5A5H。第三步再轉換成漢字內碼,通過編程來實現,即兩個字節(jié)的高位由“0”變“1”。第四步是模塊顯示,通過編程在RAM區(qū)有筆畫處點為1,無筆畫處為0,漢字“單”就在液晶模塊上顯示出來。依次類推,單片機測試系統設計分別輸入:2105、3812、2790、1866、4252、4721、4519、4172、2838,在GB2312編碼表上對應的編碼“B5A5、C6AC、BBFA、B2E2、

32、CAD4、CFB5、CDB3、C9E8、BCC6。3.1.3 鍵盤接口電路的設計在單片機測試系統中,數據和控制信號的輸入主要使用鍵盤。鍵盤接口,尤其是鍵入信號的軟件處理方法是影響系統使用和操作性能的主要因素。鍵盤接口及其軟件的任務主要包括檢查并判斷是否有健按下,按鍵開關的延時消抖,計算并確定按鍵的鍵值,程序根據鍵值進行一系列的動作處理和執(zhí)行。本設計選擇非編碼式行列鍵盤作為系統的輸入裝置。鍵盤布局圖如圖3.5所示。147*23M156M289M30#M4圖3.5 鍵盤布局圖1 鍵盤結構設計:行列式鍵盤中的鍵實際上就是一個機械開關,位于行線和列線的交點處,圖3.6所示為本課題中使用的4行×

33、;4列的16鍵行列式鍵盤,當鍵被按下時,其交點的行線和列線接通,使相應行線或列線上的電平發(fā)生變化,根據電平變化情況確定被按下的鍵。 圖3.6 4×4行列式鍵盤示意圖2 鍵盤工作方式選擇:為提高CPU工作效率,本課題采用了中斷掃描工作方式。其工作過程如下:當無鍵按下時,CPU處理自己的工作,當有鍵按下時,產生中斷請求,CPU轉去執(zhí)行鍵盤掃描子程序,并識別鍵號。圖3.6是鍵盤接口電路,該鍵盤是由8255 PA口的高、低字節(jié)構成的4×4鍵盤。鍵盤的列線與PA口的高4位相連,鍵盤的行線與PA口的低4位相連,因此,PAPA是鍵輸出線,PAPA是掃描輸入線。圖中的4輸入與門用于產生按鍵

34、中斷,其輸入端與各列線相連,再通過上拉電阻接至+5 V電源,輸出端接至89C52的外部中斷輸入端。 具體工作如下:當鍵盤無鍵按下時,與門各輸入端均為高電平,保持輸出端為高電平;當有鍵按下時,輸出端為低電平,向CPU申請中斷,若CPU開放外部中斷,則會響應中斷請求,轉去執(zhí)行鍵盤掃描子程序。鍵盤接口原理如圖3.7所示。 圖3.7 4×4行列式鍵盤原理圖3 鍵值識別處理: 鍵盤上有很多鍵,每一個鍵對應一個鍵碼,以便根據鍵碼轉到相應的鍵處理子程序,進一步實現數據輸入和命令處理的功能。鍵盤識別的具體方法如下。判斷是否有鍵按下。設置行線輸出方式,列線輸入方式;向所有行線輸出低電平;讀取PA口狀態(tài)

35、,并從PA口狀態(tài)中分離出列線狀態(tài);若列線狀態(tài)皆為高電平,則無鍵按下,若有低電平狀態(tài),則有鍵按下;當有鍵按下時,保留此時的列線狀態(tài)。按鍵本身是機械開關,在觸點閉合或斷開的瞬間會出現電壓抖動的現象,必須去除抖動的影響,才能正確識別被按下的鍵。為簡單起見,使用軟件方法消抖,延時10ms,讀取所有行線輸出低電平情況下的列線狀態(tài),若兩次烈線狀態(tài)相同,說明信號穩(wěn)定,可以繼續(xù)確定按鍵的物理位置。確定物理位置得到鍵碼。將改變列線和行線的工作方式,由列線輸出,行線輸入。列線輸出前次讀取的列線狀態(tài),由行線讀取相應的行線狀態(tài)。閉合鍵對應的行線和列線的狀態(tài)均為低電平,其他鍵均為高電平狀態(tài)。將此行線和列線狀態(tài)組合即可得

36、到該閉合鍵對應的鍵碼。 表3.3 按鍵功能及鍵碼鍵號功能鍵碼010EEH120EDH230EBH3M10E7H440DEH550DDH660DBH7M20D7H870BEH98OBDH1090BBH11M30B7H12*7EH1307DH14#7BH15M477H等待鍵釋放。得到閉合鍵對應的鍵碼以后,繼續(xù)延時并判斷按鍵狀態(tài),直到閉合的按鍵被釋放,再跟據鍵碼轉到響應的鍵處理子程序中。4 獲取鍵盤按鍵鍵值:采用行反轉法計算按鍵鍵值,先將行線工作在輸出方式,列線工作在輸入方式,程序使CPU通過輸出端口往各行線上全部送低電平,然后讀入列線的值。如果此時有某一個鍵被按下,則必定會使某一列線值為0。然后,

37、程序再對兩個并行端口進行方式設置,使接行線的并行端口工作在輸入方式,而使接列線的并行端口工作在輸出方式,并且將剛才讀的列線值從所接的并行端口輸出,在讀取行線的輸入值,那么,在閉合鍵所在的行線上的值必定為0,這樣,當一個鍵被按下時,必定可以讀的一對唯一的行值和列值。比如,圖3.6中標號為0的鍵閉合,則第一次往行線輸出全0后,讀的列值為1110,第二次從列線輸出剛才讀得的值1110后,會從行線上讀得行值1110,于是,行值和列值合起來得到一個數值11101110即0EEH,這個值對應了鍵0,它一定是唯一的。因此,根據讀得的行值和列值為EEH便可確定按下的位鍵0。依次類推可得4×4行可列鍵

38、盤的16個鍵值分別如表3.3所示。系統中使用的4×4行列式鍵盤上16個按鍵的功能定義與相應的鍵碼見表3.3所示3.1.4 定時模塊設計在單片機測試系統中,CPU需要每隔一定的時間就對處理對象進行采樣,再對獲得的數據進行處理,一般說,定時信號可以用軟件和硬件兩種方法來獲得。用軟件方法定時,一般都是跟據所需要的時間來設計一個延時子程序,這種方法的優(yōu)點是節(jié)省硬件,缺點是在執(zhí)行延時程序期間CPU一直被占用,降低了CPU的效率。用硬件方法定時,就要用到定時/計數器,在簡單的軟件控制下產生準確的時間延遲。這種方法的主要思想是根據需要的定時時間,用指令對計數器/定時器設置定時常數,并用指令啟動計數

39、器/定時器,在計數器/定時器開始工作以后,CPU不必去管它,而可以去做別的工作,這種方法的突出優(yōu)點是計數時不占用CPU,并且,如果利用計數器/定時器產生中斷信號,就可以建立多作業(yè)的環(huán)境,所以,可以大大的提高CPU的利用率。通過上述的比較可得,在提高CPU利用率的基礎上,本文選擇了硬件方法定時,選用計數器/定時器8254。8254芯片內部具有三個獨立的16位定時/計數器,它可用程序設置成多種工作方式,按十進制計數或二進制計數,最高計數速率可達10MHz。8254 能用于多種應用場合,例如外部事件計數器、可編程方波頻率發(fā)生器、分頻器、實時時鐘以及程控單脈沖發(fā)生器等。8254的全部功能是由CPU編程

40、設定的。CPU通過輸出指令給8254裝入控制字,從而設定其功能。接口原理圖如圖3.8所示。在圖3.8中8254的D0口與單片機89C52P0口相連,其功能往計數器設置計數初值;從計數器讀取計數值;往控制寄存器設置控制字。、信號分別和單片機的讀/寫信號相連,與單片機進行讀寫操作。當為低電平時有效,表示CPU正在對8254的一個計數器進行讀操作。當為低電平時有效,表示CPU正在 圖3.8 定時器接口電路原理圖對8254的一個計數器寫入計數初值或者對控制寄存器寫入控制字。A、A與89C52地址線P2.0、P2.1相連,用來對三個計數器和控制寄存器進行尋址。規(guī)定當A、A為00時,選中計數器0;為01時

41、,選中計數器1;當為10時,選中計數器2;當為11時,無意義。8254時鐘信號由外部晶振提供,頻率為10MHZ,3個輸出端接口接9管腳的插針,作外部輸出用。8254芯片內部具有三個獨立的16位定時/計數器,它可用程序設置成多種工作方式,按十進制計數或二進制計數,最高計數速率可達10MHz。又因為16位的定時/計數器的最大定時時間為2=65536,所以可得計數周期T=1/10MHZ=0.1us,最大計數時間為0.1×65535=6.5535ms,所以計數器/定時器8254的定時范圍是06.5535ms。3.1.5 數據存儲器單元的設計在單片機最小系統設計中,數據存儲器用于存儲現場采集的

42、原始數據,運算結果等。電擦除可編程只讀存儲器EEPROM是一種可用電氣方法在線擦除和再編程的只讀存儲器,它既有RAM可讀可改寫的特性,又具有非易失性存儲器ROM在掉電后仍能保持所存儲數據的優(yōu)點。因此EEPROM在單片機存儲器擴展中,可以用作程序存儲器,也可以用作數據存儲器,至于具體做什么使用,由硬件電路確定。本設計采用8K的EEPROM2864A作為外部數據存儲器。 選用2864A芯片來完成擴展8KB EEPROM,2864A的封裝是DIP28,采用單一+5V供電,最大工作電流為150mA,維持電流為55mA,讀出時間最大為250ns。片內設有編程所需的高壓脈沖產生電路,無需外加編程電源和寫入

43、脈沖即可工作。2864A在寫入一個字節(jié)的指令碼或數據之前,自動地對所要寫入的單元進行擦除,因而無需進行專門的字節(jié) / 芯片擦除操作。2864A的讀操作與普通EPROM的讀出相同,所不同的只是可以在線進行字節(jié)的寫入。2864A的寫入過程如下:CPU向2864A發(fā)出字節(jié)寫入命令后,2864A便鎖存地址、數據及控制信號,從而啟動一次寫操作。2864A的寫入時間大約為16ms左右,在此期間,2864A的RDY/腳呈低電平,表示2864A正在進行寫操作,此時它的數據總線呈高阻狀態(tài),因而允許CPU在此期間執(zhí)行其它的任務。當一次字節(jié)寫入操作完畢,2864A便將RDY/線置高來通知CPU。電路原理圖如圖3.9

44、所示。 圖3.9 擴展2864A EEPROM電路原理圖圖3.9中,2864A的8位數據線D0-D7直接與單片機的P0口相連。13條地址線(AA,容量為8K ×8位,213=8×1024=8K),低8位AA通過鎖存器74LS373與P0口連接,高5位AA直接與P2口的P2.0P2.4連接。片選端CE與高位地址線P2.7連接,P2.7=0時才選中2864, 89C52的程序存儲讀選通信號和數據存儲器讀信號經過“與” 操作后與2864A的讀允許信號相連。這樣,只要、中有一個有效,就可以對2864A進行讀操作了。與89C52的數據存儲器寫信號相連的WE信號,只要執(zhí)行數據存儲器寫操

45、作指令時,就可以往2864A中寫入數據。單片機中用于控制存儲器的管腳有以下3個:控制程序存儲器的讀操作,執(zhí)行指令的取指階段和執(zhí)行MOVC A,A+DPTR指令時有效;控制數據存儲器的讀操作,執(zhí)行MOVX DPTR,A和MOVX Ri,A時有效;控制數據存儲器的寫操作,執(zhí)行MOVX A,DPTR和MOVX A,Ri時有效。單片機與2864A的控制線連接方法采用了將外部數據存儲器空間和程序存儲器空間合并的方法,使得2864A既可以作為程序存儲器使用,又可以作為數據存儲器使用。所以可得2864A的地址范圍是0000H1FFFH(無關的管腳取0,該地址范圍不是唯一的)。3.1.6 模數轉換單元設計D/

46、A轉換器可以直接從89C52輸入數字量,并轉換成模擬量而推動執(zhí)行機構動作,以控制被控實體的工作過程。按照輸入數字量位數,DAC??煞譃?位、10位、12位三種。為了提高DAC的分辨率,本課題采用12位的DAC1208作為單片機的接口電路來進行數模的轉換。主要功能:輸入的數字量為12位;采用CMOS工藝,所有引腳的邏輯電平與TTL兼容;數字的輸入可采用雙緩沖,單緩沖或直通方式;轉換精度為0.012;分辨率為12位;單一電源5V15V,功耗20mV;參考電壓+10V-10V。89C52和DAC1208的電路原理圖如圖3.10所示。因為DAC1208芯片本身不帶數據鎖存器,而CPU向D/A芯片輸出一

47、個數據只在DB上持續(xù)很短時間,所以必須用外部芯片74LS373作為D/A轉換的數據鎖存器。單片機的8位數據線與DAC1208的12位數據線相連,當89C52選中DAC1208時,89C52給DAC1208送12位輸入數字量時,但必須先送高8位,再送低4位。則否,結果就不會正確。與單片機A0相連的BYTE/線,來區(qū)分4位還是8位輸入寄存器。在和都為低電平時,BYTE/為“0”時,選中4位輸入寄 圖3.10 DAC1208的接口電路原理圖存器,BYTE/為“1”時,選中8位和4位輸入寄存器工作。與單片機寫信號相連的、控制線,當89C52要往D/A轉換器中輸入數據時,、同時變?yōu)橛行盘柕碗娖?。由圖3

48、.10可見,由于和相連的譯碼器輸出線為: Q Q Q QQ Q Q=1 1 1 1 1 1 1 B,而XFER的譯碼輸出線為:Q Q Q QQ Q Q=1 1 1 1 1 1 0 B, BYTE/和89C52地址線中A0(即Q0)相連,因此,DAC1208 內部三個I/O端口就占用了四個I/O端口地址。其中,“4位輸入寄存器”端口地址為FEH,“8位輸入寄存器”地址為FFH,12位DAC寄存器地址為FCH或FDH。DAC1208是以雙緩沖方式工作的,89C52首先送高8位和后送低4位原則,分兩批把12位數字量送到輸入寄存器,然后通過FCH或FDH端口使12位DAC寄存器同時從輸入寄存器接受數字

49、量,進行D/A轉換。因此,V端不會出現“毛刺”。相反,如果讓DAC1208工作在單緩沖方式,那么V輸出必然會在89C52兩次送數字間產生電壓突變而形成“毛刺”。3.2 相關芯片的介紹3.2.1 AT89C52芯片的介紹AT89C52是一個低電壓,高性能CMOS 8位單片機,片內含8Kbytes的可反復擦寫的只讀程序存儲器(EPROM)和256bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度,非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,功能強大的AT89C52單片機可為你提供許多較復雜系統控制應用場合。AT89C52有

50、40個管腳,32個外部雙向輸入輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。表3.4 AT89C52主要功能特性表主要功能特性:l 兼容MCS51指令系統l 8K可反復擦寫(1000)Flash ROMl 32個雙向I/O口l 256*8bit內部RAMl 3個16位可編程定時/計數器中斷l(xiāng) 時鐘頻率0-24MHZl 2個串行中斷l(xiāng) 可編程UART串行通信l 2個外部中斷源l

51、共6個中斷源l 2個讀寫中斷口線l 3級加密位l 低功耗空閑和掉電模式l 軟件設置睡眠和喚醒功能AT89C52提供以下標準功能,8K字節(jié)Flash閃速存儲器,256字節(jié)內部RAM,32個I/O口線,3個16位定時計數器,一個向量兩極中斷結構,一個雙工串行通信口,片內振蕩器即時鐘電路,同時,AT89C52可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)點工作模式,空閑方式停止CPU的工作,但允許RAM,定時計數器,串行通信口及中斷系統繼續(xù)工作,掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其他所有部件工作知道下一個硬件復位。主要功能特性如表3.4所示。3.2.2 并行接口芯片8255A82

52、55A是并行接口芯片,它具有3個八位數據接口,分別是PA口、PB口、PC口,其中PC口有可分為高四位和低四位口;可以通過軟件編程來設置芯片I/O的工作方式,所以用連接外部設備時,通常不需要再附加外部電路,給使用帶來很大的方便。8255A尋址方式及相應操作表如表3.5所示。表3.5 8255A尋址方式及相應操作表A0A1操作00001讀端口A(獲得數據)01001讀端口B(獲得數據)10001讀端口C(獲得數據或狀態(tài))00010寫端口A(寫入數據)01010寫端口B(寫入數據)10010寫端口C(寫入數據)11010寫控制端口(寫入控制字)××1××數據總線高阻××011數據總線高阻11001非法操作8255A的方式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論