51單片機生產(chǎn)實習(xí)報告_第1頁
51單片機生產(chǎn)實習(xí)報告_第2頁
51單片機生產(chǎn)實習(xí)報告_第3頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實習(xí)報告(生產(chǎn)實習(xí))起止日期:_2013年6月24日至2013年7月19日學(xué)生姓名岳維啟班級電子信息科學(xué)與技術(shù)2班成績指導(dǎo)教師(簽字)計算機與信息工程學(xué)院2012年7月19日第一章系統(tǒng)開發(fā)與調(diào)試1.1生產(chǎn)實習(xí)介紹2.3.4LCD1602顯示第四章4.14.2弟五早弟八早11錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。11566錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。889錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。12錯誤!未定義書簽。錯誤!未定義書簽。20錯誤!未定義書簽。28錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。33333334目錄1.2單

2、片機開發(fā)系統(tǒng)介紹STC12C5A60S2單片機LCD16021.2.3系統(tǒng)原理圖1.3單片機開發(fā)板的焊接第二章開發(fā)板的調(diào)試與檢測2.1開發(fā)板硬件調(diào)試2.2開發(fā)板軟件調(diào)試2.3測試程序2.3.7A/D數(shù)模轉(zhuǎn)換顯示第三章開發(fā)板拓展應(yīng)用3.1利用蜂鳴器彈奏音樂開發(fā)過程中遇見的問題現(xiàn)象以及解決方法硬件問題軟件問題實習(xí)體會參考文獻第一章系統(tǒng)開發(fā)與調(diào)試1.1生產(chǎn)實習(xí)介紹本次生產(chǎn)實習(xí)是學(xué)校教務(wù)規(guī)定,由電子信息工程教研室組織在電信樓實驗室進行的一個單片機的開發(fā)、生產(chǎn)與應(yīng)用的實習(xí)。此實習(xí)的目的旨在理論學(xué)習(xí)的基礎(chǔ)上,通過完成一個涉及51單片機多種資源應(yīng)用并具有綜合功能的最小系統(tǒng)目標(biāo)板的設(shè)計與編程應(yīng)用,通過我們獨立

3、進行單片機開發(fā)板的焊接、調(diào)試以及應(yīng)用擴展,提高我們的專業(yè)技能,為今后工作或是深造打好堅實的基礎(chǔ),讓我們真正從這次實習(xí)中收獲到對自己有價值的東西。此次生產(chǎn)實習(xí)是將理論知識與實際應(yīng)用結(jié)合起來,從實際出發(fā)分析、研究和解決問題,將單片機的知識系統(tǒng)化,而且能對電子電路、電子元器件、印制電路板等方面的知識進一步加深認識,同時在軟件編程、糾錯、調(diào)試、焊接技術(shù)相關(guān)儀器設(shè)備的使用技能方面得到全面的鍛煉和提高,為今后獨立進行某些單片機應(yīng)用系統(tǒng)的開發(fā)設(shè)計打下堅實基礎(chǔ)。生產(chǎn)實習(xí)是電子信息工程專業(yè)教學(xué)計劃的一個重要部分,是培養(yǎng)學(xué)生理論學(xué)習(xí)與實踐相結(jié)合的重要實踐性教學(xué)環(huán)節(jié)。通過生產(chǎn)實習(xí)使學(xué)生了解實習(xí)單位的工作方式和工作流

4、程;對以后大單片機課程設(shè)計,帝業(yè)設(shè)計做基礎(chǔ),了解一個開發(fā)板的開發(fā)制作的整個過程以及元器件的采購;對生產(chǎn)現(xiàn)場、生產(chǎn)過程中的電子信息設(shè)備、計算機設(shè)備的應(yīng)用狀況有較為深刻的認識,掌握常規(guī)電子信息設(shè)備的使用維護方法;在實踐中進一步加強專業(yè)教育,了解本專業(yè)工程技術(shù)崗位和生產(chǎn)勞動崗位的工作情況和工作內(nèi)容,培養(yǎng)團隊精神和吃苦耐勞的精神;同時可以使學(xué)生學(xué)到企業(yè)的管理經(jīng)驗和工人師傅的艱苦創(chuàng)業(yè)精神,激勵學(xué)生奮發(fā)向上的開拓精神。2. 1.2單片機開發(fā)系統(tǒng)介紹系統(tǒng)原理及功能介紹1.2.1STC12C5A60S2單片機增強型8051CPU1T,單時鐘/機器周期,指令代碼完全兼容傳統(tǒng)8051工作電壓:STC12C5A60

5、S2列工作電壓:5.5V-3.3V(5V單片機)STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機)工作頻率范圍:0-35MHz,相當(dāng)于普通8051的0420MHz用戶應(yīng)用程序空間8K/16K/20K/32K/40K/48K/52K/60K/62K字節(jié).16. 片上集成1280字節(jié)RAM6.通用I/O口(36/40/44個),復(fù)位后為:準雙向口/弱上拉(普通8051傳統(tǒng)I/O口)可設(shè)置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏每個I/O口驅(qū)動能力均可達到20mA但整個芯片最大不要超過55mAISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器

6、,無需專用仿真器可通過申口(P3.0/P3.1)直接下載用戶程序,數(shù)秒即可完成一片有EEPRO眈能(STC12C5A62S2/AD/PW®內(nèi)部EEPROM)看門狗內(nèi)部集成MAX81(用復(fù)位電路(外部晶體12M以下時,復(fù)位腳可直接1K電阻到地)外部掉電檢測電路:在P4.6口有一個低壓門檻比較器5V單片機為1.32V,誤差為+/-5%,3.3V單片機為1.30V,誤差為+/-3%時鐘源:外部高精度晶體/時鐘,內(nèi)部R/C振蕩器(溫漂為+/-5%到+/-10%以內(nèi))1用戶在下載用戶程序時,可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時鐘常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機為:11MHb

7、15.5MHz3.3V單片機為:8MHb12MHz精度要求不高時,可選擇使用內(nèi)部時鐘,但因為有制造誤差和溫漂,以實際測試為準共4個16位定時器兩個與傳統(tǒng)8051兼容的定時器/計數(shù)器,16位定時器T0和T1,沒有定時器2,但有獨立波特率發(fā)生器做申行通訊的波特率發(fā)生器再加上2路PCA莫塊可再實現(xiàn)2個16位定時器2個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA塊,PowerDow冊式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,

8、RxD/P3.0,CCP0/P1.3(也可通過寄存器設(shè)置到P4.2),CCP1/P1.4(也可通過寄存器設(shè)置到P4.3)PWM(2路)/PCA(可編程計數(shù)器陣列,2路)也可用來當(dāng)2路D/A使用-也可用來再實現(xiàn)2個定時器也可用來再實現(xiàn)2個外部中斷(上升沿中斷/下降沿中斷均可分別或同時支持)A/D轉(zhuǎn)換,10位精度ADC共8路,轉(zhuǎn)換速度可達250K/S(每秒鐘25萬次)18.通用全雙工異步申行口(UART),由于STC12系列是高速的8051,可再用定時器或PCAa件實現(xiàn)多申口STC12C5A60S系列有雙申口,后綴有S2標(biāo)志的才有雙申口,RxD2/P1.2(可通過寄存器設(shè)置到P4.2),TxD2/

9、P1.3(可通過寄存器設(shè)置到P4.3)工作溫度范圍:-40-+85C(工業(yè)級)/0-75C(商業(yè)級)封裝:PDIP-40,LQFP-44,LQFP-48I/O口不夠時,可用2到3根普通I/O口線外接74HC164/165/595(均可級聯(lián))來擴展I/O口,還可用A/D做按鍵掃描來節(jié)省I/O口,或用雙CPU三線通信,還多了申口。STC12C5A60S:&可電氣燒錄活洗的8051相容單芯片,其內(nèi)部程序代碼容量為4KBSTC12C5A60S2要功能列舉如下:1、為一般控制應(yīng)用的8位單芯片2、晶片內(nèi)部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至12MHz)3、內(nèi)部程式存儲器(ROM為4KB4、內(nèi)部數(shù)據(jù)存

10、儲器(RAM為128B5、外部程序存儲器可擴充至64KB6、外部數(shù)據(jù)存儲器可擴充至64KB7、32條雙向輸入輸出線,且每條均可以單獨做I/O的控制8、5個中斷向量源9、2組獨立的16位定時器10、1個全多工申行通信端口11、8751及8752單芯片具有數(shù)據(jù)保密的功能12、單芯片提供位邏輯運算指令STC12C5A60S2STC12C5A60S2引腳功能介紹:VCCSTC12C5A60S2I源正端輸入,接+5V。VSS電源地端。XTAL1:單芯片系統(tǒng)時鐘的反相放大器輸入端。XTAL2系統(tǒng)時鐘的反相放大器輸出端,一般在設(shè)計上只要在XTAL1和XTAL2上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以

11、在兩引腳與地之間加入一20PF的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲十?dāng)_而死機。RESETSTC12C5A60S2勺重置引腳,高電平動作,當(dāng)要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,AT89S51便能完成系統(tǒng)重置的各項動作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。EA/Vpp:"EA"為英文"ExternalAccess"的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會取用外部的程序代碼(存于外部EPRO沖)來執(zhí)行程序。因此在8031及8

12、032中,EA引腳必須接低電平,因為其內(nèi)部無程序存儲器空間。如果是使用8751內(nèi)部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部EPROIW,可以利用此引腳來輸入21V的燒錄高壓(Vpp)。ALE/PROGALE是英文"AddressLatchEnable"的縮寫,表示地址鎖存器啟用信號。STC12C5A60S2以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373,將端口0的地址總線(A0A7)鎖進鎖存器中,因為STC12C5A60S2以多工的方式送出地址及數(shù)據(jù)。平時在程序執(zhí)行時ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅(qū)動其他周邊晶

13、片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當(dāng)成程序規(guī)劃的特殊功能來使用。PSEN此為"ProgramStoreEnable"的縮寫,其意為程序儲存啟用,當(dāng)8051被設(shè)成為讀取外部程序代碼工作模式時(EA=Q,會送出此信號以便取得程序代碼,通常這支腳是接到EPROI®OE腳。AT89S51可以利用PSENKRD引腳分別啟用存在外部的RA輸EPROI使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。PORT0(P0.0P0.7):端口0是一個8位寬的開路汲極(OpenDrain)雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,

14、依此類推。其他三個I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,P0在當(dāng)做I/O用時可以推動8個LS的TTL負載。如果當(dāng)EA引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),P0就以多工方式提供地址總線(A0A刀及數(shù)據(jù)總線(D0D70。設(shè)計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0A7,再配合端口2所送出的A8A15合成一完整的16位地址總線,而定址到64K的外部存儲器空問。PORT2(P2.0P2.7):端口2是具有內(nèi)部提升電路的雙向I/O端口,每一個引腳可以推動4個LS的TTL負載,若將端口2的輸出設(shè)為高電平時,此端口便能當(dāng)成輸入端口來使用。P2除了當(dāng)做一

15、般I/O端口使用外,若是在STC12C5A60S2充外接程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié)A8A15,這個時候P2便不能當(dāng)做I/O來使用了。PORT1(P1.0P1.7):端口1也是具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個LSTTL負載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0乂當(dāng)做定時器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。PORT3(P3.0P3.7):端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負載,同時還多工具有其他的額外特

16、殊功能,包括申行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或?qū)懭肟刂频裙δ堋F湟_分配如下:P3.0:RXD申行通信輸入。P3.1:TXD申行通信輸出。P3.2:INT0,外部中斷0輸入。P3.3:INT1,外部中斷1輸入。P3.4:T0,計時計數(shù)器0輸入。P3.5:T1,計時計數(shù)器1輸入。P3.6:WR外部數(shù)據(jù)存儲器的寫入信號。P3.7:RD外部數(shù)據(jù)存儲器的讀取信號。STC12C5A60S2體圖1.2.2LCD1602簡介1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若十個5X7或者5X11等點陣字符位組成,每個點陣字符位都可

17、以顯小一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM顯示效果也不好)。1602LC昵指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780夜晶芯片的,控制原理是完全相同的,因此基于HD4478C©的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。管腳功能1602采用標(biāo)準的16腳接口,其中:第1腳:VSS電源地第2腳:VC板5V電源正極第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過

18、高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。第5腳:RM讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN踢為使能(enable)端,高電平(1)時讀取信息,負跳變時執(zhí)行指令。第714腳:D0D7為8位雙向數(shù)據(jù)端。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極LCD1602管腳圖特性3.3V或5V工作電壓,對比度可調(diào)內(nèi)含復(fù)位電路提供各種控制命令,如:活屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM內(nèi)建有192個5X7點陣

19、的字型的字符發(fā)生器CGROM8個可由用戶自定義的5X7的字符發(fā)生器CGRAM1.2.3系統(tǒng)原理圖圖1系統(tǒng)原理圖1.3單片機開發(fā)板的焊接焊接操作要領(lǐng)焊件表面處理一般在焊接前焊件需要進行表面活理工作,去除焊接面上的銹跡,油污,灰塵等影響焊接質(zhì)量的雜質(zhì)。手工操作中常用機械刮磨和灑精,丙酮擦洗等簡單易行的方法。1. 預(yù)焊預(yù)焊就是將要錫焊的元器件引線或?qū)щ姷暮附硬课活A(yù)先用焊錫潤濕,一般也稱為鍍錫,上錫,搪錫等,靠金屆的擴散形成結(jié)合層后而使焊件表面“鍍”上一層焊錫。預(yù)焊并非錫焊不可缺少的操作,但對手工烙鐵焊接特別是維修,調(diào)試,研制工作幾乎可以說是必不可少的。2. 不要用過量的焊劑適量的焊劑是必不可缺的,但

20、不要認為越多越好。過量的松香不僅造成焊后焊點周圍需要活洗的工作量,而且延長了加熱時間(松香融化,揮發(fā)需要并帶走熱量),降低工作效率;而當(dāng)加熱時間不足時乂容易夾雜到焊錫中形成“夾渣”缺陷;對開關(guān)元件的焊接,過量的焊劑容易流到觸點處,從而造成接觸不良。合適的焊劑量應(yīng)該是松香水僅能浸濕將要形成的焊點,不要讓松香水透過印制板流到元件面或插座孔里(如IC插座)。對使用松香芯的焊絲來說,基本不需要再涂焊劑。保持烙鐵頭的活潔因為焊接時烙鐵頭長期處于高溫狀態(tài),乂接觸焊劑等受熱分解的物質(zhì),其表面很容易氧化而形成一層黑色雜質(zhì),這些雜質(zhì)幾乎形成隔熱層,使烙鐵頭失去加熱作用。因此要隨時在烙鐵架上蹭去雜質(zhì)。用一塊濕布或

21、濕海綿隨時擦烙鐵頭,也是常用的方法。加熱要靠焊錫橋非流水線作業(yè)中,一次焊接的焊點形狀使多種多樣的,我們不可能不斷換烙鐵頭。要提高烙鐵頭加熱的效率,需要形成熱量傳遞的焊錫橋。所謂焊錫橋,就是靠烙鐵上保留少量焊錫作為加熱時烙鐵頭與焊件之間傳熱的橋梁。顯然由于金屆液的導(dǎo)熱效率遠高于空氣,而使焊件很快被加熱到焊接溫度,如圖四。應(yīng)注意作為焊錫橋的錫保留量不可過多。焊錫量要合適過量的焊錫不但毫無必要地消耗了較貴的錫,而且增加了焊接時間,相應(yīng)降低了工作速度。更為嚴重的是在高密度的電路中,過量的錫很容易造成不易察覺的短路。但是焊錫過少不能形成牢固的結(jié)合,降低焊點強度,特別是在板上焊導(dǎo)線時,焊錫不足往往造成導(dǎo)線

22、脫落。焊件要牢固在焊錫凝固之前不要使焊件移動或振動,特別使用鑲子夾住焊件時一定要等焊錫凝固再移去鑲子。這是因為焊錫凝固過程是結(jié)晶過程,根據(jù)結(jié)晶理論,在結(jié)晶期間受到外力(焊件移動)會改變結(jié)晶條件,導(dǎo)致晶體粗大,造成所謂“冷焊”。外觀現(xiàn)象是表面無光澤呈豆渣狀;焊點內(nèi)部結(jié)構(gòu)疏松,容易有氣隙和裂隙,造成焊點強度降低,導(dǎo)電性能差。因此,在焊錫凝固前一定要保持焊件靜止,實際操作時可以用各種適宜的方法將焊件固定,或使用可靠的夾持措施。烙鐵撤離有講究烙鐵處理要及時,而且撤離時的角度和方向?qū)更c形成有一定關(guān)系。撤烙鐵時輕輕旋轉(zhuǎn)一下,可保持焊點適當(dāng)?shù)暮噶?,這需要在實際操作中體會。電子元器件插裝的原則插裝的順序:先

23、低后高,先小后大,先輕后重。元器件的標(biāo)識:電子元器件的標(biāo)記和色碼部位應(yīng)朝上,以便于辯認;橫向插件的數(shù)值讀法應(yīng)從左至右,而豎向插件的數(shù)值讀法則應(yīng)從下至上。元器件的問距在印制板上的元器件之間的距離不能小于1mm引線間距要大于2mM必要時,引線要套上絕緣套管)。一股元器件應(yīng)緊密安裝,使元器件貼在印制板上,緊貼的容限在0.5mm&右。錫線是手工焊接電路板,最便捷的焊料,由于大部分錫線內(nèi)含松香等助焊劑,使用錫線可以減少工序,提高焊接作業(yè)的效率;錫線按其金屆成分可分為無鉛焊錫和有鉛焊錫,成分區(qū)別的錫線具有區(qū)別的熔點,用途亦各有區(qū)別。在使用的時候,必須符合相關(guān)的安全規(guī)定;只能由合格的技術(shù)人維修;如果

24、不這樣,在使用本設(shè)備的時候,可能導(dǎo)致意外事故。運作以前,用錫線測溫計先測定溫度很重要。使用熱回復(fù)性等熱性能好的錫線,在使用無鉛焊錫進行焊接作業(yè)時,由于對零件的耐熱性,安全作業(yè)的考慮,有必要選定最合適的錫線,根據(jù)了解電烙鐵的區(qū)別焊接作業(yè)的區(qū)別,選擇最合適的烙鐵頭是很重要的。合適的烙鐵頭可以降低烙鐵頭的溫度,增加作業(yè)的效率。烙鐵頭的維護也非常重要。當(dāng)心焊料燙傷,當(dāng)心被飛濺的溶液狀態(tài)的焊料燙傷。穿防護服避免燙傷。通過戴防護罩方式來保護眼睛。在焊接或拆焊過程中使用膠粘劑的時候,尤其要注意膠粘劑生產(chǎn)廠家的警告信息。如果配合空氣凈化器使用,必須確保空氣凈化器連接正常并處于正常的運作狀態(tài)。不整潔的運作區(qū)問會

25、增加意外事故發(fā)生的可能性。在不使用本設(shè)備的時候,請將本設(shè)備放回安全的地方。避免所有易燃物體靠近熱的焊筆,包括氣體和固體。即使在關(guān)斷電源或者取下烙鐵頭及套筒后,烙鐵頭和套筒仍然需要一段時間冷卻。在焊接結(jié)束后,焊點及被焊接元器件仍然非常熱。防止被電擊,不要用手接觸接地部位,如焊筆套筒,發(fā)熱體等。兒童及未受培訓(xùn)的人不能靠近運作區(qū)問,絕不能允許其他未受培訓(xùn)的人使用或觸摸電源線。第二章開發(fā)板的調(diào)試與檢測2.1開發(fā)板硬件調(diào)試根據(jù)完成的電路板實現(xiàn)程序運行前,對電路板先進行檢測,先測試開發(fā)板供電是否正常,插上電源看看供電指示燈是否正常點亮。然后再在程序的調(diào)試中測試個電路模塊和器件是否能正常使用,這樣以便快速準

26、確找出錯誤并解決錯誤。例如首先可以測試電阻、二極管極性是否焊反,芯片有沒出現(xiàn)虛焊的現(xiàn)象,以至于板子不能正常使用。2.2開發(fā)板軟件調(diào)試STC12C5A60S2單片機可以實現(xiàn)多種的實驗程序,例如LED指示燈實驗;跑馬燈實驗;中斷操作;A/D轉(zhuǎn)換;按鍵輸入實驗等。調(diào)試過程中我們用的是Keiluvision2軟件,其操作步驟如下:(1) 建立一個文件夾用來存放項目。(2) (2)打開Keil軟件,選擇Project->NewProject。選擇Atmel->AT89S52->同意添加8051啟動代碼。團(4)File->New(新建源文件,編程)->保存(匯編語言以.as

27、m結(jié)尾;C語言以.C結(jié)尾)添加源文件到Project。生成.hex文件。2.3測試程序#include<reg51.h>typedefunsignedintuint16;/#definetime100/*voidms(unsignedintx)(unsignedchari;while(x-)(for(i=0;i<200;i+);*/main()(intj,a1;uint16x;/for(i=0;i<2;i+)while(1)(a1=0xfe;for(j=0;j<8;j+)(P1=a1;/ms(time);for(x=0;x<50000;x+);P1=0xff

28、;for(x=0;x<50000;x+);P1=a1;for(x=0;x<60000;x+);a1=(a1<<1)|0x01;#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uintdel)uinti,j,k;for(i=0;i<del;i+)for(j=0;j<1000;j+)for(k=0;k<1000;k+);voidmain(void)inti;P1=0x00;/數(shù)碼管點亮控制while(1)for(i=0;i<2;i+)P0=0

29、xfe;Delay(1);P0=0xfd;Delay(1);P0=0xfb;Delay(1);P0=0xf7;Delay(1);P0=0xef;Delay(1);P0=0xdf;Delay(1);P0=0xbf;Delay(1);P0=0x7f;Delay(1);for(i=0;i<2;i+)P0=0x7f;Delay(1);P0=0xbf;Delay(1);P0=0xdf;Delay(1);P0=0xef;Delay(1);P0=0xf7;Delay(1);P0=0xfb;Delay(1);P0=0xfd;Delay(1);P0=0xfe;Delay(1);for(i=0;i<2

30、;i+)P0=0x00;Delay(1);P0=0xff;Delay(1);#ifndef_ANJIAN_H_#define_ANJIAN_H_typedefunsignedcharuint8;typedefunsignedintuint16;typedefcharint8;typedefintint16;sbitK0=P1A0;sbitK1=P1A1;sbitK2=P1A2;sbitK3=P1A3;sbitK4=P1A4;sbitK5=P1A5;sbitK6=P1A6;sbitK7=P1A7;sbitWL1=P2A3;sbitWL2=P2A2;sbitWL3=P2A1;sbitWL4=P2A

31、0;#endif2.3.4LCD1602顯示#include"reg51.h"#include"absacc.h"typedefunsignedcharBYTE;typedefunsignedintWORD;/*液晶1602口地址*/#definewr_comXBYTE0xC000/寫命令#definewr_dataXBYTE0xC100/寫數(shù)據(jù)#definerd_comXBYTE0xC200/讀命令#definerd_dataXBYTE0xC300/讀數(shù)據(jù)voidlcd_init(void);/lcd初始化voidwrite_cmd(BYTEcmd);

32、/lcd寫命令/voidwrite_string(unsignedchar*s);/寫字符申voidwrite_data(BYTEdat);/寫數(shù)據(jù)voidset_display_place(BYTEline,column);voidwrite_string_lcd(BYTEline,column,unsignedchar*string);/voidwrite_data_lcd(BYTEline,column,dat);/voidcrti(unsignedlongdat);/voidcrt_r(floatx,BYTEN);voidDelay(WORDn)WORDx;while(n-)x=500

33、;while(x-);/*voidDelay2(WORDn)WORDx;while(n-)x=5000;while(x-);*/*Functionname:write_cmdDescriptions:向lcd輸入指令*/voidwrite_cmd(BYTEcmd)(BYTEdl;dodl=rd_com;while(dl&0x80)!=0);/判忙wr_com=cmd;Delay(1);/*Functionname:write_dataDescriptions:寫入數(shù)據(jù)*/voidwrite_data(BYTEdat)BYTEdl;dodl=rd_com;while(dl&0x8

34、0)!=0);/判忙wr_data=dat;Delay(1);/*Functionname:write_stringDescriptions:寫入字符申*/voidwrite_string(BYTE*s)while(*s!='0')/'0'為字符申結(jié)束標(biāo)志(write_data(*s);s+;/*Functionname:set_display_placeDescriptions:設(shè)置字符的顯示位置*/voidset_display_place(BYTEline,column)(BYTEaddress;if(line=1)(address=0x80+column

35、;elseif(line=2)(address=0xc0+column;write_cmd(address);/*Functionname:將字符申寫到指定的位置Descriptions:將字符申顯示在lcd的特定位置*/voidwrite_string_lcd(BYTEline,column,unsignedchar*string)(set_display_place(line,column);write_string(string);Delay(1);/*Functionname:將字符寫到指定的位置Descriptions:將字符申顯示在led的特定位置*/*voidwrite_data

36、_lcd(BYTEline,column,dat)(set_display_place(line,column);write_data(dat);Delay(1);*/*/*液晶模塊初始化*/voidlcd_init(void)(write_cmd(0x38);/write_cmd(0x38);/write_cmd(0x06);/write_cmd(0x0c);/write_cmd(0x01);/顯示位置*/*ledvoidmain()(/SP=0x60;lcd_init();while(1)write_string_lcd(1,1,"09");write_string_l

37、cd(2,1,"ABCDEDGHIJ");/*申行發(fā)送*/#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P1A1;sbitLED2=P1A2;sbitK0=P1A0;sbitK4=P1A4;codeucharOperation_No=0;/操作代碼ucharDSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/數(shù)碼管代碼voiddelay(uintms)uchari;while(ms-);f

38、or(i=0;i<120;i+);/向申口發(fā)送字符voidPutc_to_SerialPort(ucharc)SBUF=c;while(TI=0);/收到時中斷TI=0;/活除中斷voiduart_init()SCON=0x50;申口模式1,允許接收TMOD=0x20;/T1工作模式2PCON=0x00;波特率不倍增TH1=0xfd;/設(shè)置計數(shù)初值TL1=0xfd;TI=RI=0;TR1=1;啟動定時器IE=0x90;/允許申口中斷main()(uart_init();K4=0;LED1=LED2=1;while(1)(delay(100);if(K0=0)(while(K0=0)Ope

39、ration_No=(Operation_No+1)%4;switch(Operation_No)/根據(jù)操作代碼發(fā)送A/B/C或停止發(fā)送(case0:Putc_to_SerialPort('X');LED1=LED2=1;break;case1:Putc_to_SerialPort('A');LED1=LED1;LED2=1;break;case2:Putc_to_SerialPort('B');LED2=LED2;LED1=1;break;case3:Putc_to_SerialPort('C');LED1=LED1;LED2=

40、LED1;break;voiduart_interrupt()interrupt4(if(RI)(RI=0;if(SBUF>=0&&SBUF<=10)P0=DSY_CODESBUF;elseP0=0x00;/*申行接收*/#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P1A1;sbitLED2=P1A2;sbitK0=P1A0;sbitK4=P1A4;ucharnumx=-1;voiddelay(uintms)(uchari;while(ms-);for(i

41、=0;i<120;i+);voiduart_init()(SCON=0x50;申口模式1,允許接收TMOD=0x20;/T1工作模式2TH1=0xfd;/波特率9600TL1=0xfd;PCON=0x00;波特率不倍增RI=0;TI=0;TR1=1;啟動定時器IE=0x90;/允許中斷main()(uart_init();K4=0;while(1)(delay(100);if(K0=0)(while(K0=0);numx=(numx+1)%11;SBUF=numx;while(TI=0);TI=0;voiduart_interrupt()interrupt4(if(RI)(RI=0;sw

42、itch(SBUF)(case'X':LED1=LED2=1;break;case'A':LED1=0;LED2=1;break;case'B':LED2=0;LED1=1;break;case'C':LED1=LED2=0;2.3.7A/D數(shù)模轉(zhuǎn)換顯示#include"reg51.h"#include"intrins.h"#include"absacc.h"#include"math.h"typedefunsignedcharBYTE;typedef

43、unsignedintWORD;/*AD*/sfrP1ASF=0x9D;/P1sfrADC_CONTR=0xBC;/ADsfrADC_RES=0xBD;/ADsfrADC_RESL=0xBE;/ADsfrAUXR1=0xA2;/AD#defineADC_POWER0x80/AD#defineADC_FLAG0x10/AD#defineADC_START0x08/AD#defineADRJ10x40/AD2.+.8.#defineADC_SPEEDLL0x00/AD540#defineADC_SPEEDL0x20/AD360#defineADC_SPEEDH0x40/AD180#defineAD

44、C_SPEEDHH0x60/AD90/*.1602.*/#definewr_comXBYTE0xC000/.#definewr_dataXBYTE0xC100/.#definerd_comXBYTE0xC200/#definerd_dataXBYTE0xC300/unsignedcharah;unsignedcharAD_val_h;/ADunsignedcharAD_val_l;/ADunsignedlongAD_val;floatAD_float;voidInitADC();voidSendData(BYTEdat);/voidGetADCResult(BYTEch);voidDelay(

45、WORDn);voidDelay2(WORDn);voidShowResult(BYTEch);voidlcd_init(void);/lcdvoidwrite_cmd(BYTEcmd);/led/voidwrite_string(unsignedchar*s);/voidwrite_data(BYTEdat);/voidset_display_place(BYTEline,column);voidwrite_string_lcd(BYTEline,column,unsignedchar*string);/*Functionname:write_cmdDescriptions:.lcd*/vo

46、idwrite_cmd(BYTEcmd)(BYTEdl;dodl=rd_com;while(dl&0x80)!=0);/.wr_com=cmd;Delay(1);/*Functionname:write_dataDescriptions:*/voidwrite_data(BYTEdat)BYTEdl;dodl=rd_com;while(dl&0x80)!=0);/.wr_data=dat;Delay(1);/*Functionname:write_stringDescriptions:*/voidwrite_string(BYTE*s)(while(*s!='0'

47、;)/'0'(write_data(*s);s+;/*Functionname:set_display_placeDescriptions:*/voidset_display_place(BYTEline,column)(BYTEaddress;if(line=1)(address=0x80+column;elseif(line=2)(address=0xc0+column;write_cmd(address);/*Functionname:Descriptions:lcd*/voidwrite_string_lcd(BYTEline,column,unsignedchar*s

48、tring)(set_display_place(line,column);write_string(string);Delay(1);/*/*voidlcd_init(void)(write_cmd(0x38);/write_cmd(0x38);/write_cmd(0x06);/write_cmd(0x0c);/write_cmd(0x01);/voidcrti(unsignedlongdat)(unsignedchardhi;unsignedchardli;unsignedcharddi;unsignedchardei;unsignedlongdatah;unsignedlongdata

49、l;datah=dat;dhi=0;if(datah>=10)(do(datah/=10;dhi+;while(datah>=10);datah=dat;ddi=dhi;for(dli=0;dli<dhi;dli+)(datal=1;for(dei=0;dei<ddi;dei+)(datal*=10;datah=dat/datal;dat=dat%datal;datah+=0x30;write_data(datah);ddi-;dat+=0x30;write_data(dat);else(dat=dat+0x30;write_data(dat);*/*voidcrt_r

50、(floatx,unsignedcharN)(unsignedchardli;unsignedintdath;unsignedintdat;if(x<0.0)(dat=0x2d;write_data(dat);Delay(1);x=fabs(x);dath=(int)x;crti(dath);if(N>0)(dat=0x2e;write_data(dat);Delay(1);dat=1;for(dli=0;dli<N;dli+)(dat*=10;dath=(int)(x*dat)-dath*dat;crti(dath);voidcrt_U()(write_string_lcd

51、(2,0,"U:");set_display_place(2,3);crt_r(AD_float,3);voidGetADCResult(BYTEch)/AD.(AUXR1&=ADRJ1;ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;_nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR&ADC_FLAG);ADC_CONTR&=ADC_FLAG;AD_val_h=ADC_RES;AD_val_l=ADC_RESL;AD_val=AD_val_h*4+AD_val

52、_l;voidInitADC()(P1ASF=0xff;ADC_RES=0;ADC_CONTR=ADC_POWER|ADC_SPEEDLL;Delay(1);voidDelay(WORDn)(WORDx;while(n-)(x=500;while(x-);voidDelay2(WORDn)(WORDx;while(n-)(x=5000;while(x-);voidmain()(SP=0x60;InitADC();lcd_init();AUXR1&=ADRJ1;while(1)(write_string_lcd(1,2,"P1.7");GetADCResult(7);

53、AD_float=AD_val*5.0/1024.0;crt_U();Delay2(10);第三章開發(fā)板拓展應(yīng)用3.1利用蜂鳴器彈奏音樂通過調(diào)整PW啪占寬比來實現(xiàn)蜂鳴器的音調(diào)控制,并通過LED燈的點亮來模擬音調(diào)的高低,高音燈亮的多,低音燈亮的少。脈沖寬度調(diào)制(PWM)是英文“PulseWidthModulation”的縮寫,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù)。脈寬調(diào)制(PWM基本原理:控制方式就是對逆變電路開關(guān)器件的通斷進行控制,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來代替正弦波或所需要的波形。也就是在輸出波形的半個周期中產(chǎn)生多個脈沖,使各脈沖的等值電壓為正弦波形,所獲得的輸出平滑且低次諧波少。按一定的規(guī)則對各脈沖的寬度進行調(diào)制,即可改變逆變電路輸出電壓的大小,也可改變輸出頻率。與占寬

溫馨提示

  • 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

提交評論