




已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
定時(shí)電源插座江蘇信息職業(yè)技術(shù)學(xué)院畢業(yè)論文課題 定時(shí)電源插座 系 電子信息工程系 專業(yè) 應(yīng)用電子技術(shù) 姓名 班級(jí) 學(xué)號(hào) 指導(dǎo)教師 職稱 指導(dǎo)教師 職稱 設(shè)計(jì)時(shí)間 2010.11.222011.1.8 摘要近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。本論文是基于單片機(jī)技術(shù)原理,以單片機(jī)芯片at89s52作為核心控制器,通過(guò)硬件電路的制作以及軟件程序的編制,設(shè)計(jì)制作出一個(gè)定時(shí)電源。關(guān)鍵詞:?jiǎn)纹瑱C(jī);定時(shí)電源;at89s52目錄目錄3第一章 前言41.1設(shè)計(jì)任務(wù)41.2 總設(shè)計(jì)框圖5第二章 主要元件介紹52.1 at89s52的功能特性描述52.2 at89s52引腳功能62.3 特殊功能寄存器72.4 數(shù)據(jù)存儲(chǔ)器72.5 捕獲方式82.6 自動(dòng)重裝載方式82.7波特率發(fā)生器82.8可編程始終輸出92.9中斷92.10時(shí)鐘振蕩器92.11 模式10212 flash存儲(chǔ)器的編程10第三章 系統(tǒng)設(shè)計(jì)113.1 編程方法113.2 數(shù)據(jù)查詢113.3 ready/busy123.4 排阻123.5硬件電路圖13第四章軟件方案設(shè)計(jì)164.1 程序設(shè)計(jì)16總結(jié)24致謝25參考文獻(xiàn)26附錄1 總系統(tǒng)框圖27附錄2 使用說(shuō)明書27第一章 前言1.1設(shè)計(jì)任務(wù)1. 利用單片機(jī)設(shè)計(jì)一定時(shí)開關(guān),在24小時(shí)內(nèi)的時(shí)間里能預(yù)先設(shè)定定時(shí)范圍,每天周而復(fù)始地控制用電器具的自動(dòng)開啟和關(guān)閉。2. 要求最少能獨(dú)立控制兩路220v10a的交流負(fù)載。3. 產(chǎn)品的成本應(yīng)盡量低。4. 產(chǎn)品的功能應(yīng)盡量多,最少應(yīng)具有時(shí)間顯示和校正、定時(shí)顯示和設(shè)置等功能。5. 產(chǎn)品的質(zhì)量應(yīng)可靠、安全。具體性能指標(biāo)如下:供電電源:220v 50hz 使用環(huán)境溫度:-10至40度功率消耗:10a 定時(shí)范圍:1分鐘至23小時(shí)59分任意設(shè)定最小設(shè)定單位:1分鐘 最小設(shè)定間隙:1分鐘 定時(shí)精度:1分鐘 課定時(shí)次數(shù):不少于1次工作坊式:連續(xù)工作制6. 設(shè)計(jì)并制作單片機(jī)控制電路,要求能夠顯示時(shí)間、通過(guò)按鍵修改時(shí)間和設(shè)置定時(shí)。7. 設(shè)計(jì)并制作輸出控制電路,要求能控制兩路以上220v/10a的插座。8. 編寫產(chǎn)品使用說(shuō)明書。1.2 總設(shè)計(jì)框圖第二章 主要元件介紹2.1 at89s52的功能特性描述at89s52是一個(gè)低功耗,高性能cmos 8位單片機(jī),片內(nèi)含8k可反復(fù)擦寫的程序存儲(chǔ)器和12b的隨機(jī)存儲(chǔ)數(shù)據(jù)存儲(chǔ)器(ram),器件采用atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)配置通用8位中央處理器(cpu)和flash存儲(chǔ)單元,功能強(qiáng)大的at89s52單片機(jī)課靈活應(yīng)用于各種控制領(lǐng)域。其主要工作特性如下:片內(nèi)程序存儲(chǔ)器含8k的flash程序存儲(chǔ)器,可擦寫壽命為1000次;片內(nèi)程序存儲(chǔ)器256字節(jié)的ram;具有32根可編程i/o口線;具有3個(gè)可編程定時(shí)器;中斷系統(tǒng)是具有8個(gè)中斷源、6個(gè)中斷矢量、2個(gè)級(jí)優(yōu)先權(quán)的中斷結(jié)構(gòu);串行口是具有一個(gè)全雙工口的可編程串行通信口;具有一個(gè)數(shù)據(jù)指針dptr;低功耗工作模式有空閑模式和掉電模式;具有可編程的3級(jí)程序鎖定位;at89s52工作電源電壓為5(1+0.2)v,且典型值為5v;2.2 at89s52引腳功能at89s52引腳圖(1)p0口:p0口是一組8位漏級(jí)開路雙向i/o口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)ttl邏輯門電路,對(duì)端口p0寫“1”時(shí),可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址的(低八位)和數(shù)據(jù)總線復(fù)用,在在訪問(wèn)期間激活內(nèi)部上拉電阻。在fiash編程時(shí),p0 口接收指令字節(jié), 而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。(2)p1口:p1口是一個(gè)帶有內(nèi)部提供上拉電阻的8位雙向i/o口,p1口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出)4個(gè)ttl邏輯門電路。對(duì)端口寫入“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí),可用作輸入口。作為輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ill)。與at89c51不同之處是,p1.0和p1.1還可分別作為定時(shí)/計(jì)數(shù)2的外部計(jì)數(shù)輸入(p1.0/t2)和輸入(p1.1/t2ex)。flash編程和校驗(yàn)期間,p1接收低八位地址。(3)p2口:p2口為一個(gè)帶有內(nèi)部上拉電阻的8位雙向i/o口,p2口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。當(dāng)端口p2寫“1”, 通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí),可用作輸入口。作為輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ill)。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器,(例如執(zhí)行movx dptr指令)時(shí),p2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx r1指令)時(shí),p2口輸出p2鎖存器的內(nèi)容。flash編程和校驗(yàn)時(shí)p2亦接收高位地址和一些控制信號(hào)。(4)p3口:p3是一組帶有內(nèi)部上拉電阻的8位雙向i/o口,p3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)p3口寫入“1”時(shí),它們被內(nèi)部上拉為高電平并用作輸入端口。此時(shí),被外部拉低的p3口將用上拉電阻輸出電流(ill)。p3口除了作為一般的i/o口線外,更重要的用途是它的第二功能,p3口還接收一些用于flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。(5)rst:復(fù)位輸入。當(dāng)振蕩器工作時(shí),rst引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平使單片機(jī)復(fù)位。(6)ale/prog:當(dāng)訪問(wèn)外部存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ale(地址鎖存允許)的輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ale仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào)。因此它可對(duì)外部輸出的脈沖或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如有必要,可通過(guò)對(duì)特殊寄存器(sfr)區(qū)中的8eh單元的d0位置位,可禁止ale操作。該位置后,只有一條movx和movc指令才能將ale激活。此外,該引腳會(huì)被略微拉高。單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ale禁止位無(wú)效。(7)/psen:程序存儲(chǔ)允許(psen)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)at89s52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次/psen有效即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)兩次/psen信號(hào)。(8)/ea/vpp:外部訪問(wèn)允許。欲使cpu僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000h-ffffh),ea端必須保持低電平(接地)。需注意的是:如果加密lb1被編程,復(fù)位時(shí)會(huì)鎖存ea端狀態(tài)。如/ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。flash編程時(shí),該引腳也加上+12v編程電源(vpp),當(dāng)然這必須是該器件是使用12v編程電源(vpp)。(9)xtal1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生的輸入器。(10)xtal2:振蕩器反相放大器的輸出端。 2.3 特殊功能寄存器在at89s52片內(nèi)存儲(chǔ)器中,80h-ffh共128個(gè)單元為特殊功能寄存器(sfr)。并非所有的地址都被定義,從80h-ffh共128個(gè)字節(jié)只有一部分被定義,還有相當(dāng)一部分沒有定義。對(duì)沒有定義的單元讀寫將是無(wú)效的,讀出的數(shù)據(jù)將不確定,而寫入的數(shù)據(jù)也將丟失。不應(yīng)將數(shù)據(jù)“1”寫入未定義的單元,由于這些單元在將來(lái)的產(chǎn)品中可能賦予新的功能,在這種情況下,復(fù)位后這些單元數(shù)值總是“0”。 at89s52除了與at89c51所有的定時(shí)/計(jì)數(shù)0和定時(shí)/計(jì)數(shù)1外,還增加了一個(gè)定時(shí)/計(jì)數(shù)2。定時(shí)/計(jì)數(shù)2的控制和狀態(tài)位位于t2cont2mod,寄存器對(duì)(rca02hrcap2l)是定時(shí)器2在16位捕捉方式或16為自動(dòng)重裝載方式下的捕捉/自動(dòng)重裝載寄存器。2.4 數(shù)據(jù)存儲(chǔ)器at89s52有256個(gè)字節(jié)的內(nèi)部ram,80h-ffh高128個(gè)字節(jié)與特殊功能寄存器(sfr)地址是重疊的,也就是高128個(gè)字節(jié)的ram與特殊功能寄存器的地址死機(jī)相同的,但物理上它們是分開的。當(dāng)一條指令訪問(wèn)7fh以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問(wèn)特殊功能寄存器。如果指令是直接尋址方式則為訪問(wèn)特殊功能寄存器。堆棧操作也是間接尋址方式,所以,高128位數(shù)據(jù)ram亦可作為堆棧區(qū)使用。定時(shí)器0和定時(shí)器1:at89s52的定時(shí)器0和定時(shí)器1的工作方式與at89c51相同。定時(shí)器2:定時(shí)器2是一個(gè)16位定時(shí)/計(jì)數(shù)器。它既可以當(dāng)定時(shí)器使用,也可作為外部事件計(jì)數(shù)器使用,其工作方式由特殊功能寄存器t2con的c/t2位選擇。定時(shí)器2有三種工作方式:捕獲方式,自動(dòng)重裝載(向上或向下計(jì)數(shù))方式和波特率發(fā)生器方式,工作方式由t2con的控制位來(lái)選擇。定時(shí)器2由兩個(gè)8位寄存器th2和tl2組成,在定時(shí)器工作方式中,每個(gè)機(jī)器周期tl2寄存器的值加1,由于一個(gè)機(jī)器周期由12個(gè)振蕩時(shí)鐘構(gòu)成,因此,計(jì)數(shù)速率為振蕩器的1/12。在計(jì)數(shù)工作方式時(shí),當(dāng)t2引腳上外部輸入信號(hào)產(chǎn)生由1至0的下降延時(shí),寄存器的值加1,在這種工作方式下,每個(gè)機(jī)器周期的5sp2期間,對(duì)外部輸入進(jìn)行采樣。若在第一個(gè)機(jī)器周期中采到的值為1,而在下一個(gè)機(jī)器周期中采到的值為0則在緊跟著的下一個(gè)機(jī)器周期的s3p1期間寄存器加1.由于識(shí)別1至0的跳變需要2個(gè)機(jī)器周期(24個(gè)振蕩周期),因此,最高計(jì)數(shù)速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個(gè)完整周期的時(shí)間,以保證輸入信號(hào)至少被采樣過(guò)一次。2.5 捕獲方式在捕獲方式下,通過(guò)t2con控制位exen2來(lái)選擇兩種方式。如果exen2=0,定時(shí)器2是一個(gè)16位定時(shí)器或計(jì)數(shù)器,計(jì)數(shù)溢出時(shí),對(duì)t2con的溢出標(biāo)志tf2置位,同時(shí)激活中斷。如果exen2=1,定時(shí)器2完成相同的操作,而當(dāng)t2ex引腳外部信號(hào)發(fā)生1至0負(fù)跳變時(shí),也出現(xiàn)th2和tl2中的值分別被捕獲到rcap2h和rcap2l中。另外,t2ex引腳信號(hào)的跳變使得t2con中的exf2置位,與tf2相仿,exf2也會(huì)激活中斷。2.6 自動(dòng)重裝載方式當(dāng)定時(shí)器2工作于16位自動(dòng)重裝載方式時(shí),能對(duì)其編程為向上或向下計(jì)數(shù)器方式,這個(gè)功能可通過(guò)特殊功能寄存器t2con的dcen位(允許向下計(jì)數(shù))來(lái)選擇。復(fù)位時(shí),dcen位置“0”,定時(shí)器2默認(rèn)設(shè)置為向上計(jì)數(shù)。當(dāng)dcen位置時(shí),定時(shí)器2既可向上計(jì)數(shù)也可向下計(jì)數(shù),這取決于t2ex引腳的值,當(dāng)dcen=0時(shí),定時(shí)器2自動(dòng)設(shè)置為向上計(jì)數(shù),在這種方式下,t2con中的exen2控制位有兩種選擇。若exen2=0,定時(shí)器2為向上計(jì)數(shù)至0ffffh溢出,置位tf2激活中斷,同時(shí)把16位計(jì)數(shù)寄存器rcapl2h和rcap2l重裝載,rcapl2h和rcap2l的值可由軟件預(yù)置。若exen2=1,定時(shí)器2的16位重裝載由溢出或外部輸入端t2ex從1至0的下降沿觸發(fā)。這個(gè)脈沖是exf2置位,如果中斷允許,同樣產(chǎn)生中斷。定時(shí)器2的中斷入口地址是002bh-0032h。當(dāng)dcen=1時(shí),允許定時(shí)器2向上或向下計(jì)數(shù),如圖所示。這種方式下,t2ex引腳控制計(jì)數(shù)方向。t2ex引腳為邏輯“1”時(shí),定時(shí)器向上計(jì)數(shù),當(dāng)計(jì)數(shù)到0ffffh向上溢出時(shí),置位tf2,同時(shí)把16位計(jì)數(shù)寄存器rcap2h和rcap2l重裝載到th2和tl2中。t2ex引腳為邏輯“0”時(shí),計(jì)數(shù)溢出,置位tf2,同時(shí)將0ffffh數(shù)值重新裝入定時(shí)寄存器中。當(dāng)定時(shí)/計(jì)數(shù)器2向上或向下溢出時(shí),置位exf2。2.7波特率發(fā)生器當(dāng)t2con中的tclk和rclk置位時(shí),定時(shí)/計(jì)數(shù)器2作為波特率發(fā)生器使用。如果定時(shí)/計(jì)數(shù)器2作為發(fā)送器或接收器,其發(fā)送和接收的波特率可以是不同的,定時(shí)1用于其他功能。若rclk和tclk置位,則定時(shí)器2工作于波特率發(fā)生器方式。波特率發(fā)生器的方式與自動(dòng)重裝載方式相仿,在此方式下,th2翻轉(zhuǎn)使定時(shí)器2的寄存器用rcap2h和rcapl中的16為數(shù)值重新裝載,該數(shù)值由軟件設(shè)置。在方式1和方式3中,波特率由定時(shí)器2的溢出速度根據(jù)下式確定:方式1和3的波特率=定時(shí)器的溢出率/16定時(shí)器既能工作于定時(shí)方式也能工作于計(jì)數(shù)方式,在大多數(shù)的應(yīng)用中,是工作在定時(shí)方式(c/t2=0)。定時(shí)器2作為波特率發(fā)生器時(shí),與作為定時(shí)器的操作是不同的,通常作為定時(shí)器時(shí),在每個(gè)機(jī)器周期(1/12振蕩頻率)寄存器的值加1,而作為波特率發(fā)生器使用時(shí),在每個(gè)狀態(tài)時(shí)間(1/2振蕩頻率)寄存器的值加1。波特率的計(jì)算公式如下:方式1和3的波特率=振蕩頻率/32*65536-(rcap2h,rcap2l)式中(rcap2h,rcap2l)是rcap3h和rcap2l中的16位無(wú)符號(hào)數(shù)。t2con中的rclk或tclk=1時(shí),波特率工作方式才有效。在波特率發(fā)生器工作方式中,th2翻轉(zhuǎn)不能使tf2置位,故而不產(chǎn)生中斷。但若exen2置位,且t2ex端產(chǎn)生由1至0的負(fù)跳變,則會(huì)使exf2置位,此時(shí)并不能將(rcap2h,rcap2l)的內(nèi)容重新裝入th2和tl2中。所以,當(dāng)定時(shí)器2作為波特率發(fā)生器使用時(shí),t2ex可作為附加的外部中斷源來(lái)使用。需注意的是,當(dāng)定時(shí)器2工作于波特率發(fā)生器時(shí),作為定時(shí)器運(yùn)行(tr2=1)時(shí),并不能訪問(wèn)th2和tl2。因此每個(gè)狀態(tài)時(shí)間定時(shí)器都會(huì)加1,對(duì)其讀寫將得到一個(gè)不確定的數(shù)值。然而,對(duì)rcap2則可讀而不可寫,因?yàn)閷懭氩僮鲗⑹侵匦卵b載,寫入操作可能令寫和重新裝載出錯(cuò)。在訪問(wèn)定時(shí)器2或rcap2寄存器之前,應(yīng)將定時(shí)器關(guān)閉(清除tr2)。2.8可編程始終輸出定時(shí)器2可通過(guò)編程從p1.0輸出一個(gè)占空比為50%的時(shí)鐘信號(hào)。p1.0引腳除了是一個(gè)標(biāo)準(zhǔn)的i/o口外,還可以通過(guò)編程使其作為定時(shí)/計(jì)數(shù)器2的外部時(shí)鐘輸入和輸出占空比50%的時(shí)鐘脈沖。當(dāng)時(shí)鐘振蕩頻率為16mhz時(shí),輸出時(shí)鐘頻率范圍為61hz-4mhz。 當(dāng)設(shè)置定時(shí)/計(jì)數(shù)器2為時(shí)鐘發(fā)生器時(shí),c/t2(y2con.1)=0,t2oe(t2mod.1)=1,必須由tr2(t2con.2)啟動(dòng)或停止定時(shí)器。始終輸出頻率取決于振蕩頻率和定時(shí)器2捕獲寄存器(rcap2h,rcap2l)的重新裝載值,公式如下:輸出時(shí)鐘頻率=振蕩器頻率/4*65536-(rcap2h,rcap2l)在時(shí)鐘輸出方式下,定時(shí)器2的翻轉(zhuǎn)不會(huì)產(chǎn)生中斷,這個(gè)特性與作為波特率發(fā)生器使用時(shí)相仿。定時(shí)器2作為波特率發(fā)生器使用時(shí),還可以作為時(shí)鐘發(fā)生器使用,但需注意的是波特率和時(shí)鐘輸出頻率不能分開確定,這是因?yàn)樗鼈兺瑫r(shí)使用rcap2h和rcap2l。2.9中斷at89s52共有6個(gè)中斷向量:2個(gè)外部中斷源(int0和int1),3個(gè)定時(shí)器中斷(定時(shí)器012)和串行口中斷。這些中斷源可通過(guò)分別設(shè)置專用寄存器ie的置位或清0來(lái)控制每一個(gè)中斷的允許或禁止。ie也有一個(gè)總禁止位ea,它能控制所有中斷的允許或禁止。注意表5中的ie.6為保留位,在at89c51中ie.5也是保留位。程序員不應(yīng)將“1”寫入這些位,它們是將來(lái)at89系列產(chǎn)品作為擴(kuò)展用的。定時(shí)器2的中斷是由t2con中的tf2和exf2產(chǎn)生的,當(dāng)轉(zhuǎn)向中斷服務(wù)程序時(shí),這些標(biāo)志位不能被硬件清除,事實(shí)上,服務(wù)程序需確定是tf2或exf2產(chǎn)生中斷,而有軟件清除中斷標(biāo)志位。定時(shí)器0和定時(shí)器1的標(biāo)志位tf0和tf1在定時(shí)器溢出那個(gè)周期的s5p2狀態(tài)位置,而會(huì)在下一個(gè)機(jī)器周期才查詢到該中斷標(biāo)志。然而,定時(shí)器2的標(biāo)志位tf2在定時(shí)器溢出的那個(gè)周期的s2p2狀態(tài)位置,并在同一個(gè)周期內(nèi)查詢到該標(biāo)志。2.10時(shí)鐘振蕩器at89s52中是一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反向放大器,引腳xtal1和xtal2分別是該放大器份的輸入端和輸出端。這個(gè)放大器與作為片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體或陶瓷諧振器及電容c1,c2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容c1,c2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低,振蕩器工作的穩(wěn)定性,起振的難易程度及溫度穩(wěn)定性。如果石英晶體,我們推薦電容使用30pf+10pf,而使用陶瓷諧振器建議使用40pf+10pf。用戶也可以采用外部時(shí)鐘。采用外部時(shí)鐘的電路,這種情況下,外部時(shí)鐘脈沖接到xtal1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,xtal2則懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)外部時(shí)鐘信號(hào)的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。2.11 模式(1)空閑節(jié)電模式:在空閑工作模式狀態(tài), cpu 自身處于睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),這種方式由軟件產(chǎn)生。此時(shí),同時(shí)將片內(nèi)ram 和所有特殊功能寄存器的內(nèi)容凍結(jié)??臻e模式可由任何允許的中斷請(qǐng)求或硬件復(fù)位終止。由硬件復(fù)位終止空閑狀態(tài)只需兩個(gè)機(jī)器周期有效復(fù)位信號(hào),在此狀態(tài)下,片內(nèi)硬件禁止訪問(wèn)內(nèi)部ram,但可以訪問(wèn)端口引腳,當(dāng)用復(fù)位終止空閑方式時(shí),為避免可能對(duì)端口產(chǎn)生意外寫入,激活空閑模式的那條指令后一條指令不應(yīng)是一條對(duì)端口或外部存儲(chǔ)器的寫入指令。(2)掉電模式:在掉電模式下,振蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)ram 和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的唯一方法是硬件復(fù)位,復(fù)位后將重新定義全部特殊功能寄存器,但不改變r(jià)am中的內(nèi)容,在vcc恢復(fù)到正常工作電平前,復(fù)位應(yīng)無(wú)效,且必須保持一定時(shí)間以使振蕩器重啟動(dòng)并穩(wěn)定工作。212 flash存儲(chǔ)器的編程at89s52單片機(jī)內(nèi)部有8k字節(jié)的flash perom,這個(gè)flash 存儲(chǔ)陣列出廠時(shí)已處于擦除狀態(tài)(即所有存儲(chǔ)單元的內(nèi)容均為ffh),用戶隨時(shí)可對(duì)其進(jìn)行編程。編程接口可接收高電壓(+12v)或低電壓(vcc)的允許編程信號(hào)。低電壓編程模式適合于用戶在線編程系統(tǒng),而高電壓編程模式可與通用eprom編程器兼容。at89s52 單片機(jī)中,有些屬于低電壓編程方式,而有些則是高電壓編程方式,用戶可從芯片上的型號(hào)和讀取芯片內(nèi)的簽名字節(jié)獲得該信息。at89s52 的程序存儲(chǔ)器陣列是采用字節(jié)寫入方式編程的,每次寫入一個(gè)字節(jié),要對(duì)整個(gè)芯片內(nèi)的perom 程序存儲(chǔ)器寫入一個(gè)非空字節(jié),必須使用片擦除的方式將整個(gè)存儲(chǔ)器的內(nèi)容清除。第三章 系統(tǒng)設(shè)計(jì)3.1 編程方法編程前,設(shè)置好地址、數(shù)據(jù)及控制信號(hào),at89s52 編程方法如下:1 在地址線上加上要編程單元的地址信號(hào)。2 在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。3 激活相應(yīng)的控制信號(hào)。4 在高電壓編程方式時(shí),將ea/vpp 端加上+12v 編程電壓。5 每對(duì)flash 存儲(chǔ)陣列寫入一個(gè)字節(jié)或每寫入一個(gè)程序加密位,加上一個(gè)ale/prog 編程脈沖。每個(gè)字節(jié)寫入周期是自身定時(shí)的,通常約為1.5ms。重復(fù)15 步驟,改變編程單元的地址和寫入的數(shù)據(jù),直到全部文件編程結(jié)束。3.2 數(shù)據(jù)查詢at89s52 單片機(jī)用data palling 表示一個(gè)寫周期結(jié)束為特征,在一個(gè)寫周期中,如需讀取最后寫入的一個(gè)字節(jié),則讀出的數(shù)據(jù)的最高位(p0.7)是原來(lái)寫入字節(jié)最高位的反碼。寫周期完成后,所輸出的數(shù)據(jù)是有效的數(shù)據(jù),即可進(jìn)入下一個(gè)字節(jié)的寫周期,寫周期開始后,data palling 可能隨時(shí)有效。3.3 ready/busy字節(jié)編程的進(jìn)度可通過(guò)“rdy/bsy 輸出信號(hào)監(jiān)測(cè),編程期間,ale 變?yōu)楦唠娖健癶”后,p3.4(rdy/bsy)端電平被拉低,表示正在編程狀態(tài)(忙狀態(tài))。編程完成后,p3.4 變?yōu)楦唠娖奖硎緶?zhǔn)備就緒狀3.4 排阻排阻,就是若干個(gè)參數(shù)完全相同的電阻,它們的一個(gè)引腳都連到一起,作為公共引腳,其余引腳正常引出。所以如果一個(gè)排阻是由n個(gè)電阻構(gòu)成的,那么它就有n+1只引腳,一般來(lái)說(shuō),最左邊的那個(gè)是公共引腳。它在排阻上一般用一個(gè)色點(diǎn)標(biāo)出來(lái)。排阻一般應(yīng)用在數(shù)字電路上,比如:作為某個(gè)并行口的上拉或者下拉電阻用。使用排阻比用若干只固定電阻更方便。 排阻有a型和b型的區(qū)別。a型排阻的引腳總是奇數(shù)的。它的左端有一個(gè)公共端(用白色的圓點(diǎn)表示),常見的排阻有4、7、8個(gè)電阻,所以引腳共有5或8或9個(gè)。b型排阻的引腳總是偶數(shù)的。它沒有公共端,常見的排阻有4個(gè)電阻,所以引腳共有8個(gè)。排阻的阻值讀法如下:“103”表示:10k,“510”表示:51。以此類推。lg2841結(jié)構(gòu)圖:3.5硬件電路圖(1)電源部分:(2)單片機(jī)部分:(3)開關(guān)控制部分:第四章 軟件方案設(shè)計(jì)4.1 程序設(shè)計(jì)/*程控定時(shí)開關(guān)*/#include/*包含庫(kù)函數(shù)*/*七段數(shù)碼管,高電平有效,順序?yàn)閍bcdefg*/unsigned char led=0,0,0,0;/*將四個(gè)led定義成一個(gè)數(shù)組,用來(lái)顯示時(shí)、分和秒*/char code num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;unsigned int counter;/*counter作為定時(shí)器中斷次數(shù)的計(jì)數(shù)器*/unsigned char n,w=0,flag1=0,flag2=0;/*n為閃爍次數(shù)計(jì)數(shù)器,w為顯示計(jì)數(shù)器,flag為設(shè)置按鍵計(jì)數(shù)器,flag1和flag2均為延時(shí)消抖計(jì)數(shù)器*/unsigned char k1_on=0,k2_on=0;/*k1_on和k2_on分別為開關(guān)1和開關(guān)2的開啟和關(guān)斷狀態(tài)寄存器*/unsigned char h_date=0.m_data=0,s data=0;/*時(shí)鐘的時(shí)、分、秒計(jì)數(shù)器*/unsigned char hdata1_off=0,mdata1_on=3,hdata2_on=0,mdata_on=7;/*開關(guān)1和開關(guān)2的開啟時(shí)間寄存器*/unsigned char hdata1_off=0,mdata1_off=5,hdata2_off=0,mdata_off=9;/*開關(guān)1和開關(guān)2的關(guān)斷時(shí)間寄存器*/void display(void);/*申明顯示子程序*/void delay(unsigned int j)/*定義可變延時(shí)子程序*/unsigned int i;for(i=0;i23)h1=h1%10;return h1;/*定義時(shí)的十位加1函數(shù)*/unsigned char h0_set(unsigned char h0) if(h0%10=3&h0/10=2) h0=h0/10*1;else h0=h0%10+1+h0/10*10;return h0;/*定義時(shí)的個(gè)位加1函數(shù)*/unsigned char m1_set(unsigned char m1)m1=(m1/10+1)*10+m1%10;if(m1=60)m1=m1%10;return m1;/*定義分的十位加1函數(shù)*/unsigned char m0_set(unsigned char m0) if(m0%10=9) m0=m0/10*10;else m0=m0%10+1+m0/10*10;return m0;/*定義分的個(gè)位加1函數(shù)*/void display(void)/*定義顯示子程序*/char code num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/*定義0-9的led顯示段碼數(shù)組.0x00為不顯示(消隱)*/char code tv=0xfe,0xfd,0xfb,oxf7;/*定義位碼數(shù)組,用于控制顯示碼送到哪個(gè)led*/unsigned char k,i;switch(flag)/*根據(jù)設(shè)置所處的模式顯示時(shí)鐘*/case 0:load_led(h_data,m_data);break; /*顯示時(shí)鐘*/case 1:load_led(h_data,m_data);break; /*顯示修改時(shí)鐘設(shè)置*/case 2:load_led(hdata1_on,mdata1_on);break;/*顯示設(shè)置開關(guān)1開啟時(shí)間設(shè)*/case 3:load_led(hdata1_off,mdata1_off);break;/*顯示設(shè)置開關(guān)1關(guān)斷時(shí)間設(shè)置*/case 4:load_led(hdata2_on,mdata2_on);break;/*顯示設(shè)置開關(guān)2開啟時(shí)間設(shè)置*/case 5:load_led(hdata2_off,mdata2_off);break;/*顯示設(shè)置開關(guān)2關(guān)斷時(shí)間設(shè)置*/case 6:load_led(hdata1_on,mdata1_on);break;/*顯示設(shè)置開關(guān)1設(shè)置好的開啟時(shí)間*/case 7:load_led(hdata1_off,mdata1_off);break;/*顯示設(shè)置開關(guān)1設(shè)置好的關(guān)斷時(shí)間*/case 8:load_led(hdata2_on,mdata2_on);break;/*顯示設(shè)置開關(guān)2設(shè)置好的開啟時(shí)間*/case 9:load_led(hdata2_off,mdata2_off);break;/*顯示設(shè)置開關(guān)2設(shè)置好的關(guān)斷時(shí)間*/default:p1=0xff;load_led(h_data,m_data);break; /* 其他情況下,顯示時(shí)鐘*/ n+; /*n用來(lái)對(duì)顯示的次數(shù)進(jìn)行計(jì)數(shù),以便控制對(duì)需要設(shè)置的位進(jìn)行閃爍*/for(k=0;k180) /*每送顯示180次則進(jìn)行一次閃爍*/n=0;if(k=w) /*如果送顯示的位是正準(zhǔn)備調(diào)整的位,則需要閃爍顯示,以下兩句是控制閃爍顯示*/if(n50)flag1=0; flag+; /*用flag對(duì)調(diào)整鍵按下次數(shù)計(jì)數(shù),目的是通過(guò)一個(gè)按鍵實(shí)現(xiàn)多種功能*/if(flag=10) flag=0; /*/if(p3_1=0) /* 移位控制鍵,在4個(gè)led上來(lái)回移動(dòng),選擇需要設(shè)置的led*/ delay(100); /* 消抖*/while(p3_1=0)display()if(flag)/*當(dāng)flag不等于0時(shí),說(shuō)明處于調(diào)整狀態(tài),此時(shí)通過(guò)移位鍵選擇調(diào)整哪一個(gè)led*/w=w+1; /*移位鍵控制w加1,用于修改位碼,w代表4個(gè)led數(shù)碼管的某一位*/if(w=4) w=0; /*/if(p3_2=0) /* 加1操作*/delay(100); /* 消抖*/while(p3_2=0)display();if(flag) /*當(dāng)處于調(diào)整模式時(shí),對(duì)所選擇的led進(jìn)行加1*/switch(flag)case 1: if(w=0) h_data=h1_set(h_data);display(); /*校準(zhǔn)時(shí)間的時(shí)、分*/if(w=1) h_data=h0_set(h_data);display();if(w=2) m_data=m1_set(m_data);display();if(w=3) m_data=m0_set(m_data);display();break; case 2: if(w=0) hdata1_on=h1_set(hdata1_on);display();/* 設(shè)置開關(guān)1開啟時(shí)間的時(shí)、分*/if(w=1) hdata1_on=h0_set(hdata1_on);display();if(w=2) mdata1_on=m1_set(mdata1_on);display();if(w=3) mdata1_on=m0_set(mdata1_on);display(); /* 設(shè)置開關(guān)1關(guān)斷時(shí)間的時(shí)、分*/break; case 3: if(w=0) hdata1_off=h1_set(hdata1_off);display();if(w=1) hdata1_off=h0_set(hdata1_off);display();if(w=2) mdata1_off=m1_set(mdata1_off);display();if(w=3) mdata1_off=m0_set(mdata1_off);display();break; case 4: if(w=0) hdata2_on=h1_set(hdata2_on);display(); /*設(shè)置開關(guān)2開啟時(shí)間的時(shí)、分*/if(w=1) hdata2_on=h0_set(hdata2_on);display();if(w=2) mdata2_on=m1_set(mdata2_on);display();if(w=3) mdata2_on=m0_set(mdata2_on);display(); break; case 5: if(w=0) hdata2_off=h1_set(hdata2_off);display(); /*設(shè)置開關(guān)2關(guān)斷時(shí)間的時(shí)、分*/if(w=1) hdata2_off=h0_set(hdata2_off);display();if(w=2) mdata2_off=m1_set(mdata2_off);display();if(w=3) mdata2_off=m0_set(mdata2_off);display(); break; default:tr0=1;break; void timer0() interrupt 1 /* 定時(shí)器中斷1服務(wù)子程序*/ counter+; /*counter對(duì)定時(shí)中斷進(jìn)行計(jì)數(shù),10000次中斷為1秒*/ if(counter=10000 s_data+; /*個(gè)位秒向十位秒進(jìn)位*/ counter=0; if(s_data=60) /*如果秒計(jì)滿60則向分進(jìn)位,并將秒清0*/ s_data=0; /*秒清0*/ m_data+; /*分進(jìn)位*/ if(m_data=60) /*如果分計(jì)滿60則向時(shí)進(jìn)位,并將分清0*/ m_data=0; /*分清0*/ h_data+; /* 時(shí)進(jìn)位*/ if(h_data=24) /* 如果時(shí)計(jì)滿24則將時(shí)清0*/ h_data=0; /* 時(shí)清0*/ main(void) ie=0x8a; ea|_|_|es|et1|ex1|et0|ex0=10001010/*中斷允許控制*/ tmod=0x02;gate1|c/t|m1|m0|gate0|c/t|m1|m0=00000010/*只有tr0來(lái)啟動(dòng)t0,t0工作于方式2,(自動(dòng)再裝入的8位計(jì)數(shù)器)*/ th0=176 /*計(jì)數(shù)常數(shù)寄存器設(shè)置,中斷定時(shí)時(shí)間為(256+200)x12/f0*/ tl0=-176 /* 定時(shí)計(jì)數(shù)器裝初值*/ tr0=1; /*啟動(dòng)定時(shí)器t0,tcon為tf1|tr1|tf0|tr0|ie1|it1|ie0|it0*/ p3_6=1; /*關(guān)斷定時(shí)開關(guān)1*/ p3_7=1; /*關(guān)斷定時(shí)開關(guān)2*/ while(1) /* 以下為死循環(huán)*/ p1=numflag; adjust(); /* 調(diào)用調(diào)整函數(shù)*/ 以下程序語(yǔ)句作用是:將設(shè)定的開啟時(shí)間和關(guān)斷時(shí)間分別跟當(dāng)前時(shí)間進(jìn)行比較,當(dāng)大于開啟時(shí)間小于關(guān)斷時(shí)間則在p3.6或p3.7輸出低電平使開關(guān)接通,否則輸出搞電平使開關(guān)斷開 k1_on=h_datahdata1_on&h_data=mdata1_on&m_data=mdata1_on&m_datahdata2_on&h_data=mdata2_on&m_data=mdata2_on&m_datamdata2_off,1,0; if(k1_on)p3_6=0;else p3_6=1; if(k2_on)p3_7=0;else p3_7=1; display(); 總結(jié) 這次的畢業(yè)設(shè)計(jì)讓我學(xué)到了很多新的知識(shí),不僅拓寬了知識(shí)面,還強(qiáng)化了自己的綜合性、實(shí)際性。通過(guò)實(shí)驗(yàn)使自己掌握了應(yīng)用單片機(jī)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東杏林科技職業(yè)學(xué)院《建筑設(shè)計(jì)A(五)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國(guó)礦業(yè)大學(xué)徐海學(xué)院《醫(yī)學(xué)免疫學(xué)E》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省聊城市重點(diǎn)達(dá)標(biāo)名校2024-2025學(xué)年初三期中考試物理試題(A卷)試題含解析
- 浙江省兩校2025年高三第二次調(diào)研測(cè)試歷史試題理試題含解析
- 上海市崇明區(qū)2025屆初三5月中考模擬考試(一)英語(yǔ)試題含答案
- 吉林省遼源市重點(diǎn)名校2025屆初三中考適應(yīng)性月考(一)英語(yǔ)試題含答案
- 永州職業(yè)技術(shù)學(xué)院《管理學(xué)前沿專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 磷肥生產(chǎn)工藝與控制考核試卷
- 有色金屬礦山資源勘查新技術(shù)與應(yīng)用考核試卷
- 電動(dòng)汽車用無(wú)線充電系統(tǒng)的電磁場(chǎng)分析考核試卷
- 精神科護(hù)理不良事件分析討論
- 填海石采購(gòu)合同6篇
- 江蘇省蘇州市2022-2023學(xué)年高二下學(xué)期數(shù)學(xué)期中試卷(含答案)
- 中華人民共和國(guó)國(guó)家安全法全文
- 人工智能導(dǎo)論-第2版-全套課件
- 勘察任務(wù)委托書范本
- 數(shù)控技術(shù)(第4版)課件:數(shù)控技術(shù)的發(fā)展及機(jī)械加工自動(dòng)化
- 2024年河南質(zhì)量工程職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 江蘇省徐州市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版小升初真題(下學(xué)期)試卷及答案
- 設(shè)計(jì)單位施工期間配合及技術(shù)服務(wù)措施
- 《混凝土壩智能建造技術(shù)導(dǎo)則》知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論