freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)交通燈的控制(編輯修改稿)

2025-07-24 20:15 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 圖STC89C52RC是一帶有2K字節(jié)快閃可編程可擦除存儲(chǔ)體(EEPROM)的低電壓、高性能8位CMOS微型計(jì)算機(jī)。它采用ATMEL的高密非易失存儲(chǔ)技術(shù)制造并和工業(yè)標(biāo)準(zhǔn)MCS—51指令集和引腳結(jié)構(gòu)兼容。通過在單塊芯片上組合通用的CPL1和快閃存儲(chǔ)器,ATMEL公司生產(chǎn)的STC89C52RC是一強(qiáng)勁的微型計(jì)算機(jī),它對(duì)許多嵌入式控制的應(yīng)用,提供了一種高度靈活和成本低的解決辦法。 STC89C52RC內(nèi)部結(jié)構(gòu)圖 STC89C52RC芯片最小系統(tǒng)一個(gè)最簡(jiǎn)單的單片機(jī)系統(tǒng)包括晶振、復(fù)位、電源、系統(tǒng)的輸入控制、輸出顯示,以及其他外圍模塊(如通信、數(shù)據(jù)采集等)。(1)時(shí)鐘電路首先介紹一下單片機(jī)的晶振電路,即時(shí)鐘電路。單片機(jī)的工作流程,就是在系統(tǒng)時(shí)鐘的作用下,一條一條地執(zhí)行存儲(chǔ)器中的程序。單片機(jī)的時(shí)鐘電路由外接的一只晶振和兩只起振電容,以及單片機(jī)內(nèi)部的時(shí)鐘電路組成,晶振的頻率越高,單片機(jī)處理數(shù)據(jù)的速度越快,系統(tǒng)功耗也會(huì)相應(yīng)增加,穩(wěn)定性也會(huì)下降。單片機(jī)系統(tǒng)常用的晶振頻率有6MHz、11.0592MHz、12MHz、本系統(tǒng)采用11.0592MHz晶振,電容選22pF或30pF均可。(2)復(fù)位電路系統(tǒng)剛上電時(shí),單片機(jī)內(nèi)部的程序還沒有開始執(zhí)行,需要一段準(zhǔn)備時(shí)間,也就是復(fù)位時(shí)間。一個(gè)穩(wěn)定的單片機(jī)系統(tǒng)必須設(shè)計(jì)復(fù)位電路。當(dāng)程序跑飛或死機(jī)時(shí),也需要進(jìn)行系統(tǒng)復(fù)位。復(fù)位電路有很多種,有上電復(fù)位,手動(dòng)復(fù)位等。 (3) EA腳的功能及接法單片機(jī)的EA腳控制程序從內(nèi)部存儲(chǔ)器還是從外部存儲(chǔ)器讀取程序。由于現(xiàn)在單片機(jī)內(nèi)部的flash容量都很大,因此基本都是從內(nèi)部的存儲(chǔ)器讀取程序,即不需要外接ROM來存儲(chǔ)程序,因此,EA腳必須接高電平。本設(shè)計(jì)中復(fù)位方式采用上電復(fù)位方式,時(shí)鐘采用外部時(shí)鐘。 八段LED數(shù)碼管LED顯示屏作為大型顯示設(shè)備的一種,具有亮度高、價(jià)格低、壽命長(zhǎng)、維護(hù)簡(jiǎn)便等優(yōu)點(diǎn)。LED數(shù)碼管的結(jié)構(gòu)簡(jiǎn)單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有8個(gè)發(fā)光二極管(比七段多一個(gè)發(fā)光二極管,用來顯示sP,即點(diǎn)),每個(gè)發(fā)光二極管的陽極連在一起。這樣,一個(gè)LED數(shù)碼管就有I根位選線和8根段選線,要想顯示一個(gè)數(shù)值,就要分別對(duì)它們的高低電平來加以控制。為方便起見,本文主要討論共陽八段LED數(shù)碼顯示管,其他類形的顯示管與其類似。 LED數(shù)碼管LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點(diǎn)亮而顯示不同的字形,如 dp,g,f,e,d,c,b,a全亮顯示為8,采用共陽極連接驅(qū)動(dòng)代碼。 驅(qū)動(dòng)代碼表顯示數(shù)值dp,g,f,e,d,c,b,a驅(qū)動(dòng)代碼011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H 相應(yīng)在程序軟件上,可以通過調(diào)用程序給定的秒值經(jīng)過特定計(jì)算算出需要顯示的個(gè)位和十位,然后有DPTR調(diào)取LEDMAP的代碼。LED8段數(shù)碼管的設(shè)置為每個(gè)方位上的一對(duì)2為顯示器。四個(gè)方位上總共用8個(gè)LED接在單片機(jī)的IO口上。雖然路口不一樣,但是顯示的時(shí)間在數(shù)字上是一樣的,所以兩邊連接的IO口是對(duì)稱的。(1)發(fā)光二極管根據(jù)本設(shè)計(jì)的特點(diǎn),紅綠燈的顯示不可少,紅綠燈的顯示采用普通的發(fā)光二極管。每個(gè)方向上設(shè)置紅綠黃燈,總共4組。如果東西紅燈亮,那南北方向就是綠燈亮,反之亦然,所以在硬件上連接圖上也是對(duì)稱分布的。(2)按鍵控制本設(shè)計(jì)設(shè)置了有6個(gè)鍵如下圖,,個(gè)按鍵一端接地。低電平有效,當(dāng)按鍵按下端口接地,單片機(jī)捕獲到低電平,從而知道相應(yīng)的輸入信息。 按鍵示意圖全部控制程序?qū)嶋H上分為若干模塊:鍵盤設(shè)置處理程序,狀態(tài)燈控制程序,LED顯示程序,消抖動(dòng)延時(shí)程序,次狀態(tài)判斷及處理程序,緊?;蜻`規(guī)判斷程序,中斷服務(wù)子程序,車流量計(jì)數(shù)程序,紅綠燈時(shí)間調(diào)整程序等。整個(gè)軟件程序方面主要分兩大部分:按鍵處理程序和50ms掃描程序。 系統(tǒng)總流程圖首先是按鍵處理程序,89C52通過對(duì)IO掃描,確定是否有鍵按下,再判斷具體是那個(gè)鍵按下,根據(jù)鍵值跳轉(zhuǎn)到按鍵處理程序。若想重新設(shè)置則要按下復(fù)位鍵。設(shè)置過后進(jìn)入50ms掃描程序。50ms掃描程序開始后,先刷新顯示模塊,若為自動(dòng)模式則接下來要計(jì)數(shù)車流量,然后掃描緊停信號(hào)和違規(guī)信號(hào),若捕獲則調(diào)用中斷,中斷服務(wù)子程序主要啟動(dòng)蜂鳴器,直至恢復(fù)鍵按下。50ms已到則重新掃描。掃描20次之后計(jì)時(shí)到達(dá)1s則時(shí)間數(shù)據(jù)減1,在顯示模塊中修改顯示緩沖區(qū)內(nèi)容。然后調(diào)用紅綠燈時(shí)間調(diào)整程序,更新紅綠燈時(shí)間。當(dāng)前狀態(tài)時(shí)間已到,則判斷其狀態(tài)裝入相應(yīng)數(shù)據(jù),然后進(jìn)入下一狀態(tài)。 系統(tǒng)軟件的理論基礎(chǔ)知識(shí) 定時(shí)器原理定時(shí)器工作的基本原理其實(shí)就是給初值,讓它不斷加1直至減完為模值,這個(gè)初值是送到TH和TL中的。它是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值,即所要求的計(jì)數(shù)值設(shè)定為C,把計(jì)數(shù)初值設(shè)定為TC 可得到如下計(jì)算通式:TC=MC式中,M為計(jì)數(shù)器模值。計(jì)數(shù)值并不是目的,目的是時(shí)間值,設(shè)計(jì)1次的時(shí)間,即定時(shí)器計(jì)數(shù)脈沖的周期為T0,它是單片機(jī)系統(tǒng)主頻周期的12倍,設(shè)要求的時(shí)間值為T,則有C=T/T0。計(jì)算通式變?yōu)椋篢=(M-TC)T0模值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為8192;在方式1時(shí)M的值為65536;在方式2和3為256。就此可以算出各種方式的最大延時(shí)。如單片機(jī)的主脈沖頻率為12MHZ,經(jīng)過12分頻后。這就是為什么掃描周期為50ms的原因,若使用軟件則會(huì)耽擱程序流程,顯然不可行。相反,時(shí)間計(jì)時(shí)方面卻不可能只用計(jì)數(shù)器,因?yàn)轱@然1秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時(shí)間,所以我們還必須采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問題。 軟件延時(shí)原理MCS51的工作頻率為12MHZ,機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)器周期的時(shí)間為12*(1/12MHZ)=1us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定1秒的時(shí)間,但同時(shí)由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時(shí)間可以忽略不計(jì)。我們?cè)O(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使T0定時(shí)50毫秒。這樣每當(dāng)T0到50毫秒時(shí)CPU就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為零表示1秒已到。設(shè)定定時(shí)器需要定時(shí)50毫秒,故T0必須工作于方式1。 中斷原理本系統(tǒng)主要使用了外部中斷,中斷信號(hào)有引腳INT0和INT1輸入,低電平有效,CPU每個(gè)時(shí)鐘周期都會(huì)檢測(cè)INT0和INT1上的信號(hào),單片機(jī)允許外部中斷以電平方式或負(fù)邊沿方式兩種中斷方式輸入中斷請(qǐng)求信號(hào),可由用戶通過設(shè)置TCON中IT0和IT1位的狀態(tài)來實(shí)現(xiàn)。以IT0為例,IT0=0,為電平觸發(fā)方式,IT0=1,為負(fù)邊沿觸發(fā)方式,本設(shè)計(jì)采用電平方式,IE0為其中斷標(biāo)志位,有中斷信號(hào)則置位,中斷服務(wù)子程序響應(yīng)后,IE0自動(dòng)清零。IE中的EA為允許中斷的總控制位,為1開啟,EX0為外部中斷允許控制位,為1開啟。在優(yōu)先級(jí)的允許下,一旦有外部中斷信號(hào)產(chǎn)生,單片機(jī)CPU首先保護(hù)斷點(diǎn),PC值進(jìn)棧,然后執(zhí)行相應(yīng)的中斷服務(wù)子程序,執(zhí)行完后,用RETI指令返回,此時(shí)CPU會(huì)從堆棧中取保存的斷點(diǎn)地址,送回PC,程序再正常執(zhí)行。 子程序模塊設(shè)計(jì) 按鍵掃描程序首先程序不斷掃描按鍵,, ,按鍵順序是指定的,然后進(jìn)入下一程序。程序的開始要判斷是否有鍵按下,與值為1則表示沒有鍵按下,為0則表示有鍵按下。程序如下:void key_to1(){TR0=0。 //關(guān)定時(shí)器 if(set==0)set_timenb++。 //南北加1Selseset_timedx++。 //東西加1Sif(set_timenb==100)set_timenb=1。if(set_timedx==100)set_timedx=1。 //加到100置1sec_nb=set_timenb 。 //設(shè)置的數(shù)值賦給東西南北sec_dx=set_timedx。 }void key_to2(){TR0=0。 //關(guān)定時(shí)器 if(set==0)set_timenb。 //南北減1Selseset_timedx。 //東西減1Sif(set_timenb==0)set_timenb=99。 if(set_timedx==0 )set_timedx=99。 //減到1重置99sec_nb=set_timenb 。 //設(shè)置的數(shù)值賦給東西南北sec_dx=set_timedx。 }void key_to3() //鍵盤處理之緊急車通行{TR0=0。P1=0Xf6。sec_dx=00。sec_nb=00。}void int0(void) interrupt 0 using 1 //東西強(qiáng)行{TR0=0。P1=0XF3。sec_dx=00。sec_nb=00。int0_time=1。}void int1(void) interrupt 2 using 1 //南北強(qiáng)行{TR0=0。P1=0XDE。sec_nb=00。sec_dx=00。int0_time=1。} 狀態(tài)燈顯示在本設(shè)計(jì)中,實(shí)際控制的燈只有6個(gè),即:東西紅燈,東西綠燈,東西黃燈,南北紅燈,南北綠燈,南北黃燈。定義IO端口如下,其中均是低電平有效。sbit Yellow_nb=P1^4。 //南北黃燈sbit Yellow_dx=P1^1。 //東西黃燈sbit Green_nb=P1^5。sbit Green_dx=P1^2。各LED亮滅狀態(tài)程序如下:void time0(void) interrupt 1 using 1 //定時(shí)中斷子程序{b++。if(b==19) // 定時(shí)器中斷次數(shù){b=0。sec_dx。sec_nb。if(sec_nb=5amp。amp。time==0) //東西黃燈閃 { Green_dx=1。Yellow_dx=!Yellow_dx。} if(sec_dx=5amp。amp。time==1) //南北黃燈閃 { Green_nb=1。Yellow_nb=
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1