版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> .</b></p><p> 《嵌入式系統(tǒng)原理與應(yīng)用》綜合設(shè)計(jì)</p><p> 交通信號(hào)燈控制器設(shè)計(jì)</p><p> 完 成 日 期 2011年 6月</p><p><b> 目錄</b></p><p> 1.緒論.......
2、.......................................................2</p><p> 2.課程設(shè)計(jì)要求及實(shí)驗(yàn)設(shè)備與器材......................................2</p><p> 2.1課程設(shè)計(jì)題目...............................................2</p
3、><p> 2.2課程設(shè)計(jì)目的...............................................2</p><p> 2.3設(shè)計(jì)要求...................................................3</p><p> 2.4工作流程..................................
4、.................3</p><p> 2.5實(shí)驗(yàn)設(shè)備與器材.............................................3</p><p> 3.硬件設(shè)計(jì)..........................................................4</p><p> 3.1設(shè)計(jì)系統(tǒng)介紹及原理
5、框圖.....................................4</p><p> 3.2電源供電系統(tǒng)...............................................4</p><p> 3.3ARM開(kāi)發(fā)板..................................................5</p><p
6、> 3.4LED顯示系統(tǒng)...............................................5</p><p> 3.5鍵盤(pán)系統(tǒng)...................................................7</p><p> 3.6原理電路圖...........................................
7、......9</p><p> 4.軟件設(shè)計(jì)方案......................................................5</p><p> 4.1程序流程圖.................................................5</p><p> 4.2方案論證................
8、...................................7</p><p> 4.3調(diào)試過(guò)程...................................................7</p><p> 4.4運(yùn)行結(jié)果...................................................7</p><p>
9、; 4.4.1結(jié)果分析..............................................8</p><p> 4.4.2體會(huì)與收獲............................................8</p><p> 參考文獻(xiàn)........................................................
10、...10</p><p> 特別致謝...........................................................10</p><p> 附錄...............................................................15</p><p><b> 1.緒論&
11、lt;/b></p><p> 嵌入式計(jì)算機(jī)系統(tǒng)的出現(xiàn),是現(xiàn)代計(jì)算機(jī)發(fā)展歷史山的里程碑。嵌入式系統(tǒng)誕生于微型計(jì)算機(jī)時(shí)代,與通用計(jì)算機(jī)的發(fā)展道路完全不同,形成了獨(dú)立的單芯片的技術(shù)發(fā)展道路。由于嵌入式系統(tǒng)的誕生,現(xiàn)代計(jì)算機(jī)領(lǐng)域出現(xiàn)了通用計(jì)算機(jī)與嵌入式計(jì)算機(jī)兩大分支。不可兼顧的技術(shù)發(fā)展道路,形成了兩大分支的獨(dú)立發(fā)展:通用計(jì)算機(jī)按照高速、海量的技術(shù)發(fā)展;嵌入式計(jì)算機(jī)系統(tǒng)則為滿(mǎn)足對(duì)象系統(tǒng)按照嵌入式智能化控制要求發(fā)展
12、。由于獨(dú)立的分工發(fā)展,20世紀(jì)末,現(xiàn)代計(jì)算機(jī)的兩大分支都得到了迅猛的發(fā)展。</p><p> 2.課程設(shè)計(jì)要求及實(shí)驗(yàn)設(shè)備與器材</p><p><b> 2.1課程設(shè)計(jì)題目</b></p><p> 模擬交通燈控制器設(shè)計(jì)</p><p><b> 2.2課程設(shè)計(jì)目的</b></p>
13、;<p> 通過(guò)本次綜合設(shè)計(jì),運(yùn)用已學(xué)的課程知識(shí),根據(jù)題目要求進(jìn)行軟硬件系統(tǒng)的設(shè)計(jì)和調(diào)試,對(duì)《嵌入式系統(tǒng)原理與應(yīng)用》課程中涉及的芯片結(jié)構(gòu)、控制原理、硬件和編程等方面有一定的感性認(rèn)識(shí)和實(shí)踐操作能力,從而加深對(duì)本課程知識(shí)點(diǎn)的理解,使學(xué)生應(yīng)用知識(shí)能力、設(shè)計(jì)能力、調(diào)試能力以及報(bào)告撰寫(xiě)能力等方面有顯著提高。</p><p><b> 2.3設(shè)計(jì)要求</b></p>&l
14、t;p> 利用實(shí)驗(yàn)系統(tǒng)的資源來(lái)設(shè)計(jì)一個(gè)“模擬交通燈控制器”。</p><p> 控制面板包括:8位數(shù)碼顯示器、2組交通燈(每組交通燈包括紅、黃和綠3個(gè)燈)、十個(gè)數(shù)字按鍵鍵盤(pán)、電源按鍵、電源指示燈和一個(gè)運(yùn)行鍵。</p><p><b> 具體設(shè)計(jì)要求如下:</b></p><p> 1.設(shè)計(jì)一交通燈控制系統(tǒng),其結(jié)構(gòu)如圖1.1所示,工
15、作方式滿(mǎn)足上述要求。</p><p> 2.主干道和次干道的通行時(shí)間及黃燈點(diǎn)亮的時(shí)間可以手動(dòng)設(shè)置。</p><p> 3.在沒(méi)有手動(dòng)設(shè)置通行時(shí)間時(shí),系統(tǒng)自動(dòng)按表1.1的模式進(jìn)行工作。</p><p> 十字交叉路口的交通燈控制系統(tǒng)的結(jié)構(gòu)圖1.1所示 </p><p> 往南和往北的信號(hào)一致,即紅燈(綠燈或黃燈)同時(shí)亮或同時(shí)熄滅。用兩個(gè)
16、數(shù)碼管來(lái)顯示被點(diǎn)亮的指示燈還將點(diǎn)亮多久。</p><p> 往東和往西的方向的信號(hào)一致。其工作方式與南北方向一樣。也采用兩個(gè)數(shù)碼管來(lái)倒計(jì)時(shí),當(dāng)南北方向?yàn)榫G燈和黃燈時(shí),東西向的紅燈點(diǎn)亮禁止通行,而東西方向?yàn)榫G燈和黃燈時(shí),南北向的紅燈點(diǎn)亮禁止通行。</p><p> 假設(shè)南北方向?yàn)橹鞲傻?,通行時(shí)間為60秒,東西方向是次干道,通行時(shí)間為30秒,黃燈點(diǎn)亮的時(shí)間均為4秒,則其工作方式如表1.1所
17、示循環(huán)點(diǎn)亮信號(hào)燈。</p><p><b> 2.4工作流程</b></p><p> 按下電源鍵,電源指示燈亮;</p><p> 按下運(yùn)行鍵,模擬交通燈控制器工作;</p><p> LED實(shí)時(shí)顯示當(dāng)前的交通狀況;</p><p> 紅燈和綠燈的工作順序如下:</p>
18、<p> 圖2.1 紅燈工作順序圖</p><p> 圖2.2 綠燈工作順序圖</p><p> 用2位數(shù)碼管實(shí)時(shí)倒計(jì)時(shí)時(shí)間,倒計(jì)時(shí)流程如下:</p><p> 圖2.3 LED等結(jié)合數(shù)碼管工作順序圖</p><p> F.運(yùn)行過(guò)程中,若再按下電源鍵,則控制器停止工作,電源指示燈滅。</p><p&
19、gt; 2.5實(shí)驗(yàn)設(shè)備與器材</p><p><b> (1)電源模塊</b></p><p> ?。?)ARM開(kāi)發(fā)板LM3S2110</p><p> ?。?)1602液晶顯示</p><p><b> 3.硬件系統(tǒng)設(shè)計(jì)</b></p><p> 3.1設(shè)計(jì)系統(tǒng)介紹
20、及原理框圖</p><p> ?。?)接通電源時(shí)或系統(tǒng)復(fù)位后,系統(tǒng)按程序給定的時(shí)間工作,即南北向通行60秒,東西向通行30秒,黃燈亮4秒,工作模式如表1.1所示。首先南北向通行,然后東西向通行,如此循環(huán)。</p><p> ?。?)通行時(shí)間的設(shè)置:當(dāng)需要更改主、次干道的通行時(shí)間時(shí),可以用“設(shè)置鍵、增加鍵、減少鍵”進(jìn)行設(shè)置。</p><p> 第一次按“設(shè)置鍵”時(shí),
21、南北向的綠燈亮,南北向的數(shù)碼管顯示當(dāng)前南北向的通行時(shí)間,并且按每秒3次的頻率閃爍(每秒亮3次暗3次),其余的信號(hào)指示燈和東西向的數(shù)碼管熄滅,此時(shí)可以用“增加鍵”和“減少鍵”來(lái)改變南北向的通行時(shí)間。按一次“增加鍵”或“減少鍵”,數(shù)碼管的顯示增加一秒或減小一秒,長(zhǎng)按“增加鍵”或“減少鍵”(按下的時(shí)間超過(guò)一秒鐘以上)則數(shù)碼管顯示的時(shí)間按每秒鐘增加或減少10的速度快速變化。</p><p> 第二次按“設(shè)置鍵”時(shí),南北
22、向的黃燈亮,南北向的數(shù)碼管顯示當(dāng)前南北向黃燈點(diǎn)亮?xí)r間,并且按每秒3次的頻率閃爍每秒亮3次暗3次),其余的信號(hào)指示燈和東西向的數(shù)碼管熄滅,此時(shí)可以用“增加鍵”和“減少鍵”來(lái)改變南北向黃燈的點(diǎn)亮?xí)r間。</p><p> 第三次按“設(shè)置鍵”時(shí),東西向的綠燈亮,東西向的數(shù)碼管顯示當(dāng)前東西向的通行時(shí)間,并且按每秒3次頻率閃爍,此時(shí)可以用“增加鍵”和“減少鍵”來(lái)改變東西向的通行時(shí)間。</p><p>
23、; 第四次按“設(shè)置鍵”時(shí),東西向的黃燈亮,東西向的數(shù)碼管顯示當(dāng)前東西向黃燈的點(diǎn)亮?xí)r間,并且按每秒3次頻率閃爍,此時(shí)可以用“增加鍵”和“減少鍵”來(lái)改變東西向黃燈的點(diǎn)亮?xí)r間。</p><p> 第五次按“設(shè)置鍵”時(shí),系統(tǒng)退出設(shè)置狀態(tài),回到交通信號(hào)燈狀態(tài),并且南北向先通行,東西向后通行?!霸O(shè)置鍵”的功能表圖1.2所示。</p><p><b> 3.2電源供電系統(tǒng)</b&g
24、t;</p><p> 本系統(tǒng)采用220V電源供電,應(yīng)設(shè)計(jì)相應(yīng)的穩(wěn)壓電源電路。但課程設(shè)計(jì)受時(shí)間限制,也可采用現(xiàn)成的5V直流穩(wěn)壓電源供電,這樣可節(jié)約設(shè)計(jì)時(shí)間,簡(jiǎn)化設(shè)計(jì)過(guò)程。</p><p> 圖3.1電源模塊硬件圖</p><p><b> 3.3ARM開(kāi)發(fā)板</b></p><p> ARM建設(shè)選用TI LM3
25、S2110芯片,便于設(shè)計(jì)和調(diào)試。</p><p> 3.4LED顯示系統(tǒng)</p><p> 南北向和東西向各采用2個(gè)數(shù)碼管計(jì)時(shí),對(duì)該方向的指示燈的點(diǎn)亮?xí)r間進(jìn)行倒計(jì)時(shí),最長(zhǎng)計(jì)時(shí)范圍為99秒。設(shè)計(jì)時(shí)可利用芯片的PD口和PA口作為字段和位選信號(hào)輸出,經(jīng)驅(qū)動(dòng)芯片后驅(qū)動(dòng)數(shù)碼管顯示倒計(jì)時(shí)時(shí)間,數(shù)碼管采用動(dòng)態(tài)掃描方式顯示。</p><p> 圖3.2數(shù)碼管模塊硬件圖<
26、;/p><p> 圖3.3LED模塊硬件圖</p><p><b> 3.5 鍵盤(pán)系統(tǒng)</b></p><p> 設(shè)置3個(gè)程序按鍵:設(shè)置鍵、增加鍵、減少鍵,因鍵盤(pán)使用頻率很小,建議采用查詢(xún)方式來(lái)讀取鍵盤(pán)。另需配置一個(gè)非程序按鍵:系統(tǒng)復(fù)位鍵。</p><p> 圖3.4 矩陣鍵盤(pán)模塊硬件圖</p><
27、;p><b> 3.6原理電路圖</b></p><p> 圖3.5 硬件電路圖</p><p><b> 4.軟件設(shè)計(jì)方案</b></p><p><b> 4.1程序流程圖</b></p><p> 圖3.6 軟件流程圖</p><p&g
28、t;<b> 4.2方案論證</b></p><p> 電源模塊采用單片機(jī)控制模塊提供電源。改方案的優(yōu)點(diǎn)是系統(tǒng)簡(jiǎn)明扼要,節(jié)約成本;缺點(diǎn)是輸出功率不高。</p><p> 顯示模塊用數(shù)碼管與點(diǎn)陣LED 相結(jié)合的方法因?yàn)樵O(shè)計(jì)既要求倒計(jì)時(shí)數(shù)字輸出,又要求有狀態(tài)燈輸出等,為方便觀看并考慮到現(xiàn)實(shí)情況,用數(shù)碼管與LED燈分別顯示時(shí)間與提示信息。這種方案既滿(mǎn)足系統(tǒng)功能要求,又
29、減少了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。</p><p> 輸入模塊采用4*4矩陣鍵盤(pán),由于單片機(jī)/嵌入式實(shí)踐平臺(tái)的試驗(yàn)箱對(duì)于交通燈及數(shù)碼管的控制,只用LM3S2110芯片本身與試驗(yàn)箱管腳相連,通過(guò)程序就可實(shí)現(xiàn)。</p><p> 綜上所述,以LM3S2110芯片為核心器件,采用連接8段LED數(shù)碼顯示管,4*4矩陣鍵盤(pán)電路組成。利用單片機(jī)的優(yōu)勢(shì)設(shè)計(jì)電路直接在管腳上接上按鍵開(kāi)關(guān)。因?yàn)樵O(shè)計(jì)的時(shí)候僅見(jiàn)和優(yōu)化
30、了電路,所以剩余的管教資源還比較多。由于該系統(tǒng)對(duì)于交通燈以及數(shù)碼管的控制,只需要單片機(jī)本身就可以實(shí)現(xiàn),所以選擇這種方案。</p><p><b> 4.3調(diào)試過(guò)程</b></p><p> 我們的程序分為2大部分,第一部分是嵌入式LM3S2110芯片上的LED燈程序的調(diào)試;第二部分是試驗(yàn)箱上數(shù)碼顯示管與4*4矩陣鍵盤(pán)程序的調(diào)試。</p><p&
31、gt; 先把嵌入式LM3S2110芯片與PC機(jī)連接,在PC機(jī)上安裝芯片的驅(qū)動(dòng),路徑為C:\Program Files\IAR System\Embedded Workbench 5.4 Kickstart</p><p> \arm\drivers\LuminaryFTDI,設(shè)定管腳為GPIOB口的PIN1~PIN4,即為芯片上的LED3~LED6。我們的程序是先讓LED3和LED6點(diǎn)亮50秒,再閃爍5次,再
32、讓LED4和LED5點(diǎn)亮10秒??墒瞧鸪跏荓ED3和6亮完之后就是LED4和5亮,沒(méi)有閃爍的過(guò)程,后來(lái)發(fā)現(xiàn)是程序中的延時(shí)循環(huán)出現(xiàn)了問(wèn)題,然后經(jīng)過(guò)了一次次更改,一次次錯(cuò)誤,最后終于成功的讓交通燈正確點(diǎn)亮。</p><p> 第二部分是把試驗(yàn)箱與嵌入式LM3S2110芯片的管腳依次相連。這次程序還沒(méi)有調(diào)試就有一個(gè)大問(wèn)題出現(xiàn),就是管腳怎么連接。我們需要的是8位顯示管模塊和矩陣鍵盤(pán)模塊,8位公陽(yáng)顯示管模塊中的段和位我們
33、分別定義為GPIOD口的PIN1~PIN7,GPIOE口的PIN0~PIN1;矩陣鍵盤(pán)中的橫向以及縱向分別定義為GPIOA口的PIN2~PIN5,GPIOC口的PIN4~PIN7。然后根據(jù)我們找到的資料YCHD-3和ARM2110的管腳圖依次相連,然后再連接地線。</p><p> 第一次的問(wèn)題是8個(gè)8位數(shù)碼管一次只能顯示一位,可是我們的倒計(jì)時(shí)需要十位和個(gè)位同時(shí)顯示,正當(dāng)我們無(wú)從著手時(shí)候,有同學(xué)給了我們一個(gè)建議
34、:利用人眼的視覺(jué)暫留,讓數(shù)碼管不斷地刷不斷的閃,只要時(shí)間足夠短暫那我們看起來(lái)就像是2位數(shù)碼管同時(shí)亮。改程序,1秒內(nèi)十位個(gè)位互相閃爍50次,果然成功了。期間有許多失敗的經(jīng)歷,就不贅述了。</p><p> 第二次的問(wèn)題是按鍵與數(shù)碼管沒(méi)有互相作用,程序中的提示也是定義按鍵為多余的警告。使能了按鍵后,雖然警告沒(méi)有了,可是數(shù)碼管依然不受按鍵控制。找了許多同學(xué)尋求幫助,雖然找出了我們程序中存在的問(wèn)題,但是沒(méi)有改變現(xiàn)狀,又
35、一次的束手無(wú)策。最后終于發(fā)現(xiàn)原來(lái)是管腳的鏈接問(wèn)題,我們忽略了矩陣鍵盤(pán)中的J1模塊和J3模塊的短接。利用跳線帽短接J1模塊的2個(gè)管腳和J3模塊的兩個(gè)管腳。連接之后重新燒入程序,調(diào)試成功了。</p><p> 當(dāng)按下K1鍵時(shí),倒計(jì)時(shí)50秒,按下K2鍵時(shí),倒計(jì)時(shí)10秒,K3鍵40秒,一次類(lèi)推,一直到100秒。但是因?yàn)槲覀冇昧?位的8段數(shù)碼管,所以當(dāng)?shù)?9秒時(shí)候,自動(dòng)歸零。</p><p>&l
36、t;b> 4.4運(yùn)行結(jié)果</b></p><p><b> 4.4.1結(jié)果分析</b></p><p> 把LM3S2110芯片與PC機(jī)連接后,把LED程序進(jìn)行仿真,把程序燒入芯片內(nèi),LED1和LED6點(diǎn)亮(見(jiàn)圖3.7),亮50秒后,閃爍5次。讓LED2和LED5點(diǎn)亮(見(jiàn)圖3.8),亮10秒后,閃爍5次。依次往復(fù)循環(huán)。</p>&
37、lt;p> 圖4.1LED1和LED6亮</p><p> 圖4.2 LED2和LED5亮</p><p> 4.4.2體會(huì)與收獲</p><p> 這次課程設(shè)計(jì)帶給我們的不僅僅是對(duì)課本知識(shí)的加深的理解,也鍛煉了我們對(duì)于把書(shū)本知識(shí)運(yùn)用到實(shí)踐中的能力。平時(shí)在課堂上學(xué)到的東西有的雖然明白了,但是畢竟沒(méi)有實(shí)際操作經(jīng)驗(yàn),操作起來(lái)容易出錯(cuò);有的只是一知半解,用于
38、實(shí)踐中就出現(xiàn)了問(wèn)題。對(duì)于知識(shí)的理解知識(shí)單純的停留在書(shū)本階段,自己動(dòng)手嘗試了以后,這些知識(shí)對(duì)于我們而言更加鮮活生動(dòng)起來(lái)了。</p><p> 從剛剛開(kāi)始的無(wú)從下手,到逐步的知道自己該做什么,該怎么做。不斷地遇到新的問(wèn)題,不斷地嘗試各種方法解決,即使失敗了也有了經(jīng)驗(yàn)。漸漸的發(fā)現(xiàn)問(wèn)題,解決問(wèn)題,遇到新問(wèn)題,再解決問(wèn)題,這種循環(huán)讓我們體會(huì)到了靠自覺(jué)解決問(wèn)題的成就感。從實(shí)踐中直接得到的知識(shí)會(huì)比書(shū)本上老師傳授所得到的知識(shí)更
39、容易讓我們掌握。</p><p> 當(dāng)然專(zhuān)業(yè)知識(shí)也收獲不少,當(dāng)初的C語(yǔ)言學(xué)的半吊子,考試階段的臨時(shí)抱佛腳讓我們到了關(guān)鍵時(shí)刻都不知道各種語(yǔ)句怎么用,可是又不得不寫(xiě)出來(lái)。當(dāng)然就網(wǎng)上收集資料,學(xué)習(xí)別人的程序,在別人的模板上逐漸修改,漸漸地這段程序的絕大多數(shù)都是我們自己的成果了。還有一些作圖軟件以前從未接觸或者有少許接觸的通過(guò)這次的鍛煉也讓我們熟練掌握了它們的用法。</p><p><b&
40、gt; 參考文獻(xiàn)</b></p><p> [1] 李朝青. 單片機(jī)原理及接口技術(shù)(第 3 版). 北京:北京航空航天大學(xué)出版社,2006 </p><p> [2] 何立民. 單片機(jī)應(yīng)用技術(shù)大全. 北京:北京航空航天大學(xué)出版社,1994 第 19 頁(yè)</p><p> [3]周立功,LM3S2110微控制器[EB/OL].</p>
41、<p> http://www.zlgmcu.com/LUMINARY/Stellaris/LM3S2110.asp 2010年6月。</p><p> [4]周立功,ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2004 P213~P216</p><p> [5]張齊 朱寧西,單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)[M].北京:電子工業(yè)出版社,2004 P251~P
42、255,P256~P260。</p><p> [6]張軍 宋濤 AVR單片機(jī)C語(yǔ)言程序?qū)嵗鈁M].北京:電子工業(yè)出版社,1997 P122~P133。</p><p> [7]張大明,單片微機(jī)控制應(yīng)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2006 P65~P70。</p><p><b> 特別致謝</b></p>&l
43、t;p> 本次關(guān)于模擬交通燈設(shè)計(jì)與制作是在王永明老師和徐會(huì)彬老師以及其他輔導(dǎo)老師的悉心指導(dǎo)下,和同組內(nèi)的其他兩位成員的共同討論,互相交流才得以順利完成。經(jīng)過(guò)本次設(shè)計(jì)我們把大學(xué)里所學(xué)的理論知識(shí)轉(zhuǎn)為成為實(shí)際的應(yīng)用,既鍛煉了我們的實(shí)際草操作能力,又使理論知識(shí)得到升華,激發(fā)了我們的創(chuàng)新意識(shí)。</p><p> 特別感謝與我同組的兩位組員,在工作中我們積極配合,互相幫助,勇于創(chuàng)新。更要感謝身邊的同學(xué),雖然不是我們
44、一組的,但是在我們遇到使我們措手不及的時(shí)候,在程序上給我們很多提示很多幫助,感謝他的無(wú)償幫助。用過(guò)本次設(shè)計(jì)使我們的動(dòng)手能力得到很大的提高,讓我們走出了實(shí)踐盲區(qū),為以后的畢業(yè)設(shè)計(jì)以及工作后的動(dòng)手能力打下堅(jiān)實(shí)的基礎(chǔ)。最后感謝學(xué)院為我們提供了這次機(jī)會(huì)。再次感謝老師們和同學(xué)們的幫助!</p><p><b> 附錄</b></p><p><b> 程序清單&l
45、t;/b></p><p> #include "systemInit.h"</p><p> #define lcden GPIO_PIN_0 //PB0;</p><p> #define lcdrs GPIO_PIN_1 //PB1;</p><p> unsigned char da
46、ta; //PD0-PD7;</p><p> unsigned int shi=48+5,ge=48;</p><p> void write_com(unsigned char com) //寫(xiě)命令</p><p><b> {</b></p><p> GPIOPinWrite(GPIO_PORT
47、B_BASE,lcdrs,0x00); // lcdrs=0;</p><p> GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|</p><p> GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,com);//PD=com;</p>
48、;<p> SysCtlDelay(5 * (TheSysClock / 4000)); // 延時(shí) 5ms</p><p> GPIOPinWrite(GPIO_PORTB_BASE,lcden,0xFF); // lcden=1; </p><p> SysCtlDelay(5 * (TheSysClock / 40
49、00)); </p><p> GPIOPinWrite(GPIO_PORTB_BASE,lcden,0x00); // lcden=0; </p><p><b> }</b></p><p> void write_data(unsigned char date)</p><p><b> {
50、</b></p><p> GPIOPinWrite(GPIO_PORTB_BASE,lcdrs,0xFF); // lcdrs=1;</p><p> GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|</p><p> GPIO_PIN_3|GPIO_PIN_4|G
51、PIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,date);//PD=date;</p><p> SysCtlDelay(5 * (TheSysClock / 4000)); </p><p> GPIOPinWrite(GPIO_PORTB_BASE,lcden,0xFF); // lcden=1; </p><p> SysCtlDela
52、y(5 * (TheSysClock / 4000)); </p><p> GPIOPinWrite(GPIO_PORTB_BASE,lcden,0x00); // lcden=0;</p><p><b> }</b></p><p> void init()</p><p><b> {<
53、/b></p><p> SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD); //使能A端口</p><p> GPIOPinTypeOut(GPIO_PORTD_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|</p><p> GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|
54、GPIO_PIN_6|GPIO_PIN_7); </p><p> SysCtlPeriEnable(SYSCTL_PERIPH_GPIOB); </p><p> GPIOPinTypeOut(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1);</p><p> GPIOPinWrite(GPIO_PORTB_BASE,lcde
55、n,0x00); // lcden=0; </p><p> write_com(0x38);</p><p> write_com(0x0e);</p><p> write_com(0x06);</p><p> write_com(0x01); // 在開(kāi)始清屏</p><p>
56、 write_com(0x80+0x10); //數(shù)據(jù)指針地址</p><p><b> }</b></p><p><b> // 定義LED</b></p><p> #define LED1_PERIPH SYSCTL_PERIPH_GPIOF</p><p>
57、; #define LED1_PORT GPIO_PORTF_BASE</p><p> #define LED1_PIN GPIO_PIN_1</p><p> #define LED2_PERIPH SYSCTL_PERIPH_GPIOF</p><p> #defi
58、ne LED2_PORT GPIO_PORTF_BASE</p><p> #define LED2_PIN GPIO_PIN_2</p><p> #define LED3_PERIPH SYSCTL_PERIPH_GPIOB</p><p> #define LED3
59、_PORT GPIO_PORTB_BASE</p><p> #define LED3_PIN GPIO_PIN_0</p><p> #define LED4_PERIPH SYSCTL_PERIPH_GPIOB</p><p> #define LED4_PORT
60、 GPIO_PORTB_BASE</p><p> #define LED4_PIN GPIO_PIN_1</p><p> #define LED5_PERIPH SYSCTL_PERIPH_GPIOB</p><p> #define LED5_PORT
61、 GPIO_PORTB_BASE</p><p> #define LED5_PIN GPIO_PIN_2</p><p> #define LED6_PERIPH SYSCTL_PERIPH_GPIOB</p><p> #define LED6_PORT GPIO
62、_PORTB_BASE</p><p> #define LED6_PIN GPIO_PIN_3</p><p> #define BEEP_PERIPH SYSCTL_PERIPH_GPIOH</p><p> #define BEEP_PORT GPIO_PORTH_B
63、ASE</p><p> #define BEEP_PIN GPIO_PIN_0</p><p> unsigned char i;</p><p> void LED1FLASH ()</p><p><b> {</b></p><p> unsign
64、ed char ucVal;</p><p> ucVal = GPIOPinRead(LED1_PORT, LED1_PIN); // 翻轉(zhuǎn)LED</p><p> GPIOPinWrite(LED1_PORT, LED1_PIN, ~ucVal);</p><p> ucVal = GPIOPinRead(LED6_PORT, L
65、ED6_PIN); // 翻轉(zhuǎn)LED</p><p> GPIOPinWrite(LED6_PORT, LED6_PIN, ~ucVal);</p><p> SysCtlDelay(500 * (TheSysClock / 3000)); </p><p> GPIOPinWrite(LED1_PORT
66、, LED1_PIN, ucVal);</p><p> GPIOPinWrite(LED6_PORT, LED6_PIN, ucVal); </p><p> SysCtlDelay(500 * (TheSysClock / 3000)); </p><p><b> }</b></p><p> void L
67、ED2FLASH ()</p><p><b> {</b></p><p> unsigned char ucVal;</p><p> ucVal = GPIOPinRead(LED2_PORT, LED2_PIN); // 翻轉(zhuǎn)LED</p><p> GPIOPinWrite(L
68、ED2_PORT, LED2_PIN, ~ucVal); </p><p> ucVal = GPIOPinRead(LED5_PORT, LED5_PIN); // 翻轉(zhuǎn)LED</p><p> GPIOPinWrite(LED5_PORT, LED5_PIN, ~ucVal);</p><p> SysCtlDela
69、y(500 * (TheSysClock / 3000)); </p><p> GPIOPinWrite(LED2_PORT, LED2_PIN, ucVal); </p><p> GPIOPinWrite(LED5_PORT, LED5_PIN, ucVal); </p><p> SysCtlDelay(500 *
70、(TheSysClock / 3000)); </p><p><b> }</b></p><p> void LED3FLASH ()</p><p><b> {</b></p><p> unsigned char ucVal;</p><p> ucVal
71、 = GPIOPinRead(LED3_PORT, LED3_PIN); // 翻轉(zhuǎn)LED</p><p> GPIOPinWrite(LED3_PORT, LED3_PIN, ~ucVal); </p><p> ucVal = GPIOPinRead(LED4_PORT, LED4_PIN); </p><p&g
72、t; GPIOPinWrite(LED4_PORT, LED4_PIN, ~ucVal); // 翻轉(zhuǎn)LED</p><p> SysCtlDelay(500 * (TheSysClock / 3000)); </p><p> GPIOPinWrite(LED3_PORT, LED3_PIN, ucVal); </p&g
73、t;<p> GPIOPinWrite(LED4_PORT, LED4_PIN, ucVal); </p><p> SysCtlDelay(500 * (TheSysClock / 3000)); </p><p><b> }</b></p><p> void BEEP()</p><p>&
74、lt;b> {</b></p><p> unsigned char ucVal;</p><p> ucVal = GPIOPinRead(BEEP_PORT, BEEP_PIN); // 翻轉(zhuǎn)LED</p><p> GPIOPinWrite(BEEP_PORT, BEEP_PIN, ~ucVal);</
75、p><p> SysCtlDelay(100 * (TheSysClock / 3000)); // 延時(shí)約10ms,消除按鍵抖動(dòng)</p><p> GPIOPinWrite(BEEP_PORT, BEEP_PIN, ucVal);</p><p> SysCtlDelay(100 * (TheSysClock / 3000));
76、 // 延時(shí)約10ms,消除按鍵抖動(dòng) </p><p><b> }</b></p><p> viod display() //顯示函數(shù)</p><p><b> {</b></p><p&g
77、t; write_com(0x80+0x00);</p><p> write_data(shi);</p><p> //write_com(1);</p><p> write_com(0x80+0x01);//數(shù)據(jù)指針</p><p> write_data(ge);</p><p> SysCtl
78、Delay(1000 * (TheSysClock / 4000)); </p><p><b> ge--;</b></p><p> if(ge==47)</p><p><b> {shi--;</b></p><p><b> ge=57;}</b></p
79、><p><b> }</b></p><p> // 主函數(shù)(程序入口)</p><p> int main(void)</p><p><b> {</b></p><p> clockInit();
80、 // 時(shí)鐘初始化:晶振,6MHz</p><p> SysCtlPeriEnable(LED1_PERIPH); // 使能LED所在的GPIO端口</p><p> GPIOPinTypeOut(LED1_PORT, LED1_PIN); // 設(shè)置LED所在管
81、腳為輸出</p><p> SysCtlPeriEnable(LED2_PERIPH); // 使能LED所在的GPIO端口</p><p> GPIOPinTypeOut(LED2_PORT, LED2_PIN); // 設(shè)置LED所在管腳為輸出</p><p>
82、 SysCtlPeriEnable(LED3_PERIPH); // 使能LED所在的GPIO端口</p><p> GPIOPinTypeOut(LED3_PORT, LED3_PIN); // 設(shè)置LED所在管腳為輸出</p><p> SysCtlPeriEnable(LED4_P
83、ERIPH); // 使能LED所在的GPIO端口</p><p> GPIOPinTypeOut(LED4_PORT, LED4_PIN); // 設(shè)置LED所在管腳為輸出</p><p> SysCtlPeriEnable(LED5_PERIPH);
84、 // 使能LED所在的GPIO端口</p><p> GPIOPinTypeOut(LED5_PORT, LED5_PIN); // 設(shè)置LED所在管腳為輸出</p><p> SysCtlPeriEnable(LED6_PERIPH); // 使能LED所在的GPIO
85、端口</p><p> GPIOPinTypeOut(LED6_PORT, LED6_PIN); // 設(shè)置LED所在管腳為輸出</p><p> SysCtlPeriEnable(BEEP_PERIPH); // 使能LED所在的GPIO端口</p><p>
86、GPIOPinTypeOut(BEEP_PORT, BEEP_PIN); // 設(shè)置LED所在管腳為輸出</p><p> GPIOPinWrite(LED1_PORT, LED1_PIN, 0xFF); // 熄滅LED</p><p> GPIOPinWrite(LED2_PORT, LED2_PIN, 0xF
87、F); // 熄滅LED</p><p> GPIOPinWrite(LED3_PORT, LED3_PIN, 0xFF); // 熄滅LED</p><p> GPIOPinWrite(LED4_PORT, LED4_PIN, 0xFF); // 熄滅LED</p><p>
88、 GPIOPinWrite(LED5_PORT, LED5_PIN, 0xFF); // 熄滅LED</p><p> GPIOPinWrite(LED6_PORT, LED6_PIN, 0xFF); // 熄滅LED</p><p><b> init();</b></p><p>
89、<b> while(1)</b></p><p><b> { </b></p><p> GPIOPinWrite(LED1_PORT, LED1_PIN, 0x00); // LED1點(diǎn)亮 (LED1代表東西綠燈)</p><p> GPIOPinWrite(LED6_PORT, LED6_P
90、IN, 0x00);</p><p> SysCtlDelay(50000 * (TheSysClock / 3000)); //延遲50s</p><p> display(50);</p><p> for(i=0;i<5;i++)//設(shè)置綠燈一閃一閃。(相當(dāng)于綠燈亮,警告還有5秒黃燈就亮了,1秒閃一下)</p><p>
91、;<b> {</b></p><p> LED1FLASH ();</p><p> BEEP(); </p><p><b> }</b></p><p> GPIOPinWrite(LED1_PORT, LED1_PIN, 0xFF); //讓LED1熄滅
92、</p><p> GPIOPinWrite(LED6_PORT, LED6_PIN, 0xFF); //讓LED6熄滅</p><p> GPIOPinWrite(LED2_PORT, LED2_PIN, 0x00); //讓LED2亮</p><p> GPIOPinWrite(LED5_PORT, LED5_PIN, 0x00); //讓LE
93、D5亮</p><p> SysCtlDelay(4000 * (TheSysClock / 3000)); //延遲4s </p><p> for(i=0;i<5;i++)//設(shè)置黃燈一閃一閃。(相當(dāng)于黃燈亮,警告還有5秒紅燈就亮了,1秒閃一下)</p><p><b> {</b></p><p>
94、; LED2FLASH ();</p><p> BEEP(); </p><p><b> }</b></p><p> GPIOPinWrite(LED2_PORT, LED2_PIN, 0xFF); //讓LED2熄滅</p><p> GPIOPinWrite(LED5_PO
95、RT, LED5_PIN, 0xFF); //讓LED5熄滅</p><p> GPIOPinWrite(LED4_PORT|LED3_PORT, LED4_PIN|LED3_PIN, 0x00); //讓LED3和LED4亮</p><p> SysCtlDelay(10000 * (TheSysClock / 3000)); //延遲10s</p><p&
96、gt; for(i=0;i<5;i++)//設(shè)置紅燈閃5次。(1秒閃一下)</p><p><b> {</b></p><p> LED3FLASH ();</p><p> BEEP(); </p><p><b> }</b></p><p
97、> GPIOPinWrite(LED3_PORT, LED3_PIN, 0xFF); // 熄滅LED</p><p> GPIOPinWrite(LED4_PORT, LED4_PIN, 0xFF); </p><p><b> }</b></p><p><b> }</b>&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計(jì)--交通燈控制器
- 交通燈課程設(shè)計(jì)報(bào)告---交通燈控制器
- 交通燈控制器課程設(shè)計(jì)
- 交通燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通燈控制器
- 課程設(shè)計(jì)----交通燈控制器
- 交通燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通燈控制器
- 課程設(shè)計(jì)--交通燈控制器
- 課程設(shè)計(jì)---交通燈控制器設(shè)計(jì)
- 課程設(shè)計(jì)-- 交通燈控制器設(shè)計(jì)
- 交通燈控制器課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)--交通燈控制器
- eda課程設(shè)計(jì)(交通燈控制器)
- eda課程設(shè)計(jì)---交通燈控制器
- 交通燈控制器課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)交通燈控制器
- eda課程設(shè)計(jì)交通燈控制器
- 單片機(jī)課程設(shè)計(jì)----模擬交通燈控制器
- eda課程設(shè)計(jì)--交通燈控制器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論