版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 單片機課程設(shè)計</b></p><p><b> 專業(yè):機電一體化</b></p><p><b> 學號:</b></p><p><b> 姓名:</b></p><p><b> 指導教師: </
2、b></p><p> 2011年07月01日</p><p> 需求分析:(敘述該設(shè)計的應(yīng)用場合、設(shè)計目的、立題意義)</p><p> 設(shè)計目的:模擬交通燈控制器就是使用單片機來控制一些LED 和數(shù)碼管,模擬真實交通燈的功能。紅、黃、綠交替閃亮,利用數(shù)碼管倒計數(shù)顯示間隔等,用于管理十字路口的車輛及行人交通,計時牌顯示路口通行轉(zhuǎn)換剩余時間等</p
3、><p> 應(yīng)用場合:應(yīng)用于十字路口。</p><p> 立題意義:設(shè)計一個功能多點的交通燈,節(jié)省時間且交通更流暢。</p><p> 硬件設(shè)計方案(畫出系統(tǒng)框圖即數(shù)據(jù)流向、硬件所用的器件,如單色燈、單片機等,并將芯片原理簡要介紹)</p><p><b> 硬件所用器件:</b></p><p&
4、gt; AT89C51芯片原理:</p><p> AT89系列單片機是ATMEL公司最早推出,也是功能最簡單的一個系列,該系列都是內(nèi)含F(xiàn)lash程序存儲器的MCS-51兼容單片機,AT89C51就是其中一款可在線編程ISP Flash單片機。AT89C51具有價格便宜、性能優(yōu)良、可在線編程等特點。其具體性能參數(shù)如下:兼容MCS-51內(nèi)核單片機;4KB可在線編程Flash存儲器,可有效擦除/讀寫1000次;工
5、作電壓范圍4.0~5.5V;完全靜態(tài)工作:0Hz~33MHz;ROM三級加密模式;128*8bit內(nèi)置RAM;32位可控I/O引腳;2個16位的時鐘源;5個中斷源;全雙工UART串行接口;低功耗工作模式;看門狗計時器;兩個數(shù)據(jù)指針;快速編程特性。</p><p><b> 系統(tǒng)硬件框圖</b></p><p> 單片機可選用AT89C51,它與8051系列單片機全
6、兼容,但其內(nèi)部帶有4KB方便。南北向和東西向各采用2個數(shù)碼管計時,同時需要對該方向的指示燈的點亮時間進行倒計時</p><p> 軟件設(shè)計方案(畫流程圖、寫出算法分析)</p><p> 根據(jù)設(shè)計要求,程序框圖如圖所示。軟件可由匯編語言完成,也可由C語言完成。軟件設(shè)計可以分為以下幾個功能模塊:</p><p> 計時程序模塊:為定時器的中斷服務(wù)子程序,完成0.
7、05秒(或其他時間)和1秒的時間定時。 </p><p> 顯示程序模塊:完成60個發(fā)光二極管(實際上只需驅(qū)動30個)和8個LED數(shù)碼管的顯示驅(qū)動。</p><p><b> 程序流程圖</b></p><p><b> 系統(tǒng)程序流程圖</b></p><p> 調(diào)試(針對該設(shè)計所用到的軟件
8、調(diào)試和硬件調(diào)試的方法)</p><p><b> 軟件調(diào)試:</b></p><p> 軟件調(diào)試主要是利用proteus仿真軟件完成電路的搭建,運行以發(fā)現(xiàn)設(shè)計中的錯誤及時改正。</p><p><b> 硬件調(diào)試:</b></p><p> 硬件調(diào)試主要是檢測硬件電路是否有短路、斷路、虛焊等
9、。具體步驟及測試結(jié)果如下:</p><p> (1)檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導線是否完全連接,對未連接的進行修復(fù)。</p><p> ?。?)參照原理圖,檢查各個器件之間的連接是否連接正確,是否存在虛焊,經(jīng)測試,各連接不存在問題。</p><p> ?。?)以上兩項檢查并修復(fù)完后,給該硬件電路上電,電源指示燈點亮。系統(tǒng)功能調(diào)試:&
10、lt;/p><p> 通過軟件仿真顯示,系統(tǒng)基本能完成要求。</p><p> 心得體會(課程設(shè)計所遇到的問題以及解決方法,所收獲到的知識點等)</p><p> 做課程設(shè)計是為了讓我們對平時學習的理論知識與實際操作相結(jié)合,在理論和實驗教學基礎(chǔ)上進一步鞏固已學基本理論及應(yīng)用知識并加以綜合提高,學會將知識應(yīng)用于實際的方法,提高分析和解決問題的能力。對于交通燈這個題目
11、,由于以前學單片機這個課程時,做過類似相關(guān)的實驗,覺得這個比較簡單而且做出的東西也比較直觀,在確定題目之后,查閱了大量的資料,初步完成了電路設(shè)計方案。</p><p> 雖然感覺交通燈程序沒什么難的,就是數(shù)碼管倒計時顯示加幾個閃爍的二極管就完事,但是也許是起初想的太簡單,設(shè)計時到了細節(jié)處,也出了不少問題,而且很難被檢查出來,比如在用定時器中斷后用一些選擇語句程序由于判斷條件有疏漏程序很容易跑飛;但是最后經(jīng)過我們
12、的不斷努力,還是寫出來正確的代碼。</p><p> 接下來就是仿真了,在仿真也遇到了一些問題比如一些元器件的代號不知道;還有一開始交通燈想試試好不好用就接了一個腳怎么改程序都不亮;后來才試出來必須三個腳都接才能亮。</p><p> 通過這次課設(shè),對以前學過的知識進行了鞏固,加深了理解,提高了應(yīng)用的能力,而且提高了我們的發(fā)現(xiàn)、分析、解決問題的能力。經(jīng)歷了從最初的設(shè)計到最后做出產(chǎn)品的開
13、發(fā)過程,提高了對專業(yè)的認識及興趣,對于我們工科來說,對以后就業(yè)有及其重大的影響。</p><p> 附錄1:(程序代碼)</p><p> #include<reg51.h></p><p> #define uchar unsigned char //定義為uchar類型</p><p> #define uint
14、 unsigned int //定義為uint類型</p><p> sbit dxgew=P3^6;</p><p> sbit nbgew=P3^4;</p><p> sbit dxsw=P3^7;</p><p> sbit nbsw=P3^5;</p><p> sbit nbr=
15、P0^0; </p><p> sbit nby=P0^1;</p><p> sbit nbg=P0^2;</p><p> sbit dxr=P0^3;</p><p> sbit dxy=P0^4;</p><p> sbit dxg=P0^5;</p><p&g
16、t; sbit nbyzr=P0^6;</p><p> sbit nbyzy=P0^7;</p><p> sbit nbyzg=P2^0;</p><p> sbit dxyzr=P2^1;</p><p> sbit dxyzy=P2^2;</p><p> sbit dxyzg=P2^3
17、;</p><p> sbit nbzzr=P2^4;</p><p> sbit nbzzy=P2^5;</p><p> sbit nbzzg=P2^6;</p><p> sbit dxzzr=P2^7;</p><p> sbit dxzzy=P3^0;</p><p&g
18、t; sbit dxzzg=P3^1;</p><p> uchar code table[]={0xc0,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數(shù)碼管顯示0~9 </p><p> uchar t=7,i;</p><p> uchar time_Count; //進行計時<
19、/p><p> uchar ge=10,shi=3; //要顯示的個位和十位</p><p> void delay(uchar z) //一個延時函數(shù)</p><p><b> {</b></p><p> uchar a,b;</p><p> for(a=0;a<150
20、;a++)</p><p> { </p><p> for(b=0;b<z;b++);</p><p> } </p><p><b> }</b></p><p> void Init_
21、Timer()//定時器的初始化</p><p><b> {</b></p><p> TMOD=0x01;</p><p> TH0=(65536-5000)/256;</p><p> TL0=(65536-5000)%256;</p><p><b> ET0=1;&
22、lt;/b></p><p><b> TR0=1;</b></p><p> EA=1; </p><p><b> }</b></p><p> void Seg_Disp()//將個位十位分別顯示在數(shù)碼管上面</p><p>&
23、lt;b> {</b></p><p><b> dxsw=0;</b></p><p><b> nbsw=0;</b></p><p><b> dxgew=1;</b></p><p><b> nbgew=1;</b>
24、</p><p> P1=table[ge];</p><p><b> delay(1);</b></p><p><b> dxgew=0;</b></p><p><b> nbgew=0;</b></p><p><b> n
25、bsw=1;</b></p><p><b> dxsw=1;</b></p><p> P1=table[shi];</p><p><b> delay(1);</b></p><p><b> }</b></p><p> v
26、oid main()//程序運行的主函數(shù)</p><p><b> { </b></p><p><b> SP=0x6f;</b></p><p><b> P1=0xff;</b></p><p><b> dxgew=0;</b>&l
27、t;/p><p><b> nbgew=0;</b></p><p><b> dxsw=0;</b></p><p><b> nbsw=0;</b></p><p> EX0=1;//開外部中斷0</p><p> TCON=0x00;<
28、;/p><p><b> dxr=0;</b></p><p><b> dxy=0;</b></p><p><b> dxg=0;</b></p><p><b> nbr=0;</b></p><p><b>
29、 nby=0;</b></p><p><b> nbg=0;</b></p><p><b> dxyzr=0;</b></p><p><b> dxyzy=0;</b></p><p><b> dxyzg=0;</b></
30、p><p><b> nbyzr=0;</b></p><p><b> nbyzy=0;</b></p><p><b> nbyzg=0;</b></p><p><b> dxzzr=0;</b></p><p><
31、b> dxzzy=0;</b></p><p><b> dxzzg=0;</b></p><p><b> nbzzr=0;</b></p><p><b> nbzzy=0;</b></p><p><b> nbzzg=0;</
32、b></p><p> Init_Timer();</p><p><b> while(1)</b></p><p><b> {</b></p><p> Seg_Disp();</p><p> if(time_Count==200)</p>
33、<p><b> {</b></p><p> time_Count=0;</p><p><b> ge--;</b></p><p><b> if(t==7)</b></p><p><b> { </b></p>
34、<p><b> dxr=1;</b></p><p><b> dxy=0;</b></p><p><b> dxg=0;</b></p><p><b> nbr=0;</b></p><p><b> nby=0;
35、</b></p><p><b> nbg=1;</b></p><p><b> dxyzr=0;</b></p><p><b> dxyzy=0;</b></p><p><b> dxyzg=1;</b></p>
36、<p><b> nbyzr=0;</b></p><p><b> nbyzy=0;</b></p><p><b> nbyzg=1;</b></p><p><b> dxzzr=1;</b></p><p><b>
37、dxzzy=0;</b></p><p><b> dxzzg=0;</b></p><p><b> nbzzr=1;</b></p><p><b> nbzzy=0;</b></p><p><b> nbzzg=0;</b>&l
38、t;/p><p><b> if(ge==0)</b></p><p><b> {</b></p><p><b> ge=10;</b></p><p><b> shi--;</b></p><p> if(shi==0
39、)</p><p><b> {</b></p><p><b> shi=3;</b></p><p><b> t=6;</b></p><p><b> }</b></p><p><b> }</b
40、></p><p><b> }</b></p><p><b> if(t==6)</b></p><p><b> { </b></p><p><b> dxr=1;</b></p><p><b>
41、 dxy=0;</b></p><p><b> dxg=0;</b></p><p><b> nbr=0;</b></p><p><b> nby=0;</b></p><p><b> nbg=1;</b></p>
42、<p><b> dxyzr=1;</b></p><p><b> dxyzy=0;</b></p><p><b> dxyzg=0;</b></p><p><b> nbyzr=1;</b></p><p><b>
43、 nbyzy=0;</b></p><p><b> nbyzg=0;</b></p><p><b> dxzzr=1;</b></p><p><b> dxzzy=0;</b></p><p><b> dxzzg=0;</b>
44、</p><p><b> nbzzr=1;</b></p><p><b> nbzzy=0;</b></p><p> nbzzg=0;</p><p><b> if(ge==0)</b></p><p><b> {&l
45、t;/b></p><p><b> ge=10;</b></p><p><b> shi--;</b></p><p> if(shi==1)</p><p><b> {</b></p><p><b> shi=3;&l
46、t;/b></p><p><b> t=5;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(t=
47、=5)</b></p><p><b> { </b></p><p> for(i=0;i<5;i++)</p><p><b> {nbg=0;</b></p><p> delay(30000);</p><p> nbg=1;}
48、</p><p><b> nby=1;</b></p><p> if(ge==0) </p><p><b> {</b></p><p><b> ge=10;</b></p><p><b>
49、 shi--;</b></p><p> if(shi==2)</p><p><b> {</b></p><p><b> shi=3;</b></p><p><b> t=4;</b></p><p><b> }
50、</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(t==4)</b></p><p><b> { </b></p><p><b>
51、 dxr=1;</b></p><p><b> dxy=0;</b></p><p><b> dxg=0;</b></p><p><b> nbr=1;</b></p><p><b> nby=0;</b></p>
52、<p><b> nbg=0;</b></p><p><b> dxyzr=0;</b></p><p><b> dxyzy=0;</b></p><p><b> dxyzg=1;</b></p><p><b>
53、nbyzr=0;</b></p><p><b> nbyzy=0;</b></p><p><b> nbyzg=1;</b></p><p><b> dxzzr=1;</b></p><p><b> dxzzy=0;</b>&l
54、t;/p><p><b> dxzzg=0;</b></p><p><b> nbzzr=0;</b></p><p> nbzzy=0; </p><p><b> nbzzg=1;</b></p><p><b> if(ge=
55、=0)</b></p><p><b> {</b></p><p><b> ge=10;</b></p><p><b> shi--;</b></p><p> if(shi==0)</p><p><b> {&l
56、t;/b></p><p><b> shi=3;</b></p><p><b> t=3;</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
57、}</b></p><p><b> if(t==3)</b></p><p><b> {</b></p><p><b> dxr=0;</b></p><p><b> dxy=0;</b></p><p>
58、;<b> dxg=1;</b></p><p><b> nbr=1;</b></p><p><b> nby=0;</b></p><p><b> nbg=0;</b></p><p><b> dxyzr=0;</b&g
59、t;</p><p><b> dxyzy=0;</b></p><p><b> dxyzg=1;</b></p><p><b> nbyzr=0;</b></p><p><b> nbyzy=0;</b></p><p&
60、gt;<b> nbyzg=1;</b></p><p><b> dxzzr=1;</b></p><p><b> dxzzy=0;</b></p><p><b> dxzzg=0;</b></p><p><b> nbzzr=
61、1;</b></p><p><b> nbzzy=0;</b></p><p> nbzzg=0;</p><p><b> if(ge==0)</b></p><p><b> {</b></p><p><b>
62、 ge=10;</b></p><p><b> shi--;</b></p><p> if(shi==0)</p><p><b> {</b></p><p><b> shi=3;</b></p><p><b>
63、 t=2;</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> if(t==2)</b></p><p>&l
64、t;b> { </b></p><p><b> dxr=0;</b></p><p><b> dxy=0;</b></p><p><b> dxg=1;</b></p><p><b> nbr=1;</b></p
65、><p><b> nby=0;</b></p><p><b> nbg=0;</b></p><p><b> dxyzr=1;</b></p><p><b> dxyzy=0;</b></p><p><b>
66、 dxyzg=0;</b></p><p><b> nbyzr=1;</b></p><p><b> nbyzy=0;</b></p><p><b> nbyzg=0;</b></p><p><b> dxzzr=1;</b>
67、</p><p><b> dxzzy=0;</b></p><p><b> dxzzg=0;</b></p><p><b> nbzzr=1;</b></p><p><b> nbzzy=0;</b></p><p>
68、; nbzzg=0;</p><p><b> if(ge==0)</b></p><p><b> {</b></p><p><b> ge=10;</b></p><p><b> shi--;</b></p><
69、p> if(shi==1)</p><p><b> {</b></p><p><b> shi=3;</b></p><p><b> t=1;</b></p><p><b> }</b></p><p>&l
70、t;b> }</b></p><p><b> }</b></p><p><b> if(t==1)</b></p><p><b> { </b></p><p> for(i=0;i<5;i++)</p><p>
71、;<b> {dxg=0;</b></p><p> delay(30000);</p><p> dxg=1;} </p><p><b> nby=1;</b></p><p> if(ge==0) </p><p>&
72、lt;b> {</b></p><p><b> ge=10;</b></p><p><b> shi--;</b></p><p> if(shi==2)</p><p><b> {</b></p><p><b&
73、gt; shi=3;</b></p><p><b> t=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><
74、;b> if(t==0)</b></p><p><b> { </b></p><p><b> dxr=1;</b></p><p><b> dxy=0;</b></p><p><b> dxg=0;</b></
75、p><p><b> nbr=1;</b></p><p><b> nby=0;</b></p><p><b> nbg=0;</b></p><p><b> dxyzr=0;</b></p><p><b>
76、 dxyzy=0;</b></p><p><b> dxyzg=1;</b></p><p><b> nbyzr=0;</b></p><p><b> nbyzy=0;</b></p><p><b> nbyzg=1;</b>&
77、lt;/p><p><b> dxzzr=0;</b></p><p><b> dxzzy=0;</b></p><p><b> dxzzg=1;</b></p><p><b> nbzzr=1;</b></p><p>
78、<b> nbzzy=0;</b></p><p> nbzzg=0;</p><p><b> if(ge==0)</b></p><p><b> {</b></p><p><b> ge=10;</b></p><
79、;p><b> shi--;</b></p><p> if(shi==0)</p><p><b> {</b></p><p><b> shi=3;</b></p><p><b> t=7;</b></p><p
80、><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> } </b></p><
81、p><b> }</b></p><p> void timer0() interrupt 1 using 1 //定時器0的操作計時</p><p><b> {</b></p><p> TH0=(65536-5000)/256;</p><p> TL0=(65536-5
82、000)%256;</p><p> time_Count++;</p><p><b> } </b></p><p> void exter0() interrupt 0</p><p><b> {</b></p><p><b> dxr=1;
83、</b></p><p><b> dxy=0;</b></p><p><b> dxg=0;</b></p><p><b> nbr=1;</b></p><p><b> nby=0;</b></p><p&
84、gt;<b> nbg=0;</b></p><p><b> dxyzr=1;</b></p><p><b> dxyzy=0;</b></p><p><b> dxyzg=0;</b></p><p><b> nbyzr=1;
85、</b></p><p><b> nbyzy=0;</b></p><p><b> nbyzg=0;</b></p><p><b> dxzzr=1;</b></p><p><b> dxzzy=0;</b></p>
86、<p><b> dxzzg=0;</b></p><p><b> nbzzr=1;</b></p><p><b> nbzzy=0;</b></p><p><b> nbzzg=0;</b></p><p><b>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機交通燈課程設(shè)計--基于單片機的交通燈系統(tǒng)的設(shè)計
- 交通燈單片機課程設(shè)計--基于單片機的交通燈顯示系統(tǒng)
- 交通燈單片機課程設(shè)計--基于單片機的交通燈顯示系統(tǒng)
- 單片機課程設(shè)計報告---交通燈
- 單片機交通燈課程設(shè)計報告
- 交通燈單片機課程設(shè)計報告
- 單片機交通燈課程設(shè)計報告
- 單片機課程設(shè)計-交通燈報告
- 單片機交通燈課程設(shè)計--基于單片機的交通燈系統(tǒng)的設(shè)計
- 交通燈單片機課程設(shè)計報告
- 單片機交通燈課程設(shè)計報告
- 單片機課程設(shè)計報告---交通燈
- 單片機課程設(shè)計-交通燈報告
- 基于單片機的交通燈課程設(shè)計報告
- 單片機課程設(shè)計報告--基于單片機的數(shù)字交通燈
- 單片機課程設(shè)計--基于單片機的交通燈設(shè)計
- 基于單片機的交通燈課程設(shè)計
- 基于單片機的交通燈課程設(shè)計
- 單片機交通燈課程設(shè)計
- 單片機課程設(shè)計---交通燈
評論
0/150
提交評論