<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于MDB/ICP協(xié)議的自動(dòng)售賣(mài)系統的主控制器

基于MDB/ICP協(xié)議的自動(dòng)售賣(mài)系統的主控制器

作者: 時(shí)間:2011-05-23 來(lái)源:網(wǎng)絡(luò ) 收藏

2 硬件結構
總線(xiàn)基礎上,筆者構建了一個(gè)實(shí)際的,原理圖如圖6所示。VMC通過(guò)MDB總線(xiàn)與投幣機、讀鈔機和讀卡器交互,控制外設的運轉,并從外設獲得用戶(hù)的支持情況。同時(shí),VMC也負責處理與用戶(hù)之間的交互,驅動(dòng)液晶顯示,處理鍵盤(pán)輸入,驅動(dòng)符合用戶(hù)需要的電機運轉出貨。在本項目中,VMC還需通過(guò)MODEM撥號連接公司總線(xiàn)的服務(wù)器,將銷(xiāo)售數據傳送回公司。


如圖6所示,所有MDB外設均掛在同一總線(xiàn)上,由總線(xiàn)提供24V和5V的電源,數據線(xiàn)與單片機的串口相連。
本項目中選用的單片機為DALLAS DS5002FP。該單片機代碼級兼容MCS-51系列單片機,在使用外存的情況下仍然可以使用4個(gè)PO作為數據I/O,帶外設的能力較強。但它只有一個(gè)串口,控制MDB總線(xiàn)和控制MODEM都需要使用串口,因此必須將串口進(jìn)行復用。通過(guò)一個(gè)譯碼器實(shí)現選通功能。
3 會(huì )話(huà)控制
將VMC與外設之間通過(guò)MDB總線(xiàn)的會(huì )話(huà)分為四個(gè)層次:
(1)串口初始化
初始化串口時(shí),主要工作是設置波率(9600)和傳輸方式(11位)。為順利獲得9600波特率,單片機采用的晶振為11.0592MHz。源代碼如下(采用Franklin C51語(yǔ)言編寫(xiě)):
// 一點(diǎn)常量定義
#define uchar unsigned char
#define T_RESPONSE 0xee //*5.0毫秒*/
#define MAX_BLOCK_SIZF 36 /*數據塊最大長(cháng)度*/
#define ERR_TIME_OUT 0x81 /*超時(shí)*/
#define ERR_NO_MODE_BIT 0x82*/未收到最后字節*/
#define ERR_CHECKSUM 0x83 /*校驗和錯*/
#define ACK 0x00
#define RET 0xaa
#define NAK 0xff
//初始化串口
void InitSerialPort()
{
SCON = 0xd0; //設置串口為方式3(9bit)
TMOD =0x0f;
TMOD I=0x20; //設置定時(shí)器1為方式2
TR1 =1; //定時(shí)器1使能
TH1 = 0xfd; //設定波行率:9600 NRZ
PCON =0x7f; //Set SMOD=0
RI=0;
TI=0;
}

(2)字節的傳送
這里需要注意的是:發(fā)送數據時(shí)要根據需要設置方式位,而接收數據時(shí)要返回方式位的值,以判斷是否收完所有數據。
// 傳送字節
void TransmitByte(uchar byte,bit mode)
//形參:byte——準備發(fā)送的字節
// mode——預備要設置的方式位
{
TB8=mode; //設置方式位
SBUF = byte; //發(fā)送字節
While(!TI); //等待發(fā)送完畢
TI=0;
}
//接收字節
#pragma disable
uchar ReceiveByte(uchar *byte,uchar *bMode)
//形參:*byte——返回接收到的字節值
// *bMode——返回接收到的字節的方式位
//返回值:0—超時(shí),1—成功接收



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>