AT89C52單片機的設計_第1頁
AT89C52單片機的設計_第2頁
AT89C52單片機的設計_第3頁
AT89C52單片機的設計_第4頁
AT89C52單片機的設計_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...畢業設計(論文)任務書?!!下面的行距都跟原來的封面不一樣了,連論文題目也沒有。。。你能不能用“?!!下面的行距都跟原來的封面不一樣了,連論文題目也沒有。。。你能不能用“論文〞封面〔2016屆〕所屬系〔部〕:機電工程學院所學專業:通信技術班級:13通信技術班姓名:xxx學號:xxx指導教師:xxx2015年7月7日AT89C52單片機設計設計單片機設計單片機通信技術XxxXxx摘要計算器是微型電子計算機的一種特殊類型。它與一般通用計算機的主要區別在于程序輸入方式的不同。計算器的程序一般都已經固定,只需按鍵輸入數據和運算符號就會得出結果,很容易就能掌握。而一般計算機的程序可以根據需要隨時改動,或重新輸入新的程序。簡易計算器主要用于加減乘除;科學計算器,又增添了初等函數運算。隨著微電子技術的不斷開展,微處理芯片的集成程度越來越高,單片機已可以在一片芯片上同時集成cpu,存儲器,定時器,計數器,并行和串行接口,看門狗,前置放大器,A|D轉換器,D|A轉換器等多種電路。完成一定區間和條件的簡單四則運算過程。關鍵詞:計算器,AT89C52,矩陣按鍵,LCD1602目錄第一章緒論11.1課題的提出及意義11.2設計的任務及要求1第二章總體方案設計32.1芯片比擬32.1.1單片機選擇32.1.2顯示器的選擇32.1.3按鍵局部的選擇42.2總體設計及系統原理4第三章單片機硬件設計63.1單片機局部63.1.1單片機開展歷史63.1.2單片機開展趨勢63.1.3計算器系統現狀73.1.4AT89C52系列單片機簡介83.2矩陣按鍵局部163.3液晶顯示器局部18第四章單片機軟件設計254.1主程序設計254.2鍵掃程序設計254.3算術運算程序設計264.4顯示程序設計27第五章單片機安裝、調試295.1軟件仿真295.2安裝步驟305.2.1檢查元件的好壞305.2.2放置、焊接各元件305.3調試345.3.1硬件調試345.3.2軟件調試34完畢語35致謝36參考文獻37第一章緒論1.1課題的提出及意義隨著社會的開展,科學的進步,人們的生活水平在逐步地提高,尤其是微電子技術的開展猶如雨后春筍般的變化。計算器在人們的日常中是比擬常見的電子產品之一,如何使計算器技術更加的成熟,充分利用已有的軟件和硬件條件,設計出更出色的計算器,使其更好地為各個行業服務,成了如今電子領域重要的研究課題。現在人們的日常生活中已經離不開計算器了,社會的各個角落都有它。因此設計一款簡單實用的計算器會有很大的實際意義。本設計在進一步掌握單片機理論知識,理解嵌入式單片機系統的硬軟件設計,加強對實際應用系統設計的能力。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的根本方法,并能綜合運用本科階段所學軟、硬件知識分析實際問題,提高解決畢業設計實際問題的能力你的本設計不就是“畢業設計〞嗎怎么本設計去提高解決畢業設計的能力,為單片機應用和開發打下良好的根基。你的本設計不就是“畢業設計〞嗎怎么本設計去提高解決畢業設計的能力對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調用及外特性有較清楚的認識,并會使用LCD〔液晶顯示模塊〕實現計算結果的顯示;掌握液晶顯示模塊的驅動和編程,設計LCD和單片機的接口電路,以及利用單片機對液晶顯示模塊的驅動和操作;在充分分析內部邏輯的概念,進展軟件和調試,學會使用,并能夠以其為平臺設計出具有四則運算能力簡易計算器的硬件電路和軟件程序。這些要不放在論文最后總結那里。這一節講的是這些要不放在論文最后總結那里。這一節講的是“計算器〞本身的意義,不是做這個對你的意義。1.2設計的任務及要求eq\o\ac(○,1)目的:通過本次工程實踐,運用《智能化測量控制儀表原理與設計》、《MCS-51系列單片微型計算機及其應用》所學知識及查閱相關資料,完成簡易計算器的設計,到達理論知識與實踐更好結合、提高綜合運用所學知識和設計能力的目的。通過本次設計訓練,可以使我們在根本思路和根本方法上對基于MCS-51單片機的嵌入式系統設計有一個比擬感性的認識,并具備一定程度的設計能力。邏輯不對嗎不是先理論設計好了,再實踐的嗎上面那段都實踐完了,這里才理論設計邏輯不對嗎不是先理論設計好了,再實踐的嗎上面那段都實踐完了,這里才理論設計eq\o\ac(○,2)要求:使用硬件:MCS-51單片機,中央處理器,數據存儲器(RAM),程序存儲器(ROM)等。使用軟件:電子繪圖軟件Protel。〔1〕通過網絡及各種相關書籍查找相關信息,確定使用的元器件。〔2〕以MCS-51單片機為核心,開發一個完整的系統,包括硬件設計和軟件的編程。〔3〕使用Protel軟件,繪制原理圖、PCB,并進展元器件安裝、焊接及調試檢測到達預期的目的。矩陣按鍵輸入、LCD1602液晶顯示,構成一套可以運算兩個數之間的加減乘除的設計。最大運算是:9999*9999,可以運算負數。第二章總體方案設計2.1芯片比擬2.1.1單片機選擇AT89C52是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含8Kbytes的可反復擦寫的只讀程序存儲器〔PEROM〕和256bytes的隨機存取數據存儲器〔RAM〕,器件采用ATMEL公司的高密度、非易失性存儲技術生產,與標準MCS-51指令系統及8052產品引腳兼容,片內置通用8位中央處理器〔CPU〕和FLASH存儲單元,功能強大AT89C52單片機適用于許多較為復雜控制應用場合。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規方法進展編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發本錢。AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。2.1.2顯示器的選擇在單片機應用系統中,使用的顯示器主要有LED〔發光二極管顯示器〕、LCD液晶顯示。方案一:使用8位LED數碼管來顯示,LED顯示器是由發光二極管顯示字段組成的顯示器件,在單片機應用系統中通常使用的是七段LED,這種顯示器有共陰極和共陽極兩種,它具有本錢低廉、配置靈活和單片機接口方便等特點。方案二:使用液晶顯示器來顯示。液晶是介于固態和液態間的有機化合物,將其加熱會變成透明液態,冷卻后變成結晶的渾濁固態。在電機的作用下,產生冷熱變化,從而影響它的透光性,來到達顯示的目的。LCD還具有以下優點:〔1〕低壓、微功耗;〔2〕顯示信息量大;〔3〕長壽命;〔4〕無輻射、無污染。選擇液晶顯示屏。為了適應本課題的需要,本設計采用液晶顯示屏LCD1602進展顯示。2.1.3按鍵局部的選擇根據操作需要和畢業設計需要,按鍵局部采用4*4行列式鍵盤,分別設定數字鍵和功能鍵。2.2總體設計及系統原理大致原理圖如圖2.2.1所示:這里是總體設計方案,應該放的是系統的原理框圖,不是整體電路圖。總的電路圖都全搞好了,后面的章節你打算講什么這里是總體設計方案,應該放的是系統的原理框圖,不是整體電路圖。總的電路圖都全搞好了,后面的章節你打算講什么另外,這個圖也太太模糊了吧根本看不清楚,打印出來就更不知道是什么圖2.2.1原理圖總的電路設計方案以單片機AT89S52來作為核心元器件,外圍采用4*4行列式鍵盤作為輸入,采用lcd1602液晶顯示來做輸出。這里重點介紹液晶輸出,它是一個雙行顯示的液晶顯示器,其采用標準的16腳接口。1.vssVss為地電源;Vss2.vddVdd后面的自己改。接5v正電源;Vdd后面的自己改。3.vo為液晶顯示器比照度調整端,接正電源時比照度最弱,接地電源時比照度最高,比照度過高會產生影子,使用時可以通過一個10k的電位器調整比照度;4.rs為存放器選擇,高電平時選擇數據存放器、低電平時選擇指令存放器;5.rw為讀寫信號線,高電平時選擇讀操作,低電平時選擇寫操作。當rs和rw共同為低電平時可以寫入指令或者顯示地址,當rs為低電平rw為高電平時可以讀忙信號,當rs為高點平rw為低電平時可以寫入數據。6.e端為使能端,當e端由高電平跳變成低電平時,液晶模塊執行命令;7.7~14d0~d7為8位雙向數據線;8.15~16分別為背光燈正負極,A接正極,K接負極。第三章單片機說真的~~你要設計一塊新型“單片機〞嗎如果你說的是設計8952,小心別人告你侵權呢硬件設計說真的~~你要設計一塊新型“單片機〞嗎如果你說的是設計8952,小心別人告你侵權呢3.1單片機局部目前,52系列單片機在我國的各行各業得到了廣泛應用,各大專業院校、職業培訓學校,均開設了單片機原理與應用方面的課程,這是一門技術性和實踐性很強的學科,必須通過一系列的軟硬件實驗、理論聯系實際,才能學好、學懂,取得較好的學習效果。后面兩節都刪了,這局部也沒什么用了。都不要了。后面兩節都刪了,這局部也沒什么用了。都不要了。3.1.1單片機開展歷史單片機〔Microcontrollers〕誕生于1971年,經歷了SCM、MCU、SoC三大階段,早期的SCM單片機都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上開展出了MCS51系列MCU系統。基于這一系統的單片機系統直到現在還在廣泛使用。隨著工業控制領域要求的提高,開場出現了16位單片機,但因為性價比不理想并未得到很廣泛的應用。90年代后隨著消費電子產品大開展,單片機技術得到了巨大提高。隨著INTELi960系列特別是后來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,并且進入主流市場。而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。高端的32位Soc單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系統。3.1.2單片機開展趨勢單片機的開展趨勢:低功耗CMOS化;微型單片化;主流與多品種共存;單片機從8位、16位到32位,數不勝數,應有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補,為單片機的應用提供廣闊的天地。縱觀單片機的開展歷程,可以發現單片機的開展趨勢大致有:1、低功耗CMOS化MCS-51系列的8051推出時的功耗達630mW,而現在的單片機普遍都在100mW左右,隨著對單片機功耗的要求越來越低,現在的各個單片機制造商根本都采用了CMOS(互補金屬氧化物半導體工藝)。像80C51就采用了HMOS(即高密度金屬氧化物半導體工藝)和CHMOS(互補高密度金屬氧化物半導體工藝)。CMOS雖然功耗較低,但由于其物理特征決定了其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗象電池供電的應用場合。所以這種工藝將是今后一段時期內單片機開展的主要途徑。2、微型單片化現在常規的單片機普遍都是將中央處理器(CPU)、隨機存取數據存儲(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口、中斷系統、定時電路、時鐘電路集成在一塊單一的芯片上,增強型的單片機集成了如A/D轉換器、PMW(脈寬調制電路)、WDT(看門狗),有些單片機將LCD(液晶)驅動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就更強大。甚至單片機廠商還可以根據用戶的要求量身定做,制造出具有自己特色的單片機芯片。此外,現在的產品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小。現在的許多單片機都具有多種封裝形式,其中SMD(外表封裝)越來越受歡送,使得由單片機構成的系統正朝微型化方向開展。3、主流與多品種共存現在雖然單片機的品種繁多,各具特色,但仍是以80C51為核心的單片機占主流,兼容其構造和指令系統的有PHILIPS公司的產品,ATMEL公司的產品和中國臺灣的Winbond系列單片機。因此以80C51為核心的單片機占據了半壁江山。而Microchip公司的PIC精簡指令集(RISC)也有著強勁的開展勢頭,中國臺灣的HOLTEK公司近年的單片機產量與日俱增,以其價低質優的優勢,占據一定的市場份額。此外還有MOTOROLA公司的產品,日本幾大公司的專用單片機。在一定的時期內,這種形勢將得以延續,將不存在某個單片機一統天下的壟斷局面,走的是依存互補,相輔相成、共同開展的道路。這兩節都不要。單片機怎么開展跟你這個系統根本沒什么關系。你都選好了用哪種單片機了,沒什么好說的。這兩節都不要。單片機怎么開展跟你這個系統根本沒什么關系。你都選好了用哪種單片機了,沒什么好說的。3.1.3計算器系統現狀此標題去掉,下面兩段的內容作為第三章的開頭。加上“3.1單片機最小系統〞一節此標題去掉,下面兩段的內容作為第三章的開頭。加上“3.1單片機最小系統〞一節計算器一般由運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過人工或機器設備組成。低檔計算器的運算器、控制器由數字邏輯電路實現簡單的串行運算,其隨機存儲器只有一、二個單元,供累加存儲用。高檔計算器由微處理器和只讀存儲器實現各種復雜的運算程序,有較多的隨機存儲單元以存放輸入程序和數據。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。為減小計算器的尺寸,一鍵常常有多種功能。顯示器是計算器的輸出部件,有發光二極管顯示器和液晶顯示器等。除顯示計算結果外,還常有溢出指示、錯誤指示等。計算器電源采用交流轉換器或電池,電池可用交流轉換器或太陽能轉換器再充電。為節省電能,計算器都采用CMOS工藝制作的大規模集成電路〔見互補金屬-氧化物-半導體集成電路〕,并在內部裝有定時不操作自動斷電電路。計算器可選用的外圍設備有微型打印機、盒式磁帶機和磁卡機等。本計算器是以MCS-51系列單片機AT89C52為核心構成的簡易計算器系統。該系統通過單片機控制,實現對4*4鍵盤掃描進展實時的按鍵檢測,并把檢測數據存儲下來。整個計算器系統的工作過程為:首先存儲單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機則對數據進展儲存與相應處理轉換,之后送入LED顯示器動態顯示。整個系統可分為兩個主要功能模塊:功能模塊一,實時鍵盤掃描;功能模塊二,數據1602顯示。3.1.4AT89C52系列單片機簡介你這是單片機教材嗎你都用了8頁紙來說單片機了,加上前面那頁9頁!!!這根本就是把單片機那本書的第一章粘貼上去吧!!全部刪掉,51單片機是誰都知道是啥的東西,根本不需要你來給大家介紹。你如要介紹單片機,就簡單點說說單片機的構造,重點放在單片機的最小系統,幅面一頁紙以內,加上圖,最多不能超過1頁半紙。把單片機的內容全放在“3.1單片機最小系統〞一節中。你這是單片機教材嗎你都用了8頁紙來說單片機了,加上前面那頁9頁!!!這根本就是把單片機那本書的第一章粘貼上去吧!!全部刪掉,51單片機是誰都知道是啥的東西,根本不需要你來給大家介紹。你如要介紹單片機,就簡單點說說單片機的構造,重點放在單片機的最小系統,幅面一頁紙以內,加上圖,最多不能超過1頁半紙。把單片機的內容全放在“3.1單片機最小系統〞一節中。eq\o\ac(○,1)AT89C52單片機的硬件構造如圖3-1所示,為AT89C52的硬件構造圖。AT89C52單片機的內部構造與MCS-51系列單片機的構成根本一樣。CPU是由運算器和控制器所構成的。運算器主要用來對操作數進展算術、邏輯運算和位操作的。控制器是單片機的指揮控制部件,主要任務的識別指令,并根據指令的性質控制單片機各功能部件,從而保證單片機各局部能自動而協調地工作。它的程序存儲器為8K字節可重擦寫Flash閃速存儲器,閃爍存儲器允許在線+5V電擦除、電寫入或使用編程器對其重復編程。數據存儲器比51系列的單片機相比大了許多為256字節RAM。AT89C52單片機的指令系統和引腳功能與MCS-51的完全兼容。單片機AT89C52構造框圖如圖3.1.1所示。小四號不過反正可能要刪了,后面的單片機局部有問題我就不標注了小四號不過反正可能要刪了,后面的單片機局部有問題我就不標注了FLASHCPU串行通訊口RAMFLASHCPU串行通訊口RAM輸入輸出接口計數器定時器時鐘輸入輸出接口計數器定時器時鐘圖3.1.1單片機AT89C52構造框圖eq\o\ac(○,2)主要性能參數?8K字節可重擦寫Flash閃速存儲器?1000次可擦寫周期?全靜態操作:0Hz-24MHz?三級加密程序存儲器?256×8字節內部RAM?32個可編程I/O口線?3個16位定時/計數器?8個中斷源?可編程串行UART通道?低功耗空閑和掉電模式AT89C52外部引腳圖如圖圖3.1.2所示:圖3.1.2AT89C52外部引腳圖eq\o\ac(○,3)AT89C52管腳說明VCC:電源GND:接地P0口:P0口是一個8位漏級開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0口端口寫〞1〞時,引腳作高阻抗輸入。當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,P0具有內部上拉電阻。在flash編程時,P0口也用來承受指令字節:在程序效驗時,輸出指令字節。程序效驗時,需要外部上拉電阻。P1口:P1口是一個具有內部上拉電阻的8位是雙向I/O口,P1的輸出緩沖級可驅動〔吸收或輸出電流〕4個TTL邏輯電平。對P1口寫〞1〞時,內部上拉電阻的原因,將輸出電流ILL。此外,與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數器2的外部計數輸入〔P1.0/T2〕和輸出〔P1.1/T2EX〕,具體如表3.1.1所示。表3.1.1P1.0和P1.1的第二功能引腳號功能特性P1.0T2〔定時/計數器2外部計數脈沖輸入〕,時鐘輸出P1.1T2EX定時/計數2捕獲/重裝載觸發和方向控制在Flash編程和校驗時,P1口接收低8位地址字節。P2口:P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖級可驅動吸收或輸出電流4個TTL邏輯電平。對P2口寫〞1〞時,通過內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流ILL。在訪問外部好曾許存儲器或用16位地址讀取外部數據存儲器時,P2口送出高8位地址。在這種應用中,P2口使用很強的內部上拉發送1。在使用8位地址訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。在Flash編程和校驗時,P2口接收低8位地址字節和一些控制信號。P3口:P3口是一個具有內部上拉電阻的8位雙向I/O口,P3輸出緩沖級可驅動〔吸收或輸出電流〕4個TTL邏輯電平。對P3口寫〞1〞時,內部上拉電阻把端口拉高,此時可以作為輸入端口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流ILL。P3口除了作為一般、的I/O口線外,更重要的是它的第二功能,如表3.1.2所示:表3.1.2P3口引腳第二功能引腳號第二功能P3.0RXD〔串行輸入〕P3.1TXD〔串行輸出〕P3.2INT0〔外部中斷0〕P3.3INT1〔外部中斷1〕P3.4T0〔定時器0外部輸入〕P3.5T1〔定時器1外部輸入〕P3.6WR〔外部數據存儲器寫選通〕P3.7RD〔外部數據存儲器讀選通〕在Flash編程和校驗時,P3口也接收一些控制信號。RST:復位輸入。晶振工作時,RST腳持續2個機器周期以高電平將使用單片機復位。ALE/:地址鎖存器控制信號〔ALE〕是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳〔〕也使用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數據存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置〞1〞,ALE操作無效。這一位置〞1〞,ALE僅在執行MOVX或MOVC指令時有效。否則,ALE將被微弱拉高。這個ALE使能標志位的設置對微控制器處于外部執行模式下無效。:外部程序儲存器選通信號〔〕是外部程序存儲器選通信號。當AT89C52從外部程序存儲器執行外部代碼時,在每個機器周期被激活兩次,而在訪問外部數據儲存器時,將不被激活。:訪問外部程序存儲器控制信號。為使能從0000H—FFFFH的外部程序存儲器讀取指令,端必須保持低電平〔接地〕。為了執行內部程序指令,應該接VCC。在flash編程期間,也承受12伏VPP電壓。XTAL1:振蕩器反相放大器及內部時鐘發生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。eq\o\ac(○,4)存儲器構造MCS-51器件有單獨的程序存儲器和數據存儲器。外部程序存儲器和數據存儲器都可以64K尋址。1.程序存儲器如果EA引腳接地,程序讀取只從外部存儲器開場。對于89C52,如果EA接VCC,程序先從內部存儲器〔地址為0000H~1FFFFH〕開場,接著從外部尋址,尋址范圍為:2000H~FFFFH。2.數據存儲器AT89C52有256字節RAM。高128字節與特殊功能存放器重疊。也就是說高128字節與特殊功能存放器有一樣的地址,而物理上是分開的。當一條指令訪問高于7FH的地址時,尋址方式決定CPU訪問高字節RAM還是特殊功能存放器空間。直接尋址方式訪問特殊功能存放器〔SFR〕。eq\o\ac(○,5)定時器1.定時器0和定時器1在AT89C52中,定時器0和定時器1都是16位加法計數構造,分別由TH0〔地址8CH〕和TL0〔地址8AH〕及TH1〔地址8DH〕和TL1〔地址8BH〕兩個8位計數器組成。這4個計數器均屬于專用存放器之列。每個定時器/計數器都有定時和計數兩種功能。2.計數功能所謂的計數功能是指對外部事件進展計數。外部事件的發生以輸入脈沖表示,因此計數功能的實質就是對外脈沖進展計數。MCS-51系列的芯片有T0〔P3.4〕和T1〔P3.5〕兩個信號引腳,分別就是這兩個計數器的計數輸入端。外部輸入的脈沖在負跳變時有效,進展計數器加1。計數方式下,單片機在每個機器周期的S5P2拍節對外部計數脈沖進展采樣。如果前一個機器周期采樣為高電平,后一個機器周期采樣為低電平,即為一個有效計數脈沖。在下一個機器周期的S3P1進展計數。可見采樣計數脈沖是在2個機器周期進展的。鑒于此,計數脈沖的頻率不能高于振蕩脈沖的頻率不能高于振蕩脈沖頻率的1/24。3.定時功能定時器也是通過計數器的計數來實現的,不過此時的計數脈沖來自單片機的內部,即每個機器周期產生一個計數脈沖。也就是每個機器周期計數加1。由于一個機器周期等于12個振蕩脈沖周期,因此計數頻率為振蕩頻率的1/12。如果單片機采用12MHz晶體,則計數頻率為1MHz。即每微秒計數器加1。這樣不但可以根據計數值計算出定時時間,也可以反過來按定時時間的要求計算出計數器的預置值。4.定時器2定時器2是一個16位定時器/計數器,它既可以作定時器,又可以做事件計數器。其工作方式由特殊存放器T2CON中的C/T2位選擇〔如表2所示〕。定時器2有三種工作模式:捕捉方式、自動重載〔向上或向下計數〕和波特率發生器。如表3.3所示,工作模式由T2CON中的相關為選擇。定時器2有2個8位存放器:TH2和TL2。在定時工作方式中,每個機器周期,TL2存放器都會加1。由于一個機器周期由12個晶振周期構成,因此,計數頻率就是晶振頻率的1/12。定時器2工作模式如表3.1.3所示:表3.1.3定時器2工作模式RCLK+TCLKCP/RL2TR2MODE00116位自動重載01116位捕捉1×1波特率發生器××0不用在計數工作方式下,存放器在相關外部輸入角T2發生1至0的下降沿時增加1。在這種方式下,每個機器周期的S5P2期間采樣外部輸入。一個周期采樣到高電平,而下一個周期采樣到低電平,計數器加1。在檢測到跳變的這個周期的S3P1期間,新的計數值出現在存放器中。因為識別1—0的跳變需要2個機器周期〔24個晶振周期〕,所以,最大的計數頻率不高于晶振頻率的1/24。為了確保給定的電平在采樣前采樣到一次,電平應該至少在一個完整的機器周期內保持不變。T2MOD-定時器2控制存放器如表3.1.4所示:表3.4T2MOD-定時器2控制存放器T2MOD地址:0C9H復位值:×××××00BT2OEDCEN76543210符號功能—無定義,預留擴展T2OE定時器2輸出允許位DCEN置1后,定時器2可配置向上或向下計數eq\o\ac(○,6)中斷AT89C52有6個中斷源:兩個外部中斷〔INT0和INT1〕,三個定時中斷定時器0、1、2和一個串行中斷。每個中斷源都可以通過置位或去除特殊存放器IE中的相關中斷允許控制位分別使得中斷源有效或無效。IE還包括一個中斷總控制位EA,它能制止所有中斷。如表3.5所示,IE.6位是不可用的。對于AT89S52,IE.5位也是不能用的。用戶軟件不應給這些位寫1。它們為AT89系列新產品預留。定時器2可以被存放器T2CON中的TF2和EXF2的或邏輯觸發。程序進入中斷服務后,這些標志位都可以由硬件清0。實際上,中斷服務程序必須判定是否是TF2或EXF2激活中斷。標志位也必須由軟件清0。定時器0和定時器1標志位TF0和TF1在計數溢出的那個周期的S5P2被置位。它們的值一直到下一個周期被電路捕捉下來。然而,定時器2的標志位TF2在計數溢出的那個周期被置位,在同一個周期被電路捕捉下來。中斷允許控制位如表3.1.5所示:表3.1.5中斷允許控制位符號位地址功能EAIE.7中斷允許控制位,EA=0,中斷總制止;EA=1,各中斷由各自的控制位設定-IE.6預留ET2IE.5定時器2中斷允許控制位ESIE.4串行口中斷允許控制位ET1IE.3定時器1中斷允許控制位EX1IE.2外部中斷1允許控制位ET0IE.1定時器0中斷允許控制位EX0IE.0外部中斷0允許控制位eq\o\ac(○,7)晶振特性AT89C52單片機有一個用于構成內部振蕩器的反相放大器,XTAL1和XTAL2分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構成自激振蕩器。從外部時鐘遠驅動器件的話,XTAL2可以不接,而從XTAL1接入。由于外部時鐘信號經過二分頻觸發后作為外部時鐘電路輸入的,所以對外部時鐘信號的占空比沒有其它要求,最長低電平持續時間和最少高電平持續時間等還是要符合要求的。石英晶振C1,C2=30PF+-10PF陶瓷諧振器C1,C2=40PF+-10PFeq\o\ac(○,8)空閑模式在空閑工作模式下,CPU處于睡眠狀態,而所有片上外部設備保持激活狀態。這種狀態可以通過軟件產生。在這種狀態下,片上RAM和特殊功能存放器的內容保持不變。空閑模式可以被任一個中斷或硬件復位中止。由硬件復位終止空閑模式只需兩個機器周期有效復位信號,在這種情況下,片上硬件制止訪問內部RAM,而可以訪問端口引腳。空閑模式被硬件復位終止后,為了防止預想不到的寫端口,激活空閑模式的那一條指令的下一條指令不應該是寫端口或外部存儲器。eq\o\ac(○,9)掉電模式在掉電模式下,晶振停頓工作,激活掉電模式的指令是最后一條執行指令。片上RAM和特殊功能存放器保持原值,直到掉電模式終止。掉電模式可以通過硬件復位和外部中斷退出。復位重新定義例如SFR的值。在VCC未恢復到正常工作電壓時,硬件復位不能無效。并且應保持足夠長的時間以使晶振重新工作和初始化。空閑模式和掉電模式下的外部引腳狀態如表3.1.6所示:表3.1.6空閑模式和掉電模式下的外部引腳狀態模式程序存儲器ALEPESNPORT0PORT1PORT2PORT3空閑內部11數據數據數據數據空閑外部11浮空數據地址數據掉電內部00數據數據數據數據掉電外部00浮空數據數據數據以上8頁均為單片機內容,全部刪了。以上8頁均為單片機內容,全部刪了。3.2矩陣按鍵局部鍵盤是單片機系統中最常用的人機對話輸入設備,用戶通過鍵盤向單片機輸入數據或指令。鍵盤控制程序需完成的任務有:監測是否有鍵按下,有鍵按下時,假設無硬件去抖動電路時,應用軟件延時方法消除按鍵抖動影響;當有多個鍵同時按下時,只處理一個按鍵,不管一次按鍵持續多長時間,僅執行一次按鍵功能程序。矩陣按鍵掃描程序是一種節省I/O口的方法,按鍵數目越多節省I/O口就越可觀,思路:先判斷某一列〔行〕是否有按鍵按下,再判斷該行〔列〕是哪一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數需要,又能節省大量的CPU時間。采用4x4鍵盤與單片機的P1口相連,連接電路如圖4所示。*設為復位鍵,按下時,清零,液晶顯示為0。按鍵說明圖如圖3.2.1所示:句號。下同句號。下同按鍵電路流程圖如圖3.1.2所示:圖3.2.1按鍵說明圖模糊。圖和圖名要放在同一頁。位置不夠另起頁。模糊。圖和圖名要放在同一頁。位置不夠另起頁。圖3.1.2按鍵電路流程圖3.3液晶顯示器局部eq\o\ac(○,1)1602字符型LCD簡介字符型液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如圖3.3.1所示:圖3.3.11602字符型液晶顯示器實物圖eq\o\ac(○,2)1602LCD的根本參數及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大局部為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差異,兩者尺寸差異如圖3.3.2所示:圖3.3.21602LCD尺寸圖eq\o\ac(○,3)1602LCD主要技術參數:顯示容量:16×2個字符芯片工作電壓:4.5—5.5V工作電流:2.0mA(5.0V)模塊最正確工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mmeq\o\ac(○,4)引腳功能說明1602LCD采用標準的14腳〔無背光〕或16腳〔帶背光〕接口,各引腳接口說明如表3.3.1所示:表3.3.1引腳接口說明表編號符號引腳說明編號符號引腳說明1VSS電源地9D2數據2VDD電源正極10D3數據3VL液晶顯示偏壓11D4數據4RS數據/命令選擇12D5數據5R/W讀/寫選擇13D6數據6E使能信號14D7數據7D0數據15BLA背光源正極8D1數據16BLK背光源負極第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器比照度調整端,接正電源時比照度最弱,接地時比照度最高,比照度過高時會產生〞鬼影〞,使用時可以通過一個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腳:背光源負極。eq\o\ac(○,5)1602LCD的指令說明及時序1602液晶模塊內部的控制器共有11條控制指令,如表3.3.2所示:表3.3.2控制命令表序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關控制0000001DCB5光標或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發生存貯器地址0001字符發生存貯器地址8置數據存貯器地址001顯示數據存貯器地址9讀忙標志或地址01BF計數器地址10寫數到CGRAM或DDRAM〕10要寫的數據內容11從CGRAM或DDRAM讀數11讀出的數據內容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:讀數據。與HD44780相兼容的芯片時序表如表3.3.3所示:表3.3.3根本操作時序表讀狀態輸入RS=L,R/W=H,E=H輸出D0—D7=狀態字寫指令輸入RS=L,R/W=L,D0—D7=指令碼,E=高脈沖輸出無讀數據輸入RS=H,R/W=H,E=H輸出D0—D7=數據寫數據輸入RS=H,R/W=L,D0—D7=數據,E=高脈沖輸出無讀寫操作時序如圖3.3.3和3.3.4所示:圖3.3.3讀操作時序圖3.3.4寫操作時序圖eq\o\ac(○,6)1602LCD的RAM地址映射及標準字庫表液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,1602的內部顯示地址圖如圖3.3.5所示:圖3.3.51602LCD內部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是01000000B〔40H〕+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態。1602液晶模塊內部的字符發生存儲器〔CGROM〕已經存儲了160個不同的點陣字符圖形,如圖10-58所示,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比方大寫的英文字母〞A〞的代碼是01000001B〔41H〕,顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母〞A〞,字符代碼與圖形對應圖如圖圖3.3.6所示:圖3.3.6字符代碼與圖形對應圖eq\o\ac(○,7)1602LCD的一般初始化〔復位〕過程延時15mS寫指令38H〔不檢測忙信號〕延時5mS寫指令38H〔不檢測忙信號〕延時5mS寫指令38H〔不檢測忙信號〕以后每次寫指令、讀/寫數據操作均需要檢測忙信號寫指令38H:顯示模式設置寫指令08H:顯示關閉寫指令01H:顯示清屏寫指令06H:顯示光標移動設置寫指令0CH:顯示開及光標設置eq\o\ac(○,8)硬件使用原理圖1602液晶顯示模塊可以和單片機AT89C51直接接口,電路如圖3.3.7所示:圖3.3.7硬件使用原理圖第四章單片機!!系統軟件設計軟件設計!!系統軟件設計本系統程序包括主程序、鍵盤掃描子程序、發送鍵碼子程序、發送數據子程序、接收命令子程序等。主程序用于系統初始化,子程序調度等。鍵盤掃描子程序用于掃描鍵盤狀態,將被按鍵的位置號存入緩沖器中。發送鍵碼子程序用于將緩沖區鍵的接通碼或斷開碼發送給單片機接口。發送數據子程序用于將數據發給單片機接口。接收命令子程序用于接收單片機接口發來的鍵盤命令。4.1主程序設計主程序通過鍵盤掃描子程序進展各行掃描是否有按鍵,消抖及重鍵處理:通過軟件上延時程序來消除抖動;采用后按鍵優先處理,即多鍵同時按下時,只重復發送最后按下鍵的掃描碼。主程序流程圖如圖4.1.1所示:圖4.1.1主程序流程圖4.2鍵掃程序設計鍵掃程序的過程為:開場時,先判斷是否有鍵閉合,無鍵閉合時,返回繼續判斷,有鍵閉合時,先去抖動,然后確定是否有鍵按下,假設無鍵按下,則返回繼續判斷是否有鍵閉合,假設有鍵按下,則判斷鍵號,然后釋放,假設釋放按鍵完畢,則返回,假設沒有釋放按鍵,則返回繼續釋放。其流程圖如圖4.2.1所示。YYN開場有鍵閉合否去抖動確有鍵按下判斷鍵號釋放返回返回YNYN圖4.2.1鍵掃程序流程圖為什么這圖這里缺一點點,那里又沒一點,字又不全為什么這圖這里缺一點點,那里又沒一點,字又不全4.3算術運算程序設計算術運算程序的過程為:先判斷輸入的運算符是+、-、*、/中的哪一個,假設是+或-,則要判斷運算結果是否溢出,溢出則顯示錯誤信息,沒溢出就顯示運算結果,假設是/,則要先判斷除數是否為零,為零就顯示錯誤信息,不為零則顯示運算結果,假設是-,則直接顯示運算結果。其流程圖如圖4.3.1所示:開場開場運算符加乘減除運算結溢出除數為0錯誤送顯示緩沖數值送顯示緩沖YYNN圖4.3.1算術運算程序設計流程圖4.4顯示程序設計顯示程序的過程為:顯示開場時,先進展LCD的初始化,然后依次判斷顯示位置。其流程圖如圖4.4.1所示:這圖的字是太太太大了吧,最多跟正文一樣就好啦,這是得顯示這圖有多么多么重要這圖的字是太太太大了吧,最多跟正文一樣就好啦,這是得顯示這圖有多么多么重要圖4.4.1顯示程序流程圖第五章單片機系統安裝、調試系統5.1軟件仿真單片機做的系統的仿真單用PROTEL怎么仿真呢連軟件也沒有,起碼都要用proteus吧你這個仿真局部干脆就不要了。電路圖還是要的,移個位置,見下標注。單片機做的系統的仿真單用PROTEL怎么仿真呢連軟件也沒有,起碼都要用proteus吧你這個仿真局部干脆就不要了。電路圖還是要的,移個位置,見下標注。利用Protel仿真軟件進展全面的仿真測試,截圖如圖5.1.1所示,硬件連接PCB圖如圖5.1.2圖所示:圖太小了,論文是允許把總電路這類大圖旋轉90度放置的。還有個問題,從這個圖,也看不出仿真效果呀。。。圖太小了,論文是允許把總電路這類大圖旋轉90度放置的。還有個問題,從這個圖,也看不出仿真效果呀。。。這最多就是個系統電路圖吧你的第三章硬件設計,還欠個總電路圖呢。把這個移到第三章最后那,說完各局部,總的該出場了。圖5.1軟件仿真截圖圖5.1.2硬件連接PCB圖5.2安裝步驟如果你沒有真正的仿真,那這升級為5.1.如果你沒有真正的仿真,那這升級為5.1.5.2.1檢查元件的好壞按電路圖買好元件后首先檢查買回元件的好壞,按各元件的檢測方法分別進展檢測,一定要仔細認真。而且要認真核對原理圖是否一致,在檢查好后才可上件、焊件,防止出現錯誤焊件后不便改正。5.2.2放置、焊接各元件按原理圖的位置放置各元件,在放置過程中要先放置、焊接較低的元件,后焊較高的和要求較高的元件。特別是容易損壞的元件要后焊,在焊集成芯片時連續焊接時間不要超過10s,注意芯片的安裝方向。現在列出電源自鎖開關、供電方式和輕觸按鍵的制作安裝方式。其中,電源自鎖開關的連接方式如圖5.2.1所示:eq\o\ac(○,1)電源自鎖開關制作安裝圖5.2.1電源開關軟件及硬件圖圖5.2.1中,P2是電池盒接口或者是USB輸入的接口,圖5.3中SW1為電源開關,用來接通電源和斷開電源。eq\o\ac(○,2)供電方式制作安裝原理圖如圖5.2.2所示,實物圖如圖5.2.3所示:圖5.2.2供電原理圖圖5.2.3供電實物圖eq\o\ac(○,3)輕觸開關制作安裝輕觸開關的原理圖如圖5.2.4所示,實物圖如圖5.2.5所示:圖5.2.4輕觸開關原理圖圖5.2.5輕觸開關按鍵接法這種按鍵接法:1.上下接兩個腳〔一個接地,一個接單片機IO口〕2.接斜對腳是絕對不會接錯的〔一個接地,一個接單片機IO口〕基于以上制作出來的計算器能進展根本的四則運算,仿真軟件中的功能實現成功。實際效果圖如以下列圖所示,包括正反面以及運算界面,如圖5.2.6所示:圖5.2.6實物圖5.3調試5.2?5.2?5.3.1硬件調試常見故障:1、邏輯錯誤:它是由設計錯誤或加工過程中的工藝性錯誤所造成的。這類錯誤包括錯線、開路、短路等。2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二是組裝錯誤造成元件失效,如電解電容、集成電路安裝方向錯誤等。3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會造成系統時好時壞,經不起振動;走線和布局不合理也會引起系統可靠性差。4、電源故障:假設樣機由電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設計要求,電源引線和插座不對,功率缺乏,負載能力差等。調試方法:包括多級調試和聯機調試。在調試過程中要針對可能出現的故障認真分析,直至檢查出原因并排除。本次硬件調試過程中,對所出現的問題進展了認真的分析和改正,最后能夠很好的到達設計要求的效果。5.3.2軟件調試軟件調試一般分為以下四個階段:1、編寫程序并查錯;2、在C語言的編譯系統中編譯源程序3、對程序進展編譯連接,并及時發現程序中存在的錯誤;4、改正錯誤。在本次調試中出現的問題有:1、在程序中有的函數名未定義;2、在抄錄程序時,少錄入一些字符,如:〞;〞、〞{“、〞-〞等符號,而出現錯誤;3、有一些函數名錄入時少寫一個字母或順序顛倒;4、沒有注意函數名的調用及定義;5、芯片引腳定義出錯而導致沒有實驗現象。在軟件調試過程中,對出現的錯誤進展了認真的分析和修改,屢次調試成功后,能夠很好的到達既定的設計效果。完畢語通過這次電子綜合實踐的學習,著重培養了我獨立思考、綜合運用所學有關知識的能力,能更好的穩固單片機、c語言、模擬電路、數字電路學習的內容。我的題目是基于AT89C52的計算器設計,對于我來說,這是一次考驗。怎樣才能找到課堂所學與實際應用的最正確結合點怎樣讓自己的業余更接近專業怎樣讓自己的方案更具有序性,而不會忙無一用這都是我們所要考慮和努力的。這次畢業設計我學到很多很多的東西,學會了怎么樣去制定方案,怎么樣去實現這個方案,并掌握了在執行過程中怎么樣去抑制心理上的不良情緒。不僅穩固了以前所學過的知識,而且學到了很多在書本上沒有學到過的知識,掌握了一種系統的研究方法,可以進展一些簡單的編程。通過這次畢業設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。同時在設計的過程中發現了自己的缺乏之處,例如對以前所學過的知識理解得不夠深刻,掌握得不夠結實,對編程語言掌握得不夠好等。致謝首先,衷心感謝我的指導教師。本文是在何惠芳精心指導下完成的。何教師以其嚴謹求實的治學態度、高度的敬業精神、兢兢業業、孜孜以求的工作作風和大膽創新的進取精神對我產生了重要影響。對于我在寫作論文過程中給予的指導,嚴謹求實的治學態度,使我受益匪淺。在此表示衷心的感謝。衷心感謝所有給予我支持、幫助和關心的領導、教師、親友和同學們!另外,我還要特別感謝同學們對我實驗以及論文寫作的指導,他們為我完成這篇論文提供了巨大的幫助。最后,再次對關心、幫助我的教師和同學表示衷心感謝。參考文獻[1]楊文龍編.單片機原理及應用[M].西安:西安電子科技大學出版社,2005.[2]楊將新,李華軍編.單片機程序設計及應用[M].北京:電子工業出版社,2006.[3]陳有卿,張曉東編.報警集成電路和報警器制作實例[M].北京:北京人民郵電出版社2001.[4]高文煥,劉潤生編.電子線路根基[M].北京:北京高等教育出版社,1997.[5]王世昌編.電子線路輔導和題選[M].上海:上海科學技術文獻出版社,1999.[6]王遠編.模擬電子技術根基學習指導書北[M].北京:清華大學出版社,1998.[7]邱關源主編.電路〔上﹑下冊〕[M].第四版.北京:高等教育出版社,1999.附錄-程序源代碼/*接盤按鍵說明:|1|2|3|+|-------------|4|5|6|-|-------------|7|8|9|*|-------------|C|0|=|/|*///操作簡介//按第一個數,再按'+-*/',再按'='顯示出結果,然后按C清屏//加最大9999+9999=19998//減最大9999-0=9999//乘最大9999*9999=99980001//除1/9=0.1111保存小數點后4位#include<reg51.h>#defineuintunsignedint#defineucharunsignedchar//LCD1602//P00-07====D0-7sbitrs=P2^7;//指令or數據sbitwela=P2^6;//讀or寫sbitlcden=P2^5;//使能信號//LCD1602//KEY//P1口//KEYucharcodetable[]=““;longintdata_a,data_b;//第一個數和第二個數longintdata_c;//計算結果uchardispaly[10];//顯示緩沖//************************************************************************///描述:延時tus函數//************************************************************************/voidLCD_Delay_us(unsignedintt){while(t--);//t=0,退出}//************************************************************************///描述:延時tms函數//************************************************************************/voidLCD_Delay_ms(unsignedintt){unsignedinti,j;for(i=0;i<t;i++)//執行t次循環for(j=0;j<113;j++)//執行113次循環;}//************************************************************************///描述:1602液晶寫指令//************************************************************************/voidwrite_com(ucharcom)//1602液晶寫指令{rs=0;//寫指令lcden=0;//使能1602P0=com;//寫入指令comLCD_Delay_ms(1);//延時1mslcden=1;//使能1602LCD_Delay_ms(2);//延時2mslcden=0;//使能1602}//************************************************************************///描述:1602液晶寫數據//************************************************************************/voidwrite_date(uchardate)//1602液晶寫數據{rs=1;//寫數據lcden=0;//使能1602P0=date;//寫入數據dateLCD_Delay_ms(1);//延時1mslcden=1;//使能1602LCD_Delay_ms(2);//延時2mslcden=0;//使能1602}//************************************************************************///描述:指定x,y寫入字符函數//************************************************************************/voidW_lcd(unsignedcharx,unsignedchary,unsignedcharData){if(y==0){write_com(0x80+x);}//第一行else{write_com(0xc0+x);}//第二行write_date(Data);//寫入數據}//指定x,y寫入字符串函數voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0){write_com(0x80+x);}//第一行else{write_com(0xC0+x);}//第二行while(*s)//{write_date(*s);s++;}//寫入數據}//************************************************************************///描述:初始化液晶,及畫面初始化//************************************************************************/voidinit_lcd(void)//初始化液晶,及畫面初始化{wela=0;//寫液晶lcden=0;//使能1602write_com(0x38);//8位總線,雙行顯示,5X7的點陣字符LCD_Delay_us(100);//延時100uswrite_com(0x0c);//開顯示,無光標,光標不閃爍write_com(0x06);//光標右移動write_com(0x01);//清屏write_com(0x80);//DDRAM地址歸0}//************************************************************************///描述:反轉法鍵盤掃描//************************************************************************/shortkeycheckdown()/*反轉法鍵盤掃描*/{shorttemp1,temp2,temp,a=0xff;P1=0xf0;/*輸入行值〔或列值〕*/LCD_Delay_ms(20);/*延時*/temp1=P1;/*讀列值〔或行值〕*/P1=0xff;LCD_Delay_ms(20);/*延時*/P1=0x0f;/*輸入列值〔或行值〕*/LCD_Delay_ms(20);/*延時*/temp2=P1;/*讀行值〔或列值〕*/P1=0xff;temp=(temp1&0xf0)|(temp2&0xf);/*將兩次讀入數據組合*/switch(temp)/*通過讀入數據組合判斷按鍵位置*/{case0x77:a=0x0d;break;//按鍵/case0x7b:a=0x0e;break;//按鍵=case0x7d:a=0;break;//按鍵0case0x7e:a=0x0f;break;//按鍵CEcase0xb7:a=0x0c;break;//按鍵*case0xbb:a=0x9;break;//按鍵9case0xbd:a=0x8;break;//按鍵8case0xbe:a=0x7;break;//按鍵7case0xd7:a=0x0b;break;//按鍵-case0xdb:a=0x6;break;//按鍵6case0xdd:a=0x5;break;//按鍵5case0xde:a=0x4;break;//按鍵4case0xe7:a=0x0a;break;//按鍵+case0xeb:a=3;break;//按鍵3case0xed:a=2;break;//按鍵2case0xee:a=1;break;//按鍵1default:a=0xff;}returna;/*返回按鍵值*/}voiddisplay_a()//顯示數據a{dispaly[3]=data_a%10000/1000;//千dispaly[2]=data_a%1000/100;//百dispaly[1]=data_a%100/10;//十dispaly[0]=data_a%10;//個write_com(0x80+0);//顯示數據aif(data_a>999){write_date('0'+dispaly[3]);}//顯示千位if(data_a>99){write_date('0'+dispaly[2]);}//顯示百位if(data_a>9){write_date('0'+dispaly[1]);}//顯示十位write_date('0'+dispaly[0]);//顯示個位}voiddisplay_b()//顯示數據b{write_com(0x80+7);//第一行dispaly[3]=data_b%10000/1000;//千dispaly[2]=data_b%1000/100;//百dispaly[1]=data_b%100/10;//十dispaly[0]=data_b%10;//個if(data_b>999){write_date('0'+dispaly[3]);}//顯示千位if(data_b>99){write_date('0'+dispaly[2]);}//顯示百位if(data_b>9){write_date('0'+dispaly[1]);}//顯示十位write_date('0'+dispaly[0]);//顯示個位}//計算結果voiddisplay_c(x){if(data_c<100000000&&data_c>-1)//溢出時顯示錯誤{dispaly[8]=data_c%1000000000/100000000;//萬萬di

溫馨提示

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

評論

0/150

提交評論