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

正文內(nèi)容

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

2025-06-29 13:17本頁面
  

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