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

正文內(nèi)容

嵌入式交通燈論文相關(guān)資料(編輯修改稿)

2025-07-25 13:55 本頁面
 

【文章內(nèi)容簡介】 下,如果中斷是禁止的,則這些引腳的輸入緩沖器也是禁止的。這有可能產(chǎn)生邏輯電平的變化并置位INTF3:0。在系統(tǒng)中我們只要用到外部中斷INT0,且設(shè)定為下降沿觸發(fā)。 ,在中斷子程序中完成了把當(dāng)前對應(yīng)路口檢測到的車流信息以一定的格式(如AB:10)發(fā)給控制中心,控制中心接收到后就立刻返回一個(gè)延時(shí)時(shí)間。而本系統(tǒng)跟控制中心的通信是通過基于TCP/IP 協(xié)議的網(wǎng)絡(luò)連接來實(shí)現(xiàn)。TCP協(xié)議為其上的應(yīng)用層提供了一種可靠傳輸服務(wù)。這種服務(wù)的特點(diǎn)是:可靠、全雙工、流式和無結(jié)構(gòu)傳輸。因此可以簡單地把系統(tǒng)劃分為兩個(gè)基本模塊,它們分別是數(shù)據(jù)接收模塊與數(shù)據(jù)發(fā)送模塊。(1)數(shù)據(jù)接收模塊功能:它主要是接收從控制中心發(fā)送過來的控制命令并根據(jù)相應(yīng)的命令執(zhí)行相應(yīng)控制操作,例如控制交通燈的緊急中斷(全部路口的都亮紅燈),或者某一車道中斷(該車道亮紅燈),或者控制中心要求獲得交通路口現(xiàn)在的車流信息。(2)數(shù)據(jù)發(fā)送模塊功能:根據(jù)控制中心的命令信息向控制中心發(fā)送某個(gè)路口的車流信息,或者當(dāng)接收到交通燈延時(shí)完畢發(fā)來的中斷信號,就向控制中心發(fā)送下次要延時(shí)的車流信息。 總體設(shè)計(jì) 需求規(guī)定 本系統(tǒng)的主要的輸入項(xiàng)目是控制中心發(fā)來的控制控制命令,輸出項(xiàng)目是檢測到的車流信息。主要的功能需求是:能夠通過網(wǎng)絡(luò)接收來自控制中心的控制命令,響應(yīng)控制命令控制紅綠燈的亮滅情況或把檢測到的車流信息發(fā)給控制中心。主要的性能要求是:能響應(yīng)控制中心發(fā)來的基本控制命令,實(shí)現(xiàn)對交通燈的基本控制。基本設(shè)計(jì)理念: 本系統(tǒng)是采用TCP/IP[5]的socket編程中的流式套接字編程,其中交叉路口作為客戶端控制中心作為服務(wù)端雙方建立一個(gè)可靠的連接,然后雙方通過以太網(wǎng)進(jìn)行數(shù)據(jù)的發(fā)送與接收,之所以選擇流式套接字是因?yàn)樗峁┝艘粋€(gè)面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無差錯(cuò)、無重復(fù)地發(fā)送,且按發(fā)送順序接收。處理流程:(請看圖32) 圖32 TCP傳輸流程圖(1)系統(tǒng)框圖與流程圖系統(tǒng)框圖(圖33)圖33 系統(tǒng)框圖客戶端系統(tǒng)總的流程圖(圖34):圖34 客戶端系統(tǒng)總的流程圖客戶端系統(tǒng)接收模塊流程圖(圖35):圖35 客戶端系統(tǒng)接收模塊流程圖客戶端發(fā)送時(shí)機(jī)及過程流程圖(圖36):在實(shí)現(xiàn)以上各流程圖時(shí),只要用到的API函數(shù)如下:(1)TCPSOCKET *slTcpCreateSocket(void)創(chuàng)建TCP socket。 該API函數(shù)在堆內(nèi)存中為TCPSOCKET結(jié)構(gòu)分配內(nèi)存空間,并初始它返回一個(gè)指向該結(jié)構(gòu)的指針。第一次調(diào)用該API函數(shù)同時(shí)也是TCP計(jì)時(shí)程序開始的時(shí)候,該計(jì)時(shí)程序用來檢測各種不同的超時(shí)操作。Returns: 最新創(chuàng)建的TCP socket 描述符,或者如果沒有足夠的內(nèi)存剩余則返回0。Todo: 避免把初始的順序號固定。配置緩沖區(qū)的大小。允許的最大的段的大小。圖36 客戶端發(fā)送時(shí)機(jī)及過程流程圖(2)int slTcpConnect(TCPSOCKET *sock, u_long addr, u_short port)連接遠(yuǎn)程的socket套節(jié)字。 這函數(shù)試圖跟過程特定的服務(wù)器特定的端口建立連接。調(diào)用該函數(shù)的線程將暫停運(yùn)行直到連接成功或者錯(cuò)誤發(fā)生。該函數(shù)通常用在TCP客戶端程序。Parameters: sock 套節(jié)字描述符。該指針必須調(diào)用slTcpCreateSocket()來得到。addr 客戶端要連接的IP地址(網(wǎng)絡(luò)字順序)port 連接的端口號(主機(jī)字順序)Returns: 如果成功則返回0,否則返回1。能調(diào)用slTcpError()來得到特定的錯(cuò)誤代碼號。 (3)int slTcpSend(TCPSOCKET *sock, void *data, u_short len)向已連接的TCP套節(jié)字發(fā)送數(shù)據(jù)。Parameters: sock 套節(jié)字描述符。該指針必須調(diào)用slTcpCreateSocket()來得到。除此之外連接的建立必須調(diào)用slTcpConnect或者 slTcpAccept。 data 指向要發(fā)送的數(shù)據(jù)緩沖區(qū)的指針。len 要發(fā)送的字節(jié)數(shù)。Returns: 如果發(fā)送成功則返回已經(jīng)發(fā)送的字節(jié)數(shù)。該字節(jié)數(shù)可能小于指定要發(fā)送的字節(jié)數(shù)。如果返回1則意味著重大的錯(cuò)誤。(4)int slTcpReceive(TCPSOCKET *sock, void *data, u_short size)從已連接的TCP套節(jié)字獲得接收數(shù)據(jù)。Parameters:sock 套節(jié)字描述符。該指針必須調(diào)用slTcpCreateSocket()來得到。除此之外連接的建立必須調(diào)用slTcpConnect或者 slTcpAccept。data 指向要接收的數(shù)據(jù)緩沖區(qū)的指針。size 接收緩沖區(qū)的大小。Returns: 如果成功的話則返回已經(jīng)接收的數(shù)據(jù)的字節(jié)數(shù),該值可能小于特定的緩沖區(qū)大小。如果返回1。(5)NUTDEVICE *slSoStreamCreate(TCPSOCKET *sock)為特定的套節(jié)字創(chuàng)建一個(gè)虛擬流設(shè)備文件。Parameters: Sock 套節(jié)字描述符。該指針必須調(diào)用slTcpCreateSocket()來得到。除此之外連接的建立必須調(diào)用slTcpConnect或者 slTcpAccept。Returns:如果創(chuàng)建成功則返回創(chuàng)建的設(shè)備結(jié)構(gòu)指針,否則返回0。 交通燈某一次延時(shí)完畢請求獲得新的延時(shí)執(zhí)行的操作,如圖41:交通燈控制系統(tǒng)WEB CLIENT系統(tǒng)從PORTD0口收到下降沿信號當(dāng)前一次延時(shí)完畢服務(wù)端得到車流信息儲(chǔ)存到數(shù)據(jù)庫中執(zhí)行中斷程序把檢測到車流發(fā)給服務(wù)端WEB CLIENT系統(tǒng)從服務(wù)端收到這次要設(shè)定的時(shí)間查詢數(shù)據(jù)庫把車流對應(yīng)的延時(shí)發(fā)給開發(fā)板交通燈控制系統(tǒng)從P0口讀到要設(shè)定的延時(shí)把要設(shè)定的延時(shí)從PORTB口輸出圖41 交通燈系統(tǒng)請求延時(shí)圖詳細(xì)請看附錄代碼的INT0中斷子程序??刂浦行目刂平煌魰r(shí)執(zhí)行的操作如圖42:控制中心發(fā)送緊急中斷命令WEB CLIENT系統(tǒng)收到命令置PORTD5為低電平交通燈控制系統(tǒng)INT0被觸發(fā)執(zhí)行緊急中斷程序控制中心發(fā)送AB道中斷命令WEB CLIENT系統(tǒng)收到命令置PORTD7為低電平交通燈控制系統(tǒng)INT1被觸發(fā)執(zhí)行AB道中斷程序控制中心發(fā)送CD道中斷命令WEB CLIENT系統(tǒng)收到命令置PORTD6O為低電平交通燈顯示控制系統(tǒng)INT1被觸發(fā)執(zhí)行CD道中斷程序圖42 控制中心控制交通燈圖詳細(xì)請看附錄代碼的ProcessRequests函數(shù)。一開始系統(tǒng)啟動(dòng)的時(shí)間開發(fā)板從PORTD0收到一個(gè)低電平,產(chǎn)生中斷執(zhí)行中斷子程序,此時(shí)AB、CD道都沒有檢測到車流,所以置PORTD7為低電平觸發(fā)交通燈系統(tǒng)執(zhí)行中斷子程序。本系統(tǒng)只用開發(fā)板上的四個(gè)按鈕來模擬四個(gè)路口的車流檢測,沒有做出實(shí)際的車流檢測電路。當(dāng)按下各個(gè)按鈕可以從超級終端檢測到各按鈕的按下的次數(shù)作為車流數(shù)。如圖43:圖43各個(gè)路口檢測到車流圖當(dāng)發(fā)送中斷時(shí)可以終端看到收到這次要設(shè)定的延時(shí)時(shí)間。如圖44:圖44接收到延時(shí)間圖本設(shè)計(jì)完成了交叉路口車流信息的Internet傳輸與控制的基本功能設(shè)計(jì),并對結(jié)果進(jìn)行了測試。測試表明,我們的設(shè)計(jì)符合功能要求,并具有一定的實(shí)用價(jià)值。經(jīng)過測試,發(fā)現(xiàn)本設(shè)計(jì)方案的不足:(1)交通路口只考慮雙向行車,而沒有考慮左轉(zhuǎn)或者其它情況。 (2)測試車流只用按鈕來簡單模擬。(3)監(jiān)控中心對于實(shí)時(shí)性處理速度有待提高。我們通過這次畢業(yè)設(shè)計(jì),提出了我們交叉路口車流信息的Internet傳輸與控制的設(shè)計(jì)方案。盡管現(xiàn)在確實(shí)存在的一定的不足,但完成可以通過進(jìn)一步的整改,應(yīng)用到生活中。今后可以努力的方向有:(1)可以把仿真電路做出實(shí)時(shí)電路。(2)可以加上電磁感應(yīng)傳感器來進(jìn)行車流檢測。附錄部分源代碼詳解:頭函數(shù)略詳細(xì)請看源代碼……define RAMEND 0x10FF //Last OnChip SRAM LocationCONFOS confos。extern void slMain(void *arg) __attribute__ ((noreturn))。/*! \fn slIdle(void *arg) * \brief Idle thread. */THREAD(slIdle, arg){ slTimerInit()。 slThreadCreate(main, slMain, 0, 768)。 slThreadSetPriority(255)。 for(。) { slThreadYield()。 }}/*! * \brief Load sl/OS configuration from the EEPROM. * This routine is automatically called during system * initialization. * \return 0 if OK, 1 if configuration isn39。t available. */int slLoadConfig(void){ eeprom_read_block(amp。confos, CONFOS_EE_OFFSET, sizeof(CONFOS))。 if( != sizeof(CONFOS) || [0] != 39。O39。 || [1] != 39。S39。) { return 1。 } return 0。}/*! * \brief Save sl/OS configuration in the EEPROM. * \return 0 if OK, 1 on failures. */int slSaveConfig(void){ u_char *cp。 int i。 = sizeof(CONFOS)。 [0] = 39。O39。 [1] = 39。S39。 for(cp = (u_char *)amp。confos, i = 0。 i sizeof(CONFOS)。 i++) eeprom_wb(i + CONFOS_EE_OFFSET, *cp++)。 return 0。}void port_init(void){ PORTB = 0x00。 DDRB = 0xFF。 PORTD = 0xFF。 DDRD = 0xF0。 //PORTF|= 0x0C。 //DDRF |= 0x0C。}//call this routine to initialize all peripheralsvoid init_devices(void){ //stop errant interrupts until set up CLI()。 //disable all interrupts port_init()。// MCUCR = 0x00。 EICRA = 0x02。 //extended ext ints EIMSK |= 0x01。 SEI()。 //reenable interrupts //all peripherals are now initialized}/*! * \brief sl/OS main entry. * This is the entry point for C programs. To hide neccessary * system initialization from the user program, this entry point * is included in the sl/OS library as a separate object module. * It will initialize memory management and the thread system * and start an idle thread, which in turn initializes the * timer functions. Finally slMain() is called, which must * be defined by the application and may be used to start * additional application threads. * \internal */int main(void){ init_devices()。//initialize all peripherals /* * Read eeprom configuration. */ if(slLoadConfig()) slSaveConfig()。 outp(BV(SRE) | BV(SRW), MCUCR)。 if((short)RAMEND (short)(amp。__bss_end) 384) slHeapAdd(amp。__bss_end, (u_short)RAMEND 256 (u_short)(amp。__bss_end))。 slHeapAdd((void *)(RAMEND + 1), 0x7FFF RAMEND)。 s
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1