基于RS-232C的串口通信設(shè)計(jì)畢業(yè)論文
《基于RS-232C的串口通信設(shè)計(jì)畢業(yè)論文》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于RS-232C的串口通信設(shè)計(jì)畢業(yè)論文(37頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、基于RS-232C的串口通信 摘 要 隨著計(jì)算機(jī)系統(tǒng)的應(yīng)用和微機(jī)網(wǎng)絡(luò)的發(fā)展,通信功能越來越顯的重要。通信既包括計(jì)算機(jī)與外部設(shè)備之間,也包括計(jì)算機(jī)和計(jì)算機(jī)之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網(wǎng)進(jìn)行信息傳送,因此,特別適合于遠(yuǎn)距離傳輸。串口接口RS-232C實(shí)現(xiàn)較為簡(jiǎn)單,可以實(shí)現(xiàn)全雙工的實(shí)時(shí)通信。因此,它作為一種標(biāo)準(zhǔn),目前已在微機(jī)通信接口中廣泛采用。PC機(jī)與單片機(jī)之間傳送數(shù)據(jù)可通過RS-232C接口實(shí)現(xiàn)。PC機(jī)可以作為上位機(jī),單片機(jī)作為從機(jī)進(jìn)行串口通信。PC機(jī)在Windows平臺(tái)上,利用Visual Basic編程語言中的
2、 mscomm控件可以開發(fā)串口通信程序界面,進(jìn)行串口通信的實(shí)時(shí)觀測(cè),并利用MAX232進(jìn)行電平轉(zhuǎn)換與單片機(jī)相連。通過單片機(jī)編寫通信協(xié)議就可以實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的數(shù)據(jù)傳送,從而實(shí)現(xiàn)基于RS-232C的串口通信控制。 關(guān)鍵詞: 單片機(jī) MAX232 RS-232C 串口通信 Visual Basic Serial Port Communication Based on RS-232C Abstract Alon
3、g with the application of computer system and the development of microcomputer network, Communication is more and more important .It can be exchange information between computer and the peripheral equipments , and between computer and the other computers .Because the serial communication is transmit
4、ted the information with bit by bit ,it only uses a few line and also can use the ready-made telephone line .So it suits to the long-distance transmission .the RS-232C realization is simple and the communication is duplex and real-time. Therefore it is looked as a kind of standard and used in microc
5、omputer communication widely .The realization of data communication between PC and single-chip can use RS-232C. During the communication PC is a upper machine and single-chip is host machine .In the windows platform ,using mscomm control in Visual Basic software to develop the surface of serial port
6、 communication and carry on real-time observation .Using MAX232 to realize the level conversion and connect with single-chip .Programming in the single-chip to realize the communication protocol and it can complete the data transmission. Key words: single-chip; MAX232;RS-232C; Serial port communi
7、cation; Visual Basic 目 錄 1引言 1 2 Visual Basic與單片機(jī)實(shí)現(xiàn)串口通信的總體設(shè)計(jì)方案 2 2.1 Visual Basic與單片機(jī)串口通信功能的實(shí)現(xiàn)方法 2 2.2 MAX232的結(jié)構(gòu)與功能 3 2.3 MAX232實(shí)現(xiàn)PC機(jī)與單片機(jī)的聯(lián)調(diào) 3 3 Visual Basic開發(fā)串口通信程序設(shè)計(jì) 5 3.1mscomm控件實(shí)現(xiàn)串口通信的方法 5 3.2 Visual Basic開發(fā)串口通信程序界面設(shè)計(jì) 8 4單片機(jī)開發(fā)串口通信程序設(shè)計(jì) 15 4.1 MCS-51單片機(jī)的串口結(jié)構(gòu)與功能 15 4.2波特率的產(chǎn)生與通信協(xié)議的
8、制定 18 4.3單片機(jī)程序設(shè)計(jì) 20 5結(jié)論 23 謝辭 24 參考文獻(xiàn) 25 附錄 26 外文資料 35 1引言 不同的獨(dú)立系統(tǒng)經(jīng)由線路相互交換數(shù)據(jù)便是通信。通信的形式可以區(qū)分為兩種,一種是并行傳輸方式的通信,另一種則為串行傳輸方式的通信。所謂并行通信是指一次傳輸8位(1個(gè)字節(jié));而串行通信一次只傳輸1位。計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與終端之間的數(shù)據(jù)傳送可以采用串行通信和并行通信二種方式。由于串行通信方式具有使用線路少、成本低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線路特性的不一致而被廣泛采用。 在串行通信時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通
9、信。 RS-232C接口(又稱 EIA RS-232-C)是目前最常用的一種串行通信接口。 RS-232C標(biāo)準(zhǔn)是美國EIA(電子工業(yè)聯(lián)合會(huì))與BELL等公司一起開發(fā)的1969年公布的通信協(xié)議。它適合于數(shù)據(jù)傳輸速率在0~20000b/s范圍內(nèi)的通信。這個(gè)標(biāo)準(zhǔn)對(duì)串行通信接口的有關(guān)問題,如信號(hào)線功能、電器特性都作了明確規(guī)定。大多數(shù)通信設(shè)備廠商都生產(chǎn)與RS-232C制式兼容的通信設(shè)備。RS-485也是一種常用的通信標(biāo)準(zhǔn),在要求通信距離為幾十米到上千米時(shí),廣泛采用RS-485 串行總線標(biāo)準(zhǔn)。RS-485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。但RS-232C由于實(shí)現(xiàn)較為簡(jiǎn)單,而且價(jià)格上也便
10、宜很多,可以實(shí)現(xiàn)全雙工的實(shí)時(shí)通信。因此,它作為一種標(biāo)準(zhǔn),目前已在微機(jī)通信接口中被廣泛采用。 PC機(jī)與單片機(jī)相結(jié)合在工業(yè)監(jiān)控、數(shù)據(jù)采集和實(shí)時(shí)控制系統(tǒng)中應(yīng)用廣泛。其中,單片機(jī)系統(tǒng)作為從機(jī)進(jìn)行數(shù)據(jù)采集和執(zhí)行控制,而PC機(jī)作為主機(jī)進(jìn)行發(fā)送命令、實(shí)時(shí)檢測(cè)、數(shù)據(jù)存儲(chǔ)、動(dòng)態(tài)顯示等工作。利用Visual Basic中的mscomm 控件可實(shí)現(xiàn)與單片機(jī)的串行通信。其中可利用VB開發(fā)串口通信程序,單片機(jī)編寫通信協(xié)議就可實(shí)現(xiàn)雙方數(shù)據(jù)的傳送與接收。 2 Visual Basic與單片機(jī)實(shí)現(xiàn)串口通信的總體設(shè)計(jì)方案 2.1 Visual Basic與單片機(jī)串口通
11、信功能的實(shí)現(xiàn)方法 串行通信的數(shù)據(jù)是逐位傳送的,發(fā)送方發(fā)送的每一位都具有因定的時(shí)間間隔,這就要求接收方也要按照發(fā)送方同樣的時(shí)間間隔來接收每一位。不僅如此,接收方還要確定一個(gè)信息組的開始和結(jié)束。為此,串行通信對(duì)傳送數(shù)據(jù)的格式作了嚴(yán)格的規(guī)定。不同的串行通信方式具有不同的數(shù)據(jù)格式。常用的兩種基本串行通信方式有同步通信和異步通信。 所謂同步通信是指在約定的通信速率下,發(fā)送端和接收端的時(shí)鐘信號(hào)頻率和相信始終保持一致(同步),這就保證了通信雙方在發(fā)送和接收數(shù)據(jù)時(shí)具有完全一致的定時(shí)關(guān)系。同步通信傳送信息的位數(shù)幾乎不受限制,通常一次通信傳的數(shù)據(jù)有幾十到幾千個(gè)字節(jié),通信效率較高。但它要求在通信中保持精確的同步
12、時(shí)鐘,所以其發(fā)送器和接收器比較復(fù)雜,成本也較高,一般用于傳送速率要求較高的場(chǎng)合。 異步通信是指通信中兩個(gè)字符之間的時(shí)間間隔是不固定的,而在一個(gè)字符內(nèi)各位的時(shí)間間隔是固定的。異步通信規(guī)定字符由起始位(start bit)、數(shù)據(jù)位(data bit)、奇偶校驗(yàn)位(parity)和停止位(stop bit)組成。起始位表示一個(gè)字符的開始,接收方可用起始位使自己的接收時(shí)鐘與數(shù)據(jù)同步。停止位則表示一個(gè)字符的結(jié)束。這種用起始位開始,停止位結(jié)束所構(gòu)成的一串信息稱為幀(frame)。比較適合于遠(yuǎn)距離串行通信。 常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工。單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送。因而這種
13、傳輸方式的用途有限,常用于串行口的打印,數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。半雙工方式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用是采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送,可以實(shí)時(shí)通信。 本設(shè)計(jì)采用的是PC機(jī)與單片機(jī)的全雙工異步通信方式。具體方案如下: (1)Visual Basic是一種可視化的編程語言,利用Visual Basic中的控件建立一個(gè)用戶端的界面,供用戶進(jìn)行選擇進(jìn)入主程序界面。 (2)在Visual Basic主界面程序中添加mscomm控件,開發(fā)串口通信程序。 (3)通過MCS-51系列單片機(jī)編寫串口通信協(xié)議。 (4)單片機(jī)進(jìn)行數(shù)碼
14、管接口擴(kuò)展,數(shù)碼管顯示PC機(jī)發(fā)送的數(shù)據(jù),并且將PC機(jī)發(fā)送的數(shù)據(jù)通過單片機(jī)回傳給PC機(jī)。即通過PC機(jī)的VB串口通信程序界面,從PC機(jī)鍵盤發(fā)送一個(gè)數(shù)傳給單片機(jī)則單片機(jī)控制的數(shù)碼管則可以顯示該數(shù),并且將發(fā)送的數(shù)據(jù)傳回PC機(jī),若接受到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)相同且與數(shù)碼管顯示的數(shù)據(jù)相同則表示發(fā)送成功。 (5)由于RS-232接口與單片機(jī)的電氣特性不同,可通過MAX232芯片進(jìn)行電平轉(zhuǎn)換,聯(lián)調(diào)單片機(jī)與PC機(jī)進(jìn)行串口通信。 2.2 MAX232的結(jié)構(gòu)與功能 MAX232 芯片是MAXIM 公司生產(chǎn)的,包含兩路接收器和驅(qū)動(dòng)器的IC 芯片。RS-232C采用的是EIA電平,其規(guī)定如下:在TXD、RXD上規(guī)定邏
15、輯1時(shí),電壓為-3V~ -15V,邏輯0時(shí),為+3V~ +15V。而單片機(jī)所用的是TTL+5V邏輯電平。MAX232 芯片內(nèi)部有一個(gè)電源電壓轉(zhuǎn)換器,可以把輸入的+ 5V 電壓變換為RS-232 輸出電平所需的-10~ +10V 電壓。所以采用此芯片接口串行通信系統(tǒng)只需單一的 + 5V 電源就可以了。對(duì)于沒有- 12~ + 12V 的場(chǎng)合,其適應(yīng)性更強(qiáng)。加之其價(jià)格適中,硬件接口簡(jiǎn)單,所以被廣泛采用。其芯片引腳圖如下: 圖1 MAX232引腳結(jié)構(gòu) 其中引腳11,12為TTL電平接口的收發(fā)引腳。13,14為RS-232C接口的收發(fā)引腳。 2.3
16、 MAX232實(shí)現(xiàn)PC機(jī)與單片機(jī)的聯(lián)調(diào) 目前較為常用的RS-232C 9針串口在通信距離較近時(shí),僅需3根線便可在兩個(gè)數(shù)字設(shè)備之間全雙工的傳送數(shù)據(jù),即需要TXD、RXD、??GND即可完成。RS-232針腳的功能如下: TXD(pin 3):串口數(shù)據(jù)輸出 RXD(pin 2):串口數(shù)據(jù)輸入 RTS(pin 7):發(fā)送數(shù)據(jù)請(qǐng)求 CTS(pin 8):清除發(fā)送 DSR(pin 6):數(shù)據(jù)發(fā)送就緒 DCD(pin 1):數(shù)據(jù)載波檢測(cè) DTR(pin 4):數(shù)據(jù)終端就緒 GND(pin 5):地線 RI (pin 9):載波偵測(cè) 連線方式如下圖所示: MCS-51
17、 P3.0 P3.1 圖2 PC機(jī)與單片機(jī)連線方法 3 Visual Basic開發(fā)串口通信程序設(shè)計(jì) 3.1mscomm控件實(shí)現(xiàn)串口通信的方法 一般說來,計(jì)算機(jī)都有一個(gè)或多個(gè)串行端口,它們依次為Com1,Com2……,這些串口還提供了外部設(shè)備與PC機(jī)進(jìn)行數(shù)據(jù)傳輸和通信的通道,這些串口在CPU和外設(shè)之間充當(dāng)解釋器的角色。當(dāng)字符數(shù)據(jù)從CPU發(fā)送給外設(shè)時(shí),這些字符數(shù)據(jù)將被轉(zhuǎn)換成串行比特流數(shù)據(jù);當(dāng)接收數(shù)據(jù)時(shí),比特流數(shù)據(jù)被轉(zhuǎn)換為字符數(shù)據(jù)傳遞給CPU。
18、而Visual Basic 是一種可視化的,面向?qū)ο蠛筒捎檬录?qū)動(dòng)方式的結(jié)構(gòu)化高級(jí)程序設(shè)計(jì)語言,可用于開發(fā)Windows 環(huán)境下的各類應(yīng)用程序。Visual Basic的版本分為普及版,企業(yè)版,專業(yè)版??梢赃M(jìn)行串口通信程序開發(fā)的串行通信組件包含在企業(yè)版及專業(yè)版中。 Visual Basic企業(yè)版及專業(yè)版中提供了串行端口控制mscomm來為應(yīng)用程序提供串行通信。該控件屏蔽了通信過程中的底層操作,可以設(shè)置、監(jiān)視mscomm控件的屬性和事件,結(jié)合Timer控件即可完成對(duì)串行口的初始化和數(shù)據(jù)的輸入輸出工作。由于Visual Basic的mscomm控件不會(huì)主動(dòng)出現(xiàn)在工具箱中,因此可在Visual B
19、asic工程界面中的工具箱中空白處單擊鼠標(biāo)右鍵選擇部件選項(xiàng),在彈出的對(duì)話框中選擇添加Microsoft Comm Control 6.0 控件。 mscomm控件的主要屬性如下: (1)Commport 設(shè)置并返回通訊端口號(hào)。端口號(hào)可以設(shè)置為1~16的任何數(shù),如mscomm.Commport=2表示設(shè)置當(dāng)前通訊端口為COM2。 (2)Setting 設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。格式為mscomm.Setting=String。String是一個(gè)包含四部分的字符串:第一部分為波特率;第二部分為奇偶校驗(yàn),N表示不校驗(yàn),M表示符號(hào)校驗(yàn),E表示偶校驗(yàn),O表示奇校驗(yàn),S表
20、示空格校驗(yàn);第三部分為數(shù)據(jù)位數(shù),其可選值為4,5,6,7,8;第四部分為停止位位數(shù),其可選值為1,1.5,2。例如Setting屬性的缺省值為“1200,N,8,1”。該屬性中各含義如下: 波特率:是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如200波特表示每秒鐘發(fā)送200個(gè)bit。當(dāng)提到時(shí)鐘周期時(shí),就是指波特率。例如如果協(xié)議需要9600波特率,那么時(shí)鐘是9600Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為9600Hz。 數(shù)據(jù)位:是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于要傳送的信息。比如,標(biāo)準(zhǔn)的ASC
21、II碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。 停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。 奇偶校驗(yàn)位:在串口
22、通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位位1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。 (3)Portopen 設(shè)置并返回通訊端口的狀態(tài),也可以打開和關(guān)閉端口。 (4)Input 從接收緩沖區(qū)返回和刪除字符。
23、該屬性在運(yùn)行時(shí)為只讀。 (5)InputLen 設(shè)置并返回每次Input屬性從接收緩沖區(qū)中讀取的字符數(shù)。InputLen屬性的缺省值為0。設(shè)置InputLen為0時(shí),Input將讀取接收緩沖區(qū)的全部字符。 (6)Output 向傳送緩沖區(qū)寫數(shù)據(jù)。要傳送的數(shù)據(jù)可是文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。 (7)CommEvent 返回最近的通訊事件或錯(cuò)誤。只要有通訊錯(cuò)誤或事件發(fā)生錯(cuò)誤時(shí)就會(huì)產(chǎn)生Oncomm事件。CommEvent屬性中存有該錯(cuò)誤或事件的數(shù)值代碼。 在VB開發(fā)串口程序時(shí)需多次用到Timer控件,其主要屬性如下: (1)Enabled 返回或設(shè)置一個(gè)值,該值用來確定一個(gè)窗體或控件否能夠?qū)τ脩?/p>
24、產(chǎn)生的事件作出反應(yīng)。通過把Enabled設(shè)置為“False”來使Timer控件成為無效,將取消由控件的Interval屬性所建立的倒計(jì)時(shí)數(shù)。 (2)Interval 返回或設(shè)置對(duì)Timer控件的計(jì)時(shí)事件調(diào)用間的毫秒數(shù)。Timer控件的Enabled屬性決定該控件是否對(duì)時(shí)間的推移作出響應(yīng)。將Enabled設(shè)置為“False”會(huì)關(guān)閉Timer控件,設(shè)置為“True”則打開Timer控件。當(dāng)Timer控件置為有效時(shí),倒計(jì)時(shí)總是從其Interval屬性設(shè)置值開始。創(chuàng)建Timer事件程序。可通知VB在每次Interval到時(shí)該做什么。Timer控件和Enabled屬性設(shè)置為“True”時(shí),VB將在In
25、terval時(shí)間到后自動(dòng)訪問Timer_Timer過程。 為實(shí)現(xiàn)通信程序,須在VB開發(fā)環(huán)境下設(shè)置一個(gè)用做控制通信的窗體。窗體上主要有通信控件mscomm和Timer控件。VB的特點(diǎn)是事件驅(qū)動(dòng),定時(shí)器控件會(huì)定時(shí)觸發(fā)相應(yīng)事件的驅(qū)動(dòng)程序。通信程序如下: (1)在添加的mscomm控件的屬性中選擇CommPort的端口號(hào)為1。(若Comm1口被占用可選擇Comm2口)此屬性也可以通過代碼設(shè)置其程序如下: mscomm1.Commport1=1 (2)設(shè)置握手協(xié)議即mscomm的HandShanking為0-ComNone (3)設(shè)置傳輸速度參數(shù)屬性Setting 為“1200,N,8,1
26、”其意義(即通信協(xié)議)表示為所使用的通信端口是以每秒1200Bit的速度傳輸,不作字符校驗(yàn),每次數(shù)據(jù)位是8個(gè)Bit,而停止位是1個(gè)Bit。 (4)設(shè)置兩個(gè)文本框TEXT1,TEXT2用于接收與發(fā)送數(shù)據(jù)。在添加一個(gè)Timer控件控制自動(dòng)偵測(cè)接受數(shù)據(jù)。Timer控件的Interval屬性值為20。 (5)打開通信端口: mscomm1.PortOpen = True (6)接收數(shù)據(jù)程序的實(shí)現(xiàn)方法: Private Sub Command4_Click() Dim Buf$ Buf = Trim(MSCOMM1.Input) If Len(Buf) = 0 Then Text1.T
27、ext = "" Else Text1.Text = Buf End If End Sub (7)啟動(dòng)自動(dòng)偵測(cè)讀取數(shù)據(jù)的程序: Private Sub Command5_Click() Timer1.Enabled = Not Timer1.Enabled End Sub Private Sub Timer1_Timer() If mscomm1.InBufferCount > 0 Then Text1.Text = Text1.Text + mscomm1.Input End If End Sub (8)發(fā)送程序的實(shí)現(xiàn)方法: Private Sub Comman
28、d1-Click() Comm1. Output = Text1. Text ;將發(fā)送區(qū)文本框中的內(nèi)容放入 End Sub (9)清空接收區(qū)顯示數(shù)據(jù) Private Sub Command6_Click() Text1.Text = "" End sub (10)結(jié)束 Private Sub Command 3-Click() Comm1. PortOpen = False End Sub 3.2 Visual Basic開發(fā)串口通信程序界面設(shè)計(jì) 1、封面1的設(shè)計(jì): (1)打開一個(gè)新的Visual Basic工程,在新建工程選項(xiàng)框中選擇標(biāo)準(zhǔn)EXE。在For
29、m 屬性中的Picture中選擇添加圖片。這樣就完成了顯示屏幕中出現(xiàn)圖片的效果。 初始化代碼為: Private Sub Form_Load() Set ball.Picture = LoadPicture("D:\04計(jì)通1\圖片\00.jpg") X = 10 Y = 10 ;定義添加圖片出現(xiàn)的起始位置 a = 30 b = 50 End Sub (2)動(dòng)態(tài)圖片的設(shè)計(jì): 在
30、Form界面中添加一個(gè)Timer控件,設(shè)其Interval屬性值為20,enable屬性為Ture 。這樣就實(shí)現(xiàn)了封面中類似屏保的圖片的移動(dòng)。在Timer事件中的圖片動(dòng)態(tài)顯示程序代碼: Private Sub Timer1_Timer() ball.Move X, Y X = X + a Y = Y + b If X >= Form2.Width - ball.Width Then a = -50 If Y >= Form2.Height - ball.Height Then b = -20 If X <= 0 Then a = 10 If Y <= 0 Then b = 20
31、 End Sub (3)添加兩個(gè)標(biāo)簽分別設(shè)Caption屬性為“您好!歡迎使用!”“下一步”來顯示文本。 圖3封面1 2、界面1的設(shè)計(jì): (1)動(dòng)態(tài)標(biāo)簽字幕顏色變換放大的實(shí)現(xiàn): 在Form界面中添加一個(gè)計(jì)時(shí)器Timer控件,設(shè)其Interval屬性值為100。再添加一個(gè)標(biāo)簽設(shè)Caption屬性為“Visual Basic與單片機(jī)的串口通信演示”。 程序代碼為: Dim X, Y, a, b As Single Private Sub Timer2_Timer() Static X, Y Y = Y +
32、1 X = X + 1 If X > 30 Then X = 1 If Y > 15 Then Y = 1 Label1.ForeColor = QBColor(Y) Label1.FontSize = X End Sub (2)同理在在Form界面中添加一個(gè)計(jì)時(shí)器Timer( Timer3)控件,設(shè)其Interval屬性值為100。添加一個(gè)標(biāo)簽Label2設(shè)Caption屬性為“歡迎點(diǎn)擊進(jìn)入” 此標(biāo)簽用于提示進(jìn)入主界面。 程序代碼為: Dim X, Y, a, b As Single Private Sub Timer3_Timer() Static X, Y Y
33、= Y + 1 X = X + 1 If X > 40 Then X = 1 If Y > 15 Then Y = 1 Label2.ForeColor = QBColor(Y) Label2.FontSize = X End Sub (3)移動(dòng)圖片實(shí)現(xiàn)的方案: 添加1個(gè)計(jì)時(shí)器Timer (Timer1)控件設(shè)其Interval屬性值為100。添加Image1,Image2 ,Image3, Image4, Image5, Image6控件,Stretch屬性均為Ture, Image1,Image2加載PC機(jī)圖片,Image4, Image5添加單片機(jī)圖片。Image1,Im
34、age2,Image4, Image5的visible為False。這樣可以實(shí)現(xiàn)圖片從屏幕左邊逐漸右移并循環(huán)移動(dòng)的效果。 程序代碼為: Private Sub Timer1_Timer() If Image3.Left > frmSplash.ScaleWidth Then Image3.Left = frmSplash.ScaleLeft - 200 End If Image3.Left = Image3.Left + 350 If Image3.Picture = Image1.Picture Then Image3.Picture = Image2.Picture El
35、se Image3.Picture = Image1.Picture End If If Image6.Left > frmSplash.ScaleWidth Then Image6.Left = frmSplash.ScaleLeft - 200 End If Image6.Left = Image6.Left + 350 If Image6.Picture = Image1.Picture Then Image6.Picture = Image5.Picture Else Image6.Picture = Image4.Picture End If End Sub
36、 圖4 界面1 3、選項(xiàng)對(duì)話框的設(shè)計(jì) 在工具箱中空白處單擊鼠標(biāo)右鍵選擇部件選項(xiàng),在彈出的對(duì)話框中選擇添加Sstab 控件。在該控件的屬性中分別設(shè)置標(biāo)題為“通用”、“緩存”、“硬件”。在每一個(gè)標(biāo)題下添加命令按鈕用以三個(gè)標(biāo)題的切換。選項(xiàng)對(duì)話框可以使得用戶隨時(shí)查看串口通信的參數(shù)信息。 程序如下: Private Sub command1_Click() Dialog.Visible = False End Sub Private Sub Command2_Click() Dialog.Visible = False
37、End Sub Private Sub Command3_Click() Dialog.Visible = False End Sub 圖5 選項(xiàng)對(duì)話框 4、主界面的設(shè)計(jì) (1)菜單的設(shè)計(jì): 新建一個(gè)form界面。通過工具欄的菜單編輯器選項(xiàng)編輯菜單,設(shè)計(jì)標(biāo)題為“啟動(dòng)程序”、“字體”、“顏色”、“選項(xiàng)”然后通過菜單的Click事件調(diào)用各個(gè)程序。在工具箱中空白處單擊鼠標(biāo)右鍵選擇部件選項(xiàng),在彈出的對(duì)話框中選擇添加2個(gè)CommonDiolag控件。單擊“字體”、“顏色”、“選項(xiàng)”后可以調(diào)出各個(gè)對(duì)話框。 程序代碼如下: 顏色對(duì)話框程序代碼: Pri
38、vate Sub color_Click() CommonDialog1.Flags = 1 CommonDialog1.color = BackColor CommonDialog1.Action = 3 Text2.ForeColor = CommonDialog1.color End Sub 字體對(duì)話框程序代碼: Private Sub Fontname_Click() CommonDialog2.Flags = 3 CommonDialog2.ShowFont Text2.fontname = CommonDialog2.fontname Text2.FontSi
39、ze = CommonDialog2.FontSize Text2.FontBold = CommonDialog2.FontBold Text2.FontItalic = CommonDialog2.FontItalic Text2.FontUnderline = CommonDialog2.FontUnderline Text2.FontStrikethru = CommonDialog2.FontStrikethru End Sub (2)動(dòng)態(tài)字幕的實(shí)現(xiàn)方案 在主界面中添加一個(gè)picture 控件和一個(gè)Label標(biāo)簽與一計(jì)時(shí)器控件。Label標(biāo)簽的Caption屬性為“ 基
40、于RS-232的單片機(jī)與PC機(jī)串口通信實(shí)驗(yàn)演示” Timer 控件設(shè)其Interval屬性值為100。將Label標(biāo)簽添加在picture 控件中,這樣實(shí)現(xiàn)了字幕自左端向右循環(huán)移動(dòng)的效果。 程序代碼為: Dim thetitle As String, counter1 As Integer Private Sub Timer2_Timer() Dim str As String str = Mid(thetitle, 1, counter1) If Len(str) = Len(thetitle) Then counter1 = 0 End If Label3.Caption
41、 = str counter1 = counter1 + 1 End Sub (3)圖片交替顯示的實(shí)現(xiàn)方案: 在主界面中添加Image1 ,Image2, Image3控件,Stretch屬性均為TureImage1,加載PC機(jī)圖片Image2添加單片機(jī)圖片。在加入一個(gè)Timer控件設(shè)其Interval屬性值為300。這樣實(shí)現(xiàn)單片機(jī)圖片與PC機(jī)圖片交替出現(xiàn)的效果。 程序代碼如下: Private Sub Timer4_Timer() If Image3.Left > Form1.ScaleWidth Then Image3.Left = Form1.ScaleLeft - 20
42、0 End If Image3.Left = Image3.Left + 300 If Image3.Picture = Image1.Picture Then Image3.Picture = Image2.Picture Else Image3.Picture = Image1.Picture End If End Sub 通過以上程序就可以完成Visual Basic實(shí)現(xiàn)串口通信的設(shè)計(jì)。 圖6 主界面 4單片機(jī)開發(fā)串口通信程序設(shè)計(jì) 4.1 MCS-51單片機(jī)的串口結(jié)構(gòu)與功能 MC
43、S-51單片機(jī)的主要結(jié)構(gòu)包含以下幾個(gè)部分: 1、中央處理器(CPU):MCS-51的CPU能處理8位二進(jìn)制數(shù)或代碼。 2、內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM):8051芯片共有256個(gè)RAM單元,其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說的內(nèi)部數(shù)據(jù)存儲(chǔ)器就是指前128單元,簡(jiǎn)稱內(nèi)部RAM。地址范圍為00H~FFH(256B)。是一個(gè)多用多功能數(shù)據(jù)存儲(chǔ)器,有數(shù)據(jù)存儲(chǔ)、通用工作寄存器、堆棧、位地址等空間。 3、內(nèi)部程序存儲(chǔ)器(ROM): 8051內(nèi)部有4KB的ROM,用于存放程序、原始數(shù)據(jù)或表格。 4、定時(shí)器/計(jì)數(shù)器:8051共有2個(gè)
44、16位的定時(shí)器/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。定時(shí)時(shí)靠?jī)?nèi)部分頻時(shí)鐘頻率計(jì)數(shù)實(shí)現(xiàn),做計(jì)數(shù)器時(shí),對(duì)P3.4(T0)或P3.5(T1)端口的低電平脈沖計(jì)數(shù)。 5、并行I/O口:MCS-51共有4個(gè)8位的I/O口(P0、P1、P2、P3)以實(shí)現(xiàn)數(shù)據(jù)的輸入輸出。 6、串行口:MCS-51有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其它設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。 7、中斷控制系統(tǒng):MCS-51單片機(jī)的中斷功能較強(qiáng),以滿足不同控制應(yīng)用的需
45、要。共有5個(gè)中斷源,即外中斷2個(gè),定時(shí)中斷2個(gè),串行中斷1個(gè),全部中斷分為高級(jí)和低級(jí)共兩二個(gè)優(yōu)先級(jí)別。 8、時(shí)鐘電路:MCS-51芯片的內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。系統(tǒng)允許的晶振頻率為12MHZ。 MCS-51單片機(jī)內(nèi)部有一個(gè)全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個(gè)在物理上獨(dú)立的接收發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,這個(gè)通信口既可以用于網(wǎng)絡(luò)通信,亦可實(shí)現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在串行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)
46、成標(biāo)準(zhǔn)的RS-232C接口. 該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。 ?MCS-51單片機(jī)串行口寄存器結(jié)構(gòu)圖7所示。SBUF為串行口的收發(fā)緩沖器,它是一個(gè)可尋址的專用寄存器,其中包含了接收器和發(fā)送器寄存器,可以實(shí)現(xiàn)全雙工通信。MCS-51的串行數(shù)據(jù)傳輸很簡(jiǎn)單,只要向發(fā)送緩沖器寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù)。從接收緩沖器讀出數(shù)據(jù)即可接收數(shù)據(jù)。其內(nèi)部結(jié)構(gòu)如下: 圖7 ?MCS-51單片機(jī)串行口寄存器結(jié)構(gòu) 串行口控制寄存器(SCON)結(jié)構(gòu)如下:
47、 表1串行口控制寄存器(SCON) D7 D6 D5 D4 D3 D2 D1 D0 SMO SM1 SM2 REN TB8 RB8 TI RI 各控制位功能介紹如下: ???? (1)SM0、SM1:串行口工作方式控制位。 ?????? ??SM0、SM1:工作方式 ???????????? 00?????? 方式0 ???????????? 01?????? 方式1 ???????????? 10?????? 方式2 ???????????? 11?????? 方式3 ??? ?(2)
48、SM2:多機(jī)通信控制位。 ???? 多機(jī)通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作于方式2或3,以及SM2=1時(shí),只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時(shí),才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請(qǐng),否則會(huì)將接受到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),就不管第位數(shù)據(jù)是0還是1,都難得數(shù)據(jù)送入SBUF,并發(fā)出中斷申請(qǐng)。 ???? 工作于方式0時(shí),SM2必須為0。 ???? (3)REN:允許接收位。 ???? REN用于控制數(shù)據(jù)接收的允許和禁止,REN=1時(shí),允許接收,REN=0時(shí),禁止接收。 ??? (4)TB8:發(fā)送接收數(shù)據(jù)
49、位8。 ??? ?在方式2和方式3中,TB8是要發(fā)送的——即第9位數(shù)據(jù)位。在多機(jī)通信中同樣亦要傳輸這一位,并且它代表傳輸?shù)牡刂愤€是數(shù)據(jù),TB8=0為數(shù)據(jù),TB8=1時(shí)為地址。 ??? ?(5)RB8:接收數(shù)據(jù)位8。 ???? 在方式2和方式3中,RB8存放接收到的第9位數(shù)據(jù),用以識(shí)別接收到的數(shù)據(jù)特征。 ?? ??(6)TI:發(fā)送中斷標(biāo)志位。 ??? ?可尋址標(biāo)志位。方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)束,TI可由軟件清“0”。 ??? ?(7)RI:接收中斷標(biāo)志位。 ??? ?可尋址標(biāo)志位。接
50、收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。 PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,單元地址是87H, SMOD=1則波特率加倍。其結(jié)構(gòu)格式如下: 表2電源管理寄存器結(jié)構(gòu) PCON D7 D6 D5 D4 D3 D2 D1 D0 位符號(hào) SMOD - - - GF1 GF0 PD IDL 中斷允許寄存器IE: ??? ?ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。
51、 表3中斷允許寄存器結(jié)構(gòu) 位符號(hào) EA - - ES ET1 EX1 ET0 EX0 位地址 AFH AEH ADH ACH ABH AAH A9H A8H 因?yàn)轭A(yù)先設(shè)置傳輸數(shù)據(jù)時(shí)是8個(gè)數(shù)據(jù)位,1個(gè)停止位。所以可設(shè)置串口工作方式1,方式1是一個(gè)8位的異步串行通信接口。SCON控制寄存器的初值為: 表4 SCON控制寄存器的初值 D7 D6 D5 D4 D3 D2 D1 D0 SMO SM1 SM
52、2 REN TB8 RB8 TI RI 0 1 0 1 0 0 1 0 串口的初始化程序?yàn)椋? mov scon, #52h ;串口工作在方式1 4.2波特率的產(chǎn)生與通信協(xié)議的制定 MCS-51的單片機(jī)內(nèi)有兩個(gè)16位可編程的定時(shí)/計(jì)數(shù)器,它們具有四種工作方式,其控制字和狀態(tài)字均在相應(yīng)的特殊功能寄存器中,通過對(duì)控制寄存器的編程,就可方便地選擇適當(dāng)?shù)墓ぷ鞣绞健? MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)中,定時(shí)器T0是由特性功能寄存器TL0(低8位)和TH0(高8位)構(gòu)成,定時(shí)器T1由特性功能寄存器TL1(低8位)和TH1(高8位)構(gòu)成。特殊功能寄存器TM
53、OD控制定時(shí)寄存器的工作方式,TCON則用于控制定時(shí)器T0和T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)管理定時(shí)器T0和T1的溢出標(biāo)志等。程序開始時(shí)需對(duì)TL0、TH0、TL1和TH1進(jìn)行初始化編程,以定義它們的工作方式和控制T0和T1的計(jì)數(shù)。 ? TMOD和TCON這兩個(gè)特殊功能寄存器的格式參見下表: TMOD用于控制T0、T1的工作方式: 表5 TMOD寄存器結(jié)構(gòu) D7 D6 D5 D4 D3 D2 D1 D0 GATA C/T M1 M0 GATA C/T M1 M0 ←T1方式字段→ ←T0方式字段→ 其中
54、低四位用于T0,高四位用于T1。M1、M0是工作方式的控制位,當(dāng)M1M0=10時(shí)為工作方式2(為常數(shù)自動(dòng)重裝入的8為定時(shí)/計(jì)數(shù)器)GATE=0時(shí),只要用軟件TR0或TR1置1就可以啟動(dòng)定時(shí)器,而GATE=1時(shí)只有INT0或INT1引腳為高電平且由軟件使TR0或TR1置1時(shí)才能啟動(dòng)定時(shí)器。C/T=0時(shí)為定時(shí)方式,C/T=1時(shí)為計(jì)數(shù)方式。 定時(shí)器控制積存器TCON,字節(jié)地址為88H,位地址為88H—8FH,其格式如表6: 表6?TCON結(jié)構(gòu) D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1
55、 IT1 IE0 IT0 TR1由軟件置位和清零來啟動(dòng)或關(guān)閉T1。當(dāng)GATE=0時(shí),TR1=1時(shí),允許T0計(jì)數(shù),當(dāng)GATE=1時(shí),僅當(dāng)TR1=1時(shí)且INT0為高電平時(shí)才可啟動(dòng)TR0計(jì)數(shù)。 當(dāng)M1M0=10時(shí),定時(shí)/計(jì)數(shù)器處于工作方式2.此時(shí)定時(shí)器的等效電路如圖8所示。 圖8 定時(shí)/計(jì)數(shù)器工作方式2的等效電路 工作方式0和工作方式1的最大特點(diǎn)就是計(jì)數(shù)溢出后,計(jì)數(shù)器為全0,因而循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在反復(fù)設(shè)置初值的問題,這給程序設(shè)計(jì)帶來許多不便,同時(shí)也會(huì)影響計(jì)時(shí)精度,工作方式2就針對(duì)這個(gè)問題而設(shè)置,它具有自動(dòng)重裝載功能,即自動(dòng)加載計(jì)數(shù)初值,所以也有的文獻(xiàn)稱之為自動(dòng)重加載
56、工作方式。在這種工作方式中,16位計(jì)數(shù)器分為兩部分,即以TL0為計(jì)數(shù)器,以TH0作為預(yù)置寄存器,初始化時(shí)把計(jì)數(shù)初值分別加載至TL0和TH0中,當(dāng)計(jì)數(shù)溢出時(shí),不再象方式0和方式1那樣需要“人工干預(yù)”,由軟件重新賦值,而是由預(yù)置寄存器TH以硬件方法自動(dòng)給計(jì)數(shù)器TL0重新加載。 ??? ?程序初始化時(shí),給TL0和TH0同時(shí)賦以初值,當(dāng)TL0計(jì)數(shù)溢出時(shí),置位TF0的同時(shí)把預(yù)置寄存器TH0中的初值加載給TL0,TL0重新計(jì)數(shù)。如此反復(fù),這樣省去了程序不斷需給計(jì)數(shù)器賦值的麻煩,而且計(jì)數(shù)準(zhǔn)確度也提高了。但這種方式也有其不利的一面,就是這樣一來的計(jì)數(shù)結(jié)構(gòu)只有8位,計(jì)數(shù)值有限,最大只能到255。所以這種工作
57、方式很適合于那些重復(fù)計(jì)數(shù)的應(yīng)用場(chǎng)合。例如我們可以通過這樣的計(jì)數(shù)方式產(chǎn)生中斷,從而產(chǎn)生一個(gè)固定頻率的脈沖。也可以當(dāng)作串行數(shù)據(jù)通信的波特率發(fā)送器使用。 當(dāng)M1M0=10時(shí),定時(shí)/計(jì)數(shù)器處于工作方式2在種情況下,定時(shí)/計(jì)數(shù)器1通常作為串行口的波特率發(fā)生器使用,以確定串行通信的速率。當(dāng)作波特率發(fā)生器使用時(shí),只需設(shè)置好工作方式,即可自動(dòng)運(yùn)行。本設(shè)計(jì)使用定時(shí)/計(jì)數(shù)器1。預(yù)設(shè)數(shù)據(jù)傳送速率為1200b/s。 SMOD=0 計(jì)算定時(shí)器1工作方式2初值的公式為X=256-fos*(SMOD+1)/384*波特率。Foc=6.144MHZ,定時(shí)器處值為X=0F3H。 定時(shí)器產(chǎn)生波特率的其程序代碼為: mov
58、 tmod, #20h ;定時(shí)器1設(shè)為工作方式2 mov th1,#0f3h ;定時(shí)器處值 mov tl1,#0f3h ;8位重裝值 SETB TR1 ;啟動(dòng)定時(shí)器1 該程序設(shè)置了數(shù)據(jù)傳送速率為1200b/s。 4.3單片機(jī)程序設(shè)計(jì) 在設(shè)置好串口工作方式與波特率的基礎(chǔ)上,把PC機(jī)發(fā)送的數(shù)據(jù)傳給數(shù)碼管可以顯示發(fā)送的數(shù)據(jù),并且回傳給PC機(jī)。通過觀察數(shù)碼管的顯示與回傳的數(shù)據(jù)進(jìn)行比較是否一致就可以驗(yàn)證串口通信的正確性。 通過P3.3、P3.4口的位選控制2位數(shù)碼管顯示數(shù)據(jù)。 主要程序流程圖: 開始
59、 串口初始化 啟動(dòng)定時(shí)器 N Ri是否為1 Y 清除RI,接收數(shù)據(jù) 發(fā)送數(shù)據(jù)
60、 將接收數(shù)據(jù)進(jìn)行顯示 圖9 主程序流程圖 程序源代碼如下: st_addr equ 4000h port equ 1b30h org st_addr ljmp main main: clr p3.4 ;清p3.4 clr p3.3 ;清p3.3 mov tmod, #20h ;定時(shí)器1工作方式2 mov scon, #52h ;串口工作方式1 mov th1,#0f3h ;定時(shí)器處值波特率1200b
61、/s mov tl1,#0f3h setb tr1 ;啟動(dòng)定時(shí)器 jnb ri,load1 ;判斷RI是否為1 load: clr ri ;清RI clr p3.3 ;清p3.3 clr p3.4 ;清p3.4 mov a,sbuf ;傳輸數(shù)據(jù) mov r0,a ;數(shù)據(jù)顯示 mov sbuf,a ;回傳數(shù)據(jù) jnb ti,$ ; 判斷T
62、I是否為1 clr ti load1:mov a,r0 swap a ;高字節(jié)與低字節(jié)交換內(nèi)容 anl a,#0fh ;屏蔽高四位 mov dptr,#table2 movc a,@a+dptr ;查表 mov p1,a ;送數(shù)碼管顯示 setb p3.4 ;P3.4置1 lcall delay ;調(diào)用延時(shí)子程序 clr p3.4 ;清P3.4
63、 mov a,r0 anl a,#0fh ;取高四位 mov dptr,#table2 movc a,@a+dptr ;查表 mov p1,a ;送于數(shù)碼管顯示 setb p3.3 lcall delay ;調(diào)用延時(shí)子程序 clr p3.3 mov a,r0 jnb ri,load1 ; jmp load delay:mov r7,#0ffh ;延
64、時(shí)程序 ys1: mov r6,#0ffh djnz r6,$ djnz r7,ys1 ret table2:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h end 5結(jié)論 通過Visual Basic中的mscomm控件開發(fā)的串口通信程序,并通過單片機(jī)編寫的通信協(xié)議在進(jìn)行電平轉(zhuǎn)換的基礎(chǔ)上就可以實(shí)現(xiàn)串口通信。PC機(jī)作為上位機(jī)發(fā)送一個(gè)數(shù)據(jù)后,經(jīng)
65、過串口傳送給單片機(jī),單片機(jī)將數(shù)據(jù)再通過P1口傳給數(shù)碼管,通過位選使得兩位數(shù)碼管顯示數(shù)據(jù)。單片機(jī)再將數(shù)據(jù)回傳給PC機(jī),回傳的數(shù)據(jù)與發(fā)送的數(shù)據(jù)和數(shù)碼管顯示一致,說明基于RS-232C的串口通信成功。 謝辭 畢業(yè)設(shè)計(jì)是一項(xiàng)實(shí)踐性很強(qiáng)的工作,對(duì)動(dòng)手能力和自學(xué)能力要求很高,由于本人缺乏這方面的鍛煉,在設(shè)計(jì)過程中遇到了很多困難,而指導(dǎo)教師師給予了我很大的幫助,老師及時(shí)地、耐心地解答了我們?cè)谠O(shè)計(jì)過程中遇到的各種問題,使我受益匪淺,并且在學(xué)習(xí)能力方面得到了很大的提高。這也是我人生中一次重要的鍛煉老師親切隨和,治學(xué)嚴(yán)
66、謹(jǐn),在我的心里留下深刻的影響。在整個(gè)畢業(yè)設(shè)計(jì)中當(dāng)我們遇到問題時(shí),呂老師一直是很熱情的在給予指導(dǎo)。在此我要向呂老師表示我衷心的感謝與敬意。 參考文獻(xiàn) [1]李 華. MCS51系列單片機(jī)實(shí)用接口技術(shù)[M ]. 北京北京航空航天大學(xué)出版社, 1993 [2]朱明宇,武 峰. 8031單片機(jī)主從式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì) [3]求實(shí)科技,仵浩, 齊燕杰等. Visual Basic 串口通信工程開發(fā)實(shí)例導(dǎo)航[M]. 北京: 人民郵電出版社, 2002. [4]范逸之, 陳立元, 孫德營等. 利用Visual Basic 實(shí)現(xiàn)串并行通信技術(shù)[M]. 北京: 清華大學(xué)出版社, 2001. [5]李肇慶,韓濤. 串行端口技術(shù)[M] . 北京:國防工業(yè)出版社,2004. [6][美]Evangelos Petroutsos 著. 邱仲潘譯. Visual Basic 6 從入門到精通[M]. 北京: 電子工業(yè)出版社, 1999. [7]范逸之. Visual Basic 與RS232 串行
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動(dòng)會(huì)安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個(gè)人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動(dòng)總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動(dòng)發(fā)改工作高質(zhì)量發(fā)展”專題宣講報(bào)告會(huì)上的講話
- 2024年XX村合作社年報(bào)總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊(cè)教研組工作總結(jié)
- 2024年小學(xué)高級(jí)教師年終工作總結(jié)匯報(bào)
- 2024-2025年秋季第一學(xué)期初中物理上冊(cè)教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報(bào)告
- 2025年學(xué)校元旦迎新盛典活動(dòng)策劃方案
- 2024年學(xué)校周邊安全隱患自查報(bào)告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報(bào)告