PIC單片機與PC機的串行數據交換
PC機的串行接口是符合EIA RS-232C規范的外部總線標準接口。RS-232C采用的是負邏輯,即邏輯1:-5~-15 V;邏輯0:+5~+15 V。而CMOS電平為:邏輯“1”:4.99 V,邏輯“0”:0.01 V;TTL電平的邏輯“1”和“0”則分別為2.4 V和0.4 V。因此在用RS-232C總線進行串行通信時需外接電路實現電平轉換。在發送端用驅動器將TTL或CMOS電平轉換為RS-232C電平,在接收端用接收器將RS-232C電平再轉換為TTL或CMOS電平。這里選用了MAXIM公司的MAX232來作電平轉換。MAX232屬于MAXIM公司的通用串行接收/發送驅動器芯片。其外圍電路簡單,只需外接4個0.1 μF的電容即可,其系統硬件電路如圖1所示。圖中MAX232將PIC16F877的TX輸出的TTL電平信號轉換為RS-232C電平,輸入到PC機,并將PC機輸出的RS-232C電平轉換為TTL電平,輸出到PIC16F877單片機的RX引腳。
本文中PC 機可與PIC16F877編程一起完成以下功能:PC機和單片機均可發送和接收數據,由PC機決定是發送還是接收;程序設定當PC機鍵盤輸入發送指令時,PC機分別顯示PC機發送的數據和單片機會送的數據;當PC機鍵盤輸入接收指令時,PC機將接收單片機發送過來的數據,并將其數據顯示。
在編程中,必須要注意設置PC 機與PIC16F877單片機在進行數據交換時的數據傳輸格式相同。通常采用的通訊協議如下:波特率為9 600 bps,8位數據位,1位停止位,無奇偶效驗位。PC機發送命令給單片機,鍵盤輸入發送命令時,控制單片機接收數據,當PC機鍵盤輸入接收命令時,控制單片機發送數據給PC機。PC機與PIC16F877單片機進行數據交換的程序編制流程如圖2所示。
評論