999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Delphi環境下PC機與AVR單片機的串行通訊

2008-04-12 00:00:00馬洪秋
現代電子技術 2008年2期

摘 要:提出基于AVR單片機的下位機數據采集系統與Delphi環境下PC機的串行通訊的軟硬件實現方法。簡要介紹系統的工作流程和通訊控制原理,詳細介紹單片機與PC機通訊的硬件控制電路、通訊協議以及上下位機軟件實現過程,重點介紹Delphi語言中SPComm控件的使用方法。采用軟硬件相結合的方法進行仿真和調試,成功實現了功能要求。實際應用表明,這種通訊方案穩定可靠且控制簡單,具有很強的工程實用性和廣泛的應用前景。

關鍵詞:AVR單片機;RS 232;串行通訊;Delphi;SPComm

中圖分類號:TP336 文獻標識碼:B 文章編號:1004-373X(2008)02-123-03

Serial Communication between PC and AVR Single Chip under Environment of Delphi

LIAO Ping,CHEN Feng,MA Hongqiu

(College of Mechanical and Electronic Engineering,Central South University,Changsha,410083,China)

Abstract:This paper introduces the hardware and software actualization method of serial communication between computer under environment of Delphi and the data collecting system based on AVR single chip processor.Simply introduces the workflow of the system and the control principle of communication.Detailedly introduces the hardware circuit chart,communication agreement and actualization method of software of serial communication between computer and single chip.It specially places emphasis on the Operation of SPComm component in the programme language of Delphi,adoptes combining software and hardware to carry out emulation and debugging and succeeded to realize the required function.Physically application indicates that this proposal of communication got powerful stability and credibility and simple control,possess of strong engineering practicability and extensive market foreground.

Keywords:AVR single chip;RS 232;serial communication;Delphi;SPComm

1 引 言

隨著現代計算機技術和電子技術的發展,采用價格低廉、現場控制能力強的單片機作為下位機直接對控制對象進行驅動控制和實時數據的采集、處理,并通過串口與上位PC機進行串行通訊,在現代工業測控領域中得到了廣泛的應用。近些年,在監測與控制軟件系統的開發設計中,由于Delphi具有可視化開發環境,強大的數據庫開發功能,包含功能豐富的VCL庫,而且封裝了大量的Windows API函數等特點,使得Delphi在處理大量數據和實現PC機與單片機的串行通訊等方面應用十分方便。

本文即介紹了X射線板材測厚系統中上下位機的串行通訊。下位機采用AVR單片機ATmega16進行數據采集,前置電路對3路檢測信號進行光電轉換和放大處理后送入到ATmega16單片機自帶的10位A/D轉換器中進行A/D轉換,單片機再將三路轉換值以16進制通過串行通訊發往PC機;上位機中采用Delphi編寫軟件,利用Delphi的強大數據庫功能管理下位機發送的數據,供圖表顯示和產量、成品計算等;并在Delphi中利用SPComm控件實現與下位機的串行通訊。

2 硬件電路圖

串口是微機上的標準設備,在進行串行通訊時不需要給微機增加額外的硬件,電路簡單且技術可靠。在PC機與單片機構成的上下位機系統中,若采用軟件實現握手協議,則利用基本3線制(TXD,RXD,GND)的連接即可實現單片機與PC機的通訊,硬件電路如圖1所示。由于AVR單片機信號電平(TTL電平)與PC機配置的串行接口電平(RS 232電平)兩者電氣規范不一致,故采用MAX 232電平轉換芯片進行電平轉換。

3 下位機軟件設計

AVR單片機ATmega16的USART是一個高度靈活的串行通訊設備,能進行全雙工操作,可工作在異步方式或同步方式下,并具有多處理器通訊模式、倍速異步通訊模式等增強型通信功能。下位機的軟件設計主要是通訊協議的設定和相關程序的設計。

(1) 通訊協議

給上下位機設置適當的通訊協議是保證上下位機能正常通訊的基礎。系統采用全雙工異步通訊模式,通訊協議設置如下:

波特率 采用9 600幀格式,數據格式采用8位數據位,1位起始位,1位停止位。為使通訊更可靠,使能了奇偶校驗功能,采用奇校驗。但如果上位機檢測出所接收的數據錯誤,則丟棄不用,不再給下位機發信號請求重新發送數據,以保證單片機穩定的采樣頻率。

握手協議 采用軟件實現上下位機的握手,下位機要往上位機發送數據時,先發送一個握手信號:aa;上位機收到后回發一個信號:bb,表示已經做好數據接收準備。

(2) 程序設計

下位機通訊的程序采用C語言編寫,主要任務是完成USART的初始化、采集數據的A/D轉換、握手的實現和數據的發送。這里主要介紹串口的初始化程序以及通訊程序的流程圖。

串口的初始化程序:主要設置相關的通信協議。

void usart-init(void)[JY]//USART 初始化

{

UCSRB = 0x00;[JY]//初始化時先關閉USART

UCSRC = (1<

UBRRL = 0x33;

UBRRH = 0x00;[JY]//波特率設為9600

UCSRA = 0x00;[JY]//單機通訊

UCSRB = <

}

通訊流程簡介:在完成相關的初始化工作后,啟動A/D轉換,當3路信號都轉換完成后單片機往上位機發握手信號,等待上位機的應答。串口發送采用查詢方式,即CPU不停地查詢數據寄存器是否為空,若為空則裝載新的數據開始發送;而接收則采用中斷方式,在數據接收結束后進入中斷服務程序,為使程序盡量少地在中斷中停留,中斷服務程序中僅完成對握手信號的判別和發送標志的置位。當握手成功后,單片機把轉換的數據往上位機發送,數據全部發送完成后即進入下一輪的采樣、轉換和發送。串行通訊流程如圖2所示:

圖2 串行通訊流程圖

4 上位機軟件設計

Delphi是一種采用事件驅動方式、面向對象的可視化高級編程語言,本系統的通訊軟件設計采用Delphi 7.0。在Delphi可以利用的眾多串行通信控件中,SPComm控件是最簡單,功能比較強大的一種。該控件具有豐富的與串口通信密切相關的屬性及事件,提供對串口的各種操作。

4.1 SPComm的主要屬性、方法和事件

(1) 屬性

Commonage:串口名,填寫COM1,COM2等串口的名字,字符型變量;

Baud Rate:設定波特率。如9 600,19 200等,在串口打開后也可更改波特率;

ParityCheck:是否使能奇偶校驗;

ByteSize:字節長度。根據實際情況可設定為5,6,7或8位;

Parity:奇偶校驗位;

StopBits:停止位的位數;

SendDataEmpty:這是一個布爾屬性,為True時表示發送緩存為空,或者發送隊列里沒有信息;為False時表示發送緩存不為空,或者發送隊列里有信息。

(2) 方法

Startcomm:用于打開串口,若打開失敗通常會報錯;

StopComm:用于關閉串口,沒有返回值。

(3) 函數

WriteCommData(pDataToWrite:PChar;dwSizeofDataToWrite:Word):boolean:用于發送一個字符串到寫線程,發送成功返回True,失敗則返回False,執行此函數將立即得到返回值,發送操作隨后執行。函數有2個參數,其中pDataToWrite是需要發送的字符串,dwSizeofDataToWrite是發送的字符串的長度。

(4) 事件

OnReceiveData:procedure(Sender:TObject;Buffer:Pointer;Bufferlength:Word)of object:當輸入緩存有數據時觸發該事件,在這里可以對從串口收到的數據進行處理。Buffer中是收到的數據,Bufferlength是收到的數據長度。

OnReceiveError:procedure(Sender:TObject;EventMask:DW()RD):當接收數據時出現錯誤將觸發該事件。

4.2 程序關鍵部分的實現

Delphi中用于串口通訊的程序較少,集中在簡單的串口打開和關閉、握手信號的測試和下位機采集數據的接收這幾大板塊,以下僅做簡單介紹。

(1) 打開串口并初始化

procedure TForm1.Opencomm(Sender:TObject);

begin

Comm1.CommName:=comm;[JY]//選擇串口

Comm1.BaudRage:=9600;[JY]//設定波特率為9 600

Comm1.Parity:=odd;[JY]//奇校驗

Comm1.StopBits:=-1;[JY]//1位停止位

Comm1.ByteSize:=-8;[JY]//8位數據位

Comm1.StartComm;[JY]//打開串口

end;

(2) 測試握手信號

procedure TForm1.ButtonlClick(Sender:TObject);

var

i:byte;

commflg:boolean;[JY]//變量定義

begin

sbuf[1]:=byte(aa);

commflg:=true;[JY]//若信號正確標志設定true

if not TForm1.comm1.writecommdata(@sbuf[1],1) then

begin

commflg:=1;[JY]//若接收的握手信號錯誤,標志設為1

end;

end;

(3) 數據接收事件

procedure TForm1.CommlReceiveData(Sender:TObject;Buffer:Pointer;BufferLength:Word);

var

i,j:integer;

commRevstr:shortstring;

RevP:RecData[1..1024] of byte;[JY]//變量定義

begin

SetLength(CommRevStr,BufferLength);[JY]//設置字符串長度與緩沖區大小相等;

move(buffer,pchar(@rbuf),bufferlength);[JY]//將緩沖區內容拷貝到字符串地址上;

for i:=1 to bufferlength do

begin

viewstring:=viewstring+inttohex(rbuf[i],2)+””;[JY]//接收到的數據在窗體中顯示

RecData[i]:=integer(S[i]);[JY]//存儲接收到的數據

……[JY]//限于篇幅和論述目的,接收到的數據的后續處理程序在此省略

end;

end;

(4) 關閉串口

procedure TForm1.Button3Click(Sender:TObject);

begin

Comm1.StopComm;[JY]//關閉Comml

end;

5 結 語

本文對實現上位機與單片機之間串行通信的方法進行了詳細的討論。通訊程序編程容易實現,在實際X射線實時板材測厚系統應用中,這種串口通信方法表現出了很強的工程實用性,通訊穩定可靠且成本低廉。同時由于上下位機軟件都是用高級語言編寫,稍加修改便可方便地移植到其他相類似的工程系統中,故在測控工程領域有著廣泛的應用前景。

參 考 文 獻

[1]黃軍,熊勇.Delphi串口通信編程[M].北京:人民郵電出版社,2002.

[2]范逸之,陳立元.Delphi與RS 232串行通信控制[M].北京:清華大學出版社,2004.

[3]孫濱,宋健.用Delphi實現上位機與PIC單片機的串行通訊[J].現代電子技術,2004,27(16):92-93.

[4]桑開勇,陳鐵軍.Delphi環境下利用SPComm控件進行單片機串口通信[J].現代電子技術,2006,24(15):26-28.

[5]徐新華,任曉,呂濤.基于Delphi的PC機與PIC單片機的串行通信[J].電子工程師,2006(3):58-59.

[6]倪倩,程勇,高繪玲.Delphi環境下油泵測控系統PC機與單片機通訊的實現[J].福建電腦,2005(12):120-121.

[7]丁易新.PC機與AVR單片機之間串行通信的實現[J].現代電子技術,2005,28(12):32-34.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 99r在线精品视频在线播放| 日本欧美视频在线观看| 欧美区一区二区三| 亚洲国产精品一区二区高清无码久久| 欧美成人精品在线| 香蕉在线视频网站| 狠狠操夜夜爽| 亚洲一区国色天香| 色综合五月婷婷| 精品久久777| 国产精品林美惠子在线观看| 又爽又黄又无遮挡网站| 欧美成人免费一区在线播放| 福利在线免费视频| 免费观看国产小粉嫩喷水| 国内丰满少妇猛烈精品播| 色婷婷丁香| 久久免费视频播放| 全午夜免费一级毛片| 真人免费一级毛片一区二区| 美女一区二区在线观看| 亚洲无码免费黄色网址| 国产成人凹凸视频在线| 91青草视频| 伊大人香蕉久久网欧美| 国产a网站| 久久精品国产在热久久2019| 国产菊爆视频在线观看| 亚洲首页国产精品丝袜| 久久精品国产精品国产一区| 国产成人免费观看在线视频| 日本在线国产| 亚洲综合色吧| 中文字幕人妻av一区二区| 91精品国产无线乱码在线| 国产视频久久久久| 香蕉网久久| 91最新精品视频发布页| 久久久91人妻无码精品蜜桃HD| 亚洲日韩精品无码专区| 日韩在线影院| 婷婷久久综合九色综合88| 国产成人一区免费观看| 亚洲精品大秀视频| 国产成人一区| 国产性爱网站| 国产一在线| 成人小视频在线观看免费| yjizz视频最新网站在线| 无码精品国产dvd在线观看9久| 欧美国产精品拍自| 一级毛片在线播放| 性色一区| 在线看片国产| 性色一区| 97色伦色在线综合视频| 国产福利2021最新在线观看| 日韩专区第一页| 九九久久99精品| 在线观看无码a∨| 欧美人人干| 国产中文一区a级毛片视频| 午夜不卡视频| 欧美人与牲动交a欧美精品| 被公侵犯人妻少妇一区二区三区| 国产91精选在线观看| 国产精品亚洲va在线观看| 免费看一级毛片波多结衣| 亚洲精品天堂自在久久77| 精品一區二區久久久久久久網站| 乱人伦视频中文字幕在线| 日韩精品欧美国产在线| 尤物精品视频一区二区三区| 国产乱子伦精品视频| 日本黄色a视频| 亚洲水蜜桃久久综合网站| 国产一区成人| 在线观看国产小视频| 国产免费精彩视频| 97国产在线观看| 欧洲欧美人成免费全部视频| 福利视频99|