基于.-51單片機的數控調頻收音機_第1頁
基于.-51單片機的數控調頻收音機_第2頁
基于.-51單片機的數控調頻收音機_第3頁
基于.-51單片機的數控調頻收音機_第4頁
基于.-51單片機的數控調頻收音機_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...課程設計論文題目:基于RDA5807的數控FM收音機院〔系〕:信息與通信學院專業:電子信息工程學生姓名:杜俊峰學號:1100220509指導教師:蔡曉東2013年12月15日摘要此收音機基于RDA5807收音模塊,通過STC89C52單片機來控制頻率顯示、音量控制,單片機與收音模塊之間通過IIC通信協議來進展通信控制。該數控收音機具有噪音消除、軟靜音、低音增強,而且靈敏度高、噪聲小,抗干擾能力強,能夠在液晶屏上實時顯示頻率和聲音。并且體積小、方便攜帶。關鍵詞:RDA5807,STC89C52.IIC通信AbstractThisradioradiomodulebasedRDA5807bySTC89C52microcontrollertocontrolthefrequencydisplay,throughIICcommunicationprotocolforcommunicationbetweenthecontrolvolumecontrol,microcontrollerandradiomodule.Thedigitalradiowithnoisecancellation,softmute,bassboost,andhighsensitivity,lownoise,stronganti-interferenceabilitytodisplaythefrequencyandsoundinrealtimeontheLCDscreen.Andsmall,easytocarry.Keywords:RDA5807,STC89C52、IIC目錄TOC\o"1-3"\u引言 11設計要求及方案選擇 11.1設計要求11.2方案選擇11.2.1方案比照11.2.2方案構圖21.2.3各局部作用22理論分析與設計32.1單片機最小系統設計32.1.1STC89C52特性32.1.2STC89C521引腳功能32.2收音模塊及存儲芯片電路設計43電路設計63.1硬件電路設計63.1.1單片機最小系統電路63.1.2模塊電路設計64軟件設計74.1IIC通信協議分析74.2程序流程圖95系統調試105.1調試結果105.2結果分析106結論 10謝辭11參考文獻 12附錄13引言收音機在日常生活中必不可少,在信息化的今天,數字化已經成為時代潮流,數控收音機越來越受到人們的青睞,相比于傳統收音機,數控收音機以良好的人機互動、操作簡單化更符合人們的要求1設計要求及方案選擇1.1設計要求〔1〕65-108MHz全球FM接收頻段相容〔包括日本76-91MHz和歐美87.5-108MHz〕〔2〕具備噪聲消除、軟靜音、低音增強等功能〔3〕靈敏度高、噪聲小、抗干擾能力強〔4〕具備頻率顯示功能1.2方案選擇在如今這個信息化時代,信息的接收和處理顯得越發重要,收音機作為傳統承受信息的工具,已經深入到人們的日常生活中。在電子領域,對于制作調頻收音機,有以下兩種方法。一是用分立元件設計收音機。二是運用集成模塊用數控來做收音機。1.2.1方案比照方案一:分立元件所做的收音機,其缺點顯而易見,調試難度大,音質差,本錢相比集成收音機高很多,在現在根本上已經被淘汰了。方案二:用集成模塊做收音機。集成模塊做的收音機有以下特點:(1)體積和功耗小。一片集成電路放大器可具有數十個晶體管、二極管、電阻和電容等所組成電路的功能。但其體積和功耗僅相當于一個小功率晶體管。

(2)可靠性高。由于集成電路外部連線和焊點極少,減小了出故障的可能性,故可靠性高。

(3)保真度好。由于集成電路是把所有晶體管都制在一塊片子上,晶體管的配對和靜態電流等都可處于最正確狀態,所以失真度很小,一般都小于1%。故用它制作的收音機保真度較好。

(4)靈敏度高。這是因為集成電路可以在其內部多制一些晶體管,從而提高整機的靈敏度。

(5)功率大、音質優美。用集成電路和大功率晶體管共同組裝的收音機能到達幾十瓦以上的不失真功率輸出,功率余量大。因此,聲音洪亮,音質優美。

(6)頻響寬。集成電路放大器的開環增益非常高,接成閉環后能減小失真和加寬頻響。其頻響范圍可從40赫到20千赫,比分立元件組裝的收音機頻響寬。

(7)穩定性好、性能指標高。集成電路工作穩定,為提高整機性能,電路可設計成分立元件難以實現的高性能電路。

(8)集成電路中相鄰元件的參數匹配優良,故放大器的零點漂移和共模抑制比等直流參數得到改善。在輸入端無信號時,功率輸出級的中點始終保持零電位,不會因溫漂而燒揚聲器。這是目前元件所達不到的。

(9)裝配和調試比擬簡單。用集成元件組成的功放電路,只要焊接無誤,幾乎不需調整,即能保證放音。對于變頻和中放集成電路,則不必調整靜態工作點。用集成元件組成的組合式收音機,只要調準中頻頻率,完成三點統調即可。

(10)價格廉價。即在整機性能和功能一樣的情況下,本錢比分立元件收音機低很多,這樣有利于收音機的推廣普及。此外,集成電路的應用,為收音機的多功能創造了必備的條件。例如,自動選臺、預選節目、頻率的數字顯示等性能,已隨著集成電路的應用而相繼實現。所以我最終選擇了方案二,選用RDA5807收音模塊做調頻收音機。1.2.2方案構圖基于RDA5807的數控收音機,在電子領域有許多相關的方案和設計思路,在仔細考量現有的條件和本身的專業能力后我選擇用STC89C52單片機作為控制系統來驅動RDA5807收音模塊。由于5807的工作電壓只要3.3V,而單片機的工作電壓是5V,所以我選用AS1117降壓芯片來將5V的電壓降到3.3V來給收音模塊供電,因為擔憂內存不夠,我外加一塊24C02存儲芯片,與RDA5807一起通過IIC串口通信與單片機最小系統相連。我用四個按鍵分別控制音量的加減和上下搜索頻道,并且用1602液晶來顯示當前頻道頻率和音量大小。因為都是模塊化的器件,所以本次的作品體積小,攜帶方便,有實用價值。方案利用的是單片機最小系統、液晶顯示局部、按鍵控制和收音模塊與存儲芯片局部共同等組成的系統,以下列圖為方案系統框圖。液晶顯示STC89C52單片機控制系統收音模塊及存儲芯片液晶顯示STC89C52單片機控制系統收音模塊及存儲芯片按鍵控制按鍵控制1-1方案系統框圖1.2.3各局部的作用〔1〕液晶顯示。液晶顯示用1602液晶屏來顯示頻率和音量信息。單片機最小系統將收到的頻率和音量數據發送給液晶,讓其顯示出來。〔2〕按鍵控制。四個按鍵分別用來控制音量大小和頻率搜索,提供人機互動,通過單片機來控制收音模塊〔3〕單片機最小系統。用STC89C52單片機來實現數控,承受按鍵信息來控制收音模塊,再將收音模塊反響的信息傳給液晶。〔4〕收音模塊。通過和最小系統進展信息交換,按要求完成用戶的指令2.理論分析與設計2.1單片機最小系統電路設計2.1.1STC89C52特性STC89C52是STC公司生產的一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。STC89C52使用經典的MCS-51內核,但做了很多的改良使得芯片具有傳統51單片機不具備的功能。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得STC89C52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。具有以下標準功能:8k字節Flash,512字節RAM,32位I/O口線,看門狗定時器,內置4KBEEPROM,MAX810復位電路,3個16位定時器/計數器,4個外部中斷,一個7向量4級中斷構造〔兼容傳統51的5向量2級中斷構造〕,全雙工串行口。另外STC89C52可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停頓工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停頓,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。STC89C52實物圖2.1.2STC89C52引腳功能1電源:①VCC-芯片電源,接+5V;

②VSS-接地端;

2.時鐘:

XTAL1、XTAL2-晶體振蕩電路反相輸入端和輸出端。

3.控制線:

控制線共有4根:

ALE/PROG:地址鎖存允許/片內EPROM編程脈沖

①ALE功能:用來鎖存P0口送出的低8位地址

②PROG功能:片內有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。

PSEN:外ROM讀選通信號。

RST/VPD:復位/備用電源。

①RST〔Reset〕功能:復位信號輸入端。

②VPD功能:在Vcc掉電情況下,接備用電源。

EA/Vpp:內外ROM選擇/片內EPROM編程電源。

①EA功能:內外ROM選擇端。

②Vpp功能:片內有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。

4.I/O口線:P0、P1、P2、P3共四個八位口。

P0口是三態雙向口,通稱數據總線口,因為只有該口能直接用于對外部存儲器的讀/寫操作。P0口也用以輸出外部存儲器的低8位地圖1址。由于是分時輸出,故應在外部加鎖存器將此地址數據鎖存,地址鎖存,信號用ALE。

P1口是專門供用戶使用的I/O口,是準雙向口。

P2口是從系統擴展時作高8位地址線用。不擴展外部存儲器時,P2口也可以作為用戶I/O口線使用,P2口也是準雙向口。

P3口是雙功能口,該口的每一位均可獨立地定義為第一I/O功能或第二I/O功能。作為第一功能使用時操作同P1口。STC89C52的引腳圖2.2收音模塊及存儲芯片電路設計“RRD-102V2.0〞立體聲收音模塊〔FMStereoradioModule〕高靈敏度、低功耗、超小體積的調頻立體聲收音模組。采用RDAMicroelectronics的RDA5807M〔或RDA5802NM〕,此電路外圍元件少、噪聲系數極小。具有體積小、低功耗、低本錢、應用簡單、使用范圍廣等優點。是一款簡單易用且具極高性價比的單芯片FM立體聲收音模組。它能很好的完成課設要求。由于它只需要3V電壓工作,我用as1117線性穩壓芯片將5v的單片機工作電壓降到3V。模塊的引腳及外圍電路圖AS1117應用電路3.電路設計3.1硬件電路的設計本次課設的硬件電路主要分成兩大塊來做板,一塊是單片機最小系統和液晶及按鍵的局部;另一局部是以收音模塊為主的模塊局部。3.1.1單片最小系統局部電路圖單片機最小系統外圍電路只需要接復位電路及震蕩電路就行,而顯示及按鍵只需要接到I/O口就行了。下面是其原理圖:3.1.2模塊電路設計由單片機給1117芯片和24C02供電,再將降壓得到的3V電壓供應RDA5807模塊,由于模塊和芯片的外圍電路都資料上都已經給出來了,所以只需要將其連接到一起就可以了。J1接單片機電源,J3接單片機I/O口模塊原理圖4.軟件設計4.1IIC通信協議分析本次課程設計硬件電路設計比擬簡單,但是程序比擬難,它的難度在于RDA5807采用的是IIC通信模式,這種通信模式對時序要求很嚴格。IIC通信協議有以下特點:(1)只要求兩條總線線路一條串行數據線SDA一條串行時鐘線SCL(2)每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機/從機關系軟件設定地址;主機可以作為主發送器或主機接收器(3)它是一個真正的多主機總線,如果兩個或更多主機同時初始化數據傳輸可以通過沖突檢測和仲裁防止數據被破壞(4)串行的8位雙向數據傳輸位速率在標準模式下可達100kbit/s快速模式下可達400kbit/s高速模式下可達.4Mbit/s(5)片上的濾波器可以濾去總線數據線上的毛刺波保證數據完整(6)連接到一樣總線的IC數量只受到總線的最大電容400pF限制I2C協議總線信號時序分析1.數據的有效性:SDA線上的數據必須在時鐘的高電平周期保持穩定數據線的高或低電平狀態只有在SCL線的時鐘信號是低電平時才能改變。2.起始和停頓條件當SCL線是高電平時,SDA線從高電平向低電平切換,這個情況表示起始條件。當SCL線是高電平時,SDA線由低電平向高電平切換表示停頓條件。3.總線空閑狀態SDA和SCL兩條信號線都處于高電平,即總線上所有的器件都釋放總線,兩條信號線各自的上拉電阻把電平拉高;4.數據傳輸與應答信號ACK發送到SDA線上的數據必須是8位的。每次傳輸可以發送的數據不受限制。每個字節后必須在時鐘的第9個脈沖期間釋放數據總線〔SDA為高〕,由接收器發送一個ACK(把數據總線的電平拉低)來表示數據成功接收。首先傳輸的是數據的最高位〔MSB〕。如果從機要完成一些其他功能后〔例如一個內部中斷服務程序〕才能接收或發送下一個完整的數據字節,可以使時鐘SCL保持低電平迫使主機進入等待狀態。當從機準備好接收下一個數據字節并釋放時鐘線SCL后,數據傳輸繼續。4.地址格式數據的傳輸遵循如圖4.1完整的數據傳送所示,在起始條件之后,發送一個7位的從機地址,緊接著第8位是數據方向〔R/—W〕,0-表示發送數據〔寫〕,1-表示接收數據〔讀〕。數據傳輸一般由主機產生的停頓位〔P〕終止。但是如果主機仍希望在總線上通訊,它可以產生重復起始條件〔Sr〕,和尋址另一個從機,而不是首先產生一個停頓條件。在這種傳輸中,可能有不同的讀/寫格式結合。現代電子系統中,有為數眾多的IC需要進展相互之間以及與外界的通信。為了提供硬件的效率和簡化電路的設計,PHILIPS開發了一種用于內部IC控制的簡單的雙向兩線串行總線I2C。I2C總線支持任何一種IC制造工藝,并且PHILIPS和其他廠商提供了種類非常豐富的I2C兼容芯片。作為一個專利的控制總線,I2C已經成為世界性的工業標準。每個器件都有一個唯一的地址,而且可以是單接收的器件〔例如:LCD驅動器〕或者可以接收也可以發送的器件〔例如:存儲器〕。發送器或接收器可以在主模式或從模式下操作,這取決于芯片是否必須啟動數據的傳輸還是僅僅被尋址。I2C是一個多主總線,即它可以由多個連接的器件控制。根本的I2C總線標準于20年前發布,其數據傳輸速率最高為100Kbits/s,采用7位尋址。但是由于數據傳輸速率和應用功能的迅速增加,I2C總線也增強為快速模式〔400Kbits/s〕和10位尋址以滿足更高速度和更大尋址空間的需求。I2C總線始終和先進技術保持同步,但仍然保持其向下兼容性。并且最近還增加了高速模式,其速度可達3.4Mbits/s。它使得I2C總線能夠支持現有以及將來的高速串行傳輸應用,例如EEPROM和Flash存儲器。IIC通信協議一般的過程:1-先向總線發出芯片地址2-如果有芯片地址正確的芯片,會產生一個SDA上應答。3-接著主機再發出應答過的芯片發出將要所進展操作的片內地址。4-芯片地址正確的芯片,會再產生一個SDA上應答。5-此時如果是讀操作,從芯片將輸出數據到SDA上。如果是寫操作,主時機將數據寫到SDA上。4.2程序流程圖:根據以上資料,結合單片機知識,編出了相關程序,這是程序流程圖:程序框圖初始化初始化液晶顯示初始值液晶顯示初始值檢測是否有按鍵按下檢測是否有按鍵按下模塊進展搜索頻道和音量的相關變化模塊進展搜索頻道和音量的相關變化液晶顯示當前頻率和音量液晶顯示當前頻率和音量完畢完畢具體程序詳見附錄5.系統測試5.1調試結果:所能承受的頻率87.0MHZ87.1MHZ88.0M88.3M89.8M90.0M94.1M95.0M96.0M97.799.0M100.0101.1101.4101.51021041051061085.2結果分析:根據結果可知,其滿足了87~108MHZ〔歐美〕頻率承受要求,并且具有良好的噪音消除和抗干擾能力。液晶顯示頻率和音量,完全符合課設題目要求,因此,此作品到達教師所給要求,是成功的。6.總結通過這段時間的辛苦努力,在教師和大家的幫助下,終于把這個課程設計題目完成了,也能夠滿足課設題目所定的要求,具有頻率顯示功能,并且能夠搜索到相應范圍內的頻率,采用數字控制,操作簡單,攜帶方便。謝辭本論文設計在教師的悉心指導和嚴格要求下業已完成,從課題選擇到具體的寫作過程,論文初稿與定稿無不凝聚著心血和汗水,在我的課程設計期間,教師為我提供了種種專業知識上的指導和一些富于創造性的建議,教師一絲不茍的作風,嚴謹求實的態度使我深受感動,沒有這樣的幫助和關心和熏陶,我不會這么順利的完成課程設計。在此向教師表示深深的感謝和崇高的敬意!同時,在論文寫作過程中,我還參考了有關的書籍和論文,在這里一并向有關的作者表示謝意。我還要感謝同組的各位同學以及我的各位室友,在課程設計的這段時間里,你們給了我很多的啟發,提出了很多珍貴的意見,對于你們幫助和支持,在此我表示深深地感謝!參考文獻[1]康華光.電子技術根基[M].北京:高等教育出版,2006,68〔3〕:40~57.[2]李強.51系列單片機應用軟件編程技術[M].北京:北京航空航天大學,2009:77~90.[3]譚浩強.C語言程序設計教程[M].北京:高等教育出版社,1991:30~32.[4]樊昌信通信原理〔第6版〕[M].北京:國防工業出版社,2006:20~65[5]宋樹祥,周冬梅.高頻電子線路.[M]北京大學出版社,2007年2月[6]陳邦媛.射頻通信電子線路學習指導.[M]科學出版社,2007年6月[7]吳慎山.高頻電子線路.[M]電子工業出版社,2007年1月[8]謝沅清.通信電子線路.[M]電子工業出版社,2007年7月[9]曾興雯.高頻電子線路.[M]高等教育出版社,2004年1月[10]楊翠娥.高頻實驗與課程設計.[M]哈爾濱工程大學出版社,2005年1月[11]于洪珍.通信電子線路.[M]清華大學出版社,2006年1月[12]陳利永.電子電路根基.[M]中國鐵道出版社,2006年7月附錄附錄一程序/*主程序*/#include"reg52.h"#include"intrins.h"#include"lcd.h"#include"IIC.h"#include"delay.h"sbitK1=P2^1;sbitK2=P2^2;sbitK3=P2^3;sbitK4=P2^4;unsignedlongfrequency;//RDA5807存放器unsignedcharRDA_reg_data[8]={0xd0,0x00,//02H0x00,0x00,//03H0x00,0x40,//04H0x90,0x88,//05H};unsignedcharcodecdis1[]={"XiaoDU'sRADIO"};unsignedcharcodecdis2[]={"FMVOL"};charcodereserve[3]_at_0x3b;//保存0x3b開場的3個字節/**********************************************************連續寫存放器子函數**********************************************************/voidRDA5807_write_reg(void){uchari;I2C_start();//收音模塊寫入操作I2C_write_byte(0x20);//存放器連續寫操作for(i=0;i<8;i++){I2C_write_byte(RDA_reg_data[i]);}I2C_stop();}/**********************************************************連續讀存放器子函數**********************************************************/voidRDA5807_read_reg(uchar*reg_buf){I2C_start();//收音模塊讀取操作I2C_write_byte(0x21);//存放器連續讀操作reg_buf[0]=I2C_read_byte(I2C_ACK);reg_buf[1]=I2C_read_byte(I2C_ACK);reg_buf[2]=I2C_read_byte(I2C_ACK);reg_buf[3]=I2C_read_byte(I2C_NACK);I2C_stop();}/**********************************************************模塊上電初始化子函數**********************************************************/voidRDA5807_power(void){delayms(50);//發送軟件復位指令RDA_reg_data[0]=0x00;RDA_reg_data[1]=0x02;RDA5807_write_reg();delayms(10);//收音模塊默認參數RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA5807_write_reg();}/**********************************************************功能描述:收音模塊自動尋臺模式**********************************************************/voidRDA5807_FM_seek(void){uintchan;ucharreg_data[4]={0x00,0x00,0x00,0x00};RDA_reg_data[3]&=~(1<<4);//調諧禁用//內部自動尋臺使能RDA_reg_data[0]|=(1<<0);//SEEK位置1RDA5807_write_reg();//等待STC標志置位while(0==(reg_data[0]&0x40)){delayms(20);//讀取內部狀態RDA5807_read_reg(reg_data);}//獲取當前工作頻點chan=reg_data[0]&0x03;chan=reg_data[1]|(chan<<8);chan=chan<<6;//保存當前工作頻點RDA_reg_data[2]=(chan>>8)&0xff;RDA_reg_data[3]=(chan&0xff);}/**********************************************************頻率顯示子函數**********************************************************/voidshow_frequency(void){unsignedchari,display[5];unsignedinttemp;temp=(RDA_reg_data[2]*256)+(RDA_reg_data[3]&0xc0); //計算temp=temp>>6;frequency=(unsignedlong)(100*temp+87000)/100;for(i=0;i<5;i++)//清顯存單元display[i]=0x00;display[0]=(frequency)/1000;//數據轉換display[1]=(frequency%1000)/100;display[2]=(frequency%100)/10;display[3]=0x2e;//小數點display[4]=(frequency%10);if(display[0]==0){display[0]=display[1]+0x30;display[1]=display[2]+0x30;display[2]=display[3];display[3]=display[4]+0x30;display[4]=0x20;}else{display[0]+=0x30;display[1]+=0x30;display[2]+=0x30;display[4]+=0x30;}lcd_pos_xy(3,2);//頻率顯示lcd_wdat(display[0]);lcd_wdat(display[1]);lcd_wdat(display[2]);lcd_wdat(display[3]);lcd_wdat(display[4]);}/**********************************************************音量顯示子函數**********************************************************/voidshow_volume(){unsignedchartemp,display[2];temp=RDA_reg_data[7]&0x0f;//取音量值display[0]=temp/10;display[1]=temp%10;if(display[0]==0)//如果高位為0{display[0]=display[1];//低位顯存內容進入高位顯存display[1]=0x20;//低位不顯示}else{display[1]+=0x30;}display[0]+=0x30;lcd_pos_xy(13,2);//音量值顯示lcd_wdat(display[0]);lcd_wdat(display[1]);}voidmain(void){P0=0xff;P1=0xff;P2=0xff;lcd_init();lcd_w_string(0,1,cdis1,0);lcd_w_string(0,2,cdis2,0);RDA5807_power();while(1){if(K1==0){delayms(20);if(K1==0){RDA_reg_data[0]|=(1<<1); //SEEKUP RDA5807_FM_seek(); while(K1==0);}}if(K2==0){delayms(20);if(K2==0){RDA_reg_data[0]&=~(1<<1);//SEEKDOWN RDA5807_FM_seek();while(K2==0);}}if(K3==0){delayms(20);if(K3==0){if((RDA_reg_data[7]&0x0f)<0x0f){RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA_reg_data[3]&=~(1<<4);RDA_reg_data[7]++; //音量遞增RDA5807_write_reg(); while(K3==0);}}}if(K4==0){delayms(20);if(K4==0){if((RDA_reg_data[7]&0x0f)>0x00){RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA_reg_data[3]&=~(1<<4);RDA_reg_data[7]--; //音量遞減RDA5807_write_reg();while(K4==0);}}}show_volume();show_frequency();}}/*模塊子程序*lcd.c*/#include"reg52.h"#include"intrins.h"#include"lcd.h"#include"delay.h"#defineucharunsignedchar#defineuintunsignedint#defineDATAP1sbitLCD_RS=P0^0;sbitLCD_RW=P0^1;sbitLCD_EN=P0^2; /*******************************************************************檢查LCD忙狀態lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。*******************************************************************/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delay();result=(bit)(DATA&0x80);LCD_EN=0;return(result);}/*******************************************************************寫指令數據到LCDRS=L,RW=L,E=高脈沖,D0-D7=指令碼。Check=1,進展忙檢測。*******************************************************************/voidlcd_wcmd(ucharcmd,bitCheck){if(Check)while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;delay();DATA=cmd;delay();LCD_EN=1;delay();LCD_EN=0;}voidlcd_wdat(uchardat){while(lcd_busy());//進展忙檢測LCD_RS=1;LCD_RW=0;LCD_EN=0;DATA=dat;delay();LCD_EN=1;delay();LCD_EN=0;}/*******************************************************************LCD初始化設定*******************************************************************/voidlcd_init(){delayms(50);lcd_wcmd(0x38,0);//16*2顯示,5*7點陣,8位數據delayms(5);lcd_wcmd(0x38,0);//不進展忙檢測,強制執行。delayms(5);lcd_wcmd(0x38,0);delayms(5); lcd_wcmd(0x38,1);//進展忙檢測delayms(5);lcd_wcmd(0x0c,1);//顯示開,關光標delayms(5);lcd_wcmd(0x06,1);//移動光標delayms(5);lcd_wcmd(0x01,1);//去除LCD的顯示內容delayms(5);}/*******************************************************************設定顯示位置*******************************************************************/voidlcd_pos_xy(ucharpos_x,ucharpos_y){ucharpos_temp;pos_temp=pos_x&0x0f;pos_y&=0x0f;if(pos_y==0x01)pos_temp|=0x80;elseif(pos_y==0x02)pos_temp|=0xc0;lcd_wcmd(pos_temp,1);}/*******************************************************************寫字符串子函數*******************************************************************/voidlcd_w_string(ucharpos_x,ucharpos_y,ucharcode*str,uinttimes){ucharm;lcd_pos_xy(pos_x,pos_y);//設定起始位置for(m=0;m<16;m++){lcd_wdat(str[m]); delayms(times);}}/*IIC.c*/#include"reg52.h"#include"delay.h"#include"IIC.h"sbitSDA=P2^5;sbitSCL=P2^6;/**********************************************************

溫馨提示

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

評論

0/150

提交評論