【正文】
值得注意的是:通信距離較近時(12m),是可以用電纜線直接連接標準RS232端口(RS422,RS485較遠),若距離較遠,需附加調(diào)制解調(diào)器(MODEM)。%時,這種偏移將不會影響正常的數(shù)據(jù)接收,但為了保證傳輸?shù)目煽啃裕?,而盡量選擇最小的傳輸誤差率。實際的波特率及誤差如下:SMOD=%;SMOD=%經(jīng)過多次的運算證明,對于常用的標準波特率,都能正確地計算出T1的計數(shù)初值,所以這個晶振是最常用的,特別適用在串行電路中,精度非常高。STC89C52具體介紹如下:(1)主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源。(4)可編程輸入/輸出引腳(32根)STC89C52單片機有4組8位的可編程I/O口,分別位P0、PPP3口,每個口有8位(8根引腳),共32根。、。圖33 準備搶答圖 單片機與PC機通訊的實現(xiàn)[7]眾所周知,計算機無法分辨所謂的數(shù)字和文字,在其內(nèi)部的記錄中所有的數(shù)據(jù)都是0和1。每個接收器將TIA232F電平輸入轉(zhuǎn)換為5VTTL/CMOS電平。以下分別就兩部分的核心程序及其功能進行闡述。 TR1 = 1。S39。 Rec_flag = 0。039。以及在搶答過程中及時接收并顯示由單片機發(fā)送來的信息。其部分程序如下所示。接著,按下“準備”按鍵,電路中的綠色發(fā)光二極管就會點亮,表示準備搶答,當按下“開始”按鍵,選手就可以開始搶答了。選這個設計題目的時候,楊老師就勸告過我,這個題目涉及到VB,得做一定的考慮。這次畢業(yè)設計,我調(diào)試的時間已經(jīng)算很長了,看著別人一一做好了,心里會很著急,但是光著急是沒用的,最后還得有耐心去調(diào)試。sbit Bit_4 = P2^7。void KeyFunction(void)。 } display(Varone,Vartwo)。 Bit_2 =1。 Bit_4 =1。}//串口傳送函數(shù)void UART_Send_Byte(Uint8 Data){ SBUF = Data。 } while(!key_1)。 if(Rec_flag == 0) { if(SBUF == 39。 if(tally == 2) { tally = 0。 case 2: Vartwo = (Loot_Tab[0] 39。 ElseIf COM_Rec = 2 Then = W amp。 yizu Else = yizu End If ElseIf COM_Rec = 2 Then erzu += tally_add If erzu = 9 Then = 0 amp。) + (Loot_Tab[1] 39。 switch(Loot_flag) { case 1: Varone = (Loot_Tab[0] 39。) { key_flag = 0。 Loot_flag = 2。 TI = 0。 TMOD = 0x20。 Bit_3 =0。 Bit_1 =0。void display(Uint8 one, Uint8 two)。sbit key_2 = P3^3?!钡侵皇且婚T罷了,看著有些做模擬電子設計的同學,他們的電路不算復雜,但是很難調(diào)試,有時我自己的做累了,會去看看他們的進展,但是卻幫不了什么忙。當時心里就是這樣想的,也就這樣下定決心選擇了這個設計題目。如果在搶答時間內(nèi)有人搶答,VB界面會顯示出哪一組搶答成功,且VB界面上與該組對應的紅色燈變成綠色,主持人根據(jù)選手回答的是否正確來給選手加分或者減分,最后按“確定”按鍵,電路中與該組所對應的數(shù)碼管就會顯示出該組選手的得分。5 系統(tǒng)調(diào)試及結(jié)果分析 軟件仿真 。圖42 VB設計界面 初始設置程序在VB代碼的初始程序中,最重要的是將串行控件MSComm的端口COM1口打開,然后對其他所用到的一些控件進行程序初始化。039。039。 } if(SBUF == 39。 EA = 1。其工作流程圖如圖41所示。30V的輸入。而任何電子零件或芯片的高低電位都有一定的規(guī)定,RS232也有相關(guān)電氣標準電位定義。另外。P1口(Pin1~Pin8):8位準雙向I/O口線,~。(2)外接晶振引腳(2根)XTAL1(Pin18):片內(nèi)振蕩電路的輸入端。將PC機作為上位機,STC89C52作為下位機,下位機主要完成對按鍵的掃描、對上位機進行數(shù)據(jù)接收和發(fā)送以及分數(shù)的顯示功能。試看下例:設波特率選為2400bps,fosc=6MHZ時,SMOD可以任選為0或1,但是由于對SMOD不同的選擇,產(chǎn)生了不同的波特率誤差:2400=2SMOD6106/(3212(256X))當SMOD=0時,X≈249=F9H;當SMOD=1時,X=243=F3H。,即系統(tǒng)頻率為fosc=,串行方式為方式一,且規(guī)定串行通信雙方的波特率要求為9600bps,SMOD選為1,TH1,TL1的初值計算如下:波特率=2106/(3212(256X))=9600解上式可得出X=250=0FAH將此值置入TH1和TL1時,波特率發(fā)生器產(chǎn)生的實際傳輸率為:波特率=2106/(3212(256250))=9600波特率誤差=(96009600)/9600=%通過推算,得到如此精確的波特率,所以絕對能保證PC機與單片機進行正常的接收與發(fā)送。RXD此腳負責將傳送過來的遠程信息進行接收。 RS232的簡介[5]現(xiàn)在,串行通信端口(RS232)是計算機上的標準配置,通常有COM1和COM2兩個端口。(4)設置傳輸速度等參數(shù)。其設置有這樣四種:0:(默認值)沒有握手協(xié)議;1:(XON/XOFF)握手協(xié)議;2:RTS/CTS握手協(xié)議;3:RTS和XON/XOFF握手協(xié)議。CommEvent:串口事件,類型:short。類型long:0Text ,1Bin。 MSComm的屬性說明使用MSCOMM控件主要是通過事件來處理串行口的交互,即當數(shù)據(jù)到達時,控件的OnComm的事件就會來捕獲或處理這些通信事件。(4)單擊[應用]或者[確定]按牛,就可在工具箱中看到“電話盒(MSComm控件)”的圖標。(8)完成工程的設計工作后,再利用VB提供的“打包和展開向?qū)А敝谱鞴こ痰陌惭b程序。 (3)按照步驟(2)的方法將所需要的控件以拖拉的方式放到窗體上,考慮窗體上各個控件之間的排列關(guān)系,排出理想的樣子。VB的控件很多,這次在界面設計中使用了其中的常用控件,比如組合框、文本框、標簽框,圖形、定時器等控件,還用到菜單編輯器。窗口環(huán)境與以前的DOS環(huán)境有很大差異,在概念上也大相徑庭。隨著計算機技術(shù)的飛速發(fā)展,Visual Basic(簡稱VB)就由此而生,它是Microsoft公司為開發(fā)Windows應用程序而提供的強有力的開發(fā)環(huán)境和工具,具有很好的圖形用戶界面的程序設計語言。圖11 PC機上界面顯示圖2 智能搶答器的相關(guān)技術(shù)介紹和分析 中文Visual Basic簡介[2]Visual ,它繼承了Basic語言簡單易學的優(yōu)點,同時增加了許多新的功能。單片機的潛力越來越被人們所重視。(2)因為必須使用較多的分立元件,從而造成電路的成本偏高。從原理上講,它就是一種典型的數(shù)字電路,分為主體電路與擴展電路兩部分。關(guān)鍵詞: STC89C52;Visual Basic;MSComm控件;實時通訊Intelligence contest device based on serial municationStudent: WANG Danping Director: YANG Jinhua (Application of electronic technology education professionals,Zhejiang Normal University No:07440114)Abstract: This text is main introduced the technology of the Microcontroller and utilize VB language to realize the intelligence vies for answering system, and the scheme to realize the intelligence vies for answering system. The system divide into two major parts, namely Microcontroller part and PC part. The PC finishes the figure user39。系統(tǒng)分為兩大部分,即單片機部分和PC機兩大部分。 controlling part MSComm。經(jīng)過布線、焊接、調(diào)試等工作后數(shù)字搶答器系統(tǒng)成形。 智能搶答器的基本功能及特點何謂“智能”,就是利用微處理器能夠高速而精確地進行各種數(shù)據(jù)的計算處理,幾乎能模仿人腦部分的功能。每路搶答選手設有一個搶答按鍵和一個得分顯示器,方便選手們進行搶答,了解自己的得分;而在主持人PC機界面上,設有默認,重搶,下題,串口設置,題目設置,準備鍵,開始鍵,確定鍵,加分鍵,減分鍵和還有一個選手積分卡,方便主持人在整個搶答過程中進行控制,使整個搶答過程在公正、公平的環(huán)境下進行。在圖形用戶界面下,不需要編寫大量代碼去描述界面元素的外觀和位置,而只要把預先建立的對象加到屏幕上的適當位置,再進行簡單的設置即可。1991年,Microsoft公司推出Visual ,它雖然存在一些缺陷,但仍受到了廣大程序員的青睞。用戶只需編寫響應用戶動作的程序,如移動鼠標、單擊鼠標等,而不必考慮每個步驟執(zhí)行的精確次序,編寫代碼相對較少。面對新建的工程,腦中想著對象、屬性、時間、方法四個步驟,開發(fā)程序的步驟如下:(1)拖動窗體到適當?shù)拇笮 T诔绦虼a的編寫過程中,均以對象和外界的交互為第一個考慮的重點,再以此開發(fā)下去。隨著現(xiàn)在串行通信的使用越來越普遍,Microsoft公司便在VB中設計了一個MSComm通信控件,以便我們完成串行通信的設計[3]。(1)事件驅(qū)動(Eventdriven)是處理連接端口通信的一種有效方法。下面介紹一下此控件的主要屬性[4]:CommPort:設置串口號,類型short:11 22,其實VB的MSComm控件有16個串行端口,若使用的通信端口號碼超過16時,此控件會有錯誤信息。InBufferSize:接收緩沖區(qū)的大小,類型:short。類型: short。也就是MSComm控件。如引發(fā)接收或發(fā)送的字節(jié)數(shù)(6)打開通信端口。各串行端口腳位定義如表21所示。在傳送的過程中,信息是以數(shù)據(jù)形式傳送的。上例中,當雙機約定了傳輸速率9600bps時,若晶振頻率為12MHZ或6MHZ,PC機的波特率為9600bps,而單片機實際的波特率大于(或小于)9600bps,%。SMOD可以任選為0或1,看看SMOD不同的選擇,是否產(chǎn)生了不同的波特率誤差:9600=2SMOD106/(3212(256X))當SMOD=0時,X=253=0FDH;當SMOD=1時