資源描述:
《單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)例交通燈ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、公選課《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)》主講:張宏偉電子技術(shù)錫焊技藝常用元器件及儀器單片機(jī)系統(tǒng)設(shè)計(jì)概述單片機(jī)開(kāi)發(fā)系統(tǒng)的使用單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)例單片機(jī)系統(tǒng)開(kāi)發(fā)的一般方法1、確定任務(wù)2、總體設(shè)計(jì)3、硬件設(shè)計(jì)4、軟件設(shè)計(jì)5、系統(tǒng)調(diào)試1、設(shè)計(jì)任務(wù):交通燈控制系統(tǒng)設(shè)計(jì)設(shè)計(jì)要求1)東西道(A)和南北道(B)上均有車(chē)輛要求通過(guò)時(shí),A、B道輪流放行。2)有緊急車(chē)輛要求通過(guò)時(shí),系統(tǒng)要能禁止普通車(chē)輛通行,A、B道均為紅燈,緊急車(chē)由K1開(kāi)關(guān)模擬。3)綠燈轉(zhuǎn)換為紅燈時(shí)黃燈亮5秒鐘。4)能顯示剩余時(shí)間。5)能對(duì)時(shí)間進(jìn)行調(diào)整。2、總體設(shè)計(jì)單片機(jī)鍵盤(pán)LED數(shù)碼管顯示LED指示燈復(fù)位電路晶振電路3、硬件設(shè)計(jì)1)單
2、片機(jī)選型:AT89S512)復(fù)位電路:上電+按鈕3)晶振電路4)鍵盤(pán):獨(dú)立鍵盤(pán)+中斷5)數(shù)碼管顯示:LED6)LED指示燈顯示3.1單片機(jī)基本電路設(shè)計(jì)1)復(fù)位電路:上電+按鈕2)晶振電路3)EA處理4)電源設(shè)計(jì)3.2鍵盤(pán)電路設(shè)計(jì)原理是對(duì)的,但這樣繪圖不合適!1、按鍵功能不清楚2、圖形不美觀3、打印不清晰較合理的原理圖形式1較合理的原理圖形式23.3指示燈電路設(shè)計(jì)3.4剩余時(shí)間顯示電路設(shè)計(jì)LED數(shù)碼管的結(jié)構(gòu):(1)共陽(yáng)(2)共陰@共陽(yáng)數(shù)碼管每個(gè)段筆畫(huà)是用低電平(“0”)點(diǎn)亮,共陰數(shù)碼管段筆畫(huà)是用高電平(“1”)點(diǎn)亮公共陽(yáng)極hgfedcbaabcdgefh公共陰極hgfedcb
3、aabcdgefhhgf……ahgf……a高電平點(diǎn)亮低電平點(diǎn)亮接高電平接地要顯示某個(gè)字形,就應(yīng)使此字形的相應(yīng)斷碼的二極管點(diǎn)亮,實(shí)際就是送一個(gè)用不同電平組合代表的數(shù)據(jù)字(顯示碼)來(lái)控制LED的顯示,此數(shù)據(jù)稱(chēng)為字符的段碼或字形碼。共陰極和共陽(yáng)極LED顯示器段碼不同。共陽(yáng)LED數(shù)碼管:公共端(字位)接高電平,筆劃(字段)置為低電平就被點(diǎn)亮了?比如要顯示“0”須令abcdef為“0”電平,gh為“1”電平。共陽(yáng)極hgfedcbaabcdgefhhgfedcba累加器A110000000C0H=“0”3.4剩余時(shí)間顯示電路設(shè)計(jì)4、軟件設(shè)計(jì)東西綠燈南北紅燈東西黃燈南北紅燈東西紅燈南北綠
4、燈東西紅燈南北黃燈控制流程:定義一個(gè)狀態(tài)變量SS=0S=1S=2S=34、軟件設(shè)計(jì)程序組成:初始化(系統(tǒng)初始化,中斷初始化)定時(shí)(交通燈狀態(tài)轉(zhuǎn)換)顯示(指示燈、剩余時(shí)間)參數(shù)調(diào)整緊急狀態(tài)主程序入口初始化顯示入口狀態(tài)燈顯示南北剩余時(shí)間顯示東西剩余時(shí)間顯示返回主程序流程圖顯示子程序流程圖定時(shí)中斷入口當(dāng)前顯示時(shí)間減11秒到?是否有一個(gè)為0?狀態(tài)變換判斷狀態(tài)S東西綠燈南北紅燈東西黃燈南北紅燈東西紅燈南北綠燈東西紅燈南北黃燈返回YNYN定時(shí)中斷程序流程圖S=0S=1S=2S=3中斷0入口更換當(dāng)前顯示值:南北:綠燈時(shí)間東西:黃燈時(shí)間K3鍵按下?返回N中斷0程序流程圖——參數(shù)設(shè)置調(diào)顯示子
5、程序綠燈+1K4鍵按下?黃燈+1K5鍵按下?綠燈時(shí)間處理黃燈時(shí)間處理需要注意的問(wèn)題:1)鍵盤(pán)抖動(dòng)2)鍵盤(pán)是否彈起3)按鍵過(guò)程中的顯示中斷1入口更換當(dāng)前顯示值:南北0,東西0狀態(tài)燈:紅色K5鍵按下?返回N中斷1程序流程圖——緊急停車(chē)調(diào)顯示子程序關(guān)中斷開(kāi)中斷Y初始化程序、主程序入口初始化顯示初始化程序#include//對(duì)單片機(jī)的口進(jìn)行了定義#defineuintunsignedint#defineucharunsignedcharucharcodea[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x
6、6f};//段碼組合,共陰極ucharcodeb[4]={0xfe,0xfd,0xfb,0xf7};//位碼組合,低有效ucharcodec[4]={0x78,0xb8,0xcc,0xd4};//不同狀態(tài)下的LEDuchargreen=30,yellow=5;ucharm=35,n=30,s=0,cnt=0;voiddelay(uchart);ucharkey();voiddisplay();voidmain(void){while(1){display();}}顯示子程序狀態(tài)燈顯示南北剩余時(shí)間顯示東西剩余時(shí)間顯示返回入口voiddisplay(){P1=c[s];P2=0
7、xfe,P0=a[m%10];delay(20);P2=0xfd,P0=a[m/10];delay(20);P2=0xfb,P0=a[n%10];delay(20);P2=0xf7,P0=a[n/10];delay(20);}voiddelay(uchart)//延時(shí)0.1*n毫秒0{uchari;do{for(i=0;i<23;i++);;;}while(t--);}定時(shí)程序:定時(shí)1秒可以嗎?不能直接定時(shí)定時(shí)器方式1,16位,最高計(jì)數(shù)65536假設(shè)晶振12MHz,一個(gè)機(jī)器周期1us。最長(zhǎng)定時(shí)65.536ms。確定