標(biāo)題:
單片機(jī)組態(tài)例程
[打印本頁(yè)]
作者:
老手
時(shí)間:
2021-4-17 11:16
標(biāo)題:
單片機(jī)組態(tài)例程
大家可以用MODBUS協(xié)議通過(guò)人機(jī)界面來(lái)調(diào)試程序或?qū)W習(xí)通信協(xié)議。
1.使用前,需要安裝GUIBuild觸摸屏組態(tài)軟件,軟件在"\單片機(jī)開(kāi)發(fā)工具\(yùn)GUIBuild觸摸屏組態(tài)軟件"
2.使用GUIBuild和OPS6觸摸軟件前,先雙擊學(xué)習(xí)光盤(pán)中的“KeiLib.exe”
3.軟件安裝好后,雙擊Test.op6 即可運(yùn)行程序。
4.使用GUIBuild觸摸屏軟件時(shí),先編譯,再選擇在線(xiàn)模擬,再選擇正確的COM口后點(diǎn)擊連接。
單片機(jī)源程序如下:
/******************************************************************************************************************
標(biāo)題: 綜合程序 *
* 此程序包含了板中大部分的功能,配合上位機(jī)一起使用 編譯前請(qǐng)雙擊Keillib.exe *
* *
*******************************************************************************************************************/
#include <system.h>
#define NOP() _nop_() /* 定義空指令 */
#define TRUE 0xff
#define FALSE 0
//6T/12T工作模式
#define Model_6T 0
unsigned char bdata X0,X1,Y0,Key;
unsigned int Tick_10ms=0; //時(shí)間片計(jì)數(shù)器
sbit K0=Key^0;
sbit K1=Key^1;
sbit K2=Key^2;
sbit K3=Key^3;
sbit K4=Key^4;
sbit K5=Key^5;
sbit K6=Key^6;
sbit K7=Key^7;
bit K0J,K1J,K2J,K3J,K4J,K5J;
#define M_Sum 32
#define D_Sum 185
unsigned char idata M[M_Sum];
unsigned short xdata D[D_Sum];
unsigned int TestDelay1, TestDelay2, TestDelay3;
unsigned int T[6];
//*********************************************************************
#define UCHAR unsigned char
void delay(unsigned int i)
{
UCHAR j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
/*************************************************************************
* 函數(shù)名稱(chēng): ConversionStr(void)
* 功能描述: 字符串轉(zhuǎn)換函數(shù)
* 輸 入: *Register, *str
***************************************************************************/
void ConversionStr(unsigned short *Register,unsigned char code *str)
{
unsigned char sL,sH;
while(1)
{
if(*str == '\0') break;
sL=(*str++);
sH=(*str++);
*Register++=sH<<8|sL;
}
}
/*************************************************************
* (T0) 10 ms 時(shí)鐘沖斷
;************************************************************/
void T0zd(void) interrupt 1
{
//TH0=0xC4; //18.432M
//TL0=0x00;
#if Model_6T
TH0=0xB8; //22.1184M
TL0=0x00;
#else
TH0=0xDC; //11.0592M
TL0=0x00;
#endif
Tick_10ms++;
}
/***********************************************************
purpose: 系統(tǒng)初始化
/**********************************************************/
void system_Ini()
{
TMOD|= 0x11;
//TH0=0xC4; //18.432M
//TL0=0x00;
#if Model_6T
TH0=0xB8; //22.1184M
TL0=0x00;
#else
TH0=0xDC; //11.0592M
TL0=0x00;
#endif
IE = 0x8A;
TR0 = 1;
//PWM
//TH1 = 0xfe; //11.0592
//TL1 = 0x33;
//TR1 = 1;
}
//***********************************************************
main()
{ unsigned char Input;
unsigned char i,j;
unsigned char code str1[] = "PLC動(dòng)作版本 V1.05 ";
unsigned char code str2[] = "51板程序版本 V3.28 ";
system_Ini();
InitMotor();
Input=ReHC74165();
X0=Input;
#if Model_6T // 晶振 波特率 站號(hào)
Modbus_Init(221184, 57600, 1, &M[0], &D[0]);
#else
//Modbus_Init(110592, 19200, 1, &M[0], &D[0]);
Modbus_Init(120000, 19200, 1, &M[0], &D[0]);
#endif
//Modbus_Init(184320, 57600, X1, &M[0], &D[0]);
for(i=0; i<M_Sum; i++) M[i]=0;
for(i=0; i<D_Sum; i++) D[i]=i;
Y0=0;
D[12]=1;
D[24]=0;
D[28]=100;
D[30]=50;
D[100]=0; //PLC-K0~K3控制畫(huà)面切換OFF
D[180]=0; //AD采樣控制
D[181]=0; //曲線(xiàn)黑色背景
ConversionStr(&D[50],str1);
////////////////////////////////////////////////////////////////////////
while(1)
{
Input=ReHC74165();
X0=Input;
Key=X0;
if(K0&K0J) //單次圖片切換 D27
{
M[0]=~M[0];
if(++D[27]>5) D[27]=0;
if(D[100]) D[24]=10; //控制觸摸屏(顯示畫(huà)面號(hào)=10)
}
K0J=~K0;
//由K1~K5微分控制, 交替切換M1~M5
if(K1&K1J)
{
M[1]=~M[1];
if(D[100]) D[24]=17; //控制觸摸屏(顯示畫(huà)面號(hào)=17)
}
K1J=~K1;
if(K2&K2J)
{
M[2]=~M[2];
if(D[100])D[24]=29; //控制觸摸屏(顯示畫(huà)面號(hào)=29)
}
K2J=~K2;
if(K3&K3J)
{
M[3]=~M[3];
if(D[100])D[24]=30; //控制觸摸屏(顯示畫(huà)面號(hào)=30)
}
K3J=~K3;
if(K4&K4J)M[4]=~M[4]; K4J=~K4;
if(K5&K5J)M[5]=~M[5]; K5J=~K5;
if(M[1]) //自動(dòng)圖片切換 D[27] 間隔10ms*D[28] 加加一次
{
if(TickOut(&T[0],D[28])) if(++D[27]>5) D[27]=0; //10ms*D[28]
}
//顯示下位機(jī)程序版本
if(K0) ConversionStr(&D[50],str1);
if(K1) ConversionStr(&D[50],str2);
//動(dòng)態(tài)文本畫(huà)面數(shù)據(jù)測(cè)試
if(TickOut(&T[1],D[30])) //D[30]位人機(jī)設(shè)定的動(dòng)作速度
{
//報(bào)警信息
if((K0)&&(D[21]<58)) ++D[21];
if((K1)&&(D[21]>0)) --D[21];
//動(dòng)作信息
if((K2)&&(D[22]<9)) ++D[22];
if((K3)&&(D[22]>0)) --D[22];
//溫度狀態(tài)反色顯示
D[90]++;
//周期時(shí)間
D[93]++;
//按下S5(單ON/雙OFF),控制報(bào)警自動(dòng)變化
if(M[4])
{
if(++D[21]>57) D[21]=0;
}
//按下S6(單ON/雙OFF),控制動(dòng)作自動(dòng)變化
if(M[5])
{
if(!M[6]) //動(dòng)作++
{
if(++D[22]>8)
{
D[22]=8;
M[6]=TRUE;
}
}
else //動(dòng)作--
{
if(--D[22]==0) M[6]=FALSE;
}
}
}
復(fù)制代碼
//撥碼開(kāi)關(guān)控制[運(yùn)行狀態(tài)顯示]
D[99]=0;
if(X1&0x10) D[99]=1; //撥碼開(kāi)關(guān)1
if(X1&0x20) D[99]=2; //撥碼開(kāi)關(guān)2
if(X1&0x40) D[99]=3; //撥碼開(kāi)關(guān)3
if(X1&0x80) D[99]=4; //撥碼開(kāi)關(guān)4
以上代碼下載:
27 組態(tài)例程.rar
(2.02 MB, 下載次數(shù): 25)
2021-4-17 11:15 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1