第一篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì) 簡(jiǎn)易報(bào)警系統(tǒng)設(shè)計(jì)(定稿)
課程設(shè)計(jì)(論文)
題 目 名 稱(chēng)
簡(jiǎn)易防盜系統(tǒng)設(shè)計(jì)
課 程 名 稱(chēng)
單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
學(xué) 生 姓 名
學(xué)
號(hào)
系、專(zhuān)
業(yè)
信息工程系、信息工程類(lèi)
指 導(dǎo) 教 師
2013年 6 月 28 日
目錄
1概 要﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ 3
2設(shè)計(jì)指標(biāo)與要求﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ 3 3設(shè)計(jì)方案與論證﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ 3 4電路設(shè)計(jì)原理與流程圖﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌5采用的主要元器件﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌6編程實(shí)現(xiàn)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌7仿真結(jié)果與分析﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌8總結(jié)與致謝﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
9參考文獻(xiàn)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
概 要
傳感技術(shù)是21世紀(jì)人們?cè)诟咝录夹g(shù)發(fā)展方面爭(zhēng)奪的一個(gè)制高點(diǎn),各個(gè)發(fā)達(dá)國(guó)家都將傳感技術(shù)視為高新技術(shù)發(fā)展的關(guān)鍵。從20世紀(jì)80年代起,基于傳感技術(shù)的光電防盜系統(tǒng)也得到了高速的發(fā)展,最早的非可見(jiàn)光侵物探測(cè)器,有發(fā)射機(jī) 將一個(gè)編碼信號(hào)送到一個(gè) IR LED中。此LED的輸出聚成一束很窄的光束,并使其對(duì)準(zhǔn)遠(yuǎn)距離仿制的接收機(jī)中的一只匹配的IR光敏探測(cè)器。此系統(tǒng)是以針尖視線的原理來(lái)工作的,它可以被任何一個(gè)進(jìn)入到發(fā)射機(jī)與接收機(jī)透視鏡之間瞄準(zhǔn)直線上的大于針尖的物體所觸發(fā)。隨后又出現(xiàn)了給予被動(dòng)是紅外傳感技術(shù)的被動(dòng)式紅外入侵報(bào)警器,它能可靠地將運(yùn)動(dòng)著的物體和飄落著的物體加以區(qū)別,同時(shí)它還具有強(qiáng)大的監(jiān)控范圍,隱蔽性好,抗干擾能力強(qiáng),和誤報(bào)率低等特點(diǎn)。
本設(shè)計(jì)采用光電傳感器檢測(cè)入侵者,其基本原理為:傳感器感應(yīng)到入侵者,將其轉(zhuǎn)換成超低頻信號(hào),經(jīng)電路放大,輸出。同時(shí)由接受裝置根據(jù)接受到的信號(hào)得到高低電平,輸出。經(jīng)判斷,再將報(bào)警信號(hào)通過(guò)電路輸入到單片機(jī)的接口上,由單片機(jī)決定是否對(duì)報(bào)警信號(hào)進(jìn)行觸發(fā)。
2設(shè)計(jì)指標(biāo)與要求
采用光電式傳感器檢測(cè)入侵者,用蜂鳴器作為報(bào)警器的輸出,報(bào)警距離≥10M;
3設(shè)計(jì)方案與論證
系統(tǒng)主控部分采用AT89C51芯片,當(dāng)光電感應(yīng)器感受到外部有入侵物時(shí),發(fā)出信號(hào),單片機(jī)接收到信號(hào)時(shí),采用延時(shí)抖動(dòng),再次檢測(cè)是否還有報(bào)警信號(hào),如果有報(bào)警信號(hào),啟動(dòng)報(bào)警器,紅燈全部亮,報(bào)警結(jié)束后,紅燈滅,綠燈亮,如果誤報(bào)警,可以采用外部中斷0使人工停止報(bào)警,如果光電感應(yīng)器沒(méi)能檢測(cè)到入侵物,可以采用外部中斷1人工報(bào)警,人工報(bào)警時(shí)流水燈亮,蜂鳴器響!
因?yàn)槿绻霉怆姼袘?yīng)器來(lái)檢測(cè)入侵者,在仿真里無(wú)法看到現(xiàn)象,故采用開(kāi)關(guān)來(lái)模擬光電感應(yīng)器。
4電路設(shè)計(jì)的原理與流程圖
(1)電路設(shè)計(jì)的原理
首先給單片機(jī)的P1.0安裝一個(gè)開(kāi)關(guān),用來(lái)模擬光電感應(yīng)器。然后給單片機(jī)的P3.1腳通過(guò)三級(jí)管接一個(gè)蜂鳴器,用于當(dāng)有報(bào)警信號(hào)時(shí)用來(lái)報(bào)警。再給P3.0接4個(gè)LED燈,用于報(bào)警時(shí)顯示報(bào)警燈作用。再給P3.2接一個(gè)按鍵,用于當(dāng)光電感應(yīng)誤報(bào)警時(shí),可以人工中斷報(bào)警。給P3.3接一個(gè)按鍵,用于當(dāng)光電感應(yīng)沒(méi)有報(bào)警時(shí),按下可以人工報(bào)警。
(2)流程圖
開(kāi)始?jí)喝攵褩3绦虺跏蓟疨1.2=1P3.0=1P3.1=0P2=00HP1.2清零NP1.0=0?P1.2清零出棧N返回P1.0=0?P1.2=1P3.0取反P3.1取反20H=50TR0=1NTF0=1?Y壓入堆棧P1.2=1R7=5P2=0FFH調(diào)用延時(shí)子程序NP2=00H調(diào)用延時(shí)子程序P3.1清零P1=0FFH調(diào)用延時(shí)子程序調(diào)用延時(shí)子程序YR7-1=0?YP3.1=1調(diào)用延時(shí)子程序30H=50TR0=1NTF0=1?YTF0清零TF0=0重裝系統(tǒng)NN重裝系統(tǒng)30H-1=0?P3.1=0P1.2=0出棧P2=00H返回結(jié)束YN20H-1=0?YP3.0=1P3.1=0P1.2=0
5采用的主要元器件
主要元器件:AT89C51,NPN,RES,CAP,CAP-ELEC,BUTTON,BUZZER, CRYSTAL 6編程實(shí)現(xiàn)
ORG 0000H LJMP MAIN ORG 0003H LJMP ZT0 ORG 0013H LJMP ZT1 ORG 0100H MAIN:MOV TMOD,#01 MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB EX0 SETB IT0 SETB EX1 SETB PX0 SETB IT1 MOV SP,#60 CLR P3.1 MOV P1,#0FFH MOV P2,#00H CLR P1.2 LP:JNB P1.0,LA LJMP LP LA:LCALL DS01 JNB P1.0,ALARM LJMP LP DS01:MOV R1,#0FFH D1:MOV R2,#0FFH D2:NOP DJNZ R2,D2 DJNZ R1,D1 RET ALARM:SETB P1.2 CPL P3.0 CPL P3.1 MOV 20H,#50 SETB TR0 L2:JBC TF0,L1 LJMP L2 L1:CLR TF0 MOV TL0,#0B0H MOV TH0,#3CH DJNZ 20H,L2 SETB P3.0 CLR P3.1 CLR P1.2 LJMP LP ZT0:PUSH ACC SETB P1.2 SETB P3.0 CLR P3.1 LCALL DS01 CLR P1.2 POP ACC RETI ZT1:PUSH ACC SETB P1.2 MOV R7,#05 DQ:MOV P2,#0FFH LCALL DS01 MOV P2,#00H LCALL DS01 DJNZ R7,DQ SETB P3.1 LCALL DS01 MOV 30H,#50 SETB TR0 L4:JBC TF0,L3 SJMP L4 L3:CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ 30H,L4 CLR P3.1 CLR P1.2 POP ACC MOV P2,#00H RETI END
7仿真結(jié)果與分析
在系統(tǒng)正常的情況下,系統(tǒng)不斷檢測(cè)是否有警報(bào)信號(hào),當(dāng)檢測(cè)有警報(bào)信號(hào)時(shí),系統(tǒng)轉(zhuǎn)入報(bào)警,從而蜂鳴器響。8 總結(jié)
總結(jié)
課程設(shè)計(jì)是我們理論聯(lián)系實(shí)際的最好的途徑之一,讓我們有機(jī)會(huì)把課本上學(xué)到的知識(shí)運(yùn)用到實(shí)際生活中。目前單片機(jī)在工業(yè)檢測(cè)領(lǐng)域中得到了廣泛的應(yīng)用,在我們平常的生活中也是隨處可見(jiàn),包括我們?nèi)粘I钪须S處可見(jiàn)的交通燈、鬧鐘等都含有單片機(jī)作為一個(gè)主要的部件,懂得并熟悉掌握單片機(jī)的運(yùn)用技術(shù)常有用的。通過(guò)這次課程設(shè)計(jì)使對(duì)單片機(jī)語(yǔ)言的理解和掌握上有了很大的進(jìn)步,以前所了解的單片機(jī)語(yǔ)言?xún)H限于一些片面的知識(shí),通過(guò)這次編程,將這些零零碎碎的知識(shí)匯集起來(lái),編寫(xiě)出了一個(gè)完整的系統(tǒng),并且對(duì)單片機(jī)語(yǔ)言的應(yīng)用能力有了極大的提高。在這次課程設(shè)計(jì)的過(guò)程中,我深深體會(huì)到團(tuán)隊(duì)合作的精神是極其重要的。因?yàn)樯碓谝粋€(gè)團(tuán)隊(duì),有了困難大家一起解決,減少了壓力,同時(shí)拓展了思維,交換了意見(jiàn),一個(gè)人的思想當(dāng)被接受和了解時(shí),我們有了更多的思想關(guān)于一個(gè)問(wèn) 題,我想這些都是作為一個(gè)團(tuán)隊(duì)的好處。經(jīng)過(guò)此次課程設(shè)計(jì),我們經(jīng)歷了喜,怒,哀,樂(lè)。同時(shí)我們也對(duì)明年的畢業(yè)設(shè)計(jì)有了一定的想法和實(shí)現(xiàn)自己想法的決心.9參考文獻(xiàn)
[1] 李泉溪.單片機(jī)原理與應(yīng)用實(shí)例仿真[M].北京:北京航空航天大學(xué)出版社,2009.[2] 江世明.基于Proteus的單片機(jī)應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2009.[3] 周潤(rùn)景,張麗娜.基于Proteus的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真[M].北京:北京航空航天大學(xué)出版社,2006.[4] 張友德.單片微型計(jì)算機(jī)原理、應(yīng)用與實(shí)驗(yàn)[M].上海:復(fù)旦大學(xué)出版社,2003.
第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)-簡(jiǎn)易數(shù)字鐘的設(shè)計(jì)
單片機(jī)課程設(shè)計(jì)報(bào)告
課程設(shè)計(jì)題目:簡(jiǎn)易數(shù)字時(shí)鐘
學(xué)生姓名:** 學(xué)號(hào):********** 學(xué)院:****** 專(zhuān)業(yè)班級(jí):**********
指導(dǎo)老師:**
2014年5月13日
摘要:
本設(shè)計(jì)采用了STC公司生產(chǎn)的STC89C52RC型單片機(jī)(80C51內(nèi)核)設(shè)計(jì)了一個(gè)單片機(jī)最小系統(tǒng),加上maxim232和usb轉(zhuǎn)RS232線組成的下載電路,以及共陰極4位一體數(shù)碼管和按鍵等外圍電路構(gòu)成了一個(gè)簡(jiǎn)易的數(shù)字鐘,具有顯示年、月、日、時(shí)、分、秒的功能,且年、月、日、時(shí)、分、秒每一個(gè)參數(shù)都可以自行設(shè)置,以實(shí)現(xiàn)時(shí)間的校正,總體來(lái)說(shuō)實(shí)現(xiàn)了一個(gè)數(shù)字時(shí)鐘的應(yīng)有功能。
關(guān)鍵詞:80C51系列單片機(jī)、單片機(jī)最小系統(tǒng)、時(shí)鐘定時(shí)、下載電路、4位一體數(shù)碼管顯示
一、設(shè)計(jì)任務(wù) 簡(jiǎn)易數(shù)字時(shí)鐘:自制一個(gè)單片機(jī)最小系統(tǒng),包括串口下載、復(fù)位電路,采用內(nèi)部定時(shí)器計(jì)時(shí),或者采用外部時(shí)鐘芯片DS1302,設(shè)計(jì)一個(gè)具有秒、分、日、月、年的數(shù)字時(shí)鐘,采用四位一體數(shù)碼管顯示相關(guān)信息,秒、分顯示一頁(yè),日、月顯示一頁(yè),年顯示一頁(yè)。
二、方案選擇
2.1、采用uln2003驅(qū)動(dòng)數(shù)碼管
由于單片機(jī)的I/O口的拉電流只有大約1mA左右,不足以提供4-5mA的電流以驅(qū)動(dòng)數(shù)碼管上的led,故需要為數(shù)碼管提供一個(gè)驅(qū)動(dòng)電路,如果采用三極管的話由于數(shù)碼管有7段(實(shí)際是8段,但本設(shè)計(jì)只需要使用7段),需要7個(gè)三極管來(lái)驅(qū)動(dòng),給焊接部分增加了工作量,故可考慮采用ULN2003以給數(shù)碼管提供驅(qū)動(dòng)電流。
Uln2003的內(nèi)部原理圖
ULN2003 是高耐壓、大電流復(fù)合晶體管陣列,由七個(gè)硅NPN 復(fù)合晶體管組成。
該電路的特點(diǎn)如下:[3]
ULN2003 的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路
直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)處理的數(shù)據(jù)。
ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還
可以在高負(fù)載電流并行運(yùn)行。
ULN2003 采用DIP—16 或SOP—16 塑料封裝。
內(nèi)部還集成了一個(gè)消線圈反電動(dòng)勢(shì)的二極管,可用來(lái)驅(qū)動(dòng)繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動(dòng)電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達(dá)林頓管組成驅(qū)動(dòng)電路。ULN是集成達(dá)林頓管IC,內(nèi)部還集成了一個(gè)消線圈反電動(dòng)勢(shì)的二極管,它的輸出端允許通過(guò)電流為200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶(hù)輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開(kāi)路輸出,輸出電流大,故可直接驅(qū)動(dòng)繼電器或固體繼電器,也可直接驅(qū)動(dòng)低壓燈泡。通常單片機(jī)驅(qū)動(dòng)ULN2003時(shí),上拉2K的電阻較為合適,同時(shí),COM引腳應(yīng)該懸空或接電源。
ULN2003是一個(gè)非門(mén)電路,包含7個(gè)單元,單獨(dú)每個(gè)單元驅(qū)動(dòng)電流最大可達(dá)350mA,9腳可以懸空。
比如1腳輸入,16腳輸出,你的負(fù)載接在VCC與16腳之間,不用9腳。
ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動(dòng)繼電器等負(fù)載。
輸入5VTTL電平,輸出可達(dá)500mA/5V。
ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。該電路的特點(diǎn)如下: ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)處理的數(shù)據(jù)。
ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類(lèi)要求高速大功率驅(qū)動(dòng)的系統(tǒng)。
2.2、直接用單片機(jī)加上拉電阻的P0口驅(qū)動(dòng)數(shù)碼管
對(duì)于51單片機(jī)的4個(gè)IO口來(lái)說(shuō)有一個(gè)IO口與其他三個(gè)有點(diǎn)不同,那就是P0口,由于P0口(在作為輸出IO口時(shí))是OC門(mén)在最小系統(tǒng)中需要加一個(gè)上拉電阻,由此,可以用P0口作為數(shù)碼管的驅(qū)動(dòng)(可以通過(guò)合理配置上拉電阻的大小以提供足夠的驅(qū)動(dòng)電流)
51單片機(jī)的P0口內(nèi)部電路圖
由于相對(duì)來(lái)說(shuō)接一個(gè)排阻便宜可靠,且方便,且也足以提供驅(qū)動(dòng)數(shù)碼管的電流,故采用方案2:直接用單片機(jī)加上拉電阻的I/O口驅(qū)動(dòng)數(shù)碼管
三、電路原理圖
簡(jiǎn)易數(shù)字鐘原理圖
3.1最小系統(tǒng)
本設(shè)計(jì)最小系統(tǒng)與一般的51最小系統(tǒng)設(shè)計(jì)保持一致性,晶振電路為12M的晶體振蕩器搭配兩個(gè)30pF的電容組成,復(fù)位電路由5v接一個(gè)開(kāi)關(guān)與電容并聯(lián)再與電阻串聯(lián)后接地構(gòu)成,下載電路采用的是串口下載,為電腦上連一根usb轉(zhuǎn)串口線,然后串口練到電路上,再通過(guò)max232芯片進(jìn)行電平轉(zhuǎn)換將RS232串口的電平轉(zhuǎn)換為單片機(jī)的5v以進(jìn)行電平匹配。3.2共陰極4位一體數(shù)碼管
四位一體數(shù)碼管
數(shù)碼管的顯示由段選和位選控制,段選為圖片中的每一位“8”型上的a、b、c、d、e、f、g、h共8段構(gòu)成。位選有4個(gè)引腳,分別對(duì)應(yīng)于數(shù)碼管的4個(gè)位。
四、程序代碼 如下:
#include
//延時(shí)10ms {
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);} void main(){ IE=0x8F;//開(kāi)總中斷,開(kāi)定時(shí)T0,開(kāi)定時(shí)T1,開(kāi)外部中斷0,開(kāi)外部中斷1 IP=0x00;//設(shè)置中斷優(yōu)先級(jí)均為低優(yōu)先級(jí),默認(rèn)優(yōu)先級(jí)為:調(diào)整時(shí)間》定時(shí)》設(shè)置顯示頁(yè) IT0=1;IT1=1;TMOD=0x11;//定時(shí)器0工作于工作方式1,定時(shí)工作方式,由運(yùn)行控制位TR1啟動(dòng)定時(shí)器;定時(shí)器1工作于工作方式1,定時(shí)工作方式,由運(yùn)行控制位TR1啟動(dòng)定時(shí)器 P2=0Xfd;
TH0 = 0x3C;
TL0 = 0xB0;
{ switch(play){ case 1 :
{
if(anjian1==0)
{
{ delay();delay();if(anjian1==0)anjian11=anjian1;if(anjian1 &!anjian11)hour++;
} TH1=0xD8;TL1=0xF0;TR0=1;TR1=1;
//定時(shí)器T0用于20分之一秒的定時(shí),定時(shí)器T1用于數(shù)碼管的動(dòng)態(tài)顯示,外部中斷0為調(diào)整時(shí)間,外部中斷1為設(shè)置顯示頁(yè)
for(;;)else if(anjian2==0)
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
hour--;
else if(anjian3==0)
{
delay();
if(anjian3==0)
anjian33=anjian3;
if(anjian3 &!anjian33)
min++;
else if(anjian4==0)
{
delay();
if(anjian4==0)
anjian44=anjian4;
if(anjian4 &!anjian44)
min--;
}
break;case 2 : {
if(anjian1==0)
{
delay();
if(anjian1==0)
anjian11=anjian1;
if(anjian1 &!anjian11)
mon++;
else if(anjian2==0)
{
delay();
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
mon--;
else if(anjian3==0)
{
delay();if(anjian3==0)}
}
}
}
}
anjian33=anjian3;
if(anjian3 &!anjian33)
day++;
else if(anjian4==0)
{
delay();
if(anjian4==0)
anjian44=anjian4;
if(anjian4 &!anjian44)
day--;
}
break;case 3 : {
if(anjian1==0)
{
delay();
if(anjian1==0)
anjian11=anjian1;
if(anjian1 &!anjian11)
year++;
else if(anjian2==0)
{
delay();
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
year--;
else if(anjian3==0)
{
delay();
if(anjian3==0)
anjian33=anjian3;
if(anjian3 &!anjian33)
year++;
else if(anjian4==0)
{
delay();
if(anjian4==0)anjian44=anjian4;}
}
}
}
}
if(anjian4 &!anjian44)
year--;
}
break;case 0 : {
if(anjian1==0)
{
delay();
if(anjian1==0)
anjian11=anjian1;
if(anjian1 &!anjian11)
sec++;
else if(anjian2==0)
{
delay();
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
sec--;
else if(anjian3==0)
{
delay();
if(anjian3==0)
anjian33=anjian3;
if(anjian3 &!anjian33)
sec++;
else if(anjian4==0)
{
delay();
if(anjian4==0)
anjian44=anjian4;
if(anjian4 &!anjian44)
sec--;
} break;}
switch(play){
}
}
}
}
} case 1 : { led[0]=hour/10;
};}}
void service_int1()interrupt 2 using 1 { if(play==3)play=0;else play++;} void service_t0()interrupt 1 using 1
//實(shí)現(xiàn)1s的延時(shí)以及sec到min,min到hour,hour到day,day到month,month到y(tǒng)ear,year到next_year的轉(zhuǎn)換 {
TH0 = 0x3C;if(j==20){
j=0;sec++;if(sec>=60)
TL0 = 0xB0;
led[1]=hour%10;led[2]=min/10;led[3]=min%10;
} break;
led[1]=mon%10;led[2]=day/10;led[3]=day%10;
} case 2 : { led[0]=mon/10;break;
led[0]=year/1000;led[1]=((year%1000)/100);led[2]=((year%100)/10);led[3]=(year%10);
} case 3 : {
break;
led[1]=16;led[2]=sec/10;led[3]=sec%10;
} case 0 : { led[0]=16;break;
}
else { { sec=0;min++;if(min>=60){ min=0;hour++;if(hour>=24){hour=0;day++;if(day>=31){ day=1;mon++;if(mon>=13){ mon=1;year++;} } } } } } j++;} void service_t1()interrupt 3 using 1 //定時(shí)器1實(shí)現(xiàn)了數(shù)碼管的動(dòng)態(tài)顯示 {
TH1=0xFC;TL1=0x18;if(P2==0xfd){P2=0xfb;P0=table[led[2]];} else if(P2==0xfb){ P2=0xf7;P0=table[led[3]];} else if(P2==0xf7){P2=0xfe;P0=table[led[0]];
} else if(P2==0xfe){P2=0xfd;P0=table[led[1]];} }
五、制作實(shí)物圖
六、心得收獲
經(jīng)過(guò)本次課程設(shè)計(jì),我將課本上的知識(shí)轉(zhuǎn)化為了實(shí)際的實(shí)物,更加深入的理解了單片機(jī)這,加強(qiáng)了自己的編程能力,與軟硬件調(diào)試能力,總體來(lái)說(shuō),還是收獲很大的。
第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)_簡(jiǎn)易頻率計(jì)數(shù)器..
單 片 機(jī) 課 程 設(shè) 計(jì)
簡(jiǎn)易頻率計(jì)數(shù)器
1.實(shí)驗(yàn)?zāi)康?/p>
1.要求學(xué)生具有制作調(diào)試單片機(jī)最小系統(tǒng)及外設(shè)的能力,能夠掌握單片機(jī)內(nèi)部資源的使用。
2.熟練掌握焊接技術(shù)的基礎(chǔ)上,能熟練使用單片機(jī)軟件開(kāi)發(fā)環(huán)境Keil C51編程調(diào)試,并使用STC ISP調(diào)試工具采用串口下載方式聯(lián)調(diào)制作的單片機(jī)最小系統(tǒng)。
二、實(shí)驗(yàn)要求
自制一個(gè)單片機(jī)最小系統(tǒng),包括串口下載、復(fù)位電路,采用外部計(jì)數(shù)器T0或T1作為外部頻率輸入,外部頻率由信號(hào)源提供,計(jì)算出來(lái)的頻率顯示在四位一體的數(shù)碼管上。
三、實(shí)驗(yàn)器材
89C54RD芯片(與89c51芯片管腳和指令共用,只是內(nèi)部存儲(chǔ)單元有差異)一個(gè),晶振一個(gè),電容3個(gè),電阻3個(gè),12個(gè)10千歐姆電阻,4位一體共陰數(shù)碼顯示管一個(gè),按鈕1個(gè),導(dǎo)線若干。
四、實(shí)驗(yàn)原理 1.芯片介紹
AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。
1.主要特性: ·與MCS-51 兼容 ·4K字節(jié)可編程閃爍存儲(chǔ)器 壽命:1000寫(xiě)/擦循環(huán) 數(shù)據(jù)保留時(shí)間:10年 ·全靜態(tài)工作:0Hz-24Hz ·三級(jí)程序存儲(chǔ)器鎖定 ·128*8位內(nèi)部RAM ·32可編程I/O線 ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器 ·5個(gè)中斷源 ·可編程串行通道 ·低功耗的閑置和掉電模式 ·片內(nèi)振蕩器和時(shí)鐘電路 2.管腳說(shuō)明:
VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 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ù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。
/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。3.振蕩器特性:
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。
4.芯片擦除:
整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。
2、最小系統(tǒng)電路的組成
由電源、復(fù)位及振蕩電路、四位一體數(shù)碼管顯示電路、按鈕及LED電路。
復(fù)位及振蕩電路
復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩部分組成。電阻給電容充電,電容的電壓緩慢上升直到vcc,到vcc時(shí)芯片復(fù)位腳近似低電平,于是芯片復(fù)位,接近vcc時(shí)芯片復(fù)位腳近高電平,于是芯片停止復(fù)位,復(fù)位完成。
AT89C51系列單片機(jī)為高電平復(fù)位,通常在復(fù)位引腳RST上連接一個(gè)電容到VCC,再連接一個(gè)電阻到GND,由此形成一個(gè)RC充放電回路保證單片機(jī)在上電時(shí)RST腳上有足夠時(shí)間的高電平進(jìn)行復(fù)位,隨后回歸到低電平進(jìn)入正常工作狀態(tài),這個(gè)電阻和電容的典型值為10K和10uF。
按鍵復(fù)位就是在復(fù)位電容上并聯(lián)一個(gè)開(kāi)關(guān),當(dāng)開(kāi)關(guān)按下時(shí)電容被放電、RST也被拉到高電平,而且由于電容的充電,會(huì)保持一段時(shí)間的高電平來(lái)使單片機(jī)復(fù)位。使用6MHz的晶體振蕩器作為振蕩源,由于單片機(jī)內(nèi)部帶有振蕩電路,所以外部只要連接一個(gè)晶振和兩個(gè)電容即可,電容容量一般在15pF至50pF之間。如下圖所示
數(shù)碼管顯示電路
利用單片機(jī)的T0,T1計(jì)數(shù)定時(shí)器功能,來(lái)完成對(duì)輸入信號(hào)進(jìn)行率計(jì)數(shù),計(jì)數(shù)結(jié)果通過(guò)4位動(dòng)態(tài)數(shù)碼管顯示出來(lái),能對(duì)0到9999HZ的方波信號(hào)頻率進(jìn)行準(zhǔn)確計(jì)數(shù)。如下圖所示
3、軟件設(shè)計(jì)
根據(jù)設(shè)計(jì)項(xiàng)目所需功能,我們先進(jìn)行初始化,在待機(jī)狀態(tài)下,采集頻率。然后檢測(cè)是否有按鈕按下,若按鈕按下,則數(shù)碼管顯示所采集的頻率,再按下鍵0時(shí)則不顯示。系統(tǒng)實(shí)現(xiàn)所有功能,其程序框圖如圖所示。
4、設(shè)計(jì)源程序 #include
unsigned char volatile T0Count;//定時(shí)器0的中斷次數(shù) unsigned char volatile T1Count;unsigned char code table[] //定時(shí)器1的中斷次數(shù)
={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示段碼值為123456789 unsigned char code temp[] = {0xfe,0xfd,0xfb,0xf7};//數(shù)碼管選通 unsigned long sum;//1S內(nèi)脈沖總個(gè)數(shù) unsigned char Led[4];//Led顯示緩存
void delay(unsigned int num){ //軟件延時(shí)
while(--num);//定時(shí)器0初始化 } void init(void){ TMOD=0x51;//T1定時(shí)器0工作于方式1,定時(shí)器1計(jì)數(shù) TH0=(65536-50000)/256;//定時(shí)50ms TL0=(65536-50000)%256;TH1=0x00;TL1=0x00;} void disp(void){ //數(shù)碼顯示
unsigned char i;for(i=0;i<4;i++){
P2=temp[i];//片選
P0=table[Led[i]];//取數(shù)據(jù)顯示
delay(100);//延時(shí)1毫秒
} } void main(void){ EA=1;//開(kāi)總中斷
init();//初始化定時(shí)器
TR0=1;//定時(shí)器開(kāi)始工作
TR1=1;ET1=1;//開(kāi)T0中斷
ET0=1;while(1){
if(int_flag==1){
int_flag=0;
sum=TL1+TH1*256+T1Count*65536;//計(jì)算個(gè)數(shù)
//將數(shù)據(jù)格式化,轉(zhuǎn)化成可顯示的BCD碼
Led[3]=sum%10000/1000;//顯示千位
Led[2]=sum%1000/100;//顯示百位
Led[1]=sum%100/10;//顯示十位
Led[0]=sum%10;//顯示個(gè)位
T0Count=0x00;
T1Count=0;
TH1=0x00;
TL1=0x00;
TR1=1;
}
內(nèi)脈沖1S
disp();} } void int_t0(void)interrupt 1{ TH0=(65535-50000)/256;TL0=(65536-50000)%256;T0Count++;if(T0Count==20){
TR1=0;
int_flag=1;
T0Count=0x00;} } void int_T1(void)interrupt 3{ T1Count++;
5、設(shè)計(jì)仿真圖 輸入正弦波頻率為1324HZ的仿真情況; 輸入方波頻率為4216HZ的仿真情況;
6、實(shí)物圖(未上電)
六、實(shí)驗(yàn)結(jié)果分析
在實(shí)驗(yàn)電路板驗(yàn)收的時(shí)候,對(duì)于給定的輸入信號(hào),數(shù)碼管顯示的頻率示數(shù)與實(shí)際信號(hào)源給定的頻率有大約20HZ的偏差,產(chǎn)生偏差的原因可能有:1.電路電容的選取不恰當(dāng);2.焊接電路板的時(shí)候,因?yàn)椴僮鞑磺‘?dāng),某些焊點(diǎn)的焊接不到位;3.實(shí)際器件與仿真所用到的的元件有差別。
七、心得體會(huì)
通過(guò)這次課程設(shè)計(jì),我熟悉了Keil C51編程與PROTUSE的使用,對(duì)單片機(jī)的使用有了更深刻的了解,在焊接與測(cè)試過(guò)程中要有大局觀,注意布局和布線。頻率計(jì)的設(shè)計(jì)讓我更好的了解如何應(yīng)用單片機(jī)的定時(shí)器計(jì)數(shù)器模塊。其中最重要的是分析問(wèn)題解決問(wèn)題的能力,在我看來(lái),寫(xiě)程序并不難,重要的是把程序優(yōu)化,無(wú)論是在節(jié)省硬件資源,還是提高數(shù)據(jù)的準(zhǔn)確度來(lái)看,都需要下一些功夫把它做到最好。通過(guò)這次課程設(shè)計(jì)使我明白了自己原來(lái)知識(shí)還比較欠缺。學(xué)習(xí)是一個(gè)長(zhǎng)期積累的過(guò)程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識(shí)和綜合素質(zhì)。
第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)秒表系統(tǒng)設(shè)計(jì)
單片機(jī)課程設(shè)計(jì)
學(xué)院:信息工程專(zhuān)業(yè):
——秒表系統(tǒng)設(shè)計(jì)
一,設(shè)計(jì)目的:
1,熟悉51單片機(jī)的內(nèi)部結(jié)構(gòu),計(jì)數(shù)器,中斷控制器等的用法,來(lái)實(shí)現(xiàn)簡(jiǎn)單的控制應(yīng)用系統(tǒng)。
2,通過(guò)簡(jiǎn)單系統(tǒng)的設(shè)計(jì)了解單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)過(guò)程及其相應(yīng)的調(diào)試程序過(guò)程。
二,設(shè)計(jì)任務(wù):
實(shí)驗(yàn)通過(guò)單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)原理,設(shè)計(jì)簡(jiǎn)單的計(jì)時(shí)器系統(tǒng),擁有正確的計(jì)時(shí)、暫停、清零、快加功能,并同時(shí)可以用數(shù)碼管顯示,在現(xiàn)實(shí)生活中應(yīng)用廣泛,具有現(xiàn)實(shí)意義。
三,設(shè)計(jì)題目:
秒表系統(tǒng)設(shè)計(jì)——用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“開(kāi)始”按鍵和一個(gè)“復(fù)位”按鍵。調(diào)用子程序:暫停鍵子程序,計(jì)時(shí)鍵子程序,清0鍵子程序,加一子程序,顯示子程序,定時(shí)子程序,所用特殊寄存器:寄存器A,寄存器C,所用中斷:外部中斷INT0、INT1,定時(shí)器T0、T1
四,設(shè)計(jì)的硬件接線圖:
五,設(shè)計(jì)思路及描述
要求進(jìn)行計(jì)時(shí)并在數(shù)碼管上顯示時(shí)間,則可利用DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)中的芯片8032(芯片的功能類(lèi)似于芯片AT89C51,其管腳功能也和AT89C51的管腳功能類(lèi)似)中的P3.2管腳做為外部中斷0的入口地址,并實(shí)現(xiàn)“開(kāi)始”按鍵的功能;將P3.3做為外部中斷1的入口地址,并實(shí)現(xiàn)“清零”按鍵的功能;將P3.0做為數(shù)據(jù)信號(hào)DATA輸入的入口地址;將P3.1做為時(shí)鐘信號(hào)CLK輸入的入口地址。定時(shí)器T0作為每秒加一的定時(shí)器;定時(shí)器T1作為“快加”鍵的定時(shí)器。其中“開(kāi)始”按鍵當(dāng)開(kāi)關(guān)由1撥向0(由上向下?lián)埽r(shí)開(kāi)始計(jì)時(shí);“清零”按鍵當(dāng)開(kāi)關(guān)由1撥向0(由上向下?lián)埽r(shí)數(shù)碼管清零,此時(shí)若再撥“開(kāi)始”按鍵則又可重新開(kāi)始計(jì)時(shí)。
六,流程圖
七,程序 源程序: ORG
0000H AJMP
MIAN;主程序入口地址 ORG
0003H
AJMP
ZHONGDUAN0;中斷0入口地址
ORG
000BH
AJMP YANSHI;定時(shí)器T0入口地址
ORG
0013H
AJMP
ZHONGDUAN1;中斷1入口地址
ORG
001BH
AJMP
DINGSHI1;定時(shí)器T1入口地址
ORG
0030H
;主程序
;***********************************************************
MAIN: MOV
TCON,#05H;主程序開(kāi)始 外部中斷跳變模式
MOV
TMOD,#11H;定時(shí)器0,1模式1 MOV
IE,#8FH;開(kāi)總中斷,中斷0,1,定時(shí)器0,1 MOV
DPTR,#TAB MOV
R1,#00H MOV
R2,#00h MOV
R3,#40;循環(huán)次數(shù)40 MOV
TL0#2CH;置初值,定時(shí)25MS
MOV
TH0,#0CFH
MOV
TL1#78H;置初值,定時(shí)10MS
MOV
TH1,#0ECH CLR TR0;關(guān)定時(shí)器
CLR
TR1;***********************************************************;暫停鍵K3,快加鍵K4程序
;*********************************************************** HERE:JB P1.0,HERE SHOW:
CLR
TR1 CLR
TR0 ACALL
XIANSHI KUAIJIA
:JB P1.2,KUAIJIA;等待P1.2為0 快加 CLR
TR0 SETB
TR1
HERE 3JNB
P1.2,HERE 3 AJMP
HERE;***********************************************************;外部中斷INT0子程序-----計(jì)時(shí)按鍵K1子程序
;***********************************************************
ZHONGDUAN 0:
SETB TR0;計(jì)時(shí)按鍵 RETI;***********************************************************;外部中斷INT1子程序----復(fù)位按鍵K2子程序
;***********************************************************
ZHONGDUAN 1: CLR TR0;復(fù)位按鍵
CLR
TR1
MOV
12H,#00H
MOV
11H,#00H ACALL
XIANSHI;調(diào)用顯示子程序
MOV
R1,#00H
MOV
R2,#00H RETI;***********************************************************;加一子程序
;***********************************************************
JIA1:
INC
R1;加1子程序
CJNE R1,#0AH ,LOOP;判斷是否到表尾
MOV
R1,#00H INC
R2
CJNE
R2,#0AH,LOOP
MOV
R2,#00H
LOOP: MOV
12H,R1;重新賦值
MOV
11H,R2
RET;***********************************************************;顯示子程序
;*********************************************************** XIANSHI: MOV R7,#02H;2個(gè)數(shù)碼管顯示子程序 MOV R0,#12H LOOP5: MOV R6,#08H;8位2進(jìn)制數(shù) MOV A,@R0 MOVC A,@A+DPTR LOOP6: RLC A;循環(huán)左移 CLR P3.1 MOV P3.0,c SETB P3.1 DJNZ R6,LOOP6 DEC R0 DJNZ R7,LOOP5 RET;***********************************************************;定時(shí)器T0子程序;*********************************************************** YANSHI: MOV Tl0,#2CH;定時(shí)子程序 MOV TH0,#0CFH DJNZ R3,LOOP7 ACALL JIA1;調(diào)用加1子程序 ACALL XIANSHI;調(diào)用顯示子程序 MOV R3,#40 LOOP7: RETI;***********************************************************;定時(shí)器T1子程序
;*********************************************************** DINGSHI1:MOV Tl1,#78H;置初值,定時(shí)10MS MOV TH1,#0ECH CLR TR0 SETB TR1 MOV 12H ,R1 MOV 11H,R2 JNB p1.0,SHOW ACALL JIA1 ACALL XIANSHI LOP7:TETI;*********************************************************** TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
八,內(nèi)容提要
利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合dvcc實(shí)驗(yàn)箱上的集成電路芯片8032、LED數(shù)碼管以及實(shí)驗(yàn)箱上的按鍵來(lái)設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),數(shù)碼管能夠正確地顯示時(shí)間。其中本設(shè)計(jì)了四個(gè)開(kāi)關(guān)按鍵:其中一個(gè)按鍵按下去時(shí)以1秒加一開(kāi)始計(jì)時(shí),即秒表開(kāi)始鍵(本實(shí)驗(yàn)中當(dāng)開(kāi)關(guān)從1變?yōu)?時(shí)開(kāi)始計(jì)時(shí)),另一個(gè)按鍵按下去時(shí)暫停計(jì)時(shí),使秒表停留在原先的計(jì)時(shí)(本實(shí)驗(yàn)中當(dāng)相應(yīng)開(kāi)關(guān)從1變?yōu)?時(shí)即停止計(jì)時(shí)),第三個(gè)按鍵按下去時(shí)清0(本實(shí)驗(yàn)中當(dāng)相應(yīng)開(kāi)關(guān)從1變?yōu)?時(shí)即停止計(jì)時(shí)),第四按鍵按下去則是以每10ms秒快速加一計(jì)時(shí)(本實(shí)驗(yàn)中當(dāng)開(kāi)關(guān)從1變?yōu)?時(shí)開(kāi)始計(jì)時(shí))。本設(shè)計(jì)中開(kāi)始時(shí)都要使各按鍵回到各初始位置,即都處于1狀態(tài)。
九,課程設(shè)計(jì)心得體會(huì)
選擇適當(dāng)?shù)恼n題,不益太簡(jiǎn)單或者太難。做到既能把課題完成又能鍛煉自己的能力!根據(jù)課題要求,復(fù)習(xí)相關(guān)的知識(shí),查詢(xún)相關(guān)的資料。根據(jù)實(shí)驗(yàn)條件,找到適合的方案,找到需要的元器件及工具,準(zhǔn)備實(shí)驗(yàn)。根據(jù)課程設(shè)計(jì)的要求和自己所要增加的功能寫(xiě)好程序流程圖,在程序流程圖的基礎(chǔ)上,根據(jù)芯片的功能寫(xiě)出相應(yīng)的程序。然后再進(jìn)行程序調(diào)試和相應(yīng)的修改,以達(dá)到能夠?qū)崿F(xiàn)所要求的功能的目的。還要根據(jù)實(shí)驗(yàn)的實(shí)際情況,添加些額外程序來(lái)使系統(tǒng)更加的穩(wěn)定,如開(kāi)關(guān)的消震蕩(采用延遲)。程序要盡量做到由各個(gè)子程序組成,在有些程序后面最好加注釋?zhuān)@樣在程序出錯(cuò)的檢查過(guò)程中可以更容易查找的到,也更簡(jiǎn)潔,更明白易懂。該設(shè)計(jì)的程序可以參考DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)中的串并轉(zhuǎn)換實(shí)驗(yàn),也可自己根據(jù)自己熟悉的方法來(lái)編程。在設(shè)計(jì)控制開(kāi)關(guān)時(shí),注意2個(gè)中斷的打開(kāi)和關(guān)閉的先后順序,否則就會(huì)出錯(cuò)。這次的單片機(jī)課程設(shè)計(jì)重點(diǎn)是理論與實(shí)際的相結(jié)合。不再只讀書(shū)了。該設(shè)計(jì)從頭到尾都要自己參與,熟悉了對(duì)整個(gè)設(shè)計(jì)的過(guò)程,更系統(tǒng)的鍛煉了自己。
十、參考文獻(xiàn)
蘇家健等編的《單片機(jī)原理及應(yīng)用技術(shù)》 高等教育出版社 2004年11月 余錫存等,《單片機(jī)原理及接口技術(shù)》 西安電子科技大學(xué)出版社 2004
孫涵芳等 《單片機(jī)原理及應(yīng)用》 北京航空航天大學(xué)出版社 1990
吳金戌等 《8051電片機(jī)的實(shí)踐與應(yīng)用》 清華大學(xué)出版社
第五篇:基于單片機(jī)的溫度報(bào)警系統(tǒng)報(bào)告
基于單片機(jī)的溫度報(bào)警系統(tǒng)報(bào)告
姓名:
班級(jí):
學(xué)號(hào):
隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本次主要設(shè)計(jì)一個(gè)基于89C52單片機(jī)的數(shù)字溫度傳感器開(kāi)發(fā)測(cè)溫系統(tǒng),重點(diǎn)掌握對(duì)傳感器下在單片機(jī)的硬件連接,軟件編程以及各個(gè)模塊系統(tǒng)流程的詳盡分析,提高電路設(shè)計(jì)的技巧。該系統(tǒng)可以方便的實(shí)現(xiàn)溫度的采集和顯示,它使用起來(lái)相當(dāng)方便,具有精度高、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適用于我們的日常生活。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),有廣泛的應(yīng)用前景。
在工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力、流量、速度和開(kāi)關(guān)量都是常用的主要被控制參數(shù)、其中,溫度控制也越來(lái)越重要。在工業(yè)生產(chǎn)的很多領(lǐng)域中,人們都需要對(duì)各類(lèi)加熱爐、熱處理爐、反應(yīng)爐和鍋爐中的溫度進(jìn)行檢測(cè)和控制。采用單片機(jī)對(duì)溫度進(jìn)行控制不僅具有控制方便、簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度技術(shù)指標(biāo),從而大大提高產(chǎn)品的質(zhì)量和數(shù)量。因此,單片機(jī)對(duì)溫度的控制問(wèn)題是工業(yè)生產(chǎn)中經(jīng)常遇到的控制問(wèn)題。
在傳統(tǒng)的溫度測(cè)控系統(tǒng)設(shè)計(jì)中,往往采用模擬技術(shù)進(jìn)行設(shè)計(jì),這樣就不可避免的遇到諸如傳感器外圍電路復(fù)雜及抗干擾能力差等問(wèn)題,而其中任何一環(huán)節(jié)處理不當(dāng),就會(huì)造成整個(gè)系統(tǒng)性能的下降。采用數(shù)字溫度傳感器與單片機(jī)組成的溫度檢測(cè)系統(tǒng)進(jìn)行溫度檢測(cè)、數(shù)值顯示和數(shù)據(jù)儲(chǔ)存,體積減小,精度提高,抗干擾能力強(qiáng),并可組網(wǎng)進(jìn)行多點(diǎn)協(xié)測(cè),還可以實(shí)現(xiàn)實(shí)時(shí)控制等技術(shù),在現(xiàn)代工業(yè)中應(yīng)用越來(lái)越廣泛。
傳統(tǒng)的溫度測(cè)控系統(tǒng)設(shè)計(jì)往往是熱電阻、adc轉(zhuǎn)換器和控制器的搭配,再加上人機(jī)互動(dòng)操作操作設(shè)備這樣就會(huì)增加系統(tǒng)的成本和系統(tǒng)軟件設(shè)計(jì)的負(fù)擔(dān),傳統(tǒng)的溫度測(cè)控系統(tǒng)軟件設(shè)計(jì)不僅要控制溫度采集、adc的轉(zhuǎn)換、數(shù)據(jù)的處理、顯示和按鍵功能。制溫度采集、adc的轉(zhuǎn)換、顯示和按鍵功能相對(duì)簡(jiǎn)單一些,但是adc采集數(shù)據(jù)不是現(xiàn)成的溫度數(shù)據(jù)還要控制器處理器對(duì)數(shù)據(jù)處理進(jìn)行處理,熱電阻是反映溫度和電壓的關(guān)系,常用的有正溫度和負(fù)溫度電阻,而且大多數(shù)不是正比例而是指數(shù)型,這樣的數(shù)據(jù)處理函數(shù)可想而知有多復(fù)雜,還要考慮電壓在傳輸時(shí)的損耗。
本設(shè)計(jì)就采用以52單片機(jī)為核心,和單總線數(shù)字式溫度傳感器模擬出一溫度測(cè)控系統(tǒng)。
方案:
采用AT89C52單片機(jī),溫度傳感器,液晶顯示屏,設(shè)計(jì)能設(shè)定溫度上下限。當(dāng)溫度低于下限值或高于上限值是能進(jìn)行報(bào)警,能顯示實(shí)際的溫度值,顯示精度為±1°本方案主要利用硬電路連接,通過(guò)軟件編程,顯示出溫度。
重要元器件1:AT89C52 AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn)兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用位
中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)的AT89C52單片機(jī)可為您提供許多較復(fù)雜統(tǒng)控制應(yīng)用場(chǎng)合。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫(xiě)口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。具有低電壓供電和體積小等特點(diǎn)。
重要元器件2:DS18B20溫度傳感器
DS18B20數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20數(shù)字溫度傳感器接線方便,耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。
本溫度計(jì)采用一種智能溫度傳感器DS18B20作為檢測(cè)元
件。該元件測(cè)溫范圍為-55~125度,最高分辨率為0.0625度,完全滿(mǎn)足本設(shè)計(jì)中分辨率為0.1度的要求!考慮到下載程序的方便和一些條件的限制我選了STC89C52RC這款單片機(jī)作為控制器。
報(bào)警方面,當(dāng)溫度超過(guò)警界最高溫度時(shí),報(bào)警,紅色發(fā)光二極管打開(kāi);當(dāng)溫度低于最低溫度報(bào)警時(shí),報(bào)警,紅色發(fā)光二級(jí)管打開(kāi)。為使電路的簡(jiǎn)化,其溫度報(bào)警值已預(yù)設(shè)在程序中,可以通過(guò)修改程序中的預(yù)設(shè)值改變報(bào)警溫度!主要實(shí)現(xiàn):在基于52單片機(jī)的情況下進(jìn)行,實(shí)時(shí)溫度測(cè)量以及顯示,超出溫度范圍聲光報(bào)警,上下限溫度可設(shè)定等功能。
電路圖:
總結(jié):
從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單片機(jī)更是如此,程序只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。并且做每一件事都要認(rèn)真嚴(yán)謹(jǐn)去完成,否則,一個(gè)小小的問(wèn)題都會(huì)讓你付出更多的時(shí)間和代價(jià)。
總的來(lái)說(shuō),自己從這次獨(dú)立的課程中收獲了一些的知識(shí)與經(jīng)驗(yàn),一些從書(shū)本中學(xué)之不來(lái)的東西。