冀春濤,蔣 莉
JI Chun-tao, JIANG Li
(南昌航空大學(xué) 航空制造工程學(xué)院,南昌 330063)
為了保證氣門桿焊接質(zhì)量,設(shè)計(jì)了電阻對焊控制系統(tǒng),其主控制器件選擇單片機(jī)AT89C51,外部擴(kuò)展鍵盤及顯示電路。早期的鍵盤及顯示驅(qū)動芯片是通過并行口與單片機(jī)連接的,電路比較復(fù)雜、功耗大、占用單片機(jī)端口多。如Intel8279雖然應(yīng)用比較成熟,但由于上述缺點(diǎn),現(xiàn)已逐步退出市場。本文選用一種帶I2C總線的接口芯片ZLG7290對鍵盤及顯示電路控制管理[1],由于該芯片與主控制器件AT89C51僅通過2根線相連,簡化了系統(tǒng)線路,而且可以管理多達(dá)64只獨(dú)立的數(shù)碼管和按鍵。在簡化電路結(jié)構(gòu)的同時(shí),改善系統(tǒng)電磁兼容性和可維護(hù)性。
控制系統(tǒng)采用AT89C51為控制中心,除了系統(tǒng)所必須的復(fù)位電路、時(shí)鐘電路外,還包括了外部擴(kuò)展的信號處理電路、數(shù)據(jù)存儲電路、鍵盤及顯示電路。充分利用ZLG7290芯片為帶I2C總線接口的器件,通過單片機(jī)的2根通用I/O線,即P1.6、P1.7腳分別與ZLG7290的SCL、SDA腳相連,嚴(yán)格遵守總線規(guī)約來模擬I2C總線進(jìn)行數(shù)據(jù)傳輸。按照I2C總線協(xié)議的要求,需在信號線SDA和SCL上分別加上拉電阻R12、R13(其值取3.3K?)。另外,ZLG7290還需外接晶體振蕩電路來供系統(tǒng)正常穩(wěn)定的工作,晶振X2通常取值8MHz,調(diào)節(jié)電容C15和C16取值為22pF。然而復(fù)位信號是與主控制器件AT89C51共用一個(gè)電路,這里只需通過設(shè)置不同的電平信號就可加以控制。這樣,通過芯片ZLG7290來對9個(gè)薄膜按鍵和5只8段LED顯示器的驅(qū)動管理,從而實(shí)現(xiàn)了對焊接過程中所需的焊接參數(shù)進(jìn)行輸入、修改和顯示等功能。按鍵及數(shù)碼管顯示與ZLG7290連接的外圍電路原理圖如圖1所示。
圖1 鍵盤顯示電路
單片機(jī)AT89C51為系統(tǒng)的核心器件,但由于該器件自身并不帶有I2C總線接口,故需要采用單片機(jī)的2根通用I/O口線,嚴(yán)格地遵循總線規(guī)約來模擬I2C總線從而實(shí)現(xiàn)主器件(AT89C51)與從器件(ZLG7290)之間的傳輸通信。89C51模擬I2C總線主控制程序包括向從機(jī)發(fā)送數(shù)據(jù)函數(shù)和向從機(jī)讀取數(shù)據(jù)函數(shù)。此程序采用Keil C51語言進(jìn)行編寫[2],在μVision2集成開發(fā)環(huán)境下調(diào)試,在調(diào)試中可對一些簡單的庫函數(shù)進(jìn)行直接調(diào)用,如<reg51.h>。整個(gè)完整的程序包括了模擬I2C總線程序和ZLG7290的C51程序。對于I2C總線的C51程序是用在ZLG7290與AT89C51之間單個(gè)主器件下的傳輸通訊,硬件接口是SDA、SCL,使用89C51的I/O口作SDA、SCL。程序的接口界面需要包含以下幾個(gè)函數(shù):
1) bit ISendByte(uchar sla,uchar c) (無子地址寫)
2) bit IRcvByte(uchar sla,uchar *c) (無子地址讀)
3) bit ISendStr(uchar sla,uchar suba,uchar*s,uchar no)(有子地址讀N字節(jié)數(shù)據(jù))
4) bit IRcvStr(uchar sla,uchar suba,uchar*s,uchar no) (有子地址寫N字節(jié)數(shù)據(jù))
5) bit ISendStr(uchar sla,uchar *s,uchar no)(無子地址寫多字節(jié)數(shù)據(jù))
6) bit IRcvStr(uchar sla,uchar *s,uchar no)(無子地址讀單字節(jié)數(shù)據(jù))
以上每一個(gè)函數(shù)都有返回值,當(dāng)返回值為1時(shí),表示操作成功,否則,操作失敗(其中sla為器件從地址,suba為器件只地址,*s為數(shù)據(jù)接收/發(fā)送區(qū)指針,no為接收/發(fā)送字節(jié)數(shù))。一般在用戶程序的開頭加入#include<I2C_C51.C>即可模擬I2C總線C51程序,但是會受到一些條件的限制,為了避免這一現(xiàn)象的發(fā)生,對I2C_C51.C作了如下設(shè)置:sbit SDA=P1^7;/*模擬I2C數(shù)據(jù)傳送位*/ sbit SCL=P1^6;/*模擬I2C時(shí)鐘控制位*/。從而在編寫程序時(shí)可對I2C_C51.C軟件包程序進(jìn)行直接調(diào)用。
因單片機(jī)AT89C51不具備I2C總線接口,在系統(tǒng)中使用通用I/O口P1.6、P1.7來模擬I2C總線接口的時(shí)鐘線(SCL)和時(shí)鐘數(shù)據(jù)線(SDA)與帶I2C總線接口的鍵盤顯示芯片ZLG7290連接。其ZLG7290芯片與主芯片AT89C51的數(shù)據(jù)傳輸流程圖如圖2所示。
鍵盤及顯示程序用C語言實(shí)現(xiàn):
圖2 I2C總線接口數(shù)據(jù)傳輸流程圖
以上程序經(jīng)過調(diào)試,達(dá)到了設(shè)計(jì)效果。
在電阻對焊控制系統(tǒng)中采用I2C總線接口器件,使電路得以簡化,抗干擾性和可維護(hù)性得以提高。ZLG7290與傳統(tǒng)的鍵盤顯示驅(qū)動芯片相比體積小、成本低,布線簡單。盡管串行口器件較并行口速度慢,但涉及鍵盤顯示的操作發(fā)生在對速度要求不高的參數(shù)設(shè)置和顯示階段,因而不會影響控制系統(tǒng)的整體性能。系統(tǒng)在汽車氣門桿電阻對焊的顯示控制系統(tǒng)中取得了較好的應(yīng)用效果。程序采用高級C51語言編寫,縮短了軟件的開發(fā)周期,與匯編語言編寫的程序相比具有更好的可讀性和可移植性。
[1]廣州周立功單片機(jī)發(fā)展有限公司.ZLG7290 I2C接口鍵盤及LED驅(qū)動器.http//www.xafb.com/ZLG7290.pdf
[2]趙亮.單片機(jī)C語言編程與實(shí)現(xiàn)[M].北京:人民郵電出版社,2004.