交通燈模型畢業(yè)論文_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  交通燈模型</b></p><p>  系 別: *******</p><p>  專 業(yè): *******</p><p>  學(xué)生姓名: *******</p><p>  指導(dǎo)教師: *******</p><p><b>  年

2、 月 日</b></p><p><b>  摘要</b></p><p>  當(dāng)今,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。</p><p>  1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通

3、信號燈。1868年,英國機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩種顏色,以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。</p><p>  信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國《道路交通和道路標(biāo)志信號協(xié)定》對各種信

4、號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進(jìn)入交叉路口。</p><p>  對基于單片機(jī)的交通燈控制系統(tǒng)進(jìn)行了設(shè)計(jì)。系統(tǒng)功能為:

5、以AT89C51系列單片機(jī)作為控制核心,設(shè)計(jì)并制作交通燈控制系統(tǒng),東西南北四個方向,配置兩位數(shù)顯,紅綠燈更替過程中綠燈會以一定頻率閃動然后黃燈變亮。</p><p>  在對系統(tǒng)功能分析的基礎(chǔ)上,提出了三種設(shè)計(jì)方案,經(jīng)比較,選擇性能較優(yōu)的LED動態(tài)循環(huán)顯示方案進(jìn)行了設(shè)計(jì)。設(shè)計(jì)包括硬件和軟件兩大部分。硬件部分包括單片機(jī)最小系統(tǒng)、時間顯示、交通燈顯示三部分。選用AT89C51單片機(jī)作為控制核心,東西南北四個方向設(shè)置了

6、交通燈顯示,時間顯示采用兩位LED顯示器,交通燈顯示則采用紅綠雙色高亮發(fā)光二極管來模擬。軟件采用了模塊化的設(shè)計(jì)方法,主要分為主程序、定時器中斷服務(wù)子程序、延時顯示子程序、交通燈模擬顯示子程序四部分。</p><p>  關(guān)鍵詞: 單片機(jī)、定時器、中斷、交通燈、AT89C51</p><p><b>  目 錄</b></p><p><

7、;b>  摘要2</b></p><p><b>  第一章 概述1</b></p><p>  1.1系統(tǒng)功能概述1</p><p>  1.2系統(tǒng)的運(yùn)行環(huán)境1</p><p><b>  1.3開發(fā)工具1</b></p><p>  第二章 設(shè)

8、計(jì)方案論證2</p><p>  2.1系統(tǒng)結(jié)構(gòu)方案論證2</p><p>  2.2顯示方案論證2</p><p>  第三章 單片機(jī)概述4</p><p>  3.1 AT89C51芯片簡介4</p><p>  3.1.1中央處理器4</p><p>  3.1.2數(shù)據(jù)存儲器(

9、RAM)5</p><p>  3.1.3程序存儲器(ROM)5</p><p>  3.1.4定時/計(jì)數(shù)器(ROM)5</p><p>  3.1.5中斷系統(tǒng)5</p><p>  3.1.6時鐘電路5</p><p>  第四章 系統(tǒng)設(shè)計(jì)9</p><p>  4.1 程序流程圖

10、9</p><p>  4.2 晶振電路模塊10</p><p>  4.2.1晶振電路的用途10</p><p>  4.3 復(fù)位電路模塊11</p><p>  4.3.1復(fù)位電路的工作原理11</p><p>  4.3.2 復(fù)位電路的用途13</p><p>  4.4 紅

11、綠燈動態(tài)閃動方式代碼13</p><p>  4.5 定時器延時14</p><p>  4.5.1 計(jì)數(shù)器初值計(jì)算14</p><p>  4.5.2 定時器硬件最大延時14</p><p>  4.5.3 定時1秒的方法15</p><p>  4.5.4 定時器中斷代碼15</p>&l

12、t;p>  4.6 調(diào)整功能模塊16</p><p>  第五章 調(diào)試與檢測19</p><p>  5.1 硬件檢測19</p><p>  5.1.1靜態(tài)檢測19</p><p>  5.1.2動態(tài)檢測19</p><p>  5.2軟件調(diào)試19</p><p>  5.2

13、.1靜態(tài)調(diào)試19</p><p>  5.2.2 動態(tài)調(diào)試20</p><p>  5.3 測試運(yùn)行結(jié)果20</p><p><b>  第六章 總結(jié)22</b></p><p><b>  參考文獻(xiàn)23</b></p><p><b>  致謝24&l

14、t;/b></p><p><b>  第一章 概述</b></p><p><b>  1.1系統(tǒng)功能概述</b></p><p>  本系統(tǒng)要求具有以下功能:</p><p>  系統(tǒng)操作簡單、便捷、界面簡單易懂。 </p><p>  能正常模擬道路通行指示物。

15、</p><p>  能增加或減小道路通行時間。 </p><p>  1.2系統(tǒng)的運(yùn)行環(huán)境</p><p>  本項(xiàng)目所用的運(yùn)行環(huán)境如表1-1所示。</p><p>  表 1-1運(yùn)行環(huán)境表</p><p><b>  1.3開發(fā)工具</b></p><p>  本項(xiàng)目

16、所用的開發(fā)工具如表1-2所示。</p><p>  表 1-2開發(fā)工具表</p><p>  第二章 設(shè)計(jì)方案論證</p><p>  根據(jù)設(shè)計(jì)任務(wù),要求主、次道路,綠、黃、紅燈亮的時間不同并且時間可以預(yù)置和調(diào)整,因此采用單片機(jī)STC89C51來進(jìn)行智能控制。由按鍵輸入調(diào)整值送入單片機(jī)中進(jìn)行數(shù)據(jù)處理,然后輸出到相應(yīng)數(shù)碼管進(jìn)行顯示,同時由不同顏色的發(fā)光二極管進(jìn)行指示。

17、通過對設(shè)計(jì)功能分解,設(shè)計(jì)方案論證可以分為:系統(tǒng)結(jié)構(gòu)方案論證,顯示方案論證,輸入方案論證。</p><p>  2.1系統(tǒng)結(jié)構(gòu)方案論證</p><p>  方案一:純數(shù)字電路方式</p><p>  由秒發(fā)生器電路部分產(chǎn)生周期為一秒的矩形脈沖信號,經(jīng)74LS192分頻后可得到周期為兩秒的脈沖信號,用此信號作為74LS161的輸入控制脈沖,控制74LS161計(jì)數(shù),我們電

18、路中用兩塊74LS161級聯(lián),并用異步清零的辦法將其做成17進(jìn)制計(jì)數(shù)器。用此17位計(jì)數(shù)器的輸出作為譯碼器74ls138的地址輸入,最后將得到的譯碼信息經(jīng)過相應(yīng)的門電路,即可達(dá)到控制交通燈的目的。顯示部分所需脈沖直接采用555輸出的秒脈沖,這樣就可以使得顯示與燈的控制在時間上達(dá)到同步!</p><p><b>  方案二:單片機(jī)方式</b></p><p>  利用單片

19、機(jī)控制相應(yīng)I/O口,模擬交通燈顯示,利用其串口實(shí)現(xiàn)數(shù)碼管顯示。利用外部中斷功能,設(shè)計(jì)人機(jī)交互接口,完成交通燈主次干道通行時間任意可調(diào)。而且移植方便,符合現(xiàn)在的發(fā)展趨勢</p><p>  方案一的優(yōu)點(diǎn)是不需要軟件編程控制,缺點(diǎn)是硬件規(guī)模龐大且不能實(shí)現(xiàn)延時可調(diào)。方案二占用硬件資源少、功能齊全、調(diào)試過程簡單。故本設(shè)計(jì)采用方案二。</p><p><b>  2.2顯示方案論證<

20、/b></p><p>  方案一:采用LED數(shù)碼管</p><p>  LED數(shù)碼管是由8個發(fā)光二極管組成,每只數(shù)碼管輪流顯示各自的字符。由于人眼具有視覺暫留特性,當(dāng)每只數(shù)碼管顯示的時間間隔小于1/16s時,人眼感覺不到閃動,看到的是每只數(shù)碼管常亮。</p><p>  方案二:采用LCD液晶顯示器</p><p>  液晶顯示器,或

21、稱LCD(Liquid Crystal Display),為平面超薄的顯示設(shè)備,它由一定數(shù)量的彩色或黑白像素組成,放置于光源或者反射面前方。液晶顯示器功耗很低,因此倍受工程師青睞,適用于使用電池的電子設(shè)備。它的主要原理是以電流刺激液晶分子產(chǎn)生點(diǎn)、線、面配合背部燈管構(gòu)成畫面</p><p>  方案一使用數(shù)碼管顯示編程較易,且顯示達(dá)到要求,價格便宜。方案二的LED液晶顯示器功率小,效果明顯,但價格較高。兩種方案綜合

22、考慮,選擇方案一。</p><p><b>  第三章 單片機(jī)概述</b></p><p>  單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡稱單片機(jī),特別適用于控制領(lǐng)域,故又稱為微控制器。</p><p>  通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器、存儲器和I/O接

23、口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機(jī)控制系統(tǒng)。</p><p>  單片機(jī)經(jīng)過3代的發(fā)展,目前單片機(jī)正朝著高性能和多品種方向發(fā)展,它們的CPU功能在增強(qiáng),內(nèi)部資源在增多,引角的多功能化,以及低電壓底功耗。</p><p>  3.1 AT89C51芯片簡介</p><p>  AT89C51單片機(jī)包含中央處理器、程序存儲器(R

24、OM)、數(shù)據(jù)存儲器(RAM)、定時/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,下面分別加以說明。</p><p>  3.1.1中央處理器</p><p>  中央處理器(CPU)是整個單片機(jī)的核心部件,由運(yùn)算器和控制器等部件組成。運(yùn)算器是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)

25、算和控制輸入輸出功能等操作??刂破靼ǔ绦蛴?jì)數(shù)器、指令寄存器、指令譯碼器、振蕩器及定時電路等。</p><p>  3.1.2數(shù)據(jù)存儲器(RAM)</p><p>  AT89C51內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運(yùn)

26、算的中間結(jié)果或用戶定義的字型表。</p><p>  3.1.3程序存儲器(ROM)</p><p>  STC89C51內(nèi)程序存儲器容量為4KB,地址從0000H開始,用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p>  3.1.4定時/計(jì)數(shù)器(ROM)</p><p>  AT89C51有兩個16位的可編程定時/計(jì)數(shù)器,它們都有定時和事

27、件計(jì)數(shù)功能,可用于定時控制、延時、對外部事件計(jì)數(shù)和檢測等場合。</p><p><b>  3.1.5中斷系統(tǒng)</b></p><p>  AT89C51具備較完善的中斷功能,有兩個外中斷、兩個定時/計(jì)數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。</p><p><b>  3.1.6時鐘電路</b&

28、gt;</p><p>  AT89C51內(nèi)置最高頻率達(dá)12MHz的時鐘電路,用于產(chǎn)生整個單片機(jī)運(yùn)行的脈沖時序,但AT89C51單片機(jī)需外置振蕩電容。</p><p>  單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。本設(shè)計(jì)所用的Int

29、el的MCS-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式。</p><p>  下圖是AT89C51單片機(jī)的內(nèi)部結(jié)構(gòu)示意圖:</p><p>  AT89C51的各引腳對應(yīng)的功能簡要介紹如下:</p><p>  Vss —— 接地。</p><p>  Vcc —— 電源端,接+5V。</p><p>  P0.0~0.7

30、—— P0口是開漏雙向口可以寫為1使其狀態(tài)為懸浮用作高阻輸入,P0也可以在訪問外部程序存儲器時作地址的低字節(jié),在訪問外部數(shù)據(jù)存儲器時作數(shù)據(jù)總線,此時通過內(nèi)部強(qiáng)上拉輸出1。P0口每位可以能驅(qū)動4個LS型TTL負(fù)載。P1.0~1.7 —— P1口是帶內(nèi)部上拉的雙向I/O口,向P1口寫入1時P1口被內(nèi)部上拉為高電平,可用作輸入口。當(dāng)作為輸入腳時被外部拉低的P1口會因?yàn)閮?nèi)部上拉而輸出電流。P1口每位可以能驅(qū)動P2個LS型TTL負(fù)載。</p

31、><p>  P2.0~2.7 —— P2口是帶內(nèi)部上拉的雙向I/O口,向P2口寫入1時P2口被內(nèi)部上拉為高電平,可用作輸入口。當(dāng)作為輸入腳時,被外部拉低的P2口會因?yàn)閮?nèi)部上拉而輸出電流。在訪問外部程序存儲器和外部數(shù)據(jù)時分別作為地址高位字節(jié)和16位地址,此時通過內(nèi)部強(qiáng)上拉傳送1。當(dāng)使用8位尋址方式訪問外部數(shù)據(jù)存儲器時,P2口每位可以能驅(qū)動4個LS型TTL負(fù)載。</p><p>  P3.0~3

32、.7 —— P3口是帶內(nèi)部上拉的雙向I/O口,向P3口寫入1時P3口被內(nèi)部上拉為高電平,可用作輸入口。當(dāng)作為輸入腳時被外部拉低的P3口,會因?yàn)閮?nèi)部上拉而輸出電流。P3口每位可以能驅(qū)動4個LS型TTL負(fù)載。P3 口還具有以下特殊功能:</p><p>  RxD(p3.0) —— 串行輸入口</p><p>  TxD(P3.1) —— 串行輸出口</p><p> 

33、 INT0(P3.2) —— 外部中斷0</p><p>  INT1(P3.3) —— 外部中斷</p><p>  T0(P3.4) —— 定時器0 外部輸入</p><p>  T1(P3.5) —— 定時器1 外部輸入</p><p>  WR(P3.6) —— 外部數(shù)據(jù)存儲器寫信號</p><p>  RD(

34、P3.7) —— 外部數(shù)據(jù)存儲器讀信號</p><p>  RST —— 復(fù)位。當(dāng)晶振在運(yùn)行中只要復(fù)位管腳出現(xiàn)2個機(jī)器周期高電平,即可復(fù)位內(nèi)部。有擴(kuò)散電阻連接到Vss,僅需要外接一個電容到VCC即可實(shí)現(xiàn)上電復(fù)位。</p><p>  ALE —— 地址鎖存使能。在訪問外部存儲器時,輸出脈沖鎖存地址的低字節(jié),在正常情況下,ALE 輸出信號恒定為1/6 振蕩頻率并可用作外部時鐘或定時。<

35、/p><p>  PSEN —— 程序存儲使能。當(dāng)執(zhí)行外部程序存儲器代碼時,PSEN每個機(jī)器周期被激活兩次。在訪問外部數(shù)據(jù)存儲器時,PSEN無效。訪問內(nèi)部程序存儲器時,PSEN無效。</p><p>  EA/Vpp —— 外部尋址使能/編程電壓。在訪問整個外部程</p><p>  序存儲器時EA必須外部置低,如果EA為高時將執(zhí)行內(nèi)部程序,除非程序計(jì)數(shù)器包含大于片內(nèi)&

36、lt;/p><p>  FLASH的地址。該引腳在對FLASH編程時,接5V/12V編程電壓(VPP),如果保密位1已編程,EA在復(fù)位時由內(nèi)部鎖存。</p><p>  XTAL1 —— 反相振蕩放大器輸入和內(nèi)部時鐘發(fā)生電路輸入。</p><p>  XTAL2 —— 反相振蕩放大器輸出。</p><p>  STC89C51的復(fù)位方式可以是上電

37、自動復(fù)位,也可以是手動復(fù)位,此外,RST/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。</p><p>  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低

38、電平要求的寬度。</p><p><b>  第四章 系統(tǒng)設(shè)計(jì)</b></p><p><b>  4.1 程序流程圖</b></p><p>  4.2 晶振電路模塊</p><p>  晶振電路:典型的晶振取11.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊

39、的場合)/12MHz(產(chǎn)生精確的uS級時歇,方便定時操作)。</p><p>  4.2.1晶振電路的用途</p><p>  石英晶體振蕩器(如圖4-3所示)是一種高精度和高穩(wěn)定度的振蕩器,被廣泛應(yīng)用于彩電、計(jì)算機(jī)、遙控器等各類振蕩電路中,以及通信系統(tǒng)中用于頻率發(fā)生器、為數(shù)據(jù)處理設(shè)備產(chǎn)生時鐘信號和為特定系統(tǒng)提供基準(zhǔn)信號。</p><p>  由于輸出波形不穩(wěn)定,不

40、便于觀察,故采用晶體做振源,便于去除毛刺,更便于觀察信號變化,但精度不高。</p><p>  4.3 復(fù)位電路模塊</p><p>  復(fù)位電路(如圖4-3所示):由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合“電容電壓不能突變”的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會出現(xiàn)高電平,并且,這個高電平持續(xù)的時間由電路的RC值來決定。典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個機(jī)器周期以上就將復(fù)位,所以,

41、適當(dāng)組合RC的取值就可以保證可靠的復(fù)位.一般教科書推薦C 取10uf,R取8.2K。當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個機(jī)周期的高電平。至于如何具體定量計(jì)算,可以參考電路分析相關(guān)書籍。</p><p>  4.3.1復(fù)位電路的工作原理</p><p>  在書本上有介紹,51單片機(jī)要復(fù)位只需要在第9引腳接個高電平持續(xù)2US就可以實(shí)現(xiàn),那這個過程是如何實(shí)現(xiàn)的

42、呢?</p><p>  在單片機(jī)系統(tǒng)中,系統(tǒng)上電啟動的時候復(fù)位一次,當(dāng)按鍵按下的時候系統(tǒng)再次復(fù)位,如果釋放后再按下,系統(tǒng)還會復(fù)位。所以可以通過按鍵的斷開和閉合在運(yùn)行的系統(tǒng)中控制其復(fù)位。</p><p>  開機(jī)的時候?yàn)槭裁礊閺?fù)位?</p><p>  在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機(jī)

43、的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。</p><p>  也就是說在電腦啟動的0.1S內(nèi),電容兩端的電壓時在0~3.5V增加。這個時候10K電阻兩端的電壓為從5~1.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.1S內(nèi),RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機(jī)中小于1.5V的電壓信號為低電平信號,而大于1.5V的電壓信號為高電平

44、信號。所以在開機(jī)0.1S內(nèi),單片機(jī)系統(tǒng)自動復(fù)位(RST引腳接收到的高電平信號時間為0.1S左右)。</p><p>  按鍵按下的時候?yàn)槭裁磿?fù)位?</p><p>  在單片機(jī)啟動0.1S后,電容C兩端的電壓持續(xù)充電為5V,這是時候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時候,開關(guān)導(dǎo)通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這個

45、過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內(nèi),從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機(jī)系統(tǒng)自動復(fù)位。</p><p><b>  總結(jié):</b></p><p> ?。?)復(fù)位電路的原理是單片機(jī)RST引腳接收到2US以上的電平信號

46、,只要保證電容的充放電時間大于2US,即可實(shí)現(xiàn)復(fù)位,所以電路中的電容值是可以改變的。(2)按鍵按下系統(tǒng)復(fù)位,是電容處于一個短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。</p><p>  51單片機(jī)最小系統(tǒng)電路介紹:</p><p>  1.51單片機(jī)最小系統(tǒng)復(fù)位電路的極性電容C1的大小直接影響單片機(jī)的復(fù)位時間,一般采用10~30uF,51單片機(jī)最小系統(tǒng)容值越大需要的復(fù)位時間

47、越短。2.51單片機(jī)最小系統(tǒng)晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情況下可以采用更高頻率的晶振,51單片機(jī)最小系統(tǒng)晶振的振蕩頻率直接影響單片機(jī)的處理速度,頻率越大處理速度越快。</p><p>  3.51單片機(jī)最小系統(tǒng)起振電容C2、C3一般采用15~33pF,并且電容離晶振越近越好,晶振離單片機(jī)越近越好4.P0口為開漏輸出,作為輸出口時需加上拉電阻,阻值一般為10k。設(shè)置為定時器模

48、式時,加1計(jì)數(shù)器是對內(nèi)部機(jī)器周期計(jì)數(shù)(1個機(jī)器周期等于12個振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時時間t。</p><p>  設(shè)置為計(jì)數(shù)器模式時,外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。在每個機(jī)器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時,則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。由于

49、檢測一個從1到0的下降沿需要2個機(jī)器周期,因此要求被采樣的電平至少要維持一個機(jī)器周期。當(dāng)晶振頻率為12MHz時,最高計(jì)數(shù)頻率不超過1/2MHz,即計(jì)數(shù)脈沖的周期要大于2 ms。</p><p>  4.3.2 復(fù)位電路的用途</p><p>  單片機(jī)復(fù)位電路就好比電腦的重啟部分,當(dāng)電腦在使用中出現(xiàn)死機(jī),按下重啟按鈕電腦內(nèi)部的程序從頭開始執(zhí)行。單片機(jī)也一樣,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行中,受到環(huán)境干

50、擾出現(xiàn)程序跑飛的時候,按下復(fù)位按鈕內(nèi)部的程序自動從頭開始執(zhí)行。</p><p>  4.4 紅綠燈動態(tài)閃動方式代碼</p><p>  因?yàn)榧t綠燈放在不同的方位,并且在不同的時刻有著不同的動態(tài)效果,所以其代碼也必須要有此種變換效果的功能,其代碼如下:</p><p>  if(dongxi==1&&count1>delay_yellow)<

51、;/p><p><b>  {</b></p><p>  dong_green=1;</p><p>  dong_red=0;</p><p>  dong_yellow=0;</p><p>  bei_green=0;</p><p>  bei_red=1;</

52、p><p>  bei_yellow=0;</p><p><b>  }</b></p><p>  if(dongxi==1&&count1<=delay_yellow)</p><p><b>  {</b></p><p>  dong_green

53、=shanyue;</p><p>  dong_red=0;</p><p>  dong_yellow=1;</p><p>  bei_green=0;</p><p>  bei_red=1;</p><p>  bei_yellow=0;</p><p><b>  }<

54、;/b></p><p>  if(nanbei==1&&count1>delay_yellow)</p><p><b>  {</b></p><p>  dong_green=0;</p><p>  dong_red=1;</p><p>  dong_yell

55、ow=0;</p><p>  bei_green=1;</p><p>  bei_red=0;</p><p>  bei_yellow=0;</p><p><b>  }</b></p><p>  if(nanbei==1&&count1<=delay_yello

56、w)</p><p><b>  {</b></p><p>  dong_green=0;</p><p>  dong_red=1;</p><p>  dong_yellow=0;</p><p>  bei_green=shanyue;</p><p>  bei_

57、red=0;</p><p>  bei_yellow=1;</p><p><b>  }</b></p><p><b>  4.5 定時器延時</b></p><p>  4.5.1 計(jì)數(shù)器初值計(jì)算</p><p>  定時器工作時必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個值是送到

58、TH和TL中的。它是以加法記數(shù)的,并能從全1到全0時自動產(chǎn)生溢出中斷請求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為TC 可得到如下計(jì)算通式: TC=M-C 式中,M為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時M為;在方式1時M的值為。</p><p>  4.5.2 定時器硬件最大延時</p><p>  因一個機(jī)器周期等于12個振蕩周期,所以計(jì)數(shù)

59、頻率fcount=1/12osc。如果晶振為12MHz,則計(jì)數(shù)周期為:</p><p>  T=1/(12×106)Hz×1/12=1μs</p><p><b>  很顯然可以知道:</b></p><p>  方式0 13位定時器最大定時間隔=213×1µS=8.192ms</p>&

60、lt;p>  方式1 16位定時器最大定時間隔=216×1µS=65.536ms</p><p>  方式2 8位定時器最大定時間隔=28×1µS=256µS</p><p>  顯然1秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時間,所以我們只有采用定時器和軟件相結(jié)合的辦法才能解決這個問題。</p><p><b&

61、gt;  普通延時方法:</b></p><p>  void delay(unsigned n) //0.2毫秒</p><p><b>  {int x,y;</b></p><p>  for(x=0;x<n;x++)</p><p>  for(y=0;y<24;y++);}

62、</p><p>  4.5.3 定時1秒的方法</p><p>  我們采用在主程序中設(shè)定一個初值為65536的軟件計(jì)數(shù)器和使T0定時10毫秒.這樣每當(dāng)T0到50毫秒時CPU就響應(yīng)它的溢出中斷請求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,count自加到100時表示1秒已到可以返回到輸出時間顯示程序[2]。</p><p>  4.5.4 定時器中斷代碼<

63、;/p><p>  void time1() interrupt 1 //定時器中斷函數(shù)</p><p><b>  {</b></p><p>  TH0=(65536-10000)/256; </p><p>  TL0=(65536-10000)%256; //重新載入延時時間, 如果晶振為12M,則為被減數(shù)

64、則為10000 </p><p><b>  count++;</b></p><p>  if(count==100) count1--,count=0;</p><p>  if(count%5==0) display();</p><p>  if(count%25==0) shanyue=~shanyue;<

65、;/p><p>  if(count1==0) </p><p><b>  {</b></p><p>  dongxi=~dongxi;</p><p>  nanbei=~nanbei;</p><p>  delay_dong_green=delay_dong_green1;</p&g

66、t;<p>  delay_bei_green=delay_bei_green1;</p><p>  if(dongxi==1) count1=delay_dong_green;</p><p>  if(nanbei==1) count1=delay_bei_green;</p><p><b>  }</b></p&g

67、t;<p><b>  }</b></p><p>  在中斷之前,必須要將時鐘中斷1開通,即定時中斷初始化,代碼如下:</p><p>  void init()</p><p><b>  {</b></p><p>  TMOD= 0x01;</p><p&g

68、t;  TH0=(65536-10000)/256; //定時10ms</p><p>  TL0=(65536-10000)%256;</p><p>  EA=1; //打開總中斷</p><p>  ET0=1; //允許定時器中斷</p><p><b>  PT0=1;</b></p&g

69、t;<p>  TR0=1; //開啟定時器(開始定時計(jì)數(shù))</p><p><b>  }</b></p><p>  4.6 調(diào)整功能模塊</p><p>  由于實(shí)際情況,路口的車行流量會發(fā)生不同程度的堵塞,為了方便行人車輛交通方便,本系統(tǒng)增加了延時調(diào)整功能。能過對延時時間的調(diào)整,交警可心實(shí)時控制路況,避免交通事故的發(fā)生,

70、大大方便了行人車輛的出行安全。</p><p><b>  模塊代碼為:</b></p><p>  void key()</p><p><b>  { </b></p><p><b>  if(K1==0)</b></p><p><b&

71、gt;  {</b></p><p>  delay(10);//延時去抖 </p><p>  if(K1==0) //按K1進(jìn)行模式切換 </p><p><b>  { </b></p><p><b>  muoshi++;</b></p><

72、;p>  if(muoshi==3) </p><p><b>  muoshi=0;</b></p><p><b>  }</b></p><p>  while(!K1);//等待按鍵釋放</p><p>  } </p><p>  if(muo

73、shi>0)</p><p><b>  {</b></p><p>  switch(muoshi)</p><p><b>  {</b></p><p>  case 1: </p><p><b>  { </b></p>

74、<p><b>  if(K2==0)</b></p><p><b>  {</b></p><p>  delay(10);//延時去抖 </p><p>  if(K2==0) //加鍵按下</p><p><b>  { </b>&

75、lt;/p><p>  if(delay_bei_green1<60) delay_bei_green1+=5;</p><p>  else delay_bei_green1=10;</p><p><b>  } </b></p><p>  while(!K2); //等待按鍵釋放</p>&

76、lt;p><b>  }</b></p><p><b>  if(K3==0)</b></p><p><b>  {</b></p><p>  delay(10); //延時去抖 </p><p>  if(K3==0) //加鍵按下</p&

77、gt;<p><b>  { </b></p><p>  if(delay_bei_green1>=15) delay_bei_green1-=5;</p><p>  else delay_bei_green1=60;</p><p><b>  }</b></p><p>

78、  while(!K3); //等待按鍵釋放</p><p><b>  }</b></p><p><b>  } break;</b></p><p>  case 2: </p><p><b>  { </b></p><p><

79、;b>  if(K2==0)</b></p><p><b>  {</b></p><p>  delay(10);//延時去抖 </p><p>  if(K2==0) //加鍵按下</p><p><b>  { </b></p><

80、;p>  if(delay_dong_green1<60) delay_dong_green1+=5;</p><p>  else delay_dong_green1=10;</p><p><b>  } </b></p><p>  while(!K2); //等待按鍵釋放</p><p><

81、;b>  }</b></p><p><b>  if(K3==0)</b></p><p><b>  {</b></p><p>  delay(10); //延時去抖 </p><p>  if(K3==0) //加鍵按下</p><p&

82、gt;<b>  { </b></p><p>  if(delay_dong_green1>=15) delay_dong_green1-=5;</p><p>  else delay_dong_green1=60;</p><p><b>  }</b></p><p>  while(

83、!K3); //等待按鍵釋放</p><p><b>  }</b></p><p><b>  } break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

84、;b>  }</b></p><p>  延時調(diào)整模塊原理圖如下:</p><p><b>  第五章 調(diào)試與檢測</b></p><p><b>  5.1 硬件檢測</b></p><p>  硬件檢測又分為:靜態(tài)檢測和動態(tài)檢測。</p><p><

85、;b>  5.1.1靜態(tài)檢測</b></p><p>  第一步:目測,檢查外部的各種元件或則電路是否有斷點(diǎn);</p><p>  第二步:用萬用表測試。先用萬用表復(fù)核目測中有疑問的連接點(diǎn),再檢測各種電源線與地線之間是否有短路現(xiàn)象;</p><p>  第三步:加電檢測。給板加電,檢測所有的插座或是器件的電源端是否符合要求的值;</p>

86、<p>  第四步:是聯(lián)機(jī)檢查。因?yàn)橹挥杏脝纹瑱C(jī)開發(fā)系統(tǒng)才能完成對用戶系統(tǒng)的調(diào)試。</p><p><b>  5.1.2動態(tài)檢測</b></p><p>  動態(tài)檢測是在設(shè)計(jì)工作的情況下發(fā)現(xiàn)和排除系統(tǒng)硬件中存在的器件內(nèi)部故障、器件連接邏輯錯誤等的一種硬件檢查。</p><p>  首先運(yùn)用由分到合的調(diào)試方法。調(diào)試電路時,與該元件

87、無關(guān)的器件全部從設(shè)計(jì)中去掉,這樣可以將故障范圍限定在某個局部的電路上。當(dāng)各塊電路無故障后,將各電路逐塊加入系統(tǒng)中,在對各塊電路功能及各電路間可能存在的相互聯(lián)系進(jìn)行調(diào)試。由分到合的調(diào)試既告完成。</p><p>  然后運(yùn)用由近及遠(yuǎn)的調(diào)試方法。將信號流經(jīng)的各器件按照距離單片機(jī)的邏輯距離進(jìn)行由近及遠(yuǎn)的分層,然后分層調(diào)試。調(diào)試時,仍采用去掉無關(guān)元件的方法,逐層調(diào)試下去,就會定位故障元件了。</p><

88、;p><b>  5.2軟件調(diào)試</b></p><p><b>  5.2.1靜態(tài)調(diào)試</b></p><p>  靜態(tài)調(diào)試是指對程序進(jìn)行人工書面檢查。靜態(tài)調(diào)試時要仔細(xì)閱讀程序及其文檔,經(jīng)過結(jié)構(gòu)分析、功能分析、邏輯分析、接口分析、語法分析以及逐行檢查。</p><p><b>  檢查語法錯誤</b

89、></p><p>  產(chǎn)生語法錯誤的原因主要有兩個:一是鍵入錯誤,此錯誤如同寫文章時的“筆誤”;二是由于對語法規(guī)則不熟悉,見書后錯誤信息、各種限制、全局變量與局部變量、先后左右的原則等,這些雖不是系統(tǒng)規(guī)定,但也是語法的一部分,應(yīng)作為專項(xiàng)予以檢查。</p><p><b>  跟蹤過程</b></p><p>  此時的跟蹤程序流程,即

90、把自己當(dāng)作計(jì)算機(jī)。給定一組輸入數(shù)據(jù)后,順序執(zhí)行每條語句,考察所得結(jié)果,尋找錯誤。</p><p>  5.2.2 動態(tài)調(diào)試</p><p>  動態(tài)調(diào)試是指實(shí)際上機(jī)運(yùn)行程序進(jìn)行調(diào)試。源程序上機(jī)運(yùn)行,語言系統(tǒng)及操作系統(tǒng)會在程序有故障時給出信息,常見的故障分為以下幾種情況:</p><p><b>  沒有通過編譯。</b></p>

91、<p><b>  沒有通過連接編譯。</b></p><p>  程序的運(yùn)行過程因故障而停止。</p><p>  程序只輸出部分結(jié)果。對這部分結(jié)果進(jìn)行分析,可大致了解程序被執(zhí)行的邏輯,或程序在什么地方中斷。</p><p>  軟件調(diào)試通過對擁護(hù)程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正。本系統(tǒng)的軟件

92、系統(tǒng)不是很大,而且全部采用C語言編寫,除語法與邏輯差錯外,當(dāng)確認(rèn)程序沒問題時,直接下載到單片機(jī)仿真調(diào)試。采取自下到上的方法,單獨(dú)調(diào)好每一個模塊,最后完成一個完整的系統(tǒng)調(diào)試。</p><p>  5.3 測試運(yùn)行結(jié)果</p><p>  東南西北四個方位均設(shè)有紅綠黃三盞燈,并且每次紅綠轉(zhuǎn)換時,黃燈會以2HZ的頻率閃動,而主桿道通行時間為30S,次桿道通行時間為30S,黃燈閃動時間為5S。此處

93、由一兩位一體的數(shù)碼管作顯示效果。</p><p><b>  正常運(yùn)行如下圖:</b></p><p><b>  第六章 總結(jié)</b></p><p>  本次設(shè)計(jì)利用了AT89C51進(jìn)行,其功能與51相仿,在設(shè)計(jì)過程中遇到過不小問題,如代碼編譯出錯,邏輯出錯,仿真出錯到焊接時候的出錯,但設(shè)計(jì)的本身就是為了在出錯中了成長

94、,這讓我更加了解最小系統(tǒng)設(shè)計(jì)的方法。</p><p>  通過這次畢業(yè)設(shè)計(jì),使我得到了一次用專業(yè) 知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編程設(shè)計(jì)思路技巧(特別是C語言)的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。在信息系各位指導(dǎo)教師的大力支持下,我基本完成了這次設(shè)計(jì)任務(wù)。我在這一次畢業(yè)設(shè)計(jì)過程中,很是受益匪淺。通過對自己在

95、大學(xué)三年時間里所學(xué)的知識的回顧,并充分發(fā)揮對所學(xué)知識的理解和對畢業(yè)設(shè)計(jì)的思考及書面表達(dá)能力,最終完成了。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴的經(jīng)驗(yàn)。撰寫論文的過程也是專業(yè)知識的學(xué)習(xí)過程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識,對其進(jìn)行設(shè)計(jì),分析和解決一個理論問題或?qū)嶋H問題,把知識轉(zhuǎn)化為能力的實(shí)際訓(xùn)練。在同學(xué)及指導(dǎo)教師孔老師的一些指點(diǎn)和引導(dǎo)下,真正培養(yǎng)了我運(yùn)用所學(xué)知識解決實(shí)際問題的能力。</p><p>  通過這次設(shè)

96、計(jì)我發(fā)現(xiàn),只有理論水平提高了;才能夠?qū)⒄n本知識與實(shí)踐相整合,理論知識服務(wù)于教學(xué)實(shí)踐,以增強(qiáng)自己的動手能力。這個設(shè)計(jì)在現(xiàn)實(shí)社會中也存在著一定的價值和意義,從中我獲得很深刻的經(jīng)驗(yàn)。通過這次課程設(shè)計(jì),我們知道了理論和實(shí)際的距離,也知道了理論和實(shí)際想結(jié)合的重要性,,也從中得知了很多書本上無法得知的知識。</p><p>  我們的學(xué)習(xí)不但要立足于書本,以解決理論和實(shí)際教學(xué)中的實(shí)際問題為目的,還要以實(shí)踐相結(jié)合,理論問題即實(shí)

97、踐課題,解決問題即課程研究,學(xué)生自己就是一個專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學(xué)習(xí)就應(yīng)該采取理論與實(shí)踐結(jié)合的方式,理論的問題,也就是實(shí)踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實(shí)踐,解決實(shí)際問題,加強(qiáng)我們的動手能力和解決問題的關(guān)鍵。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 郭天祥.新概念51單片機(jī)

98、C語言教程 入門、提高、開發(fā)、拓展全攻略.清華大學(xué)出版社.2009.1 78-113.</p><p>  [2] 孫涵芳.MCS-51系列單片機(jī)原理及應(yīng)用[M] .北京航空航天大學(xué)出版社.1996-4.</p><p>  [3] 李琳. 用單片機(jī)實(shí)現(xiàn)交通燈的控制[J] . 科技創(chuàng)業(yè)月刊. 2008年.11期: 145-14.</p><p>  [4] 康華光.

99、電子技術(shù)基礎(chǔ).數(shù)字部分 .北京:高等教育出版社.2000.</p><p>  [5] 黃正謹(jǐn).綜合電子設(shè)計(jì)與實(shí)踐[M] .東南大學(xué)出版社.2002-3.</p><p>  [6] 夏路易,石宗義.電路原理圖與電路設(shè)計(jì)教程Protel 99SE[M] .北京希望電子出版社.2002.</p><p>  [7] 謝自美.電子線路設(shè)計(jì)、實(shí)驗(yàn)、測試.華中理工大學(xué)出版社

100、.2000.</p><p><b>  致謝</b></p><p>  本文是在xxx老師的全面指導(dǎo)中完成的,老師認(rèn)真負(fù)責(zé)的工作態(tài)度促使我更好的完成了本畢業(yè)設(shè)計(jì),x老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和科學(xué)的工作方法給了我極大的幫助和影響。在論文完成之際,向老師致以最真摯的感謝和最崇高的敬意! 在實(shí)驗(yàn)室工作及撰寫論文期間,xx同學(xué)對我論文中的研究工作給予了熱情幫助,另外還有

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論