版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 畢業(yè)設計(論文)單片機計算器及密碼鎖程序設計學院(系):電氣工程學院 專 業(yè):07級計控(2)班 學 號:070103010142 摘要摘要智能化是當今光、機、電一體化產(chǎn)品的發(fā)展趨勢之一,而智能性的實現(xiàn)主要依賴于嵌入式系統(tǒng)的核心單片機。而仿真器不但是開發(fā)單片機系統(tǒng)的重要手段,也是學習單片機知識的必備工具。本課題來源于燕山大學自動化專業(yè)單片機生產(chǎn)實習的需要,為了充分鍛煉學生的動手操作能力,并節(jié)約實習經(jīng)費,因此開發(fā)了一種使用簡單,覆蓋單片機基本資源應用并且價格低廉的單片機仿真系統(tǒng)。論文分別介紹了單片機仿真系統(tǒng)的硬件設計和軟件實現(xiàn)。硬件設計包括仿真芯片的選型,單片機的資源應用及擴展電路,如:825
2、5并口擴展、發(fā)光二極管、七段動態(tài)數(shù)碼顯示44鍵盤輸入、蜂鳴器等。軟件部分包括兩個大程序:密碼鎖程序和計算器程序。密碼鎖程序實現(xiàn)3-8位可變密碼的輸入、修改和密碼輸入正確后的授權操作功能,密碼錯誤后有聲光報警(不同的報警次數(shù)對應不同的報警方式)。計算器程序實現(xiàn)帶符號浮點數(shù)的加、減、乘、除及開根號的功能,設計中加入了第二功能鍵解決了按鍵有限的問題。這兩個程序主要應用了單片機教材中中斷、動態(tài)顯示、鍵盤輸入、i/o接口這些重要功能,具有良好的示范作用。本系統(tǒng)不但可以應用于單片機教學,對大多數(shù)電子愛好者開發(fā)簡單的仿真器也有借鑒作用。關鍵詞單片機;仿真器;計算器;密碼鎖;i 目 錄摘要i第1章 緒論11.
3、1 課題背景11.2 單片機的發(fā)展概述11.3 單片機的應用領域41.4 單片機的發(fā)展趨勢51.5 本課題研究的內(nèi)容6第2章 硬件系統(tǒng)的介紹72.1 sst89e58rd芯片功能及原理72.2 8255可編程并行i/o接口擴展82.3 8255與八位led數(shù)碼管的鏈接電路122.4 led與單片機的鏈接132.5 鍵盤電路142.6 蜂鳴器電路142.7 本章小結16第3章 計算器程序173.1 程序功能及存儲方式介紹173.2 主程序183.3 鍵盤子程序213.4 除法子程序263.5 開根號子程序313.6 小數(shù)點對齊子程序363.7 其它子程序383.8 本章小結41第四章 密碼鎖程序
4、424.1 程序的功能及存儲方式介紹424.2 主程序424.3 讀密碼及改密碼子程序464.4 報警子程序484.5 錯誤顯示子程524.6 c語言與匯編語言的比較534.7 本章小結54結論55參考文獻56致謝57附錄1 開題報告58附錄2 文獻綜述64附錄3 外文翻譯的中文部分68附錄4 外文翻譯的英文部分75附錄5 系統(tǒng)電路原理圖85附錄6 計算器程序的數(shù)據(jù)表86iii第一章 緒論 第1章 緒論1.1 課題背景本課題來源于燕山大學自動化專業(yè)單片機生產(chǎn)實習的需要,目的是為了充分鍛煉學生的動手操作能力并節(jié)約實習經(jīng)費,因此開發(fā)了一種使用簡單,覆蓋單片機基本資源應用,并且價格低廉的單片機仿真系
5、統(tǒng)。在單片機的開發(fā)過程中,程序的設計是最為重要的但也是難度最大的。一種最簡單和原始的開發(fā)流程是:編寫程序燒寫芯片驗證功能,這種方法對于簡單的小系統(tǒng)是可以對付的,但在大系統(tǒng)中使用這種方法則是完全不可能的。因此仿真成了系統(tǒng)調試的必備手段。仿真分軟件仿真和硬件仿真。軟件仿真主要是使用計算機軟件來模擬運行實際的單片機運行,因此仿真與硬件無關的系統(tǒng)具有一定的優(yōu)點。用戶不需要搭建硬件電路就可以對程序進行驗證,特別適合于偏重算法的程序。軟件仿真的缺點是無法完全仿真與硬件相關的部分,因此最終還要通過硬件仿真來完成最終的設計。仿真器是單片機仿真的重要工具。單片機仿真器是在產(chǎn)品開發(fā)階段用來替代單片機進行軟硬件調試
6、的非常有用的開發(fā)工具。使用單片機仿真器可以對單片機程序進行單步、斷點等手段的調試,檢查程序運行中單片機ram 、寄存器內(nèi)容的變化,觀察程序的運行悄況,與此同時可以對硬件電路進行實時的調試。使用單片機仿真器可以迅速發(fā)現(xiàn)、糾正程序中的錯誤,從而大大縮短單片機開發(fā)的周期。1.2 單片機的發(fā)展概述 1946年第一臺電子計算機誕生至今,只有50年的時間,依靠微電子技術和半導體技術的進步,從電子管晶體管集成電路大規(guī)模集成電路,現(xiàn)在一塊芯片上完全可以集成幾百萬甚至上千萬只晶體管,使得計算機體積更小,功能更強。特別是近20年時間里,計算機技術獲得飛速的發(fā)展,計算機在工農(nóng)業(yè),科研,教育,國防和航空航天領域獲得了
7、廣泛的應用,計算機技術已經(jīng)是一個國家現(xiàn)代科技水平的重要標志。 單片機誕生于20世紀70年代,象fairchid公司研制的f8單片微型計算機。所謂單片機是利用大規(guī)模集成電路技術把中央處理單元(center processing unit,也即常稱的cpu)和數(shù)據(jù)存儲器(ram)、程序存儲器(rom)及其他i/o通信口集成在一塊芯片上,構成一個最小的計算機系統(tǒng),而現(xiàn)代的單片機則加上了中斷單元,定時單元及a/d轉換等更復雜、更完善的電路,使得單片機的功能越來越強大,應用更廣泛。 1976年intel公司推出了mcs-48單片機,這個時期的單片機才是真正的8位單片微型計算機,并推向市場。它以體積小,功
8、能全,價格低贏得了廣泛的應用,為單片機的發(fā)展奠定了基礎,成為單片機發(fā)展史上重要的里程碑。 在mcs-48的帶領下,其后,各大半導體公司相繼研制和發(fā)展了自己的單片機,象zilog公司的z8系列。到了80年代初,單片機已發(fā)展到了高性能階段,象intel公司的mcs-51系列,motorola公司的6801和6802系列,rokwell公司的6501及6502系列等等,此外,日本的著名電氣公司nec和hitachi都相繼開發(fā)了具有自己特色的專用單片機。 80年代,世界各大公司均競相研制出品種多功能強的單片機,約有幾十個系列,300多個品種,此時的單片機均屬于真正的單片化,大多集成了cpu、ram、r
9、om、數(shù)目繁多的i/o接口、多種中斷系統(tǒng),甚至還有一些帶a/d轉換器的單片機,功能越來越強大,ram和rom的容量也越來越大,尋址空間甚至可達64kb,可以說,單片機發(fā)展到了一個全新階段,應用領域更廣泛,許多家用電器均走向利用單片機控制的智能化發(fā)展道路。 1982年以后,16位單片機問世,代表產(chǎn)品是intel公司的mcs-96系列,16位單片機比起8位機,數(shù)據(jù)寬度增加了一倍,實時處理能力更強,主頻更高,集成度達到了12萬只晶體管,ram增加到了232字節(jié),rom則達到了8kb,并且有8個中斷源,同時配置了多路的a/d轉換通道,高速的i/o處理單元,適用于更復雜的控制系統(tǒng)。隨后的事情,熟悉單片機
10、的人士都比較清楚了,更多的單片機種蜂擁而至,motorola公司相繼發(fā)布了mc68hc系列單片機,日本的幾個著名公司都研制出了性能更強的產(chǎn)品,但日本的單片機一般均用于專用系統(tǒng)控制,而不象intel等公司投放到市場形成通用單片機。例如nec公司生產(chǎn)的ucom87系列單片機,其代表作upc7811是一種性能相當優(yōu)異的單片機。motorola公司的mc68hc05系列其高速低價等特點贏得了不少用戶。 zilog公司的z8系列產(chǎn)品代表作是z8671,內(nèi)含basic debug解釋程序,極大地方便用戶。而美國國半的cop800系列單片機則采用先進的哈佛結構。atmel公司則把單片機技術與先進的flash
11、存儲技術完美地結合起來,發(fā)布了性能相當優(yōu)秀的at89系列單片機。包括中國的臺灣holtek和winbond等公司也紛紛加入了單片機發(fā)展行列,憑著他們廉價的優(yōu)勢,分享一杯美羹。1990年美國intel公司推出了80960超級32位單片機引起了計算機界的轟動,產(chǎn)品相繼投放市場,成為單片機發(fā)展史上又一個重要的里程碑。 此期間,單片機園地里,單片機品種異彩紛呈,爭奇斗艷。有8位、16位甚至32位機,但8位單片機仍以它的價格低廉、品種齊全、應用軟件豐富、支持環(huán)境充分、開發(fā)方便等特點而占著主導地位。而intel公司憑著他們雄厚的技術,性能優(yōu)秀的機型和良好的基礎,目前仍是單片機的主流產(chǎn)品。只不過是九十年代中
12、期,intel公司忙著開發(fā)他們個人電腦微處理器,已沒有足夠的精力繼續(xù)發(fā)展自己創(chuàng)導的單片機技術,而由philips等公司繼續(xù)發(fā)展c51系列單片機。1.3 單片機的應用領域 單片機廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇: 1。在智能儀器儀表上的應用 單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電
13、子或數(shù)字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)。 2.在工業(yè)控制中的應用 用單片機可以構成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統(tǒng),與計算機聯(lián)網(wǎng)構成二級控制系統(tǒng)等。3.在家用電器中的應用 可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。 4.在計算機網(wǎng)絡和通信領域中的應用 現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進行數(shù)據(jù)通信,為在計算機網(wǎng)絡和通信設備間的應用提供了極好的物質條件,現(xiàn)在的通信設備基本上都實現(xiàn)了單片機
14、智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。5.單片機在醫(yī)用設備領域中的應用 單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統(tǒng)等等。 此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。1.4 單片機的發(fā)展趨勢現(xiàn)在可以說單片機是百花齊放,百家爭鳴的時期,世界上各大芯片制造公司都推出了自己的單片機,從8位、16位到32位,數(shù)不勝數(shù),應有盡有,有與主流c51系列兼容的,也有不兼容的,但它們各具特色,互成互補,為單片機的應用提供
15、廣闊的天地。 縱觀單片機的發(fā)展過程,可以預示單片機的發(fā)展趨勢,大致有: 1.低功耗cmos化 mcs-51系列的8031推出時的功耗達630mw,而現(xiàn)在的單片機普遍都在100mw左右,隨著對單片機功耗要求越來越低,現(xiàn)在的各個單片機制造商基本都采用了cmos(互補金屬氧化物半導體工藝)。象80c51就采用了hmos(即高密度金屬氧化物半導體工藝)和chmos(互補高密度金屬氧化物半導體工藝)。cmos雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而chmos則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗象電池供電的應用場合。所以這種工藝將是今后一段時期單片機發(fā)展的主要途徑。 2
16、.微型單片化 現(xiàn)在常規(guī)的單片機普遍都是將中央處理器(cpu)、隨機存取數(shù)據(jù)存儲(ram)、只讀程序存儲器(rom)、并行和串行通信接口,中斷系統(tǒng)、定時電路、時鐘電路集成在一塊單一的芯片上,增強型的單片機集成了如a/d轉換器、pmw(脈寬調制電路)、wdt(看門狗)、有些單片機將lcd(液晶)驅動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機都具有多種封裝形式,其中smd(表面封裝)越
17、來越受歡迎,使得由單片機構成的系統(tǒng)正朝微型化方向發(fā)展。 3.主流與多品種共存 現(xiàn)在雖然單片機的品種繁多,各具特色,但仍以80c51為核心的單片機占主流,兼容其結構和指令系統(tǒng)的有philips公司的產(chǎn)品,atmel公司的產(chǎn)品和中國臺灣的winbond系列單片機。所以c8051為核心的單片機占據(jù)了半壁江山。而microchip公司的pic精簡指令集(risc)也有著強勁的發(fā)展勢頭,中國臺灣的holtek公司近年的單片機產(chǎn)量與日俱增,與其低價質優(yōu)的優(yōu)勢,占據(jù)一定的市場分額。此外還有motorola公司的產(chǎn)品,日本幾大公司的專用單片機。在一定的時期內(nèi),這種情形將得以延續(xù),將不存在某個單片機一統(tǒng)天下的壟
18、斷局面,走的是依存互補,相輔相成、共同發(fā)展的道路。1.5 本課題研究的內(nèi)容本課題主要實現(xiàn)基于單片機教學電路板的兩個程序:計算器程序和密碼鎖程序。計算器程序包括7段數(shù)碼管的動態(tài)顯示、讀入鍵盤鍵值、led控制、帶符號浮點數(shù)加減乘除四則運算及開根號計算和退格功能的實現(xiàn)。由于數(shù)碼管只有8位,所以計算結果最多能精確到8位(負數(shù)7位)。密碼鎖程序的包括修改密碼、輸入密碼錯誤報警(并且根據(jù)報警次數(shù)的不同實現(xiàn)不同的報警方式)、密碼輸入正確后的授權操作(硬件有限,只能是模擬)和復位功能。復位功能的加入使本設計更貼近實際,當有人試圖闖入系統(tǒng)時報警功能發(fā)揮作用,但是報警系統(tǒng)必須能夠硬件復位,否則該系統(tǒng)將成為一次性系
19、統(tǒng),沒有任何使用價值。53 第2章 硬件系統(tǒng)的介紹 第2章 硬件系統(tǒng)的介紹 第2章 硬件系統(tǒng)的介紹完成的單片機仿真器及教學電路板實物如圖2-1所示。本章主要介紹sst89e58rd芯片、8255芯片、動態(tài)數(shù)碼管和led的接口和工作原理。圖2-1單片機仿真器及教學電路板2.1 sst89e58rd芯片功能及原理sst89e58rd屬于flashflex51家族,以cmos 半導體處理技術設計和制造的8 位scm。器件使用與8051 完全相同的指令集,并與標準的8051 器件管腳對管腳兼容。32k 字節(jié)的flash eeprom 程序存儲器,這是基于sst 的專利技術和專有的cmos superf
20、lash eeprom 技術將superflash 存儲器分成兩部分相對獨立的程序存儲塊。主塊0占用32kb字節(jié)的內(nèi)部程序存儲空間,次塊1占用8k的內(nèi)部程序存儲空間。該8k 字節(jié)的次塊可以被映射到64/32k 字節(jié)存儲器空間的最低地址空間,同時該空間也可以通過程序計數(shù)器(program counter) 被隱藏,同時可以作為獨立的類eeprom(eeprom-like)數(shù)據(jù)存儲器。該存儲塊可以通過標準的87c5x 的otp eprom 編程器通過加裝專為sst 器件準備的特殊的適配器和firmware 來編程。在上電復位器件,該器件可以被配置為下位機,作為外部主機的原始代碼存儲器,或者作為上位
21、機連接到外部主機進行iap 操作(在應用可編程)。該器件被設計成為可以在系統(tǒng)和在應用可編程,這樣可以在印刷電路板上達到最大的機動性。該器件可以用一個啟動例程被預編程,示范用戶編程代碼下載或通過iap 功能更新用戶代碼。有一個下載啟動代碼的例程可供用戶參考,僅供方便起見。sst 不保證該下載啟動例程的功能和使用。器件擦除操作會擦除該預編程過的示例代碼。作為32kb的superflash eeprom 的片內(nèi)程序存儲器的補充,該器件可以尋址到64kb的外部程序存儲器空間。作為1kb8 位的片內(nèi)ram 空間的補充,該器件可以尋址64k 字節(jié)的外部ram 空間。sst 的高可靠性,擁有專利的super
22、flash 技術和存儲器單元架(memory cellarchitecture)有一系列的設計和生產(chǎn)flash eeproms 的重要的優(yōu)勢。這些優(yōu)勢轉換成為重大的價值和使用戶可靠地受益。仿真功能的實現(xiàn)也得益于此,事先將仿真監(jiān)控程序燒寫到次塊1中,以實現(xiàn)在線仿真。2.2 8255可編程并行i/o接口擴展 18255是一個通用可編程并行i/o接口芯片,引腳定義如圖2-2所示。(1)8255有3個8位并行i/o端口,端口a,b,c均可以工作在輸入或輸出方式;(2)兩組控制電路分別控制3個端口,a組控制端口a和端口c的高4位,b組控制電路控制端口b端口c的低4位;(3)具有數(shù)據(jù)總線緩沖器,可以方便地
23、與單片機數(shù)據(jù)總線連接;(4)端口a,b,c通過內(nèi)部數(shù)據(jù)總線與數(shù)據(jù)總線緩沖器連接,即各端口通過數(shù)據(jù)端口與單片機交互信息;(5)提供讀/寫控制邏輯,可以很方便地通過movx反映令完成對其各端口的操作。圖2-2 8255引腳圖28255的功能 (1)數(shù)據(jù)端口a,b,c端口a:一個8位數(shù)據(jù)輸出鎖存/緩沖器,一個8位數(shù)據(jù)輸入鎖存器;端口b:一個8位數(shù)據(jù)輸出鎖存/緩沖器,一個8位數(shù)據(jù)輸入鎖存器;端口c:一個8位數(shù)據(jù)輸出鎖存/緩沖器,一個8位數(shù)據(jù)輸入鎖存器。3個端口都可以作為數(shù)據(jù)輸入式輸出端口,但是不同的端口有不同的工作方式。除一般輸入/輸出方式外,端口a還可以工作在雙向方式、握手聯(lián)絡方式,端口b可以工作在
24、握手聯(lián)絡方式;而端口c可以作為控制或狀態(tài)信號的端口,為端口a和b提供握手聯(lián)絡信號,并且端口c還可工作在按位置位/復位方式。本設計中,只將其作為最基本的i/o口使用。(2)讀/寫和控制邏輯讀/寫和控制邏輯直接與單片機的控制總線及地址總線相連接,8255的a0,a1及與地址總線連接,而和與單片機的和信號連接。8255有如下相關的控制信號。:片選信號,低電平時,8255被選口;:讀信號,低電平有效,該信號有效時可以讀取8255的端口數(shù)據(jù)或狀態(tài)信息;:寫信號,低電平有效,該信號有效時可以向8255寫入控制字式向端口寫數(shù)據(jù);reset:復位信號,高電平有效,只有復位后8255才能接收單片機對其進行的初始
25、化。(3)端口地址的確定8255的地址由其引腳,a1,a0決定,端口選擇如表所示。表2-1 8255端口選擇a1a0操作001010000111000a口數(shù)據(jù)總線b口數(shù)據(jù)總線c口數(shù)據(jù)總線輸入00110101111100000000數(shù)據(jù)總線a口數(shù)據(jù)總線b口數(shù)據(jù)總線c口數(shù)據(jù)總線 控制寄存器輸出110111100端口輸出為“高阻”非法端口輸出為“高阻”禁止38255的控制字、狀態(tài)字和工作方式(1)8255的控制字8255有兩種控制字,它們決定了8255的工作方式。方式控制字方式控制字由8位組成,其格式如下。1d6d5d4d3d2d1d0d7:d7=1,是方式控制字標志。d6和d5:確定a口工作方式,
26、d6d5=00,a口工作在方式0;d6d5=01,a口工作在方式1;d6d5=10,a口工作在方式2。d4:確定a口的數(shù)據(jù)傳輸方向,d4=1,a口輸入;d4=0,a口輸出。d3:確定c口的pc7pc4的數(shù)據(jù)傳輸方向,d3=1,pc7pc4輸入;d3=0,pc7pc4輸出。d2:確定b口的數(shù)據(jù)傳輸方向,d2=1,b口輸入;d2=0,b口輸出。d0:確定c口的pc3pc0的數(shù)據(jù)傳輸方向,d0=1,pc3pc0輸入;d0=0,pc3pc0輸出。(2)按位復位/置位控制字按位復位/置位控制字由位組成,其格式如下。0d6d5d4d3d2d1d0d7:d7=0,是按位復位/置位,控制字標志。d6,d5,d
27、4:沒有定義。d3,d2,d1:選擇c口中的某一位,3位組成8個狀態(tài),000111分別代表選擇pc0pc7。d0:置1、清零標志,d0=1,將d3d2d1選擇位置1;d0=0,將d3d2d1選擇位清零。(3)8255的狀態(tài)字8255沒有專門的狀態(tài)字,當端口a、端口b工作于方式1或方式時,端口c為它們提供握手聯(lián)絡信號,讀端口c,可以得到有關端口的工作狀態(tài)信息。端口工作于方式0時,沒有相應的狀態(tài)信息。狀態(tài)字與工作方式密切相關。(4)8255工作方式由8255的方式控制字可知,8255有3種工作方式,并且不同的端口有不同的工作方式。端口a可以工作在方式0、方式1和方式2,端口b可以工作在方式0和方式
28、1,端口c只能工作在方式0。本設計中只選用8255的方式0,即基本的輸入/輸出方式,3個端口互不影響,可以分別設置為輸入或輸出。4mcs-51單片機與8255的接口電路8255與mcs-51單片機的接口電路如圖2-3所示。如圖2-3 8255與單片機的連接電路2.3 8255與八位led數(shù)碼管的鏈接電路單片機應用系統(tǒng)中只有一位數(shù)字顯示是不常見的,同時要驅動多個數(shù)碼管顯示,就必須同時讓多個數(shù)碼管加上各自不同的段選碼,這屬于靜態(tài)顯示。在單片機應用系統(tǒng)中,顯示器顯示常用靜態(tài)顯示和動態(tài)掃描顯示兩種方法。1、所謂靜態(tài)顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的i/o接口用于筆劃段字形代碼。單片機只
29、要把要顯示的字形代碼發(fā)送到接口電路,直到要顯示新的數(shù)據(jù)時,再以送新的字形碼,因此,使用這種方法單片機中cpu的開銷小。2、所謂動態(tài)顯示,與靜態(tài)顯示不同,動態(tài)顯示技術讓不同的數(shù)碼管分時亮。即,某一個數(shù)碼管的字段碼從單片機的一個i/o接口輸出,通過單片機選通該數(shù)碼管,讓這個數(shù)碼管顯示自己的字符幾個毫秒,然后將下一個數(shù)碼管的字段碼從單片機的同一個i/o接口輸出,通過單片機選通下一個數(shù)碼管,讓下一個數(shù)碼管顯示自己的字符幾個毫秒,依次循環(huán)。由于人眼響應較慢,最后的效果是每一個數(shù)碼管都在顯示各自的字符。本設計采用八位數(shù)碼管的動態(tài)顯示,通過8255口和b口來連接數(shù)碼管。a口為段選信號,b口為位選信號。電路如
30、圖2-4所示.。共陰極四位一體數(shù)碼管的引腳圖如右圖所示,顯示數(shù)字所對應的控制字如下表:01234567893fh06h5bh4fh66h6dh7bh07h7fh6fh圖2-4 數(shù)碼管與8255連接電路2.4 led與單片機的鏈接將發(fā)光二極管與單片機的i/o口相聯(lián),控制各各燈的亮樣,以達到使其呈現(xiàn)不同樣式。這是最基礎的單片機學習過程。電路好圖2-5所示。本設計用到12個發(fā)光二極管,其中4個直接與單片機p1口相連,其余8個與8255c口相連。圖2-5 流水燈電路簡圖2.5 鍵盤電路在微機應用系統(tǒng)中,為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),一般都設置有鍵盤,本系統(tǒng)中采用44的鍵盤,鍵盤的8位接口與p
31、c口相連。由于led7到led14也是通過8255的pc口控制的,本設計采用跳線實現(xiàn)了pc口復用的功能。鍵盤原理圖如圖2-6。鍵盤的工作原理:鍵盤采用逐列掃描的工作原理。pc4到pc7為輸出口,pc1到pc4為輸入口。接收鍵盤數(shù)據(jù)時首先給pc4送出一個低電平(pc5到pc7保持高電平),然后檢查pc0到pc3有沒有低電平,如果有一位低電平就說明第一列有鍵按下,低電平的位所對應的行就是按下的鍵所對應的行。如果第一列都是高電平就說明這一列沒有鍵被按下。用同樣的方法掃描后面三列。最后將建位值保存起來就完成了接收鍵盤數(shù)據(jù)。 圖26 鍵盤電路2.6 蜂鳴器電路蜂鳴器是一種一體化結構的電子訊響器,通過本設
32、計學習如何用單片機驅動蜂鳴器。它廣泛應用于計算機、打印機、復印機、報警器、電話機等電子產(chǎn)品中作發(fā)聲器件。 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。1、電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發(fā)聲。 2、壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成,當接通電源后(1.515v直流工作電壓),多諧振蕩器起振,輸出1.52.5khz的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。這里采用的是電磁式
33、蜂鳴器,通過 單片機i/o口周期性的取反,使三極管周期性的導通從而使蜂鳴器振動發(fā)聲。聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調。常見音調及其頻率對應如表2-2所示。表2-2 音調及其頻率音符1234567頻率/hz523587859698784880987蜂鳴器連接電路如圖2-7所示。圖2-7 蜂鳴器連接電路2.7 本章小結本章主要介紹了單片機仿真器系統(tǒng)中的硬件電路原理圖,以方便對整個電路的了解,使使用
34、者熟悉電路原理,這是閱讀程序的必要前提。硬件電路中包括單片機、8255并行口、鍵盤電路、動態(tài)數(shù)碼顯示、流水燈等各部分的原理圖和功能,為后續(xù)章節(jié)軟件系統(tǒng)打下基礎。第3章 計算器程序 第3章 計算器程序3.1 程序功能及存儲方式介紹 本程序實現(xiàn)浮點數(shù)(包括正負)的加、減、乘、除及開根號的功能。為了解決鍵盤按鍵不夠用的問題,本設計加入了第二功能鍵,數(shù)字鍵沒有第二功能,鍵a、b、c、d、e對應的第一功能依次為加、減、乘、除、清零,對應的第二功能依次為等于、退格、負號、小數(shù)點、開根號。f鍵為snd鍵。第二功能鍵按一次led6變亮表示鍵a、b、c、d、e處于第二功能狀態(tài),再按一下led6滅表示鍵a、b、c
35、、d、e處于第一功能狀態(tài)。加減乘除也有對應的狀態(tài)顯示led。當輸入一個操作和操作符后,操作符對應的狀態(tài)顯示led變亮,直到輸入第二個操作數(shù)和等號后操作符狀態(tài)顯示led才滅。led3對應的操作符是加,led4對應的操作符是減,led5對應的操作符是乘,led3和led4同時亮對應的操作符是除。加入狀態(tài)顯示使用者就可以通過操作符狀態(tài)顯示led很容易的的判斷出當前輸入的是第一個還是第二個操作數(shù),并且在輸入輸入第二個操作數(shù)時能夠根據(jù)操作符狀態(tài)顯示led判斷出操作符。開根號只有一個操作數(shù)沒有必要增加操作符狀態(tài)顯示。本設計考慮到等號是用第二功能鍵實現(xiàn)的,位了避免使用的不便本設計中當輸入兩個操作數(shù)和一個操作
36、符后按加、減、乘、除鍵即a、b、c、d的第一功能鍵和按等號鍵具有同樣的效果,都實現(xiàn)等號的功能。鍵盤功能簡圖如圖3-1:圖3-1計算器鍵盤功能簡圖由于仿真板只有8位數(shù)碼管,所以輸入的數(shù)據(jù)或計算結果最多只有8位(負數(shù)只能有7位),如果計算結果超出8位(或7位)則四舍五入到全屏顯示即8位(或7位)。本程序的存儲方式有別于常見的計算機存儲方式(二進制、bcd碼等),本程序采用每個字節(jié)存儲一位十進制數(shù)。這樣做是有一點浪費存儲空間,但是這樣的存儲方式能夠提高程序的執(zhí)行效率。對于偏重于算法的程序cpu的利用效率一般要比內(nèi)存的利用效率更重要一些,所以本程序采用了這種存儲方式。3.2 主程序本程序設計采用模塊化
37、編程的思想,各功能模塊都用子程序實現(xiàn)。模塊化編程有如下優(yōu)點:1,有效率的程序開發(fā):使用模塊化方法可以更快地開發(fā)程序,因為較小的子程序比大程序更容易理解、設計和測試。定義好模塊的輸入和輸出之后,程序員可以給模塊提供需要的輸入,通過檢測輸出來判斷模塊的正確性。然后由連接器把分立的模塊連接、定位,生成一個單一的絕對地址的可執(zhí)行的程序模塊。最后,測試整個模塊。2,子程序可以重用:為一個程序編寫的代碼經(jīng)??梢杂糜谄渌某绦?。在模塊化編程中,可以把這些部分保存起來,以備將來使用。因為代碼可以被重定位,所以保存的模塊可以連接到滿足其輸入和輸出要求的任意程序中。而在單塊程序編程中,這樣的部分深埋在整個程序中,
38、不易被其它的程序使用。3,便于調試和修改:模塊化程序一般比單塊程序易于調試。因為精心定義了程序的模塊接口,很容易把問題定位到特定的模塊。一旦找到了有問題的模塊,更正問題就相當容易了。模塊化編程可以簡化程序修改的工作??梢院苋菀椎匕研碌幕蛘{試過的模塊連接到一個已有的程序,而不用更改程序的其余部分。主程序流程圖如圖32:圖3-2 主程序流程圖c語言主程序如下:void main()char jian; /*暫時存儲鍵值*/char jsf; /*保存讀數(shù)函數(shù)的返回值*/ cr=0x81; /*8255控制字*/ while(1) num_operand2=0;num_operand1=0;poin
39、t2=0;point1=0;snd=0;operation=0;p1_4=1;p1_5=1;p1_6=1;p1_7=1; /*初始化 */for(temp1=0;temp116;temp1+) /*存儲器清零 */ operand1temp1=0; temp_operandtemp1=0; operand2temp1=0;pa=0x3f; /*待機顯示0 */pb=0x80;while(!askey();jian=skey(); while(1) jsf=dushu();if(jsf=0x00)jisuan();else break;while(!skey() display();if(key
40、=0x0e) /*清零鍵按下 */break; 說明:程序中operand1為第一個操作數(shù)(包括被加數(shù)、被減數(shù)、被乘數(shù)、被除數(shù)),operand2為第二個操作數(shù)(包括加數(shù)、減數(shù)、乘數(shù)、除數(shù))。計算結束后結果保存在operand2用于顯示。operation保存操作符。本程序主要用到三個子函數(shù),dushu子函數(shù)主要負責接收輸入的數(shù)據(jù)(包括兩個操作數(shù)和一個操作符),jisuan子函數(shù)根據(jù)操作符的值調用不同的計算子函數(shù)計算結果,display子函數(shù)用于顯示操作數(shù)和結果。3.3 鍵盤子程序鍵盤程序的功能是接收識別鍵值并將鍵值存如變量key中。本設計采用的44鍵盤做為輸入設備,鍵盤的8根線與pc口相連,
41、pc口的低四位作為輸出高四位作為輸入。鍵盤的工作原理:pc0輸出低電平,然后查看pc口高四位的電平,如果全是高電平說明第一列沒有鍵按下,如果不全為高電平說明第一列有鍵按下。第幾位不為高電平就說明該列的第幾行的鍵被按下。用同樣的方法檢測后面的三列。為了提高程序的效率和可靠性,鍵盤程序必須加入一下幾個部分:1,檢查按鍵彈起部分:鍵盤程序結束后要檢測按鍵彈起,如果沒有彈起一直等待直到按鍵彈起才可一返回主程序。這樣做可以防止按鍵一次被誤識別為兩次。2,去除鍵抖動部分:當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。鍵盤程序的流程圖如圖33:yyyy ynnn第一列有鍵按下返回零檢測行值計算鍵值處
42、理第二功能鍵松開?返回一顯示n第一列有鍵按下第一列有鍵按下開始第一列有鍵按下圖3-3 主程序流程圖鍵盤子程序c語言源程序如下:char skey() char i,j,find,ini,inj; char atc4=0xef,0xdf,0xbf,0x7f; /*鍵盤掃描控制信號*/ char in; find=0; for(i=0;i4;i+) pc=atci; delay(3); in=pc; in=in4; in=in|0x0f; for(j=0;j4;j+) if(atcj=in) find=1; inj=j; ini=i; if(find=0) return 0;while(askey
43、() /*鍵沒釋放一直顯示*/display();key=ini*4+inj;if(key=9) /* 修改鍵值*/key=0;elseif(key=0x0a&key0) /*小數(shù)點處理*/ point2-; if(point10) point1-; while(operand2num_operand2-1=0) /*清除最高位的零*/ num_operand2-; while(operand1num_operand1-1=0) num_operand1-; duiqi(); if(point2=point1) xsd=point2-point1; temp=1; else xsd=point1-point2;temp=0;for(x=0;x0) num_operand2=x;point2=x-1-xsd;temp2=num_operand2;else num_opera
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店餐飲菜單設計與管理培訓
- 高中地理 第三章 海洋水體 第二節(jié) 海水的運動教學實錄 新人教版選修2
- 七年級生物上冊 3.1.1 藻類苔蘚和蕨類植物教學實錄 (新版)新人教版
- 2024年度高科技企業(yè)股權債務轉讓及投資合作協(xié)議3篇
- 人教版初中歷史與社會七年級上冊 4.2 文化藝術之都-巴黎 教學實錄
- 2024年標準建筑材料供應與采購協(xié)議范本版
- 2025版新教材高考生物復習特訓卷考點32生態(tài)系統(tǒng)的功能
- 房屋租賃合約書
- 加油站廣告位租賃合同
- 人教版七上歷史與社會3-1《家住平原》第一課時教學實錄
- 【MOOC】英文技術寫作-東南大學 中國大學慕課MOOC答案
- 2024年21起典型火災案例及消防安全知識專題培訓(消防月)
- 人教版四年級上冊數(shù)學【選擇題】專項練習100題附答案
- 從創(chuàng)意到創(chuàng)業(yè)智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學
- DL-T 1476-2023 電力安全工器具預防性試驗規(guī)程
- 國開《Windows網(wǎng)絡操作系統(tǒng)管理》形考任務4-配置故障轉移群集服務實訓
- 計價格[1999]1283號_建設項目前期工作咨詢收費暫行規(guī)定
- 安全生產(chǎn)工作者個人先進事跡材料(word版本)
- 執(zhí)業(yè)藥師注冊委托書.doc
- 《電力拖動與運動控制系統(tǒng)》課程設計雙閉環(huán)直流調速系統(tǒng)的設計
- 畢業(yè)設計(論文)RLC測量儀設計
評論
0/150
提交評論