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

正文內(nèi)容

基于單片機(jī)的照明控制系統(tǒng)(參考版)

2025-06-30 19:46本頁(yè)面
  

【正文】 return 0。 while(!TI)。 // 校驗(yàn)成功 TB8 = 0。 return 0xff。 while(!TI)。 // 發(fā)送校驗(yàn)失敗信號(hào) TB8 = 0。 if(ecc != 0) // 校驗(yàn)失敗 { *(buflen) = 0。 RI = 0。 if(RB8 == 1) // 若當(dāng)前接收為地址幀則返回0xfe return 0xfe。 } *buf = 0。 // 進(jìn)行字節(jié)校驗(yàn) RI = 0。 *buf = SBUF。 i++) { while(!RI)。 /* 接收數(shù)據(jù) */ for(i=0。 RI = 0。 if(RB8 == 1) // 若當(dāng)前接收為地址幀則返回0xfe return 0xfe。 /* 接收數(shù)據(jù)長(zhǎng)度 */ RI = 0。 // 該字節(jié)用于保存數(shù)據(jù)長(zhǎng)度 unsigned char ecc。=10) scale_0++。 //加一個(gè)檔次的亮度if (receive data { // 死循環(huán) while(1) // 打開(kāi)總中斷 EA=1。// 啟動(dòng)定時(shí)器1 TR1=1。// 賦T1的預(yù)置值,溢出1次是1/20000秒鐘TH1 =0xFE。 } }void main (void) if(scale_0==tt) if(tt==10) tt++。 static uint8 tt。 // 用于保存占空比中輸出0的時(shí)間份額,總共10份void Timer1_Server(void) interrupt 5 // 保存鍵值 }} }(2) 從機(jī)部分 include include include “”define uchar unsigned char define uint unsigned int sbit P3_7=P3^7sbit P1_3 = P1 ^ 3。while(1){ if (scan_key()) { Delayms(10)。 TI = 0。 // 發(fā)送數(shù)據(jù)幀 SBUF = ecc。 TI = 0。 // 發(fā)送數(shù)據(jù) buf++。 // 計(jì)算校驗(yàn)字節(jié) TB8 = 0。 ilen。 TI = 0。 // 發(fā)送數(shù)據(jù)幀 SBUF = len。 // 開(kāi)始進(jìn)行校驗(yàn)字節(jié)計(jì)算 /* 發(fā)送數(shù)據(jù)長(zhǎng)度 */ TI = 0。 // 保存校驗(yàn)字節(jié) len = strlen(buf)。 }void send_data(unsigned char *buf){ unsigned char len。 tmp = SBUF。 // 如果是廣播地址,直接發(fā)送數(shù)據(jù) } /* 接收從機(jī)應(yīng)答 */ RI = 0。 TI = 0。 // 發(fā)送地址幀 SBUF = addr。}Void send_addr( unsigned char *buf) { /* 發(fā)送從機(jī)地址 */ TI = 0。 TL1= PCON=0x80。 // 校驗(yàn)成功,返回0}endifⅡ. 照明亮度控制程序(1) 主機(jī)部分 include include include “”define uchar unsigned char define uint unsigned int sbit P2_6=P2^6void init_serialm(void){ SCON=0x50。 TI = 0。 SBUF = __SUCC_。 // 返回0xff表示校驗(yàn)錯(cuò)誤 } TI = 0。 TI = 0。 SBUF = __ERR_。 // 清空數(shù)據(jù)緩沖區(qū) TI = 0。 /* 進(jìn)行數(shù)據(jù)校驗(yàn) */ ecc = tmp^ecc。 tmp = SBUF。 // 表示數(shù)據(jù)結(jié)束 /* 接收校驗(yàn)字節(jié) */ while(!RI)。 buf++。 // 接收數(shù)據(jù) ecc = ecc^(*buf)。 if(RB8 == 1) // 若當(dāng)前接收為地址幀則返回0xfe return 0xfe。 ilen。 /* 使用len的值為校驗(yàn)字節(jié)ecc賦初值 */ ecc = len。 len = SBUF。 while(!RI)。 // 該字節(jié)用于保存校驗(yàn)字節(jié) unsigned char i,tmp。 //工作方式3,9位數(shù)據(jù)位,波特率9600bps,允許接收}unsigned char recv_data(unsigned char *buf){ unsigned char len。 // 開(kāi)始計(jì)時(shí) PCON = 0x80。 // 設(shè)置初值 TL1 = }}/* 初始化串口 */void init_serial(){ TMOD = 0x20。 while(tmp == 0xff) // 如果數(shù)據(jù)校驗(yàn)失敗則重新接收數(shù)據(jù) {tmp = recv_data(buf)。 SM2 = 0。 while(!TI)。 TB8 = 0。 // 如果是廣播地址,則直接接收數(shù)據(jù) } RI = 0。 tmp = SBUF。 while(tmp != addr) { RI = 0。 // 關(guān)閉所有中斷 /* 進(jìn)入設(shè)備應(yīng)答階段 */ while(1) { SM2 = 1。 /* 串口初始化 */ init_serial()。 // 保存本機(jī)地址 /* 從P1口讀取本機(jī)地址 */ P1 = 0xff。 unsigned char tmp = 0xff。 // 接收數(shù)據(jù)void main(){ char buf[__MAX_LEN_]。}endif (2)從機(jī)部分 include include define __MAX_LEN_ 64 // 數(shù)據(jù)最大長(zhǎng)度define _MHZ_ 11 // 設(shè)置單片機(jī)使用的晶振頻率()/* 以下為程序協(xié)議中使用的握手信號(hào) */define __SUCC_ 0x0f // 數(shù)據(jù)傳送成功define __ERR_ 0xf0 // 數(shù)據(jù)傳送錯(cuò)誤void init_serial()。 ktmp。 j100。 icount。 tmp = (int)((100*_MHZ_)/12)。 unsigned char j。 TI = 0。 // 發(fā)送數(shù)據(jù)幀 SBUF = ecc。 TI = 0。 // 發(fā)送數(shù)據(jù) buf++。 // 計(jì)算校驗(yàn)字節(jié) TB8 = 0。 ilen。 TI = 0。 // 發(fā)送數(shù)據(jù)幀 SBUF = len。 // 開(kāi)始進(jìn)行校驗(yàn)字節(jié)計(jì)算 /* 發(fā)送數(shù)據(jù)長(zhǎng)度 */ TI = 0。 // 保存校驗(yàn)字節(jié) len = strlen(buf)。 //工作方式3,9位數(shù)據(jù)位,波特率9600bps,允許接收}/* 發(fā)送數(shù)據(jù) */void send_data(unsigned char *buf){ unsigned char len。 // 開(kāi)始計(jì)時(shí) PCON = 0x80。 // 設(shè)置初值 TL1 = // 程序結(jié)束,進(jìn)入死循環(huán)}/* 初始化串口 */void init_serial(){ TMOD = 0x20。 RI = 0。 while(!RI)。 while(tmp != __SUCC_) { send_data(buf)。 // 關(guān)閉所有中斷 /* 發(fā)送地址幀并接收應(yīng)答信息,如果接收的信號(hào)與發(fā)送的地址信息不同,則重新發(fā)送地址幀 */ tmp = addr1。 /* 串口初始化 */ init_serial()。 // 緩沖區(qū)最后一個(gè)字節(jié)為0表示數(shù)據(jù)結(jié)束 /* 讀要訪問(wèn)的分機(jī)地址 */ P0 = 0xff。 i++。 delay10ms(10)。 // 該字節(jié)用于保存要通信的從機(jī)地址 /* 為緩沖區(qū)賦初值 */ P0 = 0xff。 unsigned char tmp。 // 延時(shí)子程序(10ms)void main(){ char buf[__MAX_LEN_]。 // 串口初始化void send_data(unsigned char *buf)。致 謝 本文是在 教授的精心指導(dǎo)下完成的,在這幾個(gè)月的工作和學(xué)習(xí)期間,我深深地感到從老師那里學(xué)到的不僅僅是知識(shí)和技術(shù),更重要的是他嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,實(shí)事求是的工作作風(fēng)和高風(fēng)亮節(jié)的做人品質(zhì)。但一個(gè)較好的和較完善的應(yīng)用軟件不是在短時(shí)間內(nèi)就可以完成的,它需要不斷的完善和發(fā)展,需要我們做大量的工作和時(shí)間的檢驗(yàn)。該系統(tǒng)還只是試驗(yàn)室的調(diào)試系統(tǒng),離真正的現(xiàn)場(chǎng)應(yīng)用還有一定的距離。由于系統(tǒng)采用的是RS485通信與無(wú)線數(shù)傳通信方式,如果使用在現(xiàn)場(chǎng)環(huán)境中必然存在干擾的問(wèn)題,所以抗干擾與可靠性設(shè)計(jì)就顯得尤為重要。在實(shí)驗(yàn)過(guò)程中,首先通過(guò)主控制器上的鍵盤(pán)輸入地址號(hào),地址號(hào)是由數(shù)字組成的,在輸入完畢后,然后按下確認(rèn)鍵,信號(hào)經(jīng)過(guò)網(wǎng)絡(luò)傳輸后,分控制器將收到的地址進(jìn)行比較確認(rèn)后,然后執(zhí)行下一步的程序。接著就要按照功能要求編制程序,這里采用Keil C編程工具,需先根據(jù)要求劃分模塊,優(yōu)化結(jié)構(gòu);再根據(jù)各模塊特點(diǎn)確定何為主程序,何為子程序,何為中斷服務(wù)程序,相互間如何調(diào)用;再根據(jù)各模塊性質(zhì)和功能將各模塊細(xì)化,設(shè)計(jì)出程序流程圖;最后才根據(jù)各模塊流程圖編制具體程序。第五章 實(shí)驗(yàn)及總結(jié)本文研究了基于AT89C51與AT89C2051單片機(jī)的智能照明控制系統(tǒng)的設(shè)計(jì)原理與實(shí)現(xiàn)方法,包括硬件設(shè)計(jì)與軟件設(shè)計(jì)。而照明啟??刂啤⒘炼瓤刂埔约岸〞r(shí)控制程序又分為全部控制和單獨(dú)控制兩部分,人機(jī)交互程序由鍵盤(pán)掃描程序與LED顯示程序組成,而串行通信程序由RS485通信程序和無(wú)線數(shù)傳程序組成。無(wú)線數(shù)傳的通信協(xié)議與流程基本上與RS485通信程序相同。當(dāng)發(fā)送方最后一個(gè)數(shù)據(jù)被發(fā)送后需延遲68個(gè)字節(jié)才能接收空中其他模塊的數(shù)據(jù)。如要傳送1個(gè)數(shù)據(jù)幀,此時(shí)間延遲將逐漸減少。這些工作都需要通信協(xié)議來(lái)完成,可保證在任何一個(gè)瞬間,通信網(wǎng)中只有一個(gè)模塊處于發(fā)送狀態(tài),避免相互干擾。 從機(jī)數(shù)據(jù)通信流程圖6 無(wú)線數(shù)傳通信程序設(shè)計(jì)這里所設(shè)計(jì)的無(wú)線數(shù)據(jù)傳輸系統(tǒng)是采用主從式通信方式,主控制器設(shè)為主站,所有分控制器設(shè)為從站,所有從站都編一個(gè)唯一的地址。如果函數(shù)返回0,表示數(shù)據(jù)被成功接收,向主機(jī)發(fā)送成功信號(hào),隨后,程序?qū)M2位置1,重新開(kāi)始下一個(gè)數(shù)據(jù)通信流程。如果接收函數(shù)返回0xff,表示數(shù)據(jù)校驗(yàn)失敗,程序等待主機(jī)重新發(fā)送數(shù)據(jù)。(2) 如果串口有數(shù)據(jù)接收(收到地址幀),則從機(jī)會(huì)將該幀中的地址信息先與廣播地址進(jìn)行比較,如果是廣播地址,則做好接收數(shù)據(jù)的準(zhǔn)備,如果是其它地址,則與本機(jī)地址比較,如果相同,則發(fā)送應(yīng)答信息,應(yīng)答信息內(nèi)容應(yīng)為本機(jī)地址,否則丟棄當(dāng)前數(shù)據(jù),從機(jī)繼續(xù)處于等待呼叫狀態(tài)。 主機(jī)數(shù)據(jù)通信流程圖 從機(jī)部分通信程序設(shè)計(jì)從機(jī)通信程序也被分為預(yù)定義及全局變量部分、程序初始化部分、數(shù)據(jù)通信流程和接收數(shù)據(jù)部分4個(gè)部分。(3) 發(fā)送完數(shù)據(jù)后,主機(jī)等待從機(jī)的校驗(yàn)信號(hào),如果接收到0X0F數(shù)據(jù),表示發(fā)送成功,通信結(jié)束,否則主機(jī)將重新發(fā)送數(shù)據(jù),直至發(fā)送成功。主機(jī)的數(shù)據(jù)通信的基本流程如下:(1) 主機(jī)首先向所有從機(jī)發(fā)送地址幀對(duì)要通信的從機(jī)進(jìn)行呼叫,發(fā)送地址幀時(shí)需將TB8位置1。單片機(jī)的串口工作在方式3下,其波特率由定時(shí)器1(T1)的溢出率決定,計(jì)算公式為: 定時(shí)器T1的溢出率的計(jì)算公式為:則波特率的公式變?yōu)椋海琓1工作在模式3下,波特率=9600b/s。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1