【正文】
that is, the digital output corresponds to the quantized input, rather than the actual input. The difference between the actual input and the idealized input corresponds to an error of V. Figure 4 shows that the maximum error between the input and output is equal to Q/2. This error is called the quantization error. 第 36 頁 Figure 4 The error function of an ideal 3bit A/D converter The output from a real ADC can be r。 the extraction of a sample value of the signal to be processed and the actual conversion of that sample value into a binary form. Figure 2 gives the block diagram of an analog signal acquisition module. As the analogtodigital converter (ADC) at the heart of this module may be rather expensive, it is not unusual to provide a number of different analog channels, all using the same ADC. Each analog channel in figure 2 begins with a transducer that converts an analog quantity into an electrical value. A transducer exploits some physical property of matter to perform the conversion process. For example, the thermistor is a transducer posed of a substance whose electrical resistance varies with temperature. Figure 2 An analog signal acquisition module 第 33 頁 The electrical signal from the transducer is frequently very tiny (sometimes only a few microvolts) and must be amplified before further processing in order to bring it to a level well above the noise voltages present in later circuits. After amplification es filtering, a process designed to restrict the passage of certain signals through the circuit. Filtering blocks signals with a frequency above or below a cutoff point。感謝他在畢業(yè)設計過程中給我提供指導,幫助我解決困難, 在這次畢業(yè)設計的整個過程中教誨我,在這里再一次表示感謝。 第 29 頁 致 謝 在 將近半年的畢業(yè)設計期中,我要感謝我的老師、同學,是他們的無私幫助才使我順利完成了畢業(yè)設計任務;是他們的無私幫助才使我在面對挫折與困難時毫不 畏懼; 更是他們的無私幫助才使我 成功完成畢業(yè)設計 。 ( 3) 采集對象的進一步拓展。 ( 2) 采集結果的精確標定。為了進一步研究 數(shù)據(jù)采集技術,在今后的工作中,可以從以下幾個方面進行改進: ( 1) 數(shù)據(jù)傳輸范圍進一步擴大。 ( 4) 使用順序化的程序結構,結合模塊化的程序設計方法,實現(xiàn)數(shù)據(jù)采集系統(tǒng)的單步運行,方便用戶定位程序運行過程中的錯誤。 ( 2) 基于單片機數(shù)據(jù)采集理論,將數(shù)據(jù)采集過程和外圍電路結合在一起,擴展了系統(tǒng)的應用范圍,并提高了系統(tǒng)的實用性。 ( 6) 調通硬件之后,就可以把自己做的軟件和硬件和起來調試了。 我查出的錯誤是 AD 不工作,我通過測試 AD 轉換時鐘信號線查出了這一錯誤,測 74LS74 是否輸出 500KHz 信號,沒有表示時鐘不正常,通過檢查 74LS74 連接排除問題。 } } ( 4) 測試 AD轉換模塊, 通過程序測試 AD 轉換模塊是否正常,否則檢查這一模塊連接。 while(!TI)。 TR1=1。 TL1=0xfd。 TMOD=0x20。 串口測試程序: include void main() { while(1) { 第 27 頁 PCON=0x00。 } } ( 3) 測試串口發(fā)送模塊,寫串口發(fā)送程序到單片機,認單片機發(fā)送數(shù)據(jù)給 PC機,測試程序見附錄,用示波器測單片機 TX 口波形,看是否有波形輸出,否則串口出錯,檢查串口部分,分插上 MAX232 芯片和拔出 MAX232 芯片檢查是否是 MAX232 芯片部分連接有問題,用串口調 試精靈接收單片機發(fā)來的字符。 while(i){。b3=0。 P0=0X7F。 while(i){。 b1=b3=1。 P0=0X6D。 while(i) {。b2=b3=1。 p0_7=1。 void main() { int i。 sbit b3=P3^4。 LED 測試程序: include sbit b1=P3^2。 通過寫入鍵盤測試程序測試鍵盤部分是否正常,以備下面測試工作。 用 示波器測 ALE 腳 是否輸出 2MHz 的波型。}//發(fā)送數(shù)據(jù) 最終我做出的軟件界面為: 第 25 頁 調試過程 由于各種原因,接好硬件后,燒入程序沒有預期的效果,這就要調試。//先預讀緩沖區(qū)以清除殘留數(shù)據(jù) } 先為發(fā)送按鈕添加一個單擊消息即 BN_CLICKED 處理函數(shù),打開ClassWizard- Message Maps,選擇類 CGc1Dlg,選擇 IDC_BUTTON_MANUALSEND,雙擊 BN_CLICKED 添加 OnButtonManualsend()函數(shù),并在函數(shù)中添加如下代碼: void CGc1Dlg::OnButtonManualsend() {UpdateData(TRUE)。 //參數(shù) 1表示每當串口接收緩沖區(qū)中有多于或等于 1個字符時將引發(fā)一個接收數(shù)據(jù)的 OnComm 事件 (0)。 //波特率 19200,無校驗, 8 個數(shù)據(jù)位, 1個停止位 (1)。//打開串口 else AfxMessageBox(cannot open serial port)。 (1)。 在程序中做一個開始按鈕,在該按鈕的處理函數(shù)中打開串口。 //清空接收緩沖區(qū) } UpdateData(FALSE)。 if (strtemp==ffffff8a) m_strRXData+=.。 if (strtemp==ffffff88) m_strRXData+=8。 if (strtemp==ffffff86) m_strRXData+=6。 if (strtemp==ffffff84) m_strRXData+=4。 if (strtemp==ffffff82) m_strRXData+=2。 //加入接收編輯框對應字符串 if (strtemp==ffffff80) m_strRXData+=0。 //字符型 (%02x,bt)。klen。k,rxdata+k)。klen。 //VARIANT 型變量轉換為ColeSafeArray 型變量 len=()。 if(()==2) //事件值為 2表示接收緩沖區(qū)內有字符 { variant_inp=()。 BYTE rxdata[1024]。 COleSafeArray safearray_inp。 這個函數(shù)是用來處理串口消息事件的,如每當串口接收到數(shù)據(jù),就會產(chǎn)生一個串口接收數(shù)據(jù)緩沖區(qū)中有字符的消息事件,我們剛才添加的函數(shù)就會執(zhí)行,我們在 OnComm()函數(shù)加入相應的處理代碼就能實現(xiàn)自已想要的功能了。再打開 ClassWizard- Member Viariables 選項卡,選擇CGc1g 類, 為 IDC_EDIT_RXDATA 添加 CString 變量 m_strRXData, 為IDC_EDIT_TXDATA 添加 CString 變量 m_strTXData。 向主對話框中添加兩個編輯框,一個用于接收顯示數(shù)據(jù) ID為 IDC_EDIT_RXDATA,另一個用于輸入發(fā)送數(shù)據(jù), ID 為 IDC_EDIT_TXDATA,再添加一個按鈕,功能是按一次就把發(fā)送編輯框中的內容發(fā)送一次,將其 ID 設為IDC_BUTTON_MANUALSEND。這時在 ClassView視窗中就可以看到 CMSComm 類了,并且在控件工具欄 Controls 中出現(xiàn)了電話圖標現(xiàn)在要做的是用鼠標將此圖標拖到對話框中,程序運行后,這個圖標是看不到的。 下面講述主要制作過程: :打開 VC++ ,建立一個基于對話框的 MFC 應用程序 cg1 MSComm 控件 選擇 Project 菜單下 Add To Project子菜單中的 Components and Controls?選項,在彈出的對話框中雙擊Registered ActiveX Controls 項,則所有注冊過的 ActiveX 控件出現(xiàn)在列表框中。 軟件設計 在這里我用 C 語言編寫系統(tǒng)程序,用 C語言寫程序的好處前面已經(jīng)說過,KEILC51 真的是很好的軟件,我寫的程序在 KEIL 上仿真通過,程序見附錄。 LED顯示原理,數(shù)碼管的發(fā)光和發(fā) 光 2極管的顯示原理相同。 模式 1 、3 波特率 2 nS M O D(定時器 1 溢出速率) 在此應用中定時器 1 不能用作中斷 , 定時器 1 可以工作在定時或計數(shù)方式和 3 種工作模式中任何一個 。 在 80C51 中模式 1 和模式 3 的波特率由定時器 1 的溢出速 率決定。這時無論上述條件滿足與否 , 接收控制單元都會重新等待 RxD的負跳變 。 上述兩個條件任一不滿足 ,所接收到的數(shù)據(jù)幀就會丟失 , 不再恢復 。 當起始位 0移到最左邊時 , 通知接收控制器進行最后一次移位 , 將移位寄存器內容 9 位分別裝入 SBUF及 RB8, 并置 RI=1。 這用來防止錯誤的起始位 , 如果起始位有效 , 則被移入輸入移位寄存器 , 并開始接收這一幀中的其它位 。 取值為三個采樣值中取多數(shù)至少 2個作為讀入值 , 這樣可以抑制噪聲 。計數(shù)器的 16個狀態(tài)將每個位時間分為 16份 。 當檢測到負跳變時 , 16分頻計數(shù)器立即復位 , 同時將 1FFH 寫入輸入移位寄存器 。 這都發(fā)生于寫 SBUF后 16分頻計時器的第 10次翻轉時 。 數(shù)據(jù)向右移出 , 左邊不斷填以 0, 當數(shù)據(jù)字節(jié)的最高位移到移位寄存器的輸出位置時 , 其左邊是裝入 1的第 9位 , 再左的內容均為 0。 發(fā)送以激活 SEND 端開始 , 向 TxD發(fā)送一起始位一位時間以后 DATA端有效 , 使輸出 移位寄存器中數(shù)據(jù)得以送至 TxD。 實際上發(fā)送過程開始于 16 分頻計數(shù)器下次翻轉后的那個機器周期的 S1P1 時刻 。 發(fā)送過程是由執(zhí)行一條以 SBUF 為目的寄存器的指令啟動的 。 接收時 , 停止位存入 SCON 內 RB8。 串行口工作于模式 1時 , 傳輸?shù)氖?10位 ; 1 位起始位 0, 8位 數(shù)據(jù)低位在先及一位停止位 1。 串口有 3種工作方式,這里采用工作方式 1。 單片機串口通信的波特率設置是有單片機的定時記數(shù)器 1 提供時鐘。這里只用 3個引腳構成串口通信, 2 腳發(fā)送數(shù)據(jù) TXD, 3第 19 頁 腳接收數(shù)據(jù) RXD 和 5腳接地。 RS232 實際上是串行通信的總線標準。 串口通信原理,單片機和 PC 機通信要經(jīng)過 TTL 電平轉換。數(shù)碼管方面,有 P0 口輸出數(shù)據(jù), 、 、 控 制位選。 由 P0口輸入 AD0809 芯片 的轉換數(shù)據(jù)結果 , 、 、 口接 AD0809 芯片的 ST、EOC、 OE3 個控制信號引腳,用于控制 AD0809 工作。 結構圖和功能圖為 : 圖 7 74L