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

正文內(nèi)容

基于at89s51單片機(jī)的交通燈設(shè)計(jì)(編輯修改稿)

2025-07-24 18:05 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 。外部中斷0入口LJMP INT0 。跳轉(zhuǎn)到外部0中斷ORG 0013H 。外部中斷1入口LJMP INT1 。跳轉(zhuǎn)到外部1中斷INT0: MOV A,P1 。外部0中斷 PUSH ACC MOV A,P2 。中斷保護(hù) PUSH ACCMOV P1,0FFH 。清除先前狀態(tài)MOV P2,0FFHCLR CLR 。南北通行,東西禁止通行CLR CLR JNB ,$ 。判斷是否還在中斷狀態(tài)POP ACCMOV P2,A 。返回中斷前狀態(tài)POP ACCMOV P1,ACCRETI 。中斷返回INT1:MOV A,P1 。外部1中斷 PUSH ACC 。中斷保護(hù) MOV A,P2 PUSH ACCMOV P1,0FFH 。清除先前狀態(tài)MOV P2,0FFHCLR CLR CLR 。東西通行,南北禁止通行CLR JNB ,$ 。判斷是否還在中斷狀態(tài)POP ACCMOV P2,A 。返回中斷前狀態(tài)POP ACCMOV P1,ARETI 。中斷返回基于單片機(jī)的交通燈信號(hào)控制器設(shè)計(jì)(含源程序和電路圖)設(shè)計(jì)一個(gè)基于單片機(jī)的交通燈信號(hào)控制器。已知東、西、南、北四個(gè)方向各有紅黃綠色三個(gè)燈,在東西方向有兩個(gè)數(shù)碼管,在南北方向也有兩個(gè)數(shù)碼管。要求交通燈按照表1進(jìn)行顯示和定時(shí)切換,并要求在數(shù)碼管上分別倒計(jì)時(shí)顯示東西、南北方向各狀態(tài)的剩余時(shí)間。表1 交通燈的狀態(tài)切換表南北方向 東西方向 序號(hào) 狀態(tài) 序號(hào) 狀態(tài) 1 綠燈亮25秒,紅、黃燈滅 1 紅燈亮30秒,綠、黃燈滅 2 黃燈亮5秒,紅、綠燈滅 3 紅燈亮30秒,綠、黃燈滅 2 綠燈亮25秒,紅、黃燈滅 3 黃燈亮25秒,紅、綠燈滅 回到狀態(tài)1 回到狀態(tài)1 :系統(tǒng)設(shè)計(jì)(1)任務(wù)分析與整體設(shè)計(jì)思路試題要求實(shí)現(xiàn)的功能主要包括計(jì)時(shí)功能、動(dòng)態(tài)掃描以及狀態(tài)的切換等幾部分。計(jì)時(shí)功能:要實(shí)現(xiàn)計(jì)時(shí)功能則需要使用定時(shí)器來計(jì)時(shí),通過設(shè)置定時(shí)器的初始值來控制溢出中斷的時(shí)間間隔,再利用一個(gè)變量記錄定時(shí)器溢出的次數(shù),達(dá)到定時(shí)1秒中的功能。當(dāng)計(jì)時(shí)每到1秒鐘后,東西、南北信號(hào)燈各狀態(tài)的暫存剩余時(shí)間的變量減1。當(dāng)暫存剩余時(shí)間的變量減到0時(shí),切換到下一個(gè)狀態(tài),同時(shí)將下一個(gè)狀態(tài)的初始的倒計(jì)時(shí)值裝載到計(jì)時(shí)變量中。開始下一個(gè)狀態(tài),如此循環(huán)重復(fù)執(zhí)行。動(dòng)態(tài)掃描:需要使用4個(gè)數(shù)碼管分別顯示東西、南北的倒計(jì)時(shí)數(shù)字,將暫存各狀態(tài)剩余時(shí)間的數(shù)字從變量中提取出“十位”和“個(gè)位”,用動(dòng)態(tài)掃描的方式在數(shù)碼管中顯示。整個(gè)程序依據(jù)定時(shí)器的溢出數(shù)來計(jì)時(shí),每計(jì)時(shí)1S則相應(yīng)狀態(tài)的剩余時(shí)間減1,一直減到0時(shí)觸發(fā)下一個(gè)狀態(tài)的開始。 (2)單片機(jī)型號(hào)及所需外圍器件型號(hào),單片機(jī)硬件電路原理圖圖35 交通燈硬件電路原理圖選用MCS51系列AT89S51單片機(jī)作為微控制器,選擇兩個(gè)四聯(lián)的共陰極數(shù)碼管組成8位顯示模塊,由于AT89S51單片機(jī)驅(qū)動(dòng)能力有限,采用兩片74HC244實(shí)現(xiàn)總線的驅(qū)動(dòng),一個(gè)74HC244完成共陰極數(shù)碼管位控線的控制和驅(qū)動(dòng),另一個(gè)74HC244完成數(shù)碼管的7段碼輸出,在7段碼輸出口上各串聯(lián)一個(gè)100歐姆的電阻對(duì)7段數(shù)碼管限流。,實(shí)現(xiàn)交通燈信號(hào)的顯示,每個(gè)發(fā)光二極管串聯(lián)500歐姆電阻起限流作用。硬件電路原理圖如圖35所示。(3)程序設(shè)計(jì)思路,單片機(jī)資源分配以及程序流程①單片機(jī)資源分配,控制發(fā)光二極管的顯示。在計(jì)時(shí)模塊中,需要定義兩個(gè)數(shù)組變量(init_sn[3],init_ew[3])來存儲(chǔ)東西、南北兩個(gè)方向在不同狀態(tài)中倒計(jì)時(shí)的初始值,題目中每個(gè)方向的交通燈共有3種顯示狀態(tài),因此數(shù)組元素個(gè)數(shù)為3。還需要定義兩個(gè)變量( t_ sn, t_ ew)暫存東西、南北兩個(gè)方向的倒計(jì)時(shí)剩余時(shí)間。 在狀態(tài)的切換中,為了明確當(dāng)前處于哪種狀態(tài),東西、南北方向各設(shè)置一個(gè)狀態(tài)變量(state_val_sn, state_val_ew),當(dāng)?shù)褂?jì)時(shí)的剩余時(shí)間到零時(shí),狀態(tài)變量增1,表示啟動(dòng)下一個(gè)狀態(tài),當(dāng)該變量增到3時(shí)變?yōu)?,回到序號(hào)為1的狀態(tài)。②程序設(shè)計(jì)思路在設(shè)計(jì)中,由于沒有鍵盤功能,因此只涉及定時(shí)計(jì)數(shù)和動(dòng)態(tài)掃描功能。主程序?qū)⒆兞砍跏蓟?,設(shè)置單片機(jī)定時(shí)器和中斷特殊功能寄存器的初始值,將定時(shí)器T1的工作方式設(shè)置為8位自動(dòng)裝載模式,定時(shí)器每隔250us產(chǎn)生一次溢出。在初始化變量與寄存器后,主程序進(jìn)入一個(gè)循環(huán)結(jié)構(gòu),在循環(huán)中只做動(dòng)態(tài)掃描的工作,根據(jù)東西、南北兩向的剩余時(shí)時(shí)間進(jìn)行動(dòng)態(tài)掃描顯示。 計(jì)時(shí)以及狀態(tài)的切換通過定時(shí)器的中斷服務(wù)程序來實(shí)現(xiàn),在中斷服務(wù)程序中,每計(jì)時(shí)到一秒時(shí),則各方向當(dāng)前狀態(tài)的剩余時(shí)間減1,一直減到0時(shí)觸發(fā)下一個(gè)狀態(tài)的開始,改變交通燈的指示。③程序流程(4)軟硬件調(diào)試方案 軟件調(diào)試方案:偉福軟件中,在“文件\新建文件”中,新建C語(yǔ)言源程序文件,編寫相應(yīng)的程序。在“文件\新建項(xiàng)目”的菜單中,新建項(xiàng)目并將C語(yǔ)言源程序文件包括在項(xiàng)目文件中。在 “項(xiàng)目\編譯”菜單中將C源文件編譯,檢查語(yǔ)法錯(cuò)誤及邏輯錯(cuò)誤。在編譯成功后,產(chǎn)生以 “*.hex”和“*.bin” 后綴的目標(biāo)文件。硬件調(diào)試方案:在設(shè)計(jì)平臺(tái)中。在偉福中將程序文件編譯成目標(biāo)文件后,運(yùn)行“MCU下載程序”,選擇相應(yīng)的flash 數(shù)據(jù)文件,點(diǎn)擊“編程”按鈕,將程序文件下載到單片機(jī)的Flash中。然后,上電重新啟動(dòng)單片機(jī),檢查所編寫的程序是否達(dá)到題目的要求,是否全面完整地完成試題的內(nèi)容。 程序設(shè)計(jì)(僅供參考的C語(yǔ)言源程序)//晶振: T1250微秒溢出一次/*變量的定義: show_val_sn,show_val_ew: 顯示的值059 state_val_sn,state_val_ew: 狀態(tài)值 南北方向0綠燈亮。1黃燈亮。2紅燈亮 T1_t: 定時(shí)器計(jì)數(shù)溢出數(shù) t_sn,t_ew: 倒計(jì)時(shí)的數(shù)值 init_sn[3],init_ew[3] 倒計(jì)時(shí) led_seg_code:數(shù)碼管7段碼*/include sbit SN_green=P3^2 。//南北方向綠燈sbit SN_yellow=P3^1 。//南北方向黃燈sbit SN_red=P3^0 。//南北方向紅燈sbit EW_green=P3^5 。//東西方向綠燈sbit EW_yellow=P3^4 。//東西方向黃燈sbit EW_red=P3^3 。//東西方向紅燈unsigned char data t_sn,t_ew。unsigned int data T1_t。unsigned char data state_val_sn,state_val_ew。char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。char code init_sn[3]={24,4,29}。char code init_ew[3]={29,24,4}。//void delay(unsigned int i)//延時(shí){ while(i)。 }//void led_show(unsigned int u,unsigned int v){ unsigned char i。 i=u%10。 //暫存?zhèn)€位 P0=led_seg_code[i]。 P2=0xbf。 delay(100)。 //延時(shí) i=u%100/10。 //暫存十位 P0=led_seg_code[i]。 P2=0x7f。 delay(100)。 //延時(shí) i=v%10。 //暫存?zhèn)€位 P0=led_seg_code[i]。 P2=0xfe。 delay(100)。 //延時(shí) i=v%100/10。 //暫存十位 P0=led_seg_code[i]。 P2=0xfd。 delay(100)。 //延時(shí)}//void timer1() interrupt 3 //T1中斷{ T1_t++。 if(T1_t3999) //如果計(jì)數(shù)3999, 計(jì)時(shí)1s { T1_t=0。 if (t_sn!=0) //南北方向計(jì)時(shí) { t_sn。 } else { state_val_sn++。 if (state_val_sn2) state_val_sn=0。 t_sn=init_sn[state_val_sn]。 switch (state_val_sn) //根據(jù)狀態(tài)值,刷新各信號(hào)燈的狀態(tài) { case 0: SN_green=0 。//南北方向綠燈 SN_yellow=1 。//南北方向黃燈
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1