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

正文內(nèi)容

銀行叫號(hào)系統(tǒng)畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2025-06-29 05:58本頁(yè)面
  

【正文】 發(fā)送接收正確應(yīng)答幀回發(fā)送準(zhǔn)備好應(yīng) 答發(fā)送數(shù)據(jù)形成累加和發(fā)送完發(fā)送累加和接收主機(jī)命令幀SM2=1接收發(fā)送NYNNYNYYNYNY 通信子程序流程圖具體實(shí)現(xiàn)的部分代碼如下: include include unsigned usbp=0,usdi=0。//保護(hù)現(xiàn)場(chǎng)void interrupt pt(unsigned bp,unsigned di) { usbp=bp。 usdi=di。}//恢復(fù)現(xiàn)場(chǎng)void rept(unsigned bp,unsigned di) { bp=usbp。 di=usdi。}main(){ char j=0。 int ri=0。 j=(char*)getvect(0x1c)。//中斷入口 pt(bp,di)。//保護(hù)現(xiàn)場(chǎng) ri=0。 get(amp。ri)。//取數(shù)據(jù)幀 int nacc=0,nlocalacc=0。 nacc=isacc(ri)。//是地址? if(nacc==1)//是地址 { nlocalacc=islocal(ri)。//是本機(jī)地址? if(nlocalacc==1) //是 { SM2=0。 answer()。//回呼叫應(yīng)答 } }else//不是地址{ ncmd=0。 ncmd=isncmd(ri)。 if(ncmd==0) SM2=1。 else//是命令 { if(ncmd==2)//接收 { send(1)。//回接收準(zhǔn)備好應(yīng)答 int ncount=0,nchk=0。 do { char t=0。 t=getdata()。//接收數(shù)據(jù) ncount++。 }while(t!=0) nchk=chk()://檢驗(yàn)正確?if(nchk==l)//正確send(3)。//發(fā)送接收正確應(yīng)答elsesend(4)。//發(fā)送接收錯(cuò)誤應(yīng)答SM2==l。} elseif(ncmd==3)//發(fā)送{send(2)。//回發(fā)送準(zhǔn)備好應(yīng)答 int ncount=O,nchk=0。do{char t=0。t=senddata()。//發(fā)送數(shù)據(jù)ncount++。}while(t!=0):sendcount(ncount)。//發(fā)送累加和getmain()。//接收主戰(zhàn)機(jī)命令幀SM2=l。} } }rept(bp,di)://恢復(fù)現(xiàn)場(chǎng)setvect(0x1c,j)。//恢中斷返回 } 主顯示屏軟件設(shè)計(jì) 主程序主顯示屏作為從機(jī)(地址為00H)接收主機(jī)發(fā)來(lái)的數(shù)據(jù)進(jìn)而顯示,主程序流程圖如下圖所示顯示子程序和通信子程序兩個(gè)子程序模塊。初始化完成定時(shí)器TI、串行口的初始化,使串行口工作于中斷方式,以便使主顯示屏有較多的時(shí)間與能力用于顯示數(shù)據(jù)。開(kāi)始初始化顯示子程序結(jié)束 主顯示屏主程序流程圖 顯示子程序MAX7219與89C51芯片采用的是串行方式進(jìn)行數(shù)據(jù)傳送,數(shù)據(jù)格為16位,發(fā)送到DIN端的串行數(shù)據(jù)在每個(gè)CLK的上升沿移入到內(nèi)部16位移位寄存器中,然后在LOAD的上升沿時(shí)數(shù)據(jù)被鎖存到數(shù)字或控制寄存器中。D州端的數(shù)據(jù)通過(guò)移位寄存器傳送,并向下一個(gè)MAX7219芯片送數(shù)。由于MAX7219內(nèi)部16位寄存器的位號(hào)與從DIN發(fā)送來(lái)的串行數(shù)據(jù)的位號(hào)剛好相反,即接收的第一位為D15,所以數(shù)據(jù)在發(fā)送以前必須進(jìn)行顛倒,即D0變成D15,D1變成D14.…(1)初始化程序主要是對(duì)每片MAX7219的顯示模式、顯示亮度、顯示位數(shù)進(jìn)行初始化。初始化時(shí)首先將所有MAX7219芯片的顯示關(guān)掉,即給每片MAX7219芯片的火CH單元送00H。第二,對(duì)每片MAX7219芯片的每一顯示位進(jìn)行初始化,選擇相應(yīng)的顯示方式(非譯碼方式或譯碼方式)給譯碼方式寄存器XCH單元送相應(yīng)的數(shù)值。第三,對(duì)每片MAX7219芯片所驅(qū)動(dòng)的數(shù)碼管的顯示電流進(jìn)行初始化,選擇相應(yīng)的顯示電流(占空比),即給亮度寄存器XAH單元送相應(yīng)的數(shù)值。第四,對(duì)每片MAX7219芯片的驅(qū)動(dòng)數(shù)碼管數(shù)量進(jìn)行初始化,限制顯示掃描顯示位數(shù),即給掃描限制寄存器XBH單元送相應(yīng)的數(shù)值。第五,將所有的顯示開(kāi)啟,即給每片MAX7219芯片的xCH單元送01H。這樣就完成整個(gè)初始化過(guò)程 MAX7219寄存器初始化設(shè)置項(xiàng)目選擇顛倒后的數(shù)值譯碼模式非譯碼模式9F00H高度調(diào)節(jié)17/325F1FH掃描限制0—7位DFEFH關(guān)斷模式正常操作3F80H顯示測(cè)試正常操作FF00H(2)數(shù)據(jù)傳送子程序給MAX7219送數(shù)時(shí),首先是使MAX7219的片選腳電平來(lái)低(變?yōu)榈碗娖?,接著給MAX7219傳送的數(shù)是該單元的單元值(一個(gè)字節(jié)),然后給MAX7219傳送要送到單元送數(shù)(一個(gè)字節(jié)),最后使MAX7219的片選腳電平拉高(變?yōu)楦唠娖?。這樣數(shù)據(jù)才被鎖存到相應(yīng)的數(shù)據(jù)存儲(chǔ)器里。程序如下:(調(diào)用子程序前先把要傳送的數(shù)據(jù)賦給累加器A)DISP: CLR RS0 CLR RS1 MOV R1,08HDISP01: RLC A JC DISPO3 LJMP DISPO4DISPO2: DJNZ R1,DISP01 RET DISPO3: SETB SETB CLR CLR LJMP DISP02 DISPO4: CLR SETB CLR LJMP DISP02主顯示屏接收主機(jī)的數(shù)據(jù)進(jìn)而顯示,除與主機(jī)通信外,其顯示工作也要花費(fèi)大量時(shí)間,所以,使主顯示屏的串行口工作于中斷方式,只有主機(jī)呼叫時(shí),才中斷當(dāng)前工作,進(jìn)入中斷子程序進(jìn)行通信,平常處理顯示數(shù)據(jù)的工作。其通信子程序流程圖如下圖所示。中斷入口保護(hù)現(xiàn)場(chǎng)RI=0取數(shù)據(jù)幀地址本機(jī)地址SM2=0回呼叫應(yīng)答R0=50HR0=40H恢復(fù)現(xiàn)場(chǎng)中斷返回接受命令回接收準(zhǔn)備好應(yīng)答接收數(shù)據(jù)形成累加和接收完檢驗(yàn)正確發(fā)送接收錯(cuò)誤應(yīng)答 幀發(fā)送接收正確應(yīng)答幀R0+05HSM2=1NYNYYYYNYNYN 通信子程序流程圖具體實(shí)現(xiàn)的部分代碼如下:include include unsigned usbp=0,usdi=0。//保護(hù)現(xiàn)場(chǎng)void interrupt pt(unsigned bp,unsigned di){ usbp=bp。 usdi=di。}//恢復(fù)現(xiàn)場(chǎng)void rept(unsigned bp,undigned di){ bp=usbp。 di=usdi。}main(){ char j=0。 int ri=0。 j=(char*)getvect(0x1c)。//中斷入口 pt(bp,di)://保護(hù)現(xiàn)場(chǎng)ri=0。get(amp。ri)。//取數(shù)據(jù)幀 int nacc=0,nlocalacc=0。nacc=isacc(ri)。//是地址?if(nacc==1)//是地址 { nlocalacc=islocal(ri)。//是本機(jī)地址? if(nloca1acc==1)//是{SM2=0。answer()。//回呼叫應(yīng)答if(RO==0x50) RO=0x40: } }else//不是地址{ncmd=0。ncmd=iscmd(ri)。if(ncmd==2)//接收{(diào)send(1)。//回接收準(zhǔn)備好應(yīng)答 int ncount=0,nchk=0。do{char t=0。t=getdata()。//接收數(shù)據(jù)ncount++。 }while(t!=0)。nchk=chk()。//檢驗(yàn)正確?if(nchk=1)//正確 send(3)。//發(fā)送接收正確應(yīng)答else send(4)。//發(fā)送接收錯(cuò)誤應(yīng)答SM2=1。 } else SM2=1。 R0+=0x50。 } rept(bp,di)。//恢復(fù)現(xiàn)場(chǎng) setvect(0x1c,j)。//恢復(fù)中斷返回} 窗口顯示屏軟件設(shè)計(jì) 窗口顯示屏作為從機(jī)接收主機(jī)發(fā)來(lái)的數(shù)據(jù)進(jìn)而顯示,主程序流程圖如下圖所示,包括顯示子程序和通信子程序兩個(gè)子程序模塊。初始化完成定時(shí)器T串行口的設(shè)置。 開(kāi)始初始化讀本機(jī)地址顯示子程序結(jié)束 窗口顯示屏主程序流程圖電路采用LED顯示,CPU從左到右(即從LED1到LED3)進(jìn)行動(dòng)態(tài)掃描,其顯示過(guò)程如下:首先CPU把LED1要顯示的字符段碼送入PO口,即使LED1的COM端為低電平。雖然段選碼通過(guò)驅(qū)動(dòng)電路同時(shí)送到各位LED,但這時(shí)只有LED1的相應(yīng)段被導(dǎo)通點(diǎn)亮,而其余LED并不亮。然后CPU把LED2要顯示的字符段碼送入P0口,……,如此依次分別掃描代碼,一一分別點(diǎn)亮各位LED。只要刷新時(shí)間不太長(zhǎng),就會(huì)給人以同時(shí)顯示的穩(wěn)定視覺(jué)效果。LED動(dòng)態(tài)掃描流程圖如下圖所示。在編制程序時(shí),需要將內(nèi)存中需要顯示的十六進(jìn)制數(shù)一個(gè)個(gè)譯成段選碼送往P0口,同時(shí)相間送出位選碼到P2口的相應(yīng)腳。指向顯示緩沖區(qū)首地址取顯示位指針取要顯示的數(shù)將數(shù)變?yōu)槎芜x碼送段選碼到P0口—延時(shí)是最右邊位嗎退出修改顯示緩沖區(qū)指針和位碼YN具體實(shí)現(xiàn)的部分代碼如下:include inc1ude void main(){int *p=0://指向顯示緩沖區(qū)首地址 int nr=0。p=fristram()。//取顯示位指針do{ int nnum=getshow()。//取要顯示的數(shù) int nhex=change(nnum)。//將數(shù)變?yōu)槎芜x碼send(nhex,P0)。//送段選碼到P0口send(nhex,P2_0)。//send(nhex,P2_1)。send(nhex,P2_2)。 de1ay(100)。//nr=isright(nhex)://是最右邊位? }while(nr!=1)。}窗口顯示與主機(jī)之間的通信主要通過(guò)RS485收發(fā)器實(shí)現(xiàn),屬?gòu)臋C(jī)地位。由于窗口顯示屏本身也有處理數(shù)據(jù)、顯示等工作要完成,所以采用了中斷通信方式進(jìn)行通信,即未有中斷時(shí),窗口顯示屏完成自己的顯示工作,當(dāng)主機(jī)與其通信時(shí)(即與本機(jī)地址相符),才中斷進(jìn)行通信。窗口顯示屏通信子程序流程圖如下圖所示。中斷入口保護(hù)現(xiàn)場(chǎng)RI=0取數(shù)據(jù)幀地址本機(jī)地址SM2=0回呼叫應(yīng)答恢復(fù)現(xiàn)場(chǎng)中斷返回接受命令回接收準(zhǔn)備好應(yīng)答接收數(shù)據(jù)形成累加和
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1