單片機(jī)實(shí)訓(xùn)報告
一.實(shí)訓(xùn)目的:
單片機(jī)專周實(shí)訓(xùn)是在學(xué)習(xí)完單片機(jī)應(yīng)用技術(shù)課程之后開設(shè)的兩周實(shí)訓(xùn)課程,在課程學(xué)習(xí)中,通過理論與實(shí)驗(yàn)相結(jié)合的學(xué)習(xí),同學(xué)們已經(jīng)掌握了單片機(jī)基本的使用方法,但是教材上的例子比較簡單,擴(kuò)展的空間不大,因此此次實(shí)訓(xùn)的目的是為了加強(qiáng)同學(xué)們對單片機(jī)開發(fā)流程的認(rèn)識,加深對單片機(jī)I/O口擴(kuò)展與外圍器件的使用,加強(qiáng)同學(xué)們的職業(yè)素養(yǎng),加強(qiáng)同學(xué)們的實(shí)際動手能力與調(diào)試能力,從而實(shí)現(xiàn)從理論到實(shí)踐的升華。
二.實(shí)驗(yàn)設(shè)備:
1.單片機(jī)實(shí)驗(yàn)板2.計算機(jī)
3.ISIS7Professional、SuperPro等相關(guān)調(diào)試編程軟件4.5V電源5.燒錄器
三.實(shí)訓(xùn)要求:
本次實(shí)訓(xùn)的項(xiàng)目是使用單片機(jī)制作一個數(shù)字溫度計,2位7段數(shù)碼管用以顯示兩位溫度數(shù)據(jù)。實(shí)訓(xùn)過程先使用仿真軟件實(shí)現(xiàn)電路的仿真,再使用萬用板焊接電路,實(shí)現(xiàn)功能。要求仿真通過,實(shí)訓(xùn)態(tài)度認(rèn)真,制作電路整潔,能實(shí)現(xiàn)功能。
設(shè)計要求:使用熱敏電阻作為溫度傳感器,單片機(jī)作為處理芯片,根據(jù)佛山
的氣候,要求溫度顯示數(shù)據(jù)范圍為從0℃~45℃,分辨率為1℃,數(shù)碼管顯示采用動態(tài)掃描顯示方式。
四.實(shí)訓(xùn)電路:
五.設(shè)計過程:
根據(jù)開發(fā)的要求,熱敏電阻作為溫度傳感器,必須使用直流偏置電路和AD轉(zhuǎn)換器,單片機(jī)接收AD轉(zhuǎn)換器的數(shù)據(jù),對照預(yù)先做好的溫度數(shù)據(jù)查表,查到了相應(yīng)的溫度數(shù)據(jù),送到數(shù)碼管動態(tài)顯示。硬件結(jié)構(gòu)圖如下圖。
因此該系統(tǒng)重點(diǎn)解決的問題是熱敏電阻的使用與AD轉(zhuǎn)換器的使用,而多位7段數(shù)碼管的動態(tài)顯示已經(jīng)非常熟悉了,因此不做過多的闡述。下面對一些重點(diǎn)問題進(jìn)一步進(jìn)行分析。
熱敏電阻偏置電路電壓
AD轉(zhuǎn)換器數(shù)據(jù)51單片機(jī)數(shù)碼管控制1.熱敏電阻:
熱敏電阻器有NTC與PTC兩種,NTC是NegativeTemperatureCoefficient的縮寫,意思是負(fù)的溫度系數(shù),泛指負(fù)溫度系數(shù)很大的半導(dǎo)體材料或元件,所謂NTC熱敏電阻器就是負(fù)溫度系數(shù)熱敏電阻器。它是以錳、鈷、鎳和銅等金屬氧化物為主要材料,采用陶瓷工藝制造而成的。這些金屬氧化物材料都具有半導(dǎo)體性質(zhì),因?yàn)樵趯?dǎo)電方式上完全類似鍺、硅等半導(dǎo)體材料。溫度低時,這些氧化物材料的載流子(電子和孔穴)數(shù)目少,所以其電阻值較高;隨著溫度的升高,載流子數(shù)目增加,所以電阻值降低。NTC熱敏電阻器在室溫下的變化范圍為100~1M,溫度系數(shù)為2%~6.5%。NTC熱敏電阻器可廣泛應(yīng)用于溫度測量、溫度補(bǔ)償、抑制浪涌電流等場合。
NTC熱敏電阻專業(yè)術(shù)語:(1)零功率電阻值RT()
RT指在規(guī)定溫度T時,采用引起電阻值變化相對于總的測量誤差來說可以忽略不計的測量功率測得的電阻值。
電阻值和溫度變化的關(guān)系式為
RT=RNexpB(1/T1/TN)
RT:在溫度T(K)時的NTC熱敏電阻阻值。RN:在額定溫度TN(K)時的NTC熱敏電阻阻值。T:規(guī)定溫度(K)。
B:NTC熱敏電阻的材料常數(shù),又叫熱敏指數(shù)。exp:以自然數(shù)e為底的指數(shù)(e=2.71828…)。
該關(guān)系式是經(jīng)驗(yàn)公式,只在額定溫度TN或額定電阻阻值RN的有限范圍內(nèi)才具有一定的精確度,因?yàn)椴牧铣?shù)B本身也是溫度T的函數(shù)。
(2)額定零功率電阻值R25()
根據(jù)國家標(biāo)準(zhǔn)規(guī)定,額定零功率電阻值是NTC熱敏電阻在基準(zhǔn)溫度25℃時測得的電阻值R25,這個電阻值就是NTC熱敏電阻的標(biāo)稱電阻值。通常所說的NTC熱敏電阻多少阻值,亦指該值。
(3)材料常數(shù)(熱敏指數(shù))B值(K)B值被定義為
BT1T2RlnT1T2T1RT2
RT1:溫度T1(K)時的零功率電阻值。RT2:溫度T2(K)時的零功率電阻值。T1,T2:兩個被指定的溫度(K)。
對于常用的NTC熱敏電阻,B值的范圍一般為201*K~6000K。
本次實(shí)訓(xùn)所使用NTC(負(fù)溫度系數(shù))熱敏電阻型號為MF58-503-390,其標(biāo)稱阻值R25為50KΩ,材料常數(shù)B值為3900K(見型號的最后的三位數(shù),補(bǔ)0)。
根據(jù)上述公式,我們可以推算出MF58-503-390在0~99℃的電阻值,可以使
用excel表格公式推算,十分方便,當(dāng)然也可以參見課本的數(shù)據(jù)表格。
(4)熱敏電阻偏置電路
VCC171415818192021D0D1D2D3D4D5D6D7ABCVR(+)12熱敏電阻本身是無源元件,只是溫度變化導(dǎo)致電阻值變化,因此使R720K16用時必須外接偏置電路,從而實(shí)現(xiàn)溫度變化導(dǎo)致電壓(電流)的變化。VR(-)最理想的情況是使用電流源串聯(lián)熱敏電阻,電流恒定,電阻變化直接導(dǎo)25IC2ADC0809致熱敏電阻兩端電壓與熱敏電阻呈線性變化,但是電流源電流相對復(fù)雜,262423使用的元器件太多,因此在溫度計這樣精度不高的場合并不適合。
109226OEALESC7簡單的偏置電路可以使用右圖的電路,電路簡單,而且線性化較好,EOCCLK比較適合于簡單的測溫電路。因此我們采用這種偏置電路。IN0IN1IN2IN3IN4IN5IN6IN7272812345RTR8100K
2.AD轉(zhuǎn)換器:
本次實(shí)訓(xùn)使用ADC0809芯片,在設(shè)計電路的時候一定要預(yù)先規(guī)劃好0809的使用方式,具體使用查詢方法、中斷方法還是定時訪問方法可以自己選擇,因此電路的靈活性很強(qiáng),編程也隨著硬件變化而變化。
3.數(shù)碼管顯示
數(shù)碼管顯示使用動態(tài)掃描方式,為了減少干擾和提高單片機(jī)的穩(wěn)定性,驅(qū)動數(shù)碼管使用一個74LS04(非門)驅(qū)動。
六.實(shí)訓(xùn)程序:
ORG0000HLOOP:CLRP2.2SETBP2.2JNBP2.1,$CLRP2.0MOVA,P0SETBP2.0CLRC
SUBBA,#2CH
MOVDPTR,#TEMPTABMOVCA,@A+DPTRSETBP3.1SETBP3.MOVB,#10DIVABMOVR3,AMOVR4,B
MOVDPTR,#DIGITTABMOVA,R3
MOVCA,@A+DPTRMOVP1,ACLRP3.2
ACALLDELAYMOVA,R4
MOVCA,@A+DPTRSETRP3.2MOVP1,ACLRP3.1
ACALLDELAYAJMPLOOPDELAY:MOVR6,#2
D1:MOVR7.#250D2:NOP
DJNZR7,D2DJNZR6,D1RET
DIGITTAB:
DB0C0HDB0F9HDB0A4HDB0B0HDB099HDB092HDB082HDB0F8HDB080HDB090HDB08EH
TEMPTAB:
DB90,89,88,97,100,86,85,84,83,100,82,81,100,80DB79,100,78,77,100,76,75,100,74,100,73,100,72,71DB100,70,100,69,100,68,100,67,100,66,100,65,100,64DB100,63,100,62,100,61,100,60,100,100,59,100,58,100DB57,100,100,56,100,55,100,54,100,100,53,100,52,100DB100,51,100,50,100,100,49,100,48,100,100,47,100,46DB100,100,45,100,100,44,100,43,100,100,42,100,100,41DB100,40,100,100,39,100,38,100,100,37,100,100,36,1DB35,100,100,34,100,100,33,100,32,100,100,31,100,30DB100,100,29,100,28,100,100,27,100,26,100,100,25,100DB24,100,100,23,100,22,100,21,100,20,100,100,19,100DB18,100,17,100,16,100,15,100,14,100,13,100,12,100DB11,100,10,9,100,8,100,7,6,100,5,4,100,3DB2,1,100,0END
七.實(shí)訓(xùn)心得:
通過幾天的實(shí)訓(xùn)和劉志遠(yuǎn)老師精心備課的教導(dǎo),我在理論的基礎(chǔ)上更深刻的掌握了單
片機(jī)的深層內(nèi)容及實(shí)際生活中的應(yīng)用,實(shí)訓(xùn)鍛煉了自己動手能力和思維能力。經(jīng)過這幾個星期的實(shí)訓(xùn),我懂了單片機(jī)溫度顯示器的工作原理:天氣的高低靠熱敏電阻來反應(yīng)出分壓后出來相對應(yīng)的電壓用ADC0809數(shù)模轉(zhuǎn)換的芯片把相對應(yīng)的電壓反饋到單片機(jī)里,單片機(jī)內(nèi)部程序已經(jīng)編譯好溫度的精度(即是分辨率)然后用動態(tài)七段數(shù)碼管顯示出相對應(yīng)的溫度來,最后焊接出實(shí)物,用手緊貼住熱敏電阻溫度隨手貼的時間不斷上升放手后溫度恢復(fù)成室溫的溫度,調(diào)試成功。
實(shí)訓(xùn)讓我對單片機(jī)控制系統(tǒng)的研究產(chǎn)生濃厚的興趣,還讓我了解了怎樣制作單片機(jī)燒錄器及程序的燒錄,在此以后,我會更多的去了解這個奇妙的領(lǐng)域。
擴(kuò)展閱讀:單片機(jī)實(shí)訓(xùn)報告心得
廣東輕工職業(yè)技術(shù)學(xué)院
實(shí)訓(xùn)報告
實(shí)訓(xùn)項(xiàng)目系別:專業(yè):班級:姓名:學(xué)號:指導(dǎo)老師:實(shí)訓(xùn)地點(diǎn):實(shí)訓(xùn)時間:
單片機(jī)實(shí)訓(xùn)電子通信工程系應(yīng)用電子技術(shù)嵌入式091班11222
201*080202316丁向榮、趙慧第三實(shí)訓(xùn)樓C309201*年1月10日至1月1
日
前言
單片機(jī)應(yīng)用技術(shù)是現(xiàn)代電子設(shè)計的核心技術(shù),學(xué)習(xí)單片機(jī)只是就是要將單片機(jī)應(yīng)用到電子產(chǎn)品中,以單片機(jī)為控制核心實(shí)現(xiàn)電子系統(tǒng)所需實(shí)現(xiàn)的功能。單片機(jī)的應(yīng)用能力很多程度上決定了電子類專業(yè)學(xué)生電子設(shè)計與電子應(yīng)用的水平與能力,尤其是高職學(xué)生更是如此。
本項(xiàng)目要求設(shè)計一個簡單的電子時鐘,用六位LED數(shù)碼管實(shí)現(xiàn)電子時鐘的功能,顯示方式為時、分、秒,采用24h(小時)計時方式,使用按鍵開關(guān)可實(shí)現(xiàn)時分調(diào)整。
通過電子鬧鐘項(xiàng)目的課題設(shè)計,讓同學(xué)
們體驗(yàn)項(xiàng)目設(shè)計的要點(diǎn),了解項(xiàng)目設(shè)計的流程,加深對單片機(jī)應(yīng)用知識的學(xué)習(xí),體會團(tuán)隊(duì)協(xié)作的力量所在。為日后的嵌入式專業(yè)學(xué)習(xí)鞏固基礎(chǔ)。
目錄
1.概述…………………………………………………………
1.1系統(tǒng)的作用
1.2系統(tǒng)的功能要求
2.系統(tǒng)硬件設(shè)計………………………………………………..
2.1系統(tǒng)的電路原理2.2電路原理圖2.3各控制按鈕控制功能說明.
3.系統(tǒng)軟件設(shè)計……………………………………………….4.系統(tǒng)調(diào)試…………………………………………………….5.總結(jié)…………………………………………………………
1.概述
1.1系統(tǒng)的作用
本系統(tǒng)是利用AT89C51單片機(jī)結(jié)合6個七段顯示器以24時制“時時分分秒秒”格式顯示時間的電子定時鬧鈴,系統(tǒng)可以設(shè)置8組定時鬧鈴和1組倒計時功能;當(dāng)定時鬧鈴和倒計結(jié)束時,該電子時鐘通過蜂鳴器發(fā)出嘀嘀嘀響聲;本系統(tǒng)還具有半點(diǎn)和整點(diǎn)報時功能,當(dāng)現(xiàn)在時間為半點(diǎn)時會發(fā)出嘀的一聲響,當(dāng)現(xiàn)在時間為整點(diǎn)時報整點(diǎn)數(shù)響聲。由于該電子定時鬧鈴有強(qiáng)大功能可以在多種場合下使用,利用七段顯示器發(fā)光也可以在夜晚和黑暗場合下使用。1.2系統(tǒng)的功能要求
(1)使用6位七段顯示器顯示24時制時間。(2)時間顯示格式為“時時分分秒秒”。(3)定時鬧鈴功能。(4)倒計時功能。
(5)半點(diǎn)報時功能:當(dāng)現(xiàn)在時間為半點(diǎn)時,蜂鳴器發(fā)出“嘀”
一聲響。
(6)整點(diǎn)報時功能:當(dāng)現(xiàn)在時間為整點(diǎn)時,蜂鳴器發(fā)出現(xiàn)在時間整點(diǎn)數(shù)響聲。
(7)當(dāng)任一鬧鈴時間到時發(fā)出連續(xù)“嘀嘀嘀”響聲,七段顯示器顯示“XHHMM”。
(8)當(dāng)?shù)褂嫊r時間到時發(fā)出嘀嘀嘀響聲,七段顯示器顯示“000000”。
(9)定時鬧鈴、倒計時和現(xiàn)在時間模式可以互相切換而不影響各自功能。
(10)具有4個按鍵來進(jìn)行功能設(shè)置,可以設(shè)置當(dāng)前時間、8組鬧鈴的時間設(shè)置和開關(guān)及倒計時的時間設(shè)置。
(11)通過復(fù)位按鍵可以重啟系統(tǒng)。
2.系統(tǒng)的硬件設(shè)計
2.1系統(tǒng)的電路原理
(1)系統(tǒng)以AT89C51單片機(jī)為本電路的核心元件,通過單片機(jī)的P0.0~P0.7引腳和A102J排阻加上拉電壓來驅(qū)動七段顯示器段顯示數(shù)字。
(2)通過單片機(jī)的P2.2~P2.7引腳連接A103J排阻拉升電壓信號,控制6個8050NPN三極管使共陰極七段顯示器連通接地來循
環(huán)點(diǎn)亮6位七段顯示器。
(3)在七段顯示器供電的同時由P0腳驅(qū)動顯示不同數(shù)字。根據(jù)人眼的視覺暫留特點(diǎn),調(diào)整延遲時間使所觀察到時間數(shù)字是穩(wěn)定的數(shù)字。
(4)系統(tǒng)使用了HYDZ蜂鳴器,通過單片機(jī)P3.7引腳連接8550PNP三極管推動發(fā)聲。
(5)電路通過4個按鍵連接單片機(jī)P1.0~P1.3引腳低電平控制系統(tǒng)功能設(shè)置。
(6)單片機(jī)的復(fù)位電路,采用傳統(tǒng)上電復(fù)位,通過Reset按鍵控制。
(7)電路可以通過+5V和+12V直流電供電,當(dāng)使用+12V直流供電時,電路通過1個7805三端穩(wěn)電器、2個35v100μF電解電容和1個50v10μF電解電容轉(zhuǎn)換成+5V直流電供電。
(8)系統(tǒng)通過一個發(fā)光二極管指示電路供電是或正常。
2.2電路原理圖
圖示為數(shù)碼管顯示電路
圖示為主程序電路圖2.3各控制按鈕控制功能說明
KEY0(按鍵INT0):調(diào)時向左移一位數(shù)接P3.0KEY1(按鍵INT1):當(dāng)前位加1接P3.1KEY2(按鍵T0):當(dāng)前位減1接P3.2KEY3(按鍵T1):確定調(diào)時時間接P3.3
S1:切換鬧鐘調(diào)時模式(高電平)接P3.4S2:中斷程序(高電平),中斷當(dāng)前的鬧鐘或整點(diǎn)報時的響應(yīng)接P3.5S3:暫停和開始計時(高電平)接P3.6
BELL:蜂鳴器接P3.7
當(dāng)整點(diǎn)報時和鬧鐘響應(yīng)的時候會響。
LED燈當(dāng)整點(diǎn)報時和鬧鐘響應(yīng)的時候會亮。
P1.0~P1.3分別接LED燈的高四位,P1.4~P1.7分別接燈的低四位。
P0.0~P0.7分別口接數(shù)碼管的段選的a~h位
P2.0~P2.5口分別接數(shù)碼管的位選的6~1位
3.軟件設(shè)計
表一程序內(nèi)存資源分配表
內(nèi)存地址20H21H22H23H24H25H26H27H.027H.127H.227H.327H.427H.527H.6
變量名稱作用說明SECONMINHOUR存放50毫秒計時存放0.5秒計時存放1秒計時存放1分計時存放1小時計時用于中斷1(#6H)用于顯示中的閃爍鬧鐘標(biāo)志位允許響鈴用于標(biāo)志分、秒(1為秒),鬧鐘功能時也一樣鬧鐘總開關(guān)(1為開)用于閃爍標(biāo)志用于閃爍秒表標(biāo)志表一程序內(nèi)存資源分配表
內(nèi)存地址27H.728H-29H30H-35H36H37H-39H40H變量名稱作用說明DISPSP兩組鬧鐘的標(biāo)志位,默認(rèn)值為0用于保存閃爍時的調(diào)時區(qū)地址存放調(diào)時區(qū)地址用于存放要顯示的首字(例如秒)第一組鬧鐘的時分棧底秒表第二組鬧鐘的時分存放鬧鐘調(diào)分地址存放鬧鐘調(diào)時地址鬧鐘組的切換標(biāo)志(默認(rèn)值為0)切換(默認(rèn)值為0)鬧鐘第二組開關(guān)(默認(rèn)值為0)50H-52H53H-55H56H57H2AH.02AH.12AH.2
表二芯片端口資源分配表
芯片端口P1.0P1.1P1.2P1.3P1.7P0P2.2P2.3變量名稱作用說明K1K2K3K4SPK操作鍵K1操作鍵K2操作鍵K3操作鍵K4壓電喇叭控制信號七段顯示器數(shù)數(shù)字形狀控制控制時間小時的十位七段顯示器亮滅控制時間小時的個位七段顯示器亮滅表二芯片端口資源分配表
芯片端口P2.4P2.5P2.6P2.7P3.0P3.1P3.2P3.3
變量名稱作用說明BELL控制時間分鐘的十位七段顯示器亮滅控制時間分鐘的個位七段顯示器亮滅控制時間秒鐘的十位七段顯示器亮滅控制時間秒鐘的個位七段顯示器亮滅蜂鳴器LED半秒閃爍LED顯示第一組鬧鐘是否開啟LED顯示第二組鬧鐘是否開啟表三寄存器資源分配表
組寄存器R0R1第0組R2R3R4R6、R7第1組
作用說明存放秒顯示地址顯示首址#06H#0FEH#3H延時初始值用于keyB、C用于中斷R0R5
流程圖顯示如下:
開始系統(tǒng)初始化電子鐘時分秒顯示中斷允許T0中斷顯示子程序按鍵子程序主程序流程圖
12調(diào)時0.3s閃爍顯示中斷
開始系統(tǒng)初始化判斷中斷S1=1?S2=1?S3=0?進(jìn)入鬧鐘調(diào)時強(qiáng)制退出中斷暫停計時返回計時結(jié)束功能選擇中斷
開始N開啟按鈕中斷?Y繼續(xù)計時進(jìn)入按鈕判斷顯示+1YKey3=0?Y退出按鈕中斷Key3=0?Key1=0?N調(diào)時位左移一位Key2=0?顯示-1調(diào)時程序流程圖
開始保護(hù)現(xiàn)場N中斷6次?Y當(dāng)前調(diào)整位熄滅恢復(fù)現(xiàn)場返回調(diào)時0.3s閃爍顯示中斷
源程序清單:
#include
#defineucharunsignedchar#defineled_dataP0//P0顯示數(shù)碼管當(dāng)前位的數(shù)字#defineled_bitP2//P2控制當(dāng)前數(shù)碼管顯示的位數(shù)
intb;
ucharconls=0x00;//記錄秒分時的個位數(shù)ucharcons=0x00;//記錄秒分時的十位數(shù)ucharcon=0x00;//記錄調(diào)時程序當(dāng)前位數(shù)ucharx=0x00;//記錄鬧鐘
sbitkey0=P3^0;//key0控制調(diào)時位左移以一位sbitkey1=P3^1;//key1控制挑時當(dāng)前位數(shù)字+1sbitkey2=P3^2;//key1控制挑時當(dāng)前位數(shù)字-1sbitkey3=P3^3;//確定當(dāng)前挑時中斷程序sbitstop=P3^4;//用來暫時計時和啟動計時sbitbaojing=P3^5;//用以響應(yīng)整點(diǎn)報時和鬧鐘sbitnaozhong=P3^6;//用來開啟鬧鐘調(diào)時程序sbitbeep=P3^7;//用來終止當(dāng)前整點(diǎn)報時或鬧鐘響應(yīng)
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//數(shù)碼管當(dāng)前位0~9的顯示碼
uchardatascan_con[6]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//數(shù)碼管左到右6個位的顯示
uchardatadis[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00};//數(shù)碼管的顯示碼
uchardatatimedata[6]={0x00,0x00,0x00,0x00,0x00,0x00};//電子鐘的初始時間:00:00:00
uchardatasecclock[6]={0x00,0x00,0x00,0x00,0x00,0x00};//鬧鐘調(diào)時的初始時間:00:00:00uchari;
display();//顯示數(shù)碼管函數(shù)申明keyscan();//調(diào)時按鈕函數(shù)聲明//alarmcolk();
/************************************************************************/
/*1ms延時顯示程序
*/
/************************************************************************/
voiddelay(intz){intx,y;
for(x=0;x
/************************************************************************/
/*初始化子程序*/
/************************************************************************/initializa(){
for(i=0;i{baojing=0;P1=0x00;delay(500);baojing=1;P1=0xff;delay(500);}}}
if(key3==0){con=0;x=0;TR1=0;ET1=0;TR0=1;ET0=1;}//關(guān)閉調(diào)時按鈕中斷,繼續(xù)顯示電子鐘的時間elseif(naozhong==0)//開啟調(diào)時按鈕中斷{EA=0;if(key0==0){delay(10);while(key0==0);if(dis[con]==10){dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];}con++;TR0=0;ET0=0;TR1=1;ET1=1;if(con>=6)//若左移位數(shù)超過6,則關(guān)閉調(diào)時按鈕中斷,繼續(xù)顯示電子鐘的時間{con=0;TR1=0;ET1=0;TR0=1;ET0=1;}}if(con!=0){if(key1==0){delay(10);while(key1==0);timedata[con]++;//當(dāng)前位數(shù)據(jù)+1switch(con){case1:case3:if(timedata[con]>=6)//1、3位滿6進(jìn)一{timedata[con]=0;
}break;case2:case4:if(timedata[con]>=10)進(jìn)一{timedata[con]=0;}break;case5:if(timedata[con]>=3){timedata[con]=0;}break;default:;}dis[con]=timedata[con];dis[6]=0x0a;}}if(con!=0){if(key2==0){delay(10);while(key2==0);switch(con){case1:case3:if(timedata[con]==0){timedata[con]=0x05;的減1處理}else{timedata[con]--;}break;case2:case4:if(timedata[con]==0)
20//2、4位滿10
//5位滿2清零
//1、3位為0時
//當(dāng)前位數(shù)據(jù)-{timedata[con]=0x09;的減1處理}else{timedata[con]--;}break;case5:if(timedata[con]==0){timedata[con]=0x02;減1處理}else{timedata[con]--;}break;default:;}dis[con]=timedata[con];dis[6]=0x0a;}}EA=1;}elseif(naozhong!=0)斷,功能類似上面{EA=0;if(key0==0){delay(10);while(key0==0);if(dis[x]>=10){dis[7]=dis[x];dis[x]=dis[6];dis[6]=dis[7];}x++;TR0=0;ET0=0;TR1=1;ET1=1;if(x>=6){x=0;TR1=0;ET1=0;TR0=1;ET0=1;}
21//2、4位為0時
//當(dāng)前位數(shù)據(jù)-1
//5位為0時的
//減1處理
//送顯示數(shù)據(jù)
//開啟調(diào)時按鈕中
}if(x=6){secclock[x]=0;}break;case2:case4:if(secclock[x]>=10){secclock[x]=0;}break;case5:if(secclock[x]>=3){secclock[x]=0;}break;default:;
}dis[x]=secclock[x];dis[6]=0x0a;}}if(x>=0){if(key2==0){delay(10);while(key2==0);switch(x){
case1:case3:if(secclock[x]==0){secclock[x]=0x05;}else{secclock[x]--;}break;case2:case4:if(secclock[x]==0){secclock[x]=0x09;}else{secclock[x]--;}break;case5:if(secclock[x]==0){secclock[x]=0x02;}else{secclock[x]--;}break;default:;}dis[x]=secclock[x];dis[6]=0x0a;}}EA=1;}
}/********************************************************************
****/
/*0.3s閃爍中斷小程序*/
/************************************************************************/
voidtime_intt1(void)interrupt3{
EA=0;TR1=0;TH1=0X3C;TL0=0XB0;TR1=1;cons++;
if(cons==6)//50msx6=300ms=0.3s{cons=0x00;dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];}
EA=1;}
/************************************************************************/
/*電子鐘顯示進(jìn)位處理程序*/
/************************************************************************/
voidtime_intt0(void)interrupt1{{inti,j,x=0;j=0;
if(naozhong==0&&stop==1){ET0=0;TR0=0;TH0=0X3C;TL0=0XB0;TR0=1;conls++;if(conls==20)//20次延時,秒+1{conls=0x00;timedata[0]++;if(timedata[0]>=10)//10s時,秒十位數(shù)+1{timedata[0]=0;timedata[1]++;if(timedata[1]>=6)//60s時,分+1{//5timedata[1]=0;timedata[2]++;
if(timedata[2]>=10)//10min時,分十位數(shù)+1{timedata[2]=0;timedata[3]++;if(timedata[3]>=6)//60min時,時+1{timedata[3]=0;timedata[4]++;if(beep==0){
for(i=1;i=10)時,時十位數(shù)+1{timedata[4]=0;timedata[5]++;if(timedata[5]==2)//當(dāng)h等于24時,清零{if(timedata[4]==4){timedata[4]=0;timedata[5]=0;}}}}}}}for(b=0;b顯示碼{dis[b]=timedata[b];}}ET0=1;}
/*顯示清零并轉(zhuǎn)換成秒計時(原時間仍然保存)*//*elseif(jishi==1){for(j=0;j=10){timedata[0]=0;timedata[1]++;if(secclock[0]>=10){secclock[0]=0;secclock[1]++;}}if(timedata[1]>=6){timedata[1]=0;timedata[2]++;if(secclock[1]>=6){secclock[1]=0;secclock[2]++;}}if(timedata[2]>=10)
26}}
{timedata[2]=0;if(secclock[2]>=10){secclock[2]=0;secclock[3]++;}}}}for(b=0;b
5.總結(jié)
AT89C51單片機(jī)作為嵌入式專業(yè)的入門基礎(chǔ),受到行業(yè)內(nèi)的高度重視。作為一名高職高專的學(xué)生,最重要的是實(shí)際操作能力,而對于修讀嵌入式專業(yè)的高職學(xué)生更是如此。單片機(jī)實(shí)訓(xùn),敲開了同學(xué)們對知識求知若渴的大門。
本周的單片機(jī)實(shí)訓(xùn)項(xiàng)目課題是定時鬧鈴。剛接到課題時感覺毫無壓力,覺得自己的能力應(yīng)該很快就可以完成,因?yàn)楸卷?xiàng)目要實(shí)現(xiàn)的功能只不過是同等于價值2元的電子鬧鐘!
但是現(xiàn)實(shí)卻擊垮了浮夸的我們。程序設(shè)計無從入手,調(diào)試錯誤,單片機(jī)無響應(yīng)……老師在講解課題任務(wù)的時候確實(shí)是很簡單,清晰明了。但是真正到我們設(shè)計的時候,錯誤接一連二。由于對匯編語言掌握不足,最終放棄匯編語言改換C語言編寫程序。函數(shù)調(diào)用,設(shè)計循環(huán)語句,調(diào)用數(shù)組函數(shù)……
一步步慢慢深入,一點(diǎn)點(diǎn)漸漸掌握。最終,經(jīng)過小組成員不停地編碼,測試,運(yùn)行,一個小項(xiàng)目終于完成。
項(xiàng)目雖然完成,但通過本次實(shí)訓(xùn)確實(shí)感觸不少。于嵌入式行業(yè)而言,單片機(jī)談得上是基礎(chǔ),但是就連這樣一門基礎(chǔ)我們也沒有熟悉掌握,對于日后ARM的學(xué)習(xí)就更是困難。不過在實(shí)訓(xùn)中我們也學(xué)會了很多。項(xiàng)目設(shè)計、功能選定、搭建硬件工作環(huán)境、編寫軟件程序,程序下載測試、程序最終實(shí)現(xiàn),以及在項(xiàng)目設(shè)計中的團(tuán)隊(duì)分工與合作。
嵌入式行業(yè)在我國日趨發(fā)展成熟,而嵌入式行業(yè)的人才
卻是十分緊缺,這就取決于嵌入式行業(yè)對技術(shù)型人才要求高的特點(diǎn)。要想在嵌入式行業(yè)站穩(wěn)腳,就必須要痛下苦工,敢于鉆研。相信通過日后的專業(yè)知識學(xué)習(xí),我們會在嵌入式學(xué)習(xí)的道路上越走越遠(yuǎn)。
友情提示:本文中關(guān)于《單片機(jī)實(shí)訓(xùn)報告》給出的范例僅供您參考拓展思維使用,單片機(jī)實(shí)訓(xùn)報告:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。