版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)</b></p><p><b> 專業(yè):機(jī)電一體化</b></p><p><b> 學(xué)號(hào):</b></p><p><b> 姓名:</b></p><p><b> 指導(dǎo)教師: </
2、b></p><p> 2011年07月01日</p><p> 需求分析:(敘述該設(shè)計(jì)的應(yīng)用場(chǎng)合、設(shè)計(jì)目的、立題意義)</p><p> 設(shè)計(jì)目的:模擬交通燈控制器就是使用單片機(jī)來控制一些LED 和數(shù)碼管,模擬真實(shí)交通燈的功能。紅、黃、綠交替閃亮,利用數(shù)碼管倒計(jì)數(shù)顯示間隔等,用于管理十字路口的車輛及行人交通,計(jì)時(shí)牌顯示路口通行轉(zhuǎn)換剩余時(shí)間等</p
3、><p> 應(yīng)用場(chǎng)合:應(yīng)用于十字路口。</p><p> 立題意義:設(shè)計(jì)一個(gè)功能多點(diǎn)的交通燈,節(jié)省時(shí)間且交通更流暢。</p><p> 硬件設(shè)計(jì)方案(畫出系統(tǒng)框圖即數(shù)據(jù)流向、硬件所用的器件,如單色燈、單片機(jī)等,并將芯片原理簡(jiǎn)要介紹)</p><p><b> 硬件所用器件:</b></p><p&
4、gt; AT89C51芯片原理:</p><p> AT89系列單片機(jī)是ATMEL公司最早推出,也是功能最簡(jiǎn)單的一個(gè)系列,該系列都是內(nèi)含F(xiàn)lash程序存儲(chǔ)器的MCS-51兼容單片機(jī),AT89C51就是其中一款可在線編程ISP Flash單片機(jī)。AT89C51具有價(jià)格便宜、性能優(yōu)良、可在線編程等特點(diǎn)。其具體性能參數(shù)如下:兼容MCS-51內(nèi)核單片機(jī);4KB可在線編程Flash存儲(chǔ)器,可有效擦除/讀寫1000次;工
5、作電壓范圍4.0~5.5V;完全靜態(tài)工作:0Hz~33MHz;ROM三級(jí)加密模式;128*8bit內(nèi)置RAM;32位可控I/O引腳;2個(gè)16位的時(shí)鐘源;5個(gè)中斷源;全雙工UART串行接口;低功耗工作模式;看門狗計(jì)時(shí)器;兩個(gè)數(shù)據(jù)指針;快速編程特性。</p><p><b> 系統(tǒng)硬件框圖</b></p><p> 單片機(jī)可選用AT89C51,它與8051系列單片機(jī)全
6、兼容,但其內(nèi)部帶有4KB方便。南北向和東西向各采用2個(gè)數(shù)碼管計(jì)時(shí),同時(shí)需要對(duì)該方向的指示燈的點(diǎn)亮?xí)r間進(jìn)行倒計(jì)時(shí)</p><p> 軟件設(shè)計(jì)方案(畫流程圖、寫出算法分析)</p><p> 根據(jù)設(shè)計(jì)要求,程序框圖如圖所示。軟件可由匯編語言完成,也可由C語言完成。軟件設(shè)計(jì)可以分為以下幾個(gè)功能模塊:</p><p> 計(jì)時(shí)程序模塊:為定時(shí)器的中斷服務(wù)子程序,完成0.
7、05秒(或其他時(shí)間)和1秒的時(shí)間定時(shí)。 </p><p> 顯示程序模塊:完成60個(gè)發(fā)光二極管(實(shí)際上只需驅(qū)動(dòng)30個(gè))和8個(gè)LED數(shù)碼管的顯示驅(qū)動(dòng)。</p><p><b> 程序流程圖</b></p><p><b> 系統(tǒng)程序流程圖</b></p><p> 調(diào)試(針對(duì)該設(shè)計(jì)所用到的軟件
8、調(diào)試和硬件調(diào)試的方法)</p><p><b> 軟件調(diào)試:</b></p><p> 軟件調(diào)試主要是利用proteus仿真軟件完成電路的搭建,運(yùn)行以發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤及時(shí)改正。</p><p><b> 硬件調(diào)試:</b></p><p> 硬件調(diào)試主要是檢測(cè)硬件電路是否有短路、斷路、虛焊等
9、。具體步驟及測(cè)試結(jié)果如下:</p><p> ?。?)檢查電源與地線是否全部連接上,用萬用表對(duì)照電路原理圖測(cè)試各導(dǎo)線是否完全連接,對(duì)未連接的進(jìn)行修復(fù)。</p><p> (2)參照原理圖,檢查各個(gè)器件之間的連接是否連接正確,是否存在虛焊,經(jīng)測(cè)試,各連接不存在問題。</p><p> ?。?)以上兩項(xiàng)檢查并修復(fù)完后,給該硬件電路上電,電源指示燈點(diǎn)亮。系統(tǒng)功能調(diào)試:&
10、lt;/p><p> 通過軟件仿真顯示,系統(tǒng)基本能完成要求。</p><p> 心得體會(huì)(課程設(shè)計(jì)所遇到的問題以及解決方法,所收獲到的知識(shí)點(diǎn)等)</p><p> 做課程設(shè)計(jì)是為了讓我們對(duì)平時(shí)學(xué)習(xí)的理論知識(shí)與實(shí)際操作相結(jié)合,在理論和實(shí)驗(yàn)教學(xué)基礎(chǔ)上進(jìn)一步鞏固已學(xué)基本理論及應(yīng)用知識(shí)并加以綜合提高,學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力。對(duì)于交通燈這個(gè)題目
11、,由于以前學(xué)單片機(jī)這個(gè)課程時(shí),做過類似相關(guān)的實(shí)驗(yàn),覺得這個(gè)比較簡(jiǎn)單而且做出的東西也比較直觀,在確定題目之后,查閱了大量的資料,初步完成了電路設(shè)計(jì)方案。</p><p> 雖然感覺交通燈程序沒什么難的,就是數(shù)碼管倒計(jì)時(shí)顯示加幾個(gè)閃爍的二極管就完事,但是也許是起初想的太簡(jiǎn)單,設(shè)計(jì)時(shí)到了細(xì)節(jié)處,也出了不少問題,而且很難被檢查出來,比如在用定時(shí)器中斷后用一些選擇語句程序由于判斷條件有疏漏程序很容易跑飛;但是最后經(jīng)過我們
12、的不斷努力,還是寫出來正確的代碼。</p><p> 接下來就是仿真了,在仿真也遇到了一些問題比如一些元器件的代號(hào)不知道;還有一開始交通燈想試試好不好用就接了一個(gè)腳怎么改程序都不亮;后來才試出來必須三個(gè)腳都接才能亮。</p><p> 通過這次課設(shè),對(duì)以前學(xué)過的知識(shí)進(jìn)行了鞏固,加深了理解,提高了應(yīng)用的能力,而且提高了我們的發(fā)現(xiàn)、分析、解決問題的能力。經(jīng)歷了從最初的設(shè)計(jì)到最后做出產(chǎn)品的開
13、發(fā)過程,提高了對(duì)專業(yè)的認(rèn)識(shí)及興趣,對(duì)于我們工科來說,對(duì)以后就業(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; //進(jìn)行計(jì)時(shí)<
19、/p><p> uchar ge=10,shi=3; //要顯示的個(gè)位和十位</p><p> void delay(uchar z) //一個(gè)延時(shí)函數(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()//定時(shí)器的初始化</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()//將個(gè)位十位分別顯示在數(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()//程序運(yùn)行的主函數(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 //定時(shí)器0的操作計(jì)時(shí)</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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈系統(tǒng)的設(shè)計(jì)
- 交通燈單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈顯示系統(tǒng)
- 交通燈單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈顯示系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---交通燈
- 單片機(jī)交通燈課程設(shè)計(jì)報(bào)告
- 交通燈單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)交通燈課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)-交通燈報(bào)告
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈系統(tǒng)的設(shè)計(jì)
- 交通燈單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)交通燈課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告---交通燈
- 單片機(jī)課程設(shè)計(jì)-交通燈報(bào)告
- 基于單片機(jī)的交通燈課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的數(shù)字交通燈
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈設(shè)計(jì)
- 基于單片機(jī)的交通燈課程設(shè)計(jì)
- 基于單片機(jī)的交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通燈
評(píng)論
0/150
提交評(píng)論