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

正文內(nèi)容

pc機(jī)與單片機(jī)間串口通信技術(shù)的實(shí)現(xiàn)畢業(yè)論文(文件)

 

【正文】 ommunications Control(以下簡(jiǎn)稱MSComm)是Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過(guò)串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。在許多情況下,在事件發(fā)生時(shí)需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個(gè)字符到達(dá)或一個(gè)變化發(fā)生時(shí)。在編程過(guò)程中,就可以在OnComm事件處理函數(shù)中加入自己的處理代碼。 查詢方式 查詢方式實(shí)質(zhì)上還是事件驅(qū)動(dòng),但在有些情況下,這種方式顯得更為便捷。 2. MSComm 控件的常用屬性 MSComm 控件有很多重要的屬性,但首先必須熟悉幾個(gè)屬性。也可以打開(kāi)和關(guān)閉端口。即PortOpen屬性設(shè)成“False”。 方式1數(shù)據(jù)輸出時(shí)序圖當(dāng)數(shù)據(jù)被寫(xiě)入SBUF寄存器后,單片機(jī)自動(dòng)開(kāi)始從起始位發(fā)送數(shù)據(jù),發(fā)送到停止位的開(kāi)始時(shí),由內(nèi)部硬件將TI置1,向CPU申請(qǐng)中斷,接下來(lái)可在中斷服務(wù)程序中做相應(yīng)處理,也可選擇不進(jìn)入中斷。在具體操作串行口之前,需要對(duì)單片機(jī)的一些與串口有關(guān)的特殊功能寄存器進(jìn)行初始化設(shè)置,主要是設(shè)置產(chǎn)生波特率的定時(shí)器串行口控制和中斷控制。uchar code table[]=I get 。 //T1定時(shí)器裝初值 TR1=1。 //同上 EA=1。{ 當(dāng)檢測(cè)到flag置1后,先是將ES清0,原因是接下來(lái)要ES=0。 現(xiàn)象,因此我們?cè)诎l(fā)送數(shù)據(jù)前把串口中斷關(guān)閉,等發(fā)送完 數(shù)據(jù)后再打開(kāi)串口中斷,這樣便可以安全地發(fā)送數(shù)據(jù)了?!钡却欠癜l(fā)送完畢,因?yàn)楫?dāng)發(fā)送完畢 //后 TI會(huì)由硬件置1,然后才退出“while(!TI);”} //接下來(lái)我 們?cè)賹I手動(dòng)清0。ES=1。} //“void ser() interrupt”為串口中斷服務(wù)程序,在本程序中完成三件事:RI清0,因?yàn)槌绦蚣热划a(chǎn)生了串口中斷,那么肯定是收到或發(fā)送了數(shù)據(jù),在開(kāi)始時(shí)沒(méi)有發(fā)送任何數(shù)據(jù),那必然是收到了數(shù)據(jù),此時(shí)RI會(huì)被硬件置1,進(jìn)入串口中斷服務(wù)程序后必須由軟件清0,這樣才能產(chǎn)生下一次中斷;將SBUF中的數(shù)據(jù)讀走給a,這才是進(jìn)入中斷服務(wù)程序中最重要的目的;將標(biāo)志位flag置1,以方便在主程序中查詢判斷是否已經(jīng)收到數(shù)據(jù)。當(dāng)收到上位機(jī)以十六進(jìn)制發(fā)送來(lái)的01后,向上位機(jī)發(fā)送字符串“Turn on ad”,同時(shí)間隔一秒讀取一次A/D的值,然后把A/D采集回來(lái)的8位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)表示的實(shí)際電壓浮點(diǎn)數(shù),并且從串口發(fā)送給上位機(jī),形式如“The voltage is ”,發(fā)送周期也是一秒一次,同時(shí)在數(shù)碼管上也要每秒刷新顯示的數(shù)值。 //申明U1鎖存器的鎖存端sbit wela=P2^7。unsigned char flag_uart,flag_time,flag_on,a,i,t0_num,ad_val。 for(i=xms。j)。 TL0=(6553650000)%256。 ET0=1。 EA=1。 //分出百,十,和個(gè)位 shi=value%100/10。 //送段選數(shù)據(jù) dula=0。 //送位選數(shù)據(jù) wela=0。 dula=0。 wela=0。 dula=0。 wela=0。 _nop_()。 P1=0xff。 //AD讀使能 _nop_()。} void main(){ init()。 while(1) { if(flag_uart==1) { flag_uart=0。 TR0=1。 break。//必須要加 TI=0。 ad_vo=(float)ad_val*。 while(!TI)。 }}void timer0() interrupt 1{ TH0=(6553650000)/256。 flag_time=1。 if(a==1) flag_on=0。同時(shí)開(kāi)發(fā)板上的單片機(jī)還能把溫度值通過(guò)串口發(fā)送到計(jì)算機(jī),在計(jì)算機(jī)上可看到溫度值。(2) 在DS18B20 中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。(6)內(nèi)部有溫度上、下限告警設(shè)置。當(dāng)工作于寄生電源時(shí),此引腳必須接地。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。要想完成此任務(wù),需要兩段代碼,一段是單片機(jī)的代碼,它需要將采集到的溫度數(shù)據(jù)處理后,通過(guò)串行口發(fā)送出去。 選擇工程類型 第二步,選擇[Dialog based]項(xiàng),單擊[Finish]按鈕。 為新類添加名稱 第七步,將控制工具條中的串行口控件拖動(dòng)到對(duì)話框中,用鼠標(biāo)左鍵點(diǎn)住,一直拖到對(duì)話框中,在任意位置釋放左鍵。 第十一步,在[MFC ClassWizard]對(duì)話框中,單擊[Member Variables]選項(xiàng)卡,為編輯框和串行口選擇關(guān)聯(lián)變量m_strRXData和m_ctrlComm,單擊[OK]按鈕。 LONG len,k。 safearray_inp=variant_inp。k++) (amp。k++) { BYTE bt=*(char*)(rxdata+k)。} 第十三步,在[OnInitDialog()]函數(shù)中添加代碼,具體代碼如下: if(()) (FALSE)。 (9600,n,8,1)。 ()。 畢業(yè)設(shè)計(jì)作為綜合性的設(shè)計(jì),它不同于以前教學(xué)中的實(shí)驗(yàn)、課程設(shè)計(jì)等實(shí)踐環(huán)節(jié)。真正做到了理論聯(lián)系實(shí)際,把以前所學(xué)的知識(shí)綜合貫通進(jìn)行實(shí)踐,并在實(shí)踐中不斷學(xué)習(xí)和自我完善。也為我即將面臨的研究生學(xué)習(xí)奠定了很好的基礎(chǔ)。尤其要強(qiáng)烈感謝我的論文指導(dǎo)老師—梅中輝老師,他對(duì)我進(jìn)行了無(wú)私的指導(dǎo)和幫助,不厭其煩的幫助我進(jìn)行論文的修改和改進(jìn)。 感謝我的同學(xué)和朋友,在我寫(xiě)論文的過(guò)程中給予我了很多你問(wèn)素材,還在論文的撰寫(xiě)和排版燈過(guò)程中提供熱情的幫助。對(duì)梅老師的感激之情是無(wú)法用言語(yǔ)表達(dá)的。.[8] Universal Serial Bus Mass Storage Class Specification Overview,Revision 12,2003 [9] Compaq,Intel,Microsoft, Universal Serial Bus Specification Revision ,1998.[10]The parallel opera。單片機(jī)與PC機(jī)通訊.梅老師多次詢問(wèn)研究進(jìn)程,并為我指點(diǎn)迷津,幫助我開(kāi)拓研究思路,精心點(diǎn)撥、熱忱鼓勵(lì)。在此向幫助和指導(dǎo)過(guò)我的各位老師表示最中心的感謝! 感謝這篇論文所涉及到的各位學(xué)者。 在以后的工作中,我們必須進(jìn)一步深化在實(shí)踐中去豐富理論,完善知識(shí)結(jié)構(gòu)。對(duì)于硬件電路,由于單片機(jī)串口通信技術(shù)已經(jīng)非常成熟,所以我在書(shū)上找到了現(xiàn)成的電路,我沒(méi)有親自去焊硬件電路,而是買(mǎi)了一塊做好的板子,這就省去了一部分時(shí)間,最難的是調(diào)試了,但在老師和同學(xué)的幫助下,完成的設(shè)計(jì)達(dá)到了預(yù)定的要求。而畢業(yè)設(shè)計(jì)則是對(duì)我們大學(xué)四年所學(xué)知識(shí)的一個(gè)綜合的訓(xùn)練及考核,是對(duì)所學(xué)知識(shí)的應(yīng)用能力和大學(xué)所學(xué)理論知識(shí)對(duì)實(shí)踐技能相結(jié)合的全面的檢驗(yàn)。 // return TRUE unless you set the focus to a control第十四步,單擊窗口上方工具欄上的!按鈕,編譯并運(yùn)行,彈出對(duì)話框,用串行口線連接TX—1C實(shí)驗(yàn)板和計(jì)算機(jī),關(guān)閉其他的串行口軟件,即可在編輯框中顯示出溫度。 (1)。 if(!()) (TRUE)。 m_strRXData+=strtemp。 for(k=0。 for(k=0。 CString strtemp。 //每次進(jìn)入則將編輯框內(nèi)容清空等待顯示新的數(shù)據(jù) VARIANT variant_inp。 第九步,一直單擊[OK]按鈕,我們就會(huì)看到增加的[OnOnCommMsm1()]函數(shù)。 選擇Registered ActiveX Controls文件夾 第五步,選擇[Microsoft Communications Control,]列表項(xiàng),單擊[Insert]按鈕。單片機(jī)檢測(cè)溫度及發(fā)送數(shù)據(jù)的代碼見(jiàn)附錄A。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。由于DS18B20 是在一根I/O 線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。開(kāi)漏單總線接口引腳。(4) 測(cè)量溫度范圍在-55 到+125 攝氏度之間。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì)。 else flag_on=2。 a=SBUF。 t0_num++。 ES=1。 TI=1。 } if(flag_time==1) { flag_time=0。 break。 case 1: printf(Turn off ad!\n)。 TI=1。 P0=0x7f。 //AD數(shù)據(jù)讀取 adrd=1。 _nop_()。 //啟動(dòng)AD轉(zhuǎn)換 _nop_()。}uchar get_ad() { uchar adval。 wela=1。 dula=1。 wela=1。 //延時(shí) dula=1。 //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開(kāi)位選鎖存時(shí) wela=1。 dula=1。}void display(uchar value) //顯示子函數(shù){ uchar bai,shi,ge。 SM1=1。 TL1=0xfd。// SCON=0x50。i) //i=xms即延時(shí)約xms毫秒 for(j=110。uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。 //定義AD的WR端口sbit adrd=P3^7。當(dāng)收到上位機(jī)發(fā)來(lái)的其他任何數(shù)時(shí),向上位機(jī)發(fā)送字符串“Error!”。其次我們?cè)谡{(diào)試其他程序時(shí),在整個(gè)程序的不同地方,或是關(guān)鍵地方使用串口打印功能輸出給上位機(jī)一個(gè)關(guān)鍵數(shù)據(jù),我們就可知道程序中某些變量的實(shí)時(shí)數(shù)值,進(jìn)一步得知程序運(yùn)行的狀況。 } } } void ser() interrupt 4{ RI=0。while(!TI)。 TI=0。i6。 //開(kāi)串口中斷}void main(){init()。 //允許串口接收 SM0=0。 //設(shè)定T1定時(shí)器工作方式2 TH1=0xfd。下面介紹串行口方式1的具體使用方法和操作流程:實(shí)驗(yàn)內(nèi)容: 在上位機(jī)上用串口調(diào)試助手發(fā)送一個(gè)字符X,單片機(jī)收到字符后返回給上位機(jī)“I get X”,串口波特率設(shè)為9600bps。接收過(guò)程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。第四章 串行口方式1的編程與實(shí)現(xiàn) 串行口方式1是最常用的通信方式。 Output 向傳輸緩沖區(qū)寫(xiě)一個(gè)字符串。 Settings 以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。每個(gè)MSComm 控件對(duì)應(yīng)著一個(gè)串行端口。OnComm 事件還可以檢查和處理通訊錯(cuò)誤。 1. MSComm控件兩種處理通訊的方式 MSComm控件提供下列兩種處理通訊的方式:事件驅(qū)動(dòng)方式和查詢方式。 MSComm 控件通過(guò)串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能。(1) 確定定時(shí)器1的工作方式—編程TMOD寄存器。通常使用單片機(jī)的串行口時(shí),選用的晶振頻率比較固定(一般為6MHz,)。如12M晶振系統(tǒng)中,若SMOD=0,則波特率=。 (2)方式2的波特率也是固定的,且有兩種。 在串行通信中,收發(fā)雙方的波特率必須保持一致。TXD()為數(shù)據(jù)發(fā)送引腳,RXD()為數(shù)據(jù)接收引腳。其傳輸波特率是可變的,對(duì)于51單片機(jī),波特率由定時(shí)器1的溢出率決定。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后,波特率固定為。2. 串口方式簡(jiǎn)介 在這里對(duì)串口4種方式僅做簡(jiǎn)單介紹。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請(qǐng)。 在方式2或方式3中,是接收數(shù)據(jù)的第9位,可作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。 在方式2或方式3中,是發(fā)送數(shù)據(jù)的第9位,可以用軟件規(guī)定其作用。在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1。當(dāng)接收機(jī)的SM2=1時(shí),可以利用收到的RB8來(lái)控制是否激活RI(RB8=0時(shí)不激活RI,收到的信息丟棄;RB8=1時(shí)收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。單片機(jī)復(fù)位時(shí)SCON全部被清0。接收器具有雙緩沖結(jié)
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1