欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機組態例程
[打印本頁]
作者:
老手
時間:
2021-4-17 11:16
標題:
單片機組態例程
大家可以用MODBUS協議通過人機界面來調試程序或學習通信協議。
1.使用前,需要安裝GUIBuild觸摸屏組態軟件,軟件在"\單片機開發工具\GUIBuild觸摸屏組態軟件"
2.使用GUIBuild和OPS6觸摸軟件前,先雙擊學習光盤中的“KeiLib.exe”
3.軟件安裝好后,雙擊Test.op6 即可運行程序。
4.使用GUIBuild觸摸屏軟件時,先編譯,再選擇在線模擬,再選擇正確的COM口后點擊連接。
單片機源程序如下:
/******************************************************************************************************************
標題: 綜合程序 *
* 此程序包含了板中大部分的功能,配合上位機一起使用 編譯前請雙擊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; //時間片計數器
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--);
}
/*************************************************************************
* 函數名稱: ConversionStr(void)
* 功能描述: 字符串轉換函數
* 輸 入: *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 時鐘沖斷
;************************************************************/
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: 系統初始化
/**********************************************************/
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動作版本 V1.05 ";
unsigned char code str2[] = "51板程序版本 V3.28 ";
system_Ini();
InitMotor();
Input=ReHC74165();
X0=Input;
#if Model_6T // 晶振 波特率 站號
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控制畫面切換OFF
D[180]=0; //AD采樣控制
D[181]=0; //曲線黑色背景
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; //控制觸摸屏(顯示畫面號=10)
}
K0J=~K0;
//由K1~K5微分控制, 交替切換M1~M5
if(K1&K1J)
{
M[1]=~M[1];
if(D[100]) D[24]=17; //控制觸摸屏(顯示畫面號=17)
}
K1J=~K1;
if(K2&K2J)
{
M[2]=~M[2];
if(D[100])D[24]=29; //控制觸摸屏(顯示畫面號=29)
}
K2J=~K2;
if(K3&K3J)
{
M[3]=~M[3];
if(D[100])D[24]=30; //控制觸摸屏(顯示畫面號=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[27] 間隔10ms*D[28] 加加一次
{
if(TickOut(&T[0],D[28])) if(++D[27]>5) D[27]=0; //10ms*D[28]
}
//顯示下位機程序版本
if(K0) ConversionStr(&D[50],str1);
if(K1) ConversionStr(&D[50],str2);
//動態文本畫面數據測試
if(TickOut(&T[1],D[30])) //D[30]位人機設定的動作速度
{
//報警信息
if((K0)&&(D[21]<58)) ++D[21];
if((K1)&&(D[21]>0)) --D[21];
//動作信息
if((K2)&&(D[22]<9)) ++D[22];
if((K3)&&(D[22]>0)) --D[22];
//溫度狀態反色顯示
D[90]++;
//周期時間
D[93]++;
//按下S5(單ON/雙OFF),控制報警自動變化
if(M[4])
{
if(++D[21]>57) D[21]=0;
}
//按下S6(單ON/雙OFF),控制動作自動變化
if(M[5])
{
if(!M[6]) //動作++
{
if(++D[22]>8)
{
D[22]=8;
M[6]=TRUE;
}
}
else //動作--
{
if(--D[22]==0) M[6]=FALSE;
}
}
}
復制代碼
//撥碼開關控制[運行狀態顯示]
D[99]=0;
if(X1&0x10) D[99]=1; //撥碼開關1
if(X1&0x20) D[99]=2; //撥碼開關2
if(X1&0x40) D[99]=3; //撥碼開關3
if(X1&0x80) D[99]=4; //撥碼開關4
以上代碼下載:
27 組態例程.rar
(2.02 MB, 下載次數: 25)
2021-4-17 11:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1