版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 第一章 單片機(jī)概述</p><p> 單片機(jī)是20世紀(jì)70年代中期發(fā)展起來(lái)的一種大規(guī)模集成電路器件。它在一塊芯片內(nèi)芯片內(nèi)集成了計(jì)算機(jī)的各種功能部件,構(gòu)成一種單片式的微型計(jì)算機(jī)。20世紀(jì)80年代以來(lái),國(guó)際上單片機(jī)的發(fā)展迅速,其產(chǎn)品之多令人目不暇接,單片機(jī)應(yīng)用不斷深入,新技術(shù)層出不窮。單片機(jī)的應(yīng)用技術(shù)是一項(xiàng)新型的工程技術(shù),其內(nèi)涵隨著單片機(jī)的發(fā)展而發(fā)展。由于MCS-51系列的單
2、片機(jī)的模塊化結(jié)構(gòu)比較典型、應(yīng)用靈活,為許多大公司所采納,使8051系列的單片產(chǎn)品日新月異。在Intel公司20世紀(jì)80年代初推出MCS-51系列單片機(jī)以后,世界上許多著名的半導(dǎo)體廠商相繼生產(chǎn)和這個(gè)系列兼容的單片機(jī),使產(chǎn)品型號(hào)不斷地增加、品種不斷豐富、功能不斷加強(qiáng),在國(guó)內(nèi)外單片機(jī)應(yīng)用中占有重要地位。由于單片機(jī)具有功能強(qiáng)、體積小、價(jià)格低等一系列優(yōu)點(diǎn),在各個(gè)領(lǐng)域都有廣泛的應(yīng)用,有力地推動(dòng)了各行各業(yè)的技術(shù)改造和產(chǎn)品更新?lián)Q代。20世紀(jì)末,電子技
3、術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快。</p><p> 第二章 MSC-51芯片簡(jiǎn)介</p><p> 8051是MCS-51系列單片機(jī)的典型產(chǎn)品。</p><p> 8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(
4、ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說(shuō)明:</p><p><b> ·中央處理器:</b></p><p> 中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)
5、的工作,完成運(yùn)算和控制輸入輸出功能等操作。</p><p> ·數(shù)據(jù)存儲(chǔ)器(RAM)</p><p> 8051內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問(wèn),而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。</p>
6、<p> ·程序存儲(chǔ)器(ROM):</p><p> 8051共有4096個(gè)8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p> ·定時(shí)/計(jì)數(shù)器(ROM):</p><p> 8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。</p><p>
7、83;并行輸入輸出(I/O)口:</p><p> 8051共有4組8位I/O口(P0、 P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。</p><p><b> ·全雙工串行口:</b></p><p> 8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。&
8、lt;/p><p><b> ·中斷系統(tǒng):</b></p><p> 8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。</p><p><b> ·時(shí)鐘電路:</b></p><p> 8051內(nèi)
9、置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。</p><p> 單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的MCS-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列
10、單片機(jī)則采用普林斯頓結(jié)構(gòu)。</p><p><b> 第三章 設(shè)計(jì)方案</b></p><p><b> 1.課程設(shè)計(jì)要求:</b></p><p> 1)、以MCS-51系列單片機(jī)為核心器件組成交通燈控制系統(tǒng),采用定時(shí)中斷實(shí)現(xiàn)精確定時(shí);</p><p> 2)、利用提供單元模塊構(gòu)成硬件系統(tǒng)
11、。</p><p><b> 系統(tǒng)完成內(nèi)容如下:</b></p><p> 正常情況下,A、B道(A、B道交叉組成十字路口,A是主道,B是支道)輪流放行,A道放行60秒(兩個(gè)數(shù)碼管從60秒開(kāi)始倒數(shù),其中5秒用于警告),B道放行30秒(兩個(gè)數(shù)碼管從30秒開(kāi)始倒數(shù),其中5秒用于警告)。</p><p> 3)、一道有車而另一道無(wú)車(用按鍵開(kāi)關(guān)
12、S1、S2模擬)時(shí),使有車車道放行。</p><p> 4)、有緊急車輛通過(guò)(用按鍵開(kāi)關(guān)S0模擬)時(shí),A、B道均為紅燈(兩次按下S0后,回復(fù)正常狀態(tài))。</p><p><b> 要求:</b></p><p> 3)、編寫系統(tǒng)的程序,完成系統(tǒng)的分、秒的計(jì)時(shí)功能</p><p><b> 2.具體編程過(guò)
13、程:</b></p><p><b> 根據(jù)要求我首先想到</b></p><p> 顯示界面:采用數(shù)碼管和LED燈相結(jié)合的方法,因?yàn)閷?shí)際既要求倒計(jì)時(shí)施主輸出,又要求又狀態(tài)燈輸出等,為方便觀看并考慮到現(xiàn)實(shí)狀況,用2個(gè)數(shù)碼管與12個(gè)LED分別顯示時(shí)間和提示信息。這種方案既滿足系統(tǒng)功能要求,又減少了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。考慮到數(shù)碼顯示我采用了動(dòng)態(tài)顯示的方法,這
14、是原理圖里只有一個(gè)數(shù)碼顯示管亮的原因。按鍵方面我用了三個(gè),一個(gè)用于A道無(wú)車,一個(gè)用于B道無(wú)車,一個(gè)用于特殊情況,都紅的情況。 </p><p><b> 主控制方案</b></p><p> 采用AT89C51單片機(jī)作為控制器,控制整個(gè)反感實(shí)行通行倒計(jì)時(shí)及A道、B道、一道有車和特殊情況都為無(wú)車情況、通過(guò)變成方案設(shè)計(jì)占用單片機(jī)的端口盡量最少,硬件也做到能少最好的地步
15、。 </p><p> 第四章 具體實(shí)現(xiàn)的程序</p><p> #include <at89x52.h></p><p><b> bit flag;</b></p><p> void Adao(void);</p><p> void Bdao(void);</
16、p><p> void theshu(void);</p><p> #define uint unsigned char</p><p> #define uchar unsigned char</p><p> void delay_ms(uint delay);</p><p> void jjj(voi
17、d) ;</p><p> uchar sum=0;</p><p> uchar count=0;</p><p> uchar flag3=0;</p><p> void xianshi(void);</p><p><b> bit flag;</b></p>&
18、lt;p> sbit p36=P3^6 ;</p><p> sbit p37=P3^7 ;</p><p> sbit p32=P3^2;</p><p> uchar code LED_Val[]={0xc0,0xf9,0xa4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x98};</p><p>
19、 uchar data num[4];</p><p> uchar data led_point[2]={0xfd,0xfe};</p><p> void disp(uint disp_value);</p><p> void bcd(uint bcd_value);</p><p> uchar att;</p>
20、<p> void system(void);</p><p> /////////////// 定時(shí) 1s</p><p> void T0_srv(void) interrupt 1 using 2</p><p><b> {</b></p><p><b>
21、 TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> count++;</b></p><p> if(count==20)</p><p><b> {count=0;</b></p>
22、<p><b> flag=1;</b></p><p><b> sum++ ;</b></p><p><b> }</b></p><p><b> }</b></p><p> ///////////////////
23、中斷全紅的情況</p><p> void int_0srv(void) interrupt 0 using 1</p><p> { flag3++;</p><p><b> }</b></p><p> /////////int//111/// 特殊</p><p> void
24、jjj (void)</p><p><b> {</b></p><p> uchar temp1,temp=sum;</p><p><b> sum=0; </b></p><p><b> temp1=P1;</b></p><p>&l
25、t;b> P1=0x36;</b></p><p> //delay_ms(2);</p><p> //if(!INT0)</p><p> if(flag3==1)</p><p> {while(sum<15)</p><p><b> { </b>&l
26、t;/p><p> disp(15-sum);</p><p> //while(!INT0);</p><p><b> } } </b></p><p> ////////////</p><p> if(flag3==2)</p><p><b>
27、{ </b></p><p><b> P1=temp1;</b></p><p><b> sum=temp;</b></p><p><b> flag3=0;</b></p><p><b> }</b></p>&
28、lt;p><b> }</b></p><p> /////////////////////////////// 延時(shí) </p><p> void delay_ms(uint delay)</p><p><b> {</b>&l
29、t;/p><p><b> uchar i;</b></p><p> while(delay--)</p><p><b> {</b></p><p> for(i=0;i<125;i++);</p><p><b> }</b><
30、/p><p> } </p><p> //////////////////////// B道正常情況</p><p> void Bdao(void)</p><p><b> {</b></p><p><b> sum=0; </b></
31、p><p> while(sum<25)</p><p> { if(flag3!=0) jjj(); </p><p> if(p36==0) { EA=0; </p><p><b> P1=0x1e;</b></p><p><b> }</b></
32、p><p><b> EA=1;</b></p><p> if(p37==0){EA=0; </p><p><b> P1=0x33;</b></p><p><b> }</b></p><p><b> EA=1;</b
33、></p><p><b> P1=0x33;</b></p><p> disp(30-sum);</p><p> //while(!flag);</p><p><b> flag=0;</b></p><p><b> //sum++;<
34、;/b></p><p><b> }</b></p><p><b> //sum=0;</b></p><p> while(sum<30)</p><p> {if(flag3==1) jjj(); </p><p> while(p36==0){
35、</p><p><b> EA=0; </b></p><p><b> P1=0x1e;</b></p><p><b> }</b></p><p><b> EA=1;</b></p><p> while(p3
36、7==0){EA=0; </p><p><b> P1=0x33;</b></p><p><b> }</b></p><p><b> EA=1;</b></p><p><b> P1=0x2D;</b></p><
37、p> disp(30-sum);</p><p> while(!flag);</p><p><b> flag=0;</b></p><p><b> //sum++;</b></p><p><b> }</b></p><p>&
38、lt;b> sum=0;</b></p><p><b> P1=0;</b></p><p><b> }</b></p><p> //////////////////////// A到正常</p><p> void Adao(void)</p>
39、<p><b> { </b></p><p> while(sum<55)</p><p> {if(flag3==1) jjj(); </p><p> while(p36==0) { EA=0; </p><p><b> P1=0x1e;</b></p>
40、;<p><b> }</b></p><p><b> EA=1;</b></p><p> while(p37==0){EA=0; </p><p><b> P1=0x33;</b></p><p><b> }</b>&
41、lt;/p><p><b> EA=1;</b></p><p> disp(60-sum);</p><p><b> P1=0x1e;</b></p><p> ////////while(!flag);</p><p><b> flag=0;</
42、b></p><p><b> //sum++;</b></p><p><b> }</b></p><p><b> //sum=0;</b></p><p> //P1=0x11;</p><p> while(sum<60)
43、</p><p> {if(flag3==1) jjj(); </p><p> while(p36==0) {</p><p><b> EA=0; </b></p><p><b> P1=0x1e;</b></p><p><b> }</
44、b></p><p><b> EA=1;</b></p><p> while(p37==0){</p><p><b> EA=0; </b></p><p><b> P1=0x33;</b></p><p><b>
45、}</b></p><p><b> EA=1;</b></p><p><b> P1=0x2D;</b></p><p> disp(60-sum);</p><p> while(!flag);</p><p><b> flag=0;&
46、lt;/b></p><p><b> sum++;</b></p><p><b> }</b></p><p><b> }</b></p><p> ///////////////////////系統(tǒng)初始化</p><p> v
47、oid system(void)</p><p><b> {</b></p><p> TMOD=0x01;</p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b
48、> ET0=1;</b></p><p><b> EA=1;</b></p><p><b> TR0=1;</b></p><p><b> EX0=1;</b></p><p><b> IT0=1;</b></p&
49、gt;<p><b> }</b></p><p> ///////////////////////顯示函數(shù)</p><p> void disp(uint disp_value)</p><p><b> {</b></p><p><b> uchar i;
50、</b></p><p> bcd(disp_value);</p><p> for(i=0;i<2;i++)</p><p><b> {</b></p><p><b> P2=0;</b></p><p> P0=LED_Val[num[i
51、]];</p><p> P2=led_point[i];</p><p> delay_ms(50);</p><p><b> }</b></p><p><b> }</b></p><p> ////////////</p><p>
52、 void bcd(uint bcd_value)</p><p><b> {</b></p><p> num[0]=bcd_value/10;</p><p> num[1]=bcd_value%10;</p><p><b> }</b></p><p>
53、 //////////////////主函數(shù)</p><p> void main(void)</p><p><b> {P1=0x00;</b></p><p> system() ;</p><p> while(1) {</p><p><b> Adao();
54、</b></p><p><b> Bdao();</b></p><p><b> } }</b></p><p> 第五章 課程設(shè)計(jì)總結(jié)</p><p> 本次課程設(shè)計(jì)時(shí)間雖然非常短暫,但給我的收獲是非常大的。在上課的時(shí)候,就對(duì)單片機(jī)產(chǎn)生了非常濃厚的興趣。對(duì)單片機(jī)編程有了新
55、的認(rèn)識(shí),在課程有通過(guò)自己動(dòng)手實(shí)際做,對(duì)編程和硬件焊接都有了新的認(rèn)識(shí),這次我做的十字路口紅綠燈的問(wèn)題。在編程時(shí)由于對(duì)有些基礎(chǔ)知識(shí)掌握不夠準(zhǔn)確,編程時(shí)出了很多麻煩,和走了很多彎路。最后在同學(xué)幫助和指點(diǎn)完成了編程任務(wù)。之后老師發(fā)下硬件之后我和我組的**同學(xué)同了一天吧硬件連接完成,在焊接過(guò)程中出現(xiàn)了問(wèn)題。我們都是首先討論分析問(wèn)題,之后解決問(wèn)題加強(qiáng)了團(tuán)隊(duì)寫作能力。直至最后完成了本次課程設(shè)計(jì)。</p><p> 在課程設(shè)計(jì)
56、中到老師的實(shí)驗(yàn)室借用老師的硬件做了驗(yàn)證,并且由于我是中午去的老師實(shí)驗(yàn)室,打擾了老師的休息,深感愧疚,并對(duì)老師一直認(rèn)真負(fù)責(zé)教學(xué)態(tài)度,和耐心的講解我們提出的問(wèn)題,真心感謝老師給了我和同學(xué)們很多在單片機(jī)課程方面幫助。</p><p><b> 參考文獻(xiàn):</b></p><p> 1. 李廣弟等 單片機(jī)基礎(chǔ) 北京航空航天出版社, 2006.7 </p>
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)--基于51單片機(jī)的交通燈
- c51單片機(jī)交通燈課程設(shè)計(jì)
- 課程設(shè)計(jì)---基于51單片機(jī)的交通燈設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通燈
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-交通燈
- 單片機(jī)課程設(shè)計(jì)--交通燈
- 單片機(jī)課程設(shè)計(jì)(交通燈)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈控制設(shè)計(jì)
- 交通燈單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈顯示系統(tǒng)
- 交通燈單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈顯示系統(tǒng)
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈系統(tǒng)的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論