環(huán)境溫濕度實時測控裝置設(shè)計_第1頁
環(huán)境溫濕度實時測控裝置設(shè)計_第2頁
環(huán)境溫濕度實時測控裝置設(shè)計_第3頁
環(huán)境溫濕度實時測控裝置設(shè)計_第4頁
環(huán)境溫濕度實時測控裝置設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 摘 要單片機成了無處不在的商品,同時帶來了社會的發(fā)展,使我們的生活越來越美好,在自動控制和電子測量中,單片機是它們發(fā)展的核心,而單靠單片機的理論遠遠是不夠的,它要硬件和相關(guān)的軟件相結(jié)合,才能做出完美的產(chǎn)品。溫濕度指標是許多工作場合的重要參數(shù),不論是倉庫管理、圖書保存還是工業(yè)測量與計量檢定,都需要符合操作規(guī)定的溫濕度環(huán)境條件。而溫濕度也是最不易保障的指標,針對這一情況,研制可靠且實用的溫濕度控制器顯得非常重要。本文介紹的溫濕度實時控制裝置可在050和20%98%rh(相對濕度)的范圍內(nèi)任意設(shè)定溫濕度值,其附加的通信接口可方便地實現(xiàn)與計算機的實時通信,而且便于功能的擴展,可保證溫度、濕度滿足設(shè)計

2、指標。此外,該裝置還可自動控制多個設(shè)備的多點時間控制電路,因而具有更廣泛的應(yīng)用前景。【關(guān)鍵字】: AT89c51、DS18B20、濕度傳感器 目 錄摘 要·····································&

3、#183;·····1第一章 概 況······································21.1 設(shè)計的依據(jù)···&

4、#183;·······································2 1.2功能及應(yīng)用········

5、83;··································2第二章 硬件··············&#

6、183;························3 2.1 51系列單片機的概述······················

7、3;······32.2 80c51系列單片機·········································5

8、2.3 DS18B20的用法········································62.4檢測電路······&#

9、183;·····································10第三章 軟件···········

10、···························113.1定時及控制電路·····················

11、··················113.2主程序設(shè)計······························&#

12、183;······12 3.3子程序設(shè)計·····································18結(jié) 束 語···&#

13、183;·····································27附 錄···········

14、83;·····························28單片機構(gòu)成的環(huán)境溫濕度實時測控裝置設(shè)計前 言1970年微處理器研制成功之后,隨著就出現(xiàn)了單片機(即單片的微型計算機)。1971年美國Intel公司生產(chǎn)的4位單片機4004和1972年生產(chǎn)的雛型8位單片機8008,特別是1976年9月Intel

15、公司的MCS-48單片機問世以來,在短短的十幾年間,經(jīng)歷了多次更新?lián)Q代,其發(fā)展速度大約每二、三年要更新一代、集成度增加一倍、功能翻一番。發(fā)展速度之快、應(yīng)用范圍之廣已達到了驚人的地步。單片機廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可分如下幾個范疇1.在智能儀器儀表上的應(yīng)用 單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器可實現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化且功能比采用

16、電子或數(shù)字電路更加強大。例如精密的測量設(shè)備(功率計,示波器,各種分析儀)。2.在工業(yè)控制中的應(yīng)用用單片機可以構(gòu)成形式多樣的控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統(tǒng)與計算機聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)。3.在家用電器中的應(yīng)用  可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調(diào)、彩電、其他音響視頻器材、再到電子秤量設(shè)備,五花八門,無所不在。4.在計算機網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用   現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進行數(shù)據(jù)通信,為在計算機網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好

17、的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實現(xiàn)了單片機智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。5.單片機在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用    單片機在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。此外,單片機在工商,金融,科研、教育,國防航空航天等領(lǐng)域都有著十分廣泛的用途。第一章 方案1.1 開發(fā)的依據(jù)本課程開發(fā)的意義在于它的硬件成本低,他們之間的相互轉(zhuǎn)換功能相當(dāng)?shù)暮唵?,通信接口可方便地實現(xiàn)與計算機的實時通信,而且便于功

18、能的擴展,可保證溫度、濕度滿足設(shè)計指標。此外,該裝置還可自動控制多個設(shè)備的多點時間控制電路,對于我們來說它值得我們?nèi)ラ_發(fā)。1.2功能及應(yīng)用本文介紹的溫濕度實時控制裝置可在和(相對濕度)的范圍內(nèi)任意設(shè)定溫濕度值。它的應(yīng)用十分的廣泛:倉庫管理、圖書保存還是工業(yè)測量與計量檢定,都需要符合操作規(guī)定的溫濕度環(huán)境條件??梢詫崟r監(jiān)測環(huán)境溫濕度的變化情況,并記錄、存儲相關(guān)數(shù)據(jù);對環(huán)境溫濕度的控制可滿足設(shè)計指標;具有多點定時設(shè)備控制電路,便于功能擴展;設(shè)有語音提示功能,可方便地實現(xiàn)儀器操作和工作管理提示;配有通信接口,可方便地與計算機進行通信;溫濕度控制的精度分別為:溫度()±;濕度()±。

19、第二章 硬件2.1單片機概述自單片機出現(xiàn)至今,單片機技術(shù)已走過了近20年的發(fā)展路程??v觀20年來單片機發(fā)展歷程可以看出,單片機技術(shù)的發(fā)展以微處理器(MPU)技術(shù)及超大規(guī)模集成電路技術(shù)的發(fā)展為先導(dǎo),以廣泛的應(yīng)用領(lǐng)域為前提,表現(xiàn)出較微處理器更具個性的發(fā)展趨勢。 單片機長壽命,這里所說的長壽命,一方面指用單片機開發(fā)的產(chǎn)品可以穩(wěn)定可靠地工作十年、二十年;另一方面是指與微處理器相比的長壽命。隨著半導(dǎo)體技術(shù)的飛速發(fā)展,MPU更新?lián)Q代的速度越來越快,以386、486、586為代表的MPU,很短的時間內(nèi)就被淘汰出局,而傳統(tǒng)的單片機如68HC05、8051等年齡已有15歲,產(chǎn)量仍是上升的。這一方面是由于其對相應(yīng)

20、應(yīng)用領(lǐng)域的適應(yīng)性,另一方面是由于以該類CPU為核心,集成以更多I/O功能模塊的新單片機系列層出不窮。可以預(yù)見,一些成功上市的相對年輕的CPU核心,也會隨著I/O功能模塊的不斷豐富,有著相當(dāng)長的生存周期。新的CPU類型的加盟,使單片機隊伍不斷壯大,給用戶帶來了更多的選擇余地。 8位、16位、32位單片機共同發(fā)展。這是當(dāng)前單片機技術(shù)發(fā)展的另一動向。長期以來,單片機技術(shù)的發(fā)展是以8位機為主的。隨著移動通訊、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)等高科技產(chǎn)品進入家庭,32位單片機應(yīng)用得到了長足發(fā)展。以Motorola 68K為CPU的32位單片機97年的銷售量達8千萬枚。過去認為由于8位單片機功能越來越強,32位機越來

21、越便宜,使16位單片機生存空間有限,而16位單片機的發(fā)展無論從品種和產(chǎn)量方面,近年來都有較大幅度的增長。單片機速度越來越快 MPU發(fā)展中表現(xiàn)出來的速度越來越快是以時鐘頻率越來越高為標志的。而單片機則有所不同,為提高單片機抗干擾能力,降低噪聲,降低時鐘頻率而不犧牲運算速度是單片機技術(shù)發(fā)展之追求。一些8051(如圖1)。 單片機兼容廠商改善了單片機的內(nèi)部時序,在不提高時鐘頻率的條件下,使運算速度提高了很多,Motorola單片機則使用了瑣相環(huán)技術(shù)或內(nèi)部倍頻技術(shù)使內(nèi)部總線速度大大高于時鐘產(chǎn)生器的頻率。68HC08單片機使用4.9M外部振蕩器而內(nèi)部時鐘達32M,而M68K系列32位單片機使用32K的外

22、部振蕩器頻率內(nèi)部時鐘可達16MHz以上。低電壓與低功耗 自80年代中期以來,NMOS工藝單片機逐漸被CMOS工藝代替,功耗得以大幅度下降,隨著超大規(guī)模集成電路技術(shù)由3m工藝發(fā)展到1.5、1.2、0.8、0.5、0.35近而實現(xiàn)0.2m工藝,全靜態(tài)設(shè)計使時鐘頻率從直流到數(shù)十兆任選,都使功耗不斷下降 。Motorola最近推出任選的M.CORE 可在1.8V電壓下以50M/48MIPS全速工作,功率約為20mW。幾乎所有的單片機都有Wait、Stop等省電運行方式。允許使用的電源電壓范圍也越來越寬。一般單片機都能在3到6V范圍內(nèi)工作,對電池供電的單片機不再需要對電源采取穩(wěn)壓措施。低電壓供電的單片機

23、電源下限已由2.7V降至2.2V、1.8V。0.9V供電的單片機已經(jīng)問世。 圖(1)低噪聲與高可靠性技術(shù)為提高單片機系統(tǒng)的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿足電磁兼容性方面更高標準的要求,單片機商家在單片機內(nèi)部電路中采取了一些新的技術(shù)措施。如美國國家半導(dǎo)體NS的COP8單片機內(nèi)部增加了抗EMI電路,增強了“看門狗”的性能。Motorola也推出了低噪聲的LN系列單片機。OTP與掩膜 OTP是一次性寫入的單片機。過去認為一個單片機產(chǎn)品的成熟是以投產(chǎn)掩膜型單片機為標志的。由于掩膜需要一定的生產(chǎn)周期,而OTP型單片機價格不斷下降,使得近年來直接使用OTP完成最終產(chǎn)品制造更為流行。它較之掩

24、膜具有生產(chǎn)周期短、風(fēng)險小的特點。近年來,OTP型單片機需量大幅度上揚,為適應(yīng)這種需求許多單片機都采用了在片編程技術(shù)(In System Programming)。未編程的OTP芯片可采用裸片Bonding技術(shù)或表面貼技術(shù),先焊在印刷板上,然后通過單片機上引出的編程線、串行數(shù)據(jù)、時鐘線等對單片機編程。解決了批量寫OTP 芯片時容易出現(xiàn)的芯片與寫入器接觸不好的問題。使OTP的裸片得以廣泛使用,降低了產(chǎn)品的成本。編程線與I/O線共用,不增加單片機的額外引腳。而一些生產(chǎn)廠商推出的單片機不再有掩膜型,全部為有ISP功能的OTP。MTP向OTP挑戰(zhàn) MTP是可多次編程的意思。一些單片機廠商以MTP的性能、

25、OTP的價位推出他們的單片機,如ATMEL AVR單片機,片內(nèi)采用FLASH,可多次編程。華邦公司生產(chǎn)的與8051兼容的單片機也采用了MTP性能,OTP的價位。這些單片機都使用了ISP技術(shù),等安裝。2.2 51系列單片機 單片機分為:51單片機,  ARM單片機 , PIC單片機 , AVR單片機。下面要講的是51系列的單片機, MCS-51的原生產(chǎn)商是Intel公司。最早推出80C51芯片的。作為MCS-51的一部分,按原MCS-51芯片的規(guī)則命名。例如80C31、80C51、87C51和89C51,這樣我們就可以很容易地認出80C51的系列芯片了。最小系統(tǒng):2

26、.3DS18B20的用法這是關(guān)于DS18B20的讀寫程序,數(shù)據(jù)腳P2.2,晶振11.0592mhz;溫度傳感器18B20匯編程序,采用器件默認的12位轉(zhuǎn)化,最大轉(zhuǎn)化時間750微秒;可以將檢測到的溫度直接顯示到AT89C51的兩個數(shù)碼管上;顯示溫度00到99度,很準確無需校正!ORG 0000H;單片機內(nèi)存分配申明!TEMPER_L EQU 29H;用于保存讀出溫度的低8位TEMPER_H EQU 28H;用于保存讀出溫度的高8位FLAG1 EQU 38H;是否檢測到DS18B20標志位a_bit equ 20h ;數(shù)碼管個位數(shù)存放內(nèi)存位置b_bit equ 21h ;數(shù)碼管十位數(shù)存放內(nèi)存位置M

27、AIN:LCALL GET_TEMPER;調(diào)用讀溫度子程序;進行溫度顯示,這里我們考慮用網(wǎng)站提供的兩位數(shù)碼管來顯示溫度;顯示范圍00到99度,顯示精度為1度;因為12位轉(zhuǎn)化時每一位的精度為0.0625度,我們不要求顯示小數(shù)所以可以拋棄29H的低4位;將28H中的低4位移入29H中的高4位,這樣獲得一個新字節(jié),這個字節(jié)就是實際測量獲得的溫度;這個轉(zhuǎn)化溫度的方法可是我想出來的哦非常簡潔無需乘于0.0625系數(shù)MOV A,29HMOV C,40H;將28H中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,ALCALL DIS

28、PLAY;調(diào)用數(shù)碼管顯示子程序CPL P1.0AJMP MAIN; 這是DS18B20復(fù)位初始化子程序INIT_1820;SETB P2.2NOPCLR P2.2;主機發(fā)出延時537微秒的復(fù)位低脈沖MOV R1,#3TSR1:MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB P2.2;然后拉高數(shù)據(jù)線NOPNOPNOPMOV R0,#25HTSR2:JNB P2.2,TSR3;等待DS18B20回應(yīng)DJNZ R0,TSR2LJMP TSR4 ; 延時TSR3:SETB FLAG1 : 置標志位,表示DS1820存在CLR P1.7;檢查到DS18B20就點亮P1.7LED

29、LJMP TSR5TSR4:CLR FLAG1 ; 清標志位,表示DS1820不存在CLR P1.1LJMP TSR7TSR5:MOV R0,#117TSR6:DJNZ R0,TSR6 ; 時序要求延時一段時間TSR7:SETB P2.2RET;讀出轉(zhuǎn)換后的溫度值GET_TEMPER:SETB P2.2LCALL INIT_1820;先復(fù)位DS18B20JB FLAG1,TSS2CLR P1.2RET ; 判斷DS1820是否存在;若DS18B20不存在則返回TSS2:CLR P1.3;DS18B20已經(jīng)被檢測到!MOV A,#0CCH ;跳過ROM匹配LCALL WRITE_1820MOV

30、A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令LCALL WRITE_1820;這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待AD轉(zhuǎn)換結(jié)束 ,12位的話750微秒LCALL DISPLAYLCALL INIT_1820;準備讀溫度前先復(fù)位MOV A,#0CCH ; 跳過ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 發(fā)出讀溫度命令LCALL WRITE_1820LCALL READ_18200; 將讀出的溫度數(shù)據(jù)保存到35H/36HCLR P1.4RET;寫DS18B20的子程序(有具體的時序要求)WRITE_1820:MOV R2,#8;一共8位數(shù)據(jù)CLR CWR1:CLR P2.2

31、MOV R3,#5DJNZ R3,$RRC AMOV P2.2,CMOV R3,#21DJNZ R3,$SETB P2.2NOPDJNZ R2,WR1SETB P2.2RETREAD_18200: ; 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00:MOV R2,#8;數(shù)據(jù)一共有8位RE01:CLR CSETB P2.2NOPNOPCLR P2.2NOPNOPNOPSETB P2.2MOV R3,#8RE10:

32、DJNZ R3,RE10MOV C,P2.2MOV R3,#21RE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RET;顯示子程序display: mov a,29H;將29H中的十六進制數(shù)轉(zhuǎn)換成10進制mov b,#10 ;10進制/10=10進制div abmov b_bit,a ;十位在amov a_bit,b ;個位在bmov dptr,#numtab ;指定查表啟始地址mov r0,#4dpl1: mov r1,#250 ;顯示1000次dplop: mov a,a_bit ;取個位數(shù)MOVC A,A DPTR

33、;查個位數(shù)的7段代碼mov p0,a ;送出個位的7段代碼clr p2.7 ;開個位顯示acall d1ms ;顯示1mssetb p2.7mov a,b_bit ;取十位數(shù)MOVC A,A DPTR ;查十位數(shù)的7段代碼mov p0,a ;送出十位的7段代碼clr p2.6 ;開十位顯示acall d1ms ;顯示1mssetb p2.6djnz r1,dplop ;100次沒完循環(huán)djnz r0,dpl1 ;4個100次沒完循環(huán)ret;1MS延時D1MS: MOV R7,#80DJNZ R7,$RET;實驗板上的7段數(shù)碼管09數(shù)字的共陰顯示代碼numtab: DB 0CFH,03H,5DH

34、,5BH,93H,0DAH,0DEH,43H,0DFH,0DBHEND2.4檢測電路(1)溫度檢測電路溫度檢測電路選用公司生產(chǎn)的一線式數(shù)字溫度傳感器1b作為溫度檢測器件,該器件只有個引腳(即電源、地線、數(shù)據(jù)線),且不需要外部元件,而是共用一條數(shù)據(jù)線進行通信,使用一根線通信時,b的電源電壓是以寄生方式供電的,因此,只需將其和端接地即可。該電路的檢測溫度范圍為;精度為;用數(shù)字量來表示溫度;每次將溫度轉(zhuǎn)換成數(shù)字量需。筆者采用三塊b來實現(xiàn)對實驗室環(huán)境溫度的檢測,之所以用三塊,是為了更好地保持溫度的恒定。使用時可分別將這三塊b放置在房間的不同位置。獲得溫度信息時,先由的腳發(fā)送一個的復(fù)位脈沖,以使b復(fù)位后

35、將向發(fā)送一個回應(yīng)脈沖,接到回應(yīng)脈沖后將發(fā)送讀序列號的讀命令,以分別讀取三個b的序列號(每一塊b有唯一的序列號);然后,再發(fā)出定位命令以選擇在線的b并進行溫度轉(zhuǎn)換。此時的腳應(yīng)輸出一個保持以上的高電平信號來使導(dǎo)通,從而提供b在總線供電下進行溫度轉(zhuǎn)換時所需的電流。當(dāng)溫度轉(zhuǎn)換完成后,的腳會發(fā)送b的存儲命令,從而完成溫度信息數(shù)據(jù)的轉(zhuǎn)換和讀取。(2)濕度信號的獲取采用電容式濕敏傳感器作為濕度檢測器件。環(huán)境濕度與傳感器電容成線性關(guān)系,所以可方便地將濕度轉(zhuǎn)換成可以接受的電信號,本例中采用來實現(xiàn)轉(zhuǎn)換。由積分電路、基準電路、頻率轉(zhuǎn)換電路及頻率電壓()轉(zhuǎn)換電路等組成,積分電路及、用于產(chǎn)生一定頻率的脈沖信號并從腳送至

36、腳。調(diào)節(jié)可對該脈沖信號頻率進行調(diào)整,從而使?jié)穸葌鞲衅鞯木€性和靈敏度處于較好狀態(tài);基準電路和頻率轉(zhuǎn)換電路可將濕度傳感器的電容變化轉(zhuǎn)換成頻率變化,再經(jīng)頻率電壓轉(zhuǎn)換電路后從腳輸出與頻率成線性的電壓,然后經(jīng)等濾波后送入的端,再進行轉(zhuǎn)換以將其轉(zhuǎn)換成數(shù)字信號。本例中的濕敏傳感器為型電容式濕敏傳感器,濕度為時的電容值為,電容相對變化率為。當(dāng)濕度為時,腳輸出的相應(yīng)信號頻率為,精度為,電路輸出的電壓為。調(diào)整時,可先設(shè)定濕度為,然后調(diào)節(jié),使腳輸出電壓即可。第三章 軟 件3.1定時及控制電路定時主要用于提前預(yù)熱儀器設(shè)備和定時語音提醒等,該功能的實現(xiàn)由單片機來完成。時鐘頻率選用,該頻率可使單片機工作在最小功耗狀態(tài)并可

37、簡化分頻、定時程序的編寫??蛇x用看門狗電路來作為定時基準,看門狗每復(fù)位一次可確保時鐘的準確及語音電路的播放操作。 控制驅(qū)動電路用于保護儀器。各個電磁閥的導(dǎo)通要有一定的時間間隔,本例中為分鐘。推薦的工作方式為:電磁閥導(dǎo)通,接通穩(wěn)壓電源;:以后每間隔分鐘接通一個相應(yīng)設(shè)備(應(yīng)先啟動感性及大功率設(shè)備)。這樣,當(dāng):上班后即可保證有些需要預(yù)熱小時的儀器設(shè)備進入最佳工作狀態(tài),從而提高工作效率,保證計量檢定的質(zhì)量。電器驅(qū)動電路控制的設(shè)備主要包括空調(diào)機、吹風(fēng)機、吸濕機、加濕機等,可分別采用過零型固態(tài)繼電器來控制工作。為了便于擴展該裝置的功能,系統(tǒng)應(yīng)留有足夠的擴展空間。因此,設(shè)計時可用的口作控制口,另外可外擴兩片

38、以作備用。該系統(tǒng)最多可控制個設(shè)備以滿足不同需要。繼電器采用交流固態(tài)繼電器,其內(nèi)部采用光電隔離方式,可有效地避免電磁干擾。當(dāng)單片機檢測到溫濕度信號超過設(shè)定值時,將從口發(fā)出控制信號,并通過光耦產(chǎn)生大于的觸發(fā)電流使固態(tài)繼電器啟動相應(yīng)的電器工作,從而實現(xiàn)對相應(yīng)設(shè)備的控制。設(shè)計時應(yīng)注意各個電器不要同時啟動以免沖擊電網(wǎng),這部分工作可由軟件延時完成。固態(tài)繼電器可選擇國產(chǎn)的。3.2 主程序設(shè)計主程序是控制和管理的核心,主要完成在系統(tǒng)上電后進行定時器和中斷處理操作的初始化。初始化主要完成對溫濕度的設(shè)定和檢查除定時器外的所有中斷禁止,同時斷開各電器的電源。初始化完成后,系統(tǒng)將開始正常運行,并進行溫濕度檢測、鍵盤掃

39、描及定時處理等操作。下面是本文的主程序:#include <reg51.h>/#include<absacc.h>#include <intrins.h> sbit RS = P30;sbit RW = P31;sbit E = P32;sbit PSB = P35;          /串并口選擇sbit RES = P33;bit RD1 ;#define FIRST_ADDR 0       /

40、定義字符/漢字顯示起始位置Unsigned char code logo=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x0

41、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0

42、0,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x0

43、0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x0

44、0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06,0x00,0x02,0x6

45、0,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x3

46、F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x0

47、0,0x01,0xE6,0x00,0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC

48、0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,0x7F,0x9E,0x18,0x71,0xF

49、F,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,0x2

50、0,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x1

51、9,0xF6,0x01,0xF0,0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x0

52、1,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,0x3C,0x04,0x00,0x0F,0xF

53、F,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3

54、C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0

55、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x

56、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

57、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;/延時子程序void delay(unsigned int t)  unsigned int i,j;   for(i=0;i<t;i+)      for(j=0;j<10;j+)         ;/測忙void chk_busy()  RD1=1; &#

58、160;delay(5);   RS=0;   RW=1;   E=1;   while(P2&0x80)=0x80);   E=0;   RD1=0;/讀數(shù)據(jù)unsigned char lcdrd()  unsigned char i;   RD1=1;   P3=0xFB;   _nop_();   E=1;   delay(5); &

59、#160; i=P2;   _nop_();   E=0;   return i;/寫數(shù)據(jù)void lcdwd(unsigned char dispdata)  chk_busy();    RD1=1;   _nop_();   RS=1;   RW=0;   E=1;   P2=dispdata;   delay(5);   _nop

60、_();   E=0;   _nop_();   P2=0xff;/寫指令代碼void lcdwc(unsigned char cmdcode)  chk_busy();   RD1=1;   _nop_();   RS=0;   RW=0;   E=1;   P2=cmdcode;   delay(5);   _nop_();   E=

61、0;   _nop_();   P2=0xff;void Disp_img(unsigned char  *img) /圖形方式12864顯示字模221 橫向取膜unsigned char i,j;unsigned int k = 0;        lcdwc(0x36); /圖形方式for(i=0;i<32;i+)            

62、       lcdwc(0x80+i);                  lcdwc(0x80);     for(j=0;j<16;j+)             &#

63、160;          lcdwd(imgk+);   for(i=0;i<32;i+)                   lcdwc(0x80+i);           &#

64、160;      lcdwc(0x88);     for(j=0;j<16;j+)                        lcdwd(imgk+);   /初始化void lcdreset()  del

65、ay(2000);   lcdwc(0x30);       /選擇基本指令集   lcdwc(0x30);       /選擇8bit數(shù)據(jù)流   delay(5);   lcdwc(0x0c);       /開顯示(無游標、不反白)   delay(5);   lcdwc(0x01); 

66、;      /清除顯示,并且設(shè)定地址指針為00H   delay(5);   lcdwc(0x06);       /指定在資料的讀取及寫入時,設(shè)定游標的移動方向及指定顯示的移位void hzkdis(unsigned char code *s)  while(*s>0)     lcdwd(*s);      s+;&

67、#160;     delay(500);   void hzklib()  lcdwc(0x80+FIRST_ADDR);   hzkdis("少小離家老大回");   lcdwc(0x90+FIRST_ADDR);   hzkdis("鄉(xiāng)音無改鬢毛衰。");   lcdwc(0x88+FIRST_ADDR);   hzkdis("兒童相見不相識,&quo

68、t;);   lcdwc(0x98+FIRST_ADDR);   hzkdis("笑問客從何處來。");/整屏顯示/當(dāng)ii=0時顯示上面128×32/當(dāng)ii=8時顯示下面128×32void lcdfill(unsigned char disdata)  unsigned char x,y,ii;   for(ii=0;ii<9;ii+=8)      for(y=0;y<0x20;y+) &#

69、160;       for(x=0;x<8;x+)           lcdwc(0x36);            lcdwc(y+0x80);        /行地址     

70、       lcdwc(x+0x80+ii);     /列地址            lcdwc(0x30);            lcdwd(disdata);            lcdwd(disdata);   &#

溫馨提示

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

最新文檔

評論

0/150

提交評論