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

正文內(nèi)容

基于單片機的數(shù)據(jù)采集系統(tǒng)設計本科生畢業(yè)論文(編輯修改稿)

2024-08-14 18:52 本頁面
 

【文章內(nèi)容簡介】 當 ST 上跳沿 時,所 有 內(nèi) 部 寄 存 器 清零 ; 下 跳沿 時, 開 始 進行 A/D 轉換 ; 在轉換 期間 , ST 應保持 低 電 平 。 EOC 為 轉換 結束 信號 。 當 EOC 為高電 平 時, 表明 轉換 結束 ; 否 則 , 表明正 在 進行 A/D 轉換。 OE為輸出允 許信號 , 用于 控制三條輸出鎖存 器 向 單片機 輸出 轉換得到的數(shù)據(jù)。 OE= 1, 輸出 轉換得到的數(shù)據(jù) ; OE= 0, 輸出 數(shù)據(jù) 線呈 高 阻狀 態(tài) 。 D7- D0 為 數(shù) 字 量 輸出線 。 CLK為 時 鐘 輸入信號線 。 因 ADC0809的 內(nèi) 部沒 有 時 鐘 電路,所 需 時 鐘 信號 必須由 外界提供 ,通常 使 用 頻率 為 500KHZ, VREF( + ) , VREF(-)為 參考 電 壓輸入 。 ADC0809 應用說明 : ( 1) ADC0809 內(nèi) 部帶 有輸出鎖存 器,可以 與 AT89S51 單片機直接 相連 。 ( 2) 初始 化 時, 使 ST 和 OE信號 全 為 低 電 平 。 ( 3) 送 要 轉換的 哪 一通 道 的 地址 到 A, B, C 端 口 上 。 ( 4) 在 ST端 給 出 一個 至少 有 100ns 寬 的 正脈沖 信號 。 ( 5)是 否 轉換 完 畢 ,我們 根 據(jù) EOC 信號 來 判斷 。 ( 6)當 EOC變?yōu)楦?電 平 時,這時 給 OE 為高 電 平 ,轉換的數(shù)據(jù)就 輸出 給 單片機 了 。 74LS74 芯片 74LS74 為帶預置和清除端的兩組 D 型觸發(fā)器, 在這次的系統(tǒng)設計中,它為AD0809芯片提供 500KHz的時鐘信號,這是利用了觸發(fā)器的工作。一個觸發(fā)器可以 2分頻,二個觸發(fā)器連接可提供 4分頻。 原理 其主要電特性的典型值如下: 表二 引出端符號 : 第 16 頁 邏輯圖 : 圖 5 74LS74邏輯圖 MAX232 芯片 MAX232 芯片為串口 TTL 電平轉換芯片 。 接口電路為: 第 17 頁 圖 6 MAX232 連接圖 74LS244 芯片 74LS74 為 八同相三態(tài)緩沖器 /線驅(qū)動器 。 這里主要用于驅(qū)動共陰數(shù)碼管 LED的顯示驅(qū)動。 結構圖和功能圖為 : 圖 7 74LS244 第 18 頁 原理介紹 首先用 PROTEL 軟件設計的原理圖為 : 圖 8 系統(tǒng)原理圖 系統(tǒng)總的功能原理, 系統(tǒng)開機, 89C51 芯片工作,由 控制 發(fā)光二極管 1指示系統(tǒng)工作狀態(tài),亮表 示工作,暗表示不工作 由 控制發(fā)光二極管 2指示AD0809 工作狀態(tài),亮表示工作,暗表示不工作 。 控制轉換開始和結束,~ 控制八個按鈕用來選擇模擬輸入轉換通道,另外一個復位按鈕。 由 P0口輸入 AD0809 芯片 的轉換數(shù)據(jù)結果 , 、 、 口接 AD0809 芯片的 ST、EOC、 OE3 個控制信號引腳,用于控制 AD0809 工作。 、 、 接 AD0809的 A、 B、 C 控制轉換通道選擇,另外 89C51 的 LEA。數(shù)碼管方面,有 P0 口輸出數(shù)據(jù), 、 、 控 制位選。和微機接口方面, 89C51 的 RX、 TX 接 MAX232,MAX232 的 13和 14 引腳接 DB9 的 2引腳組成串口通信接線。 串口通信原理,單片機和 PC 機通信要經(jīng)過 TTL 電平轉換。這里串行通信使用RS232 標準,它本是美國電子工業(yè)協(xié)會的推薦標準,現(xiàn)已在全世界的范圍廣泛采用。 RS232 實際上是串行通信的總線標準。它用 3V 到 25V 表示邏輯“ 1” , +3V到 +25V 表示邏輯“ 0”。這里只用 3個引腳構成串口通信, 2 腳發(fā)送數(shù)據(jù) TXD, 3第 19 頁 腳接收數(shù)據(jù) RXD 和 5腳接地。 單片機的串口通信,在單片機芯片中, UART 已 集成在其中,做為組成部分,構成一個串行口,這個串行口是全雙工的。 單片機串口通信的波特率設置是有單片機的定時記數(shù)器 1 提供時鐘。串口通信用到串口發(fā)送緩沖寄存器 SBUF 和 及串行通信控制寄存器 SCON。 串口有 3種工作方式,這里采用工作方式 1。串口工作方式 1的原理為: TxD 腳發(fā)送 , RxD 腳接收 , 每次數(shù)據(jù)為 10 位 , 一個起始位 0 , 8 個數(shù)據(jù)位 , LSB 在前及一個停止位 1, 當接收數(shù)據(jù)時停止位存于 SCON 的 RB8 內(nèi)波特率可變由定時器 1 溢出速率決定 。 串行口工作于模式 1時 , 傳輸?shù)氖?10位 ; 1 位起始位 0, 8位 數(shù)據(jù)低位在先及一位停止位 1。 由 RxD接收 , TxD發(fā)送 。 接收時 , 停止位存入 SCON 內(nèi) RB8。 80C51 波特率取決于定時器 1的溢出速率 。 發(fā)送過程是由執(zhí)行一條以 SBUF 為目的寄存器的指令啟動的 。 寫 SBUF 信號還把 1 TB8 裝入發(fā)送移位寄存器的第 9 位 , 同時通知發(fā)送控制器進行發(fā)送 。 實際上發(fā)送過程開始于 16 分頻計數(shù)器下次翻轉后的那個機器周期的 S1P1 時刻 。 每位的發(fā)送時序與 16 分頻計數(shù)器同步 , 而并不與寫 SBUF 信號同步 。 發(fā)送以激活 SEND 端開始 , 向 TxD發(fā)送一起始位一位時間以后 DATA端有效 , 使輸出 移位寄存器中數(shù)據(jù)得以送至 TxD。 再過一位 , 產(chǎn)生第一個移位脈沖 。 數(shù)據(jù)向右移出 , 左邊不斷填以 0, 當數(shù)據(jù)字節(jié)的最高位移到移位寄存器的輸出位置時 , 其左邊是裝入 1的第 9位 , 再左的內(nèi)容均為 0。 此時通知 TX 控制器作最后一次移位 , 然后禁止 SEND端并置位 TI。 這都發(fā)生于寫 SBUF后 16分頻計時器的第 10次翻轉時 。 接收在 RxD端檢測到負跳變時啟動 , 為此 MCU對 RxD不斷采樣 , 采速率為波特率的 16倍 。 當檢測到負跳變時 , 16分頻計數(shù)器立即復位 , 同時將 1FFH 寫入輸入移位寄存器 。 復位 16分頻計時器確保計時器翻轉時位與輸入數(shù)據(jù) 位時間同步 。計數(shù)器的 16個狀態(tài)將每個位時間分為 16份 。 在第 9狀態(tài)時 , 位檢測器對 RxD 端的值采樣 。 取值為三個采樣值中取多數(shù)至少 2個作為讀入值 , 這樣可以抑制噪聲 。如果所接收的第一位不為 0, 說明它不是一幀數(shù)據(jù)的起始位 , 該位被摒棄 , 接收電路被復位 , 等待另一個負跳變的到來 。 這用來防止錯誤的起始位 , 如果起始位有效 , 則被移入輸入移位寄存器 , 并開始接收這一幀中的其它位 。 當數(shù)據(jù)位逐一由右邊移入時 , 1從左邊被移出 。 當起始位 0移到最左邊時 , 通知接收控制器進行最后一次移位 , 將移位寄存器內(nèi)容 9 位分別裝入 SBUF及 RB8, 并置 RI=1。 僅當最后一第 20 頁 位移位脈沖產(chǎn)生時同時滿足下述 2個條件 : RI=0, SM2=0或接收到的停止位 =1,才會裝載 SBUF和 RB8, 并且置位 RI。 上述兩個條件任一不滿足 ,所接收到的數(shù)據(jù)幀就會丟失 , 不再恢復 。 兩者都滿足時 , 停止位就進入 RB88, 位數(shù)據(jù)進入 SBUF, RI=1。這時無論上述條件滿足與否 , 接收控制單元都會重新等待 RxD的負跳變 。 由于采樣八百多 MHz,波特率要大于 9600BPS,這里我設置為 9600bps, 由定時器 1工作方式 2提供。 在 80C51 中模式 1 和模式 3 的波特率由定時器 1 的溢出速 率決定。 使用定時器 1 作波特率發(fā)生器 當定時器 1 用作波特率發(fā)生器模式 1 和 3 中波特率由定時器1 的溢出速率和 SMOD1 的值決定。 模式 1 、3 波特率 2 nS M O D(定時器 1 溢出速率) 在此應用中定時器 1 不能用作中斷 , 定時器 1 可以工作在定時或計數(shù)方式和 3 種工作模式中任何一個 。 在最典型應用中它用作定時器方式工作自動重裝載模式TMOD 的高半字節(jié)為 0010B, 它的波特率值由下式給出 : 模式 1 、3 波特率 2 nS M O D 振蕩器頻率1 2 [ 2 5 6 ( T H 1 ) ] 可以定時器 1 的中斷實現(xiàn)非常低的波特率將定時器配置為 16 位定時器 TMOD 的高半字節(jié)為 0001B, 并使用中斷進行 16位軟件重裝 。 LED顯示原理,數(shù)碼管的發(fā)光和發(fā) 光 2極管的顯示原理相同。這里采用靜態(tài)顯示原理,掃描顯示。 軟件設計 在這里我用 C 語言編寫系統(tǒng)程序,用 C語言寫程序的好處前面已經(jīng)說過,KEILC51 真的是很好的軟件,我寫的程序在 KEIL 上仿真通過,程序見附錄。 軟件結構圖: 第 21 頁 開 機選擇通道?開始轉換?A / D 轉換L E D 顯示串口發(fā)送結束轉換?復 位YYYYNNN 圖 9 軟件流程圖 可 分 為 4 個模塊: ( 1)、控制模塊 ( 2)、 AD 轉換模塊 ( 3)、 LED 顯示模塊 ( 4)、串口發(fā)送模塊 PC 機上數(shù)據(jù)接收軟件制作 在這里我用 VC++的 MFC 制作數(shù)據(jù)采集器的上位機數(shù)據(jù)接收軟件 。 下面講述主要制作過程: :打開 VC++ ,建立一個基于對話框的 MFC 應用程序 cg1 MSComm 控件 選擇 Project 菜單下 Add To Project子菜單中的 Components and Controls?選項,在彈出的對話框中雙擊Registered ActiveX Controls 項,則所有注冊過的 ActiveX 控件出現(xiàn)在列表框中。 選擇 Microsoft Communications Control, version ,單擊第 22 頁 Insert 按鈕將它插入到我們的 Project 中來,接受缺省的選項。這時在 ClassView視窗中就可以看到 CMSComm 類了,并且在控件工具欄 Controls 中出現(xiàn)了電話圖標現(xiàn)在要做的是用鼠標將此圖標拖到對話框中,程序運行后,這個圖標是看不到的。 ClassWizard 定義 CMSComm 類控制對象 打開 ClassWizard- Member Viariables 選項卡,選擇 CGc1Dlg 類,為 IDC_MSCOMM1 添加控制變量: m_ctrlComm,這時你可以看一看,在對話框頭文件中自動加入了//{{AFX_INCLUDES() include //}}AFX_INCLUDES (這時運行程序,如果有錯,那就再從頭開始)。 向主對話框中添加兩個編輯框,一個用于接收顯示數(shù)據(jù) ID為 IDC_EDIT_RXDATA,另一個用于輸入發(fā)送數(shù)據(jù), ID 為 IDC_EDIT_TXDATA,再添加一個按鈕,功能是按一次就把發(fā)送編輯框中的內(nèi)容發(fā)送一次,將其 ID 設為IDC_BUTTON_MANUALSEND。別忘記了將接收編輯框的 Properties- Styles 中把 Miltiline 和 Vertical Scroll 屬性選上,發(fā)送編輯框若你想輸 入多行文字,也可選上 Miltiline。再打開 ClassWizard- Member Viariables 選項卡,選擇CGc1g 類, 為 IDC_EDIT_RXDATA 添加 CString 變量 m_strRXData, 為IDC_EDIT_TXDATA 添加 CString 變量 m_strTXData。 OnComm() 打開 ClassWizard- Message Maps,選擇類 CGc1Dlg,選擇 IDC_MSCOMM1,雙擊消息 OnComm,將彈出的對話框中將函數(shù)名改為 OnComm。 這個函數(shù)是用來處理串口消息事件的,如每當串口接收到數(shù)據(jù),就會產(chǎn)生一個串口接收數(shù)據(jù)緩沖區(qū)中有字符的消息事件,我們剛才添加的函數(shù)就會執(zhí)行,我們在 OnComm()函數(shù)加入相應的處理代碼就能實現(xiàn)自已想要的功能了。在函數(shù)中加入如下代碼: void CGc1Dlg::OnComm() { VARIANT variant_inp。 COleSafeArray safearray_inp。 LONG len,k。 BYTE rxdata[1024]。 //設置BYTE An 8bit integerthat is not signed. 第 23 頁 CString strtemp。 if(()==2) //事件值為 2表示接收緩沖區(qū)內(nèi)有字符 { variant_inp=()。 //讀緩沖區(qū) safearray_inp=variant_inp。 //VARIANT 型變量轉換為ColeSafeArray 型變量 len=()。 //得到有效數(shù)據(jù)長度 for(k=0。klen。k++) (amp。k,rxdata+k)。//轉換為 BYTE 型數(shù)組 for(k=0。klen。k++) //將數(shù)組轉換為 Cstring 型變量 { char bt=*(char*)(rxdata+
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1