可以的,你可以用三菱PLC的专用协议配合STC程序通过串口通讯。或用自由协议,自由协议比较复杂,但STC那边实现起来比较简单直接用串口按规则把电位器的值发送出来,在PLC这边写程序接收解析,PLC这边比较复杂,需要一定的编程功底。
具体的PLC专用协议,自由协议参考你可以去三菱官网下载电子档说明书,以上2种协议我都成功应用在设备上。
(需要外扩通讯板。)
优缺点:PLC专用协议STC那边需要遵守PLC固定的数据格式比如0530304646(WW指令)相对PLC那边就简单的多,因为数据直接写到了指定的寄存器内(如D,M等),可以直接使用。
PLC自由协议STC按照普通的串口发送数据方式按自己固定的格式将AD数据发送,PLC这边程序比较复杂,需要理解PLC的自由协议写法(如RS指令)并利用一定的算法将数据还原并保存到寄存器内。
显示的一个,给你吧
#include<reg52h>
#define Data P0
#define uint unsigned int
#define uchar unsigned char
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit PSB = P1^3;
sbit RET = P1^6;
/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表 //
// : C:\桌面\1111bmp,横向取模左高位,数据排列:从左到右从上到下 //
// 尺寸: 128 64 //
/////////////////////////////////////////////////////////////////////////
unsigned char code nBitmapDot[] = // 数据表
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xBF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,
0xFF,0xFF,0xC8,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xBF,0xFF,0xF0,0xFF,0xFD,0xEF,0xFF,
0xFF,0xFF,0x9F,0x7F,0xFF,0x93,0xFF,0xFF,
0xFF,0x3F,0xFF,0xEE,0xFF,0xFB,0xF7,0xFF,
0xFF,0xFF,0x3F,0xBF,0xFF,0xBF,0xFF,0xFF,
0xFF,0x7F,0xFF,0xDF,0x7F,0xFB,0xFB,0xFF,
0xFF,0xFF,0x7F,0x9F,0xFF,0x7F,0xFF,0xFF,
0xFF,0x3F,0xFF,0xCF,0x3F,0xF7,0xFF,0xFF,
0xFF,0xFC,0xFF,0xDF,0xFF,0x7F,0xFF,0xFF,
0xFF,0x9F,0xFF,0xEF,0x8F,0xF7,0xFC,0xFF,
0xFF,0xFB,0xFF,0xEF,0xFE,0xFF,0xFF,0xFF,
0xFF,0xDF,0xFF,0xEF,0xE0,0x0F,0xFF,0xBF,
0xFF,0xE7,0xFF,0xE7,0xFD,0xFF,0xFF,0xFF,
0xFF,0xDF,0xFF,0xCF,0xFF,0xFF,0xFF,0xDF,
0xFF,0xCF,0xFF,0xF3,0xF3,0xFF,0xFF,0xFF,
0xFF,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xF7,
0xFF,0x3F,0xFF,0xF9,0xC7,0xFF,0xFF,0xFF,
0xFF,0xC3,0xFF,0x9F,0xFF,0xFF,0xFF,0xFD,
0x28,0xFF,0xFF,0xFC,0xBF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xDF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xDF,0xFF,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xDF,0xDF,0xFF,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xFF,0xFF,
0x9F,0xDE,0x0F,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE3,0xFC,0xCD,0xFF,0xFE,
0xFF,0x99,0xF7,0xFF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x7F,0xE4,0xFD,0x5D,0xFF,0xFF,
0xFF,0x93,0xFB,0xBF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xE7,0xFF,0xEE,0x7F,0x5D,0xFF,0xFF,
0xF7,0x9B,0xFB,0xFF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xFF,0xDF,0x7F,0xBD,0xFF,0xFF,
0xFF,0x5F,0xFB,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xFF,0xDF,0xBF,0x3D,0xFF,0xFF,
0xF7,0x7B,0xFB,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xFF,0x94,0x3F,0x3D,0xFF,0xFF,
0xFE,0x5F,0xFB,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xBF,0xBF,0x3D,0xFF,0xFF,
0xF0,0xDB,0xFB,0xBF,0xDF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xFF,0x7F,0xDF,0x3D,0xFF,0xFF,
0xFF,0xDF,0xFB,0xBF,0xBF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xFE,0xFF,0xDF,0x3D,0xFF,0xFF,
0xFF,0xDB,0xFB,0xBF,0xBF,0xFF,0xFF,0xFF,
0xFF,0xE7,0xFE,0xFF,0xCF,0x7E,0xFB,0xFF,
0xFF,0xDB,0xF3,0xDF,0x7F,0xFF,0xFF,0xFF,
0xFF,0xF7,0xFE,0xFF,0xFF,0x7F,0x6B,0xFF,
0xFF,0xDD,0xE7,0xE0,0x7F,0xFF,0xFF,0xFF,
0xFF,0xF0,0x17,0xFF,0xFF,0x7F,0xFF,0xFF,
0xFF,0xDC,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x5E,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x00,0x47,0xFF,0xFF,0xC3,0xFE,
0x7F,0xFF,0xFF,0xFF,0xF9,0xFF,0xFF,0xFF,
0xFF,0xF8,0x50,0x03,0xFF,0xFF,0x7D,0xFE,
0xFF,0xFF,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,
0xFF,0xFB,0xFF,0xFF,0xFF,0x17,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,
0xFF,0xF9,0xFF,0xFF,0xFD,0xF7,0x7E,0xFE,
0xFF,0xFC,0x40,0x1F,0xFF,0xEF,0xFF,0xFF,
0xFF,0xF9,0xFF,0xFF,0xFB,0xFF,0xFE,0xFE,
0xFF,0xFC,0xFF,0xE0,0x10,0x77,0xFF,0xFF,
0xFF,0xFE,0x00,0x07,0xFB,0xFA,0xFE,0xFE,
0x7F,0xFF,0x7F,0xFF,0xEF,0x37,0xFF,0xFF,
0xFF,0xF8,0xC1,0x0B,0xFF,0xFB,0xFE,0xFE,
0x7F,0xFF,0x02,0x28,0x42,0x67,0xFF,0xFF,
0xFF,0xF8,0x38,0x0B,0xF7,0xFF,0x7E,0xFE,
0x7F,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,
0xFF,0xF8,0x08,0xA3,0xF9,0x6B,0x65,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,
0xFF,0xF8,0x08,0x27,0xF7,0xFF,0x1F,0xFD,
0x7F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,
0xFF,0xF9,0xFF,0xFF,0xFB,0xFF,0xBF,0xFD,
0x7F,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,
0xFF,0xF9,0xFF,0xFF,0xFB,0xFF,0x9F,0xFE,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF9,0xFF,0xFF,0xFD,0x4F,0xE0,0x3F,
0x63,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x1C,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x02,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
void delayUs() ;
void wait();
void writeData(uchar dat)
{
wait();
RS = 1;
RW = 0;
E = 0;
Data = dat;
E = 1;
delayUs();
E = 0;
}
void delayUs()
{uint j,i;
for(i=2;i>0;i--)
for(j = 1; j > 0; j--);
}
void delayMs(uint a)
{
uint i, j;
for(i = a; i > 0; i--)
for(j = 100; j > 0; j--);
}
bit checkBusy()
{
bit busy;
RS = 0;
RW = 1;
E = 1;
delayUs();
busy = (bit)(Data&0x80);
E = 0;
return busy;
}
void wait()
{
while(checkBusy());
}
void writeCmd(uchar cmd)
{
wait();
RS = 0;
RW = 0;
E = 0;
delayUs();
Data = cmd;
delayUs();
E = 1;
delayUs();
E = 0;
}
void init()
{ RET=1;
PSB = 1; //并口方式
writeCmd(0x30); //基本指令, 扩充指令为34H
delayMs(20);
writeCmd(0x0c); //显示开, 关光标
delayMs(20);
writeCmd(0x01); //清屏
delayMs(20);
}
void display(uchar p)
{ uchar x,y;
for(y=0;y<32;y++)
for (x=0;x<8;x++)
{ writeCmd(0x36);
writeCmd(0x80+y);
writeCmd(0x80+x);
writeData(p[2x+16y]); writeData(p[2x+16y+1]); writeCmd(0x30);
}
for(y=0;y<32;y++)
for (x=0;x<8;x++)
{ writeCmd(0x36);
writeCmd(0x80+y);
writeCmd(0x80+x+8);
writeData(p[2x+16y+512]); writeData(p[2x+16y+513]); writeCmd(0x30);
}
}
void main()
{
RET=0;
init();
while(1)
{
display(nBitmapDot); delayMs(100000);
} }
stc单机片程序备份出来的方法如下:
1、把单片机中的程序拷贝出来主要需要使用专业的烧录器,用烧录器来读取单片机中的程序,然后将程序文件保存即可。
2、可以使用其他的调试软件来读取单片机中的程序,然后将程序文件保存至电脑中。
以上就是关于用三菱编程指令,STC单片机上的模拟电位器数据如何采集全部的内容,包括:用三菱编程指令,STC单片机上的模拟电位器数据如何采集、求一个STC-89C52RC控制12864液晶显示的程序、stc单机片程序怎么备份出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)