导航:首页 > 操作系统 > 单片机下位机

单片机下位机

发布时间:2022-01-29 11:23:04

单片机 上位机 下位机 通信

上位机接收到的肯定也是一个数字

⑵ 什么是上位机和下位机,单片机属于哪个

上位机是指人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。系统中起主控,主要作为系统的规划控制,属于决策层。

下位机是指直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。具体执行层,主要完成系统规划层下达的任务。

单片机属于下位机。


上位机与下位机的区别:

  1. 上位机:系统中起主控,主要作为系统的规划控制,属于决策层。

    下位机:具体执行层,主要完成系统规划层下达的任务。


  2. 上位机是指人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。

    下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机之类的。


  3. 上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。

    下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。

简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。


参考:

上位机:http://ke..com/view/554441.htm

下位机:http://ke..com/view/1289019.htm

⑶ 做单片机软件上位机下位机哪个更有前途

好!虽然不是很有经验,但又有所涉及!
本人的观点,都应当懂一点!然后才有能力精通一方向!
我在学校是学单片机上的系统开发的,学的还可以,算是比较精通了(学校)。本来觉得
差不多了,能混口饭了,,,那知道,我还空缺
上位机编程部分!
其实上位机:是用来控制
单片机系统
的,,是可以直接通过串口、tcpip
远程控制
单片机的,,,使用在
条件苛刻
、人不宜
直接接触单片机系统的
场合!!
但是,现在我工作,不做单片机系统开发,,而是.net开发,,做web(浏览器)、winform(窗体应用程序);;
我工作还算清闲,,于是就跟学校老师联系,做一个
温度远程监控系统,,不难,,但是直接使用到.net的winform,,,于是,,现在才感觉到
是一个不小的提升,,,当时只知道
用物理按键
实现
单片机系统控制,,现在想来,,远程控制
是一个趋势!!
我说这么多,想说的是,两方面你都得懂一点,,这样才会有竞争力,,当然精力、时间有限,你只能精通一方面,,这也行,,但是,如果到时候
需要你跟
人家
做上下位机
接口
对接时,你就会发现,如果你不懂两方面,,你将会
很不方便!!!!
首先,你需要先精通
下位机
部分,,因为1、下位机可以单独
执行程序,可以缺少上位机;2、上位机的编程
需要考虑到
下位机
的实现难易程度,从而设计上位机接口部分。因此从这两个方面,你都需要先精通下位机部分!
前途是相对而言的
,,任何一个方面
都很有前途,,但是
只有你两方面都懂一点,一方面精通一点,,,这样你才能够统领全局,了解整个系统设计!!
当然这样是最有前途的!
只要专心学,前途肯定是有的!!
很认真了!!!!呵呵!!可以去我空间看看!
祝你好运!

⑷ 上下位机给下位机单片机的信号,下位机能马上收到吗

当然能马上收到,但是通信应该没有问题才行.传输时间很短,有
感觉不到
.

⑸ 求单片机串口通信程序(下位机)

程序我给你做到这,别说其它的你还不会啊。波特率根据你的要求去设置.如果实在不明白的话,发消息给我吧
1.reg51.h头文件可以,
2.AT89S51内部无时钟,需外加时钟
3.那波特率为9600b/s时,TH1和TL1的初值是不应该为FAH?
它有具体的计算公式,波特率你想是多少就是多少
4.假设你用P1口控制8个LED,低电平点亮,程序如下。首先包含intrins.h头文件。

OK了,问题全解决了,分也该给我了吧。呵呵。
#include<reg52.h>
#define uchar unsigned char
uchar recive;
void main()
{

TMOD=0X20;
SCON=0X50;
TL1=0XF3;
TH1=0XF3;
PCON=0X80;
TR1=1;
EA=1;
ES=1;
P1=0x7f;//初始值,一个灯亮,其它都灭

while(1)
{
if(recive=='R')
LED_right();
if(recive=='L')
LED_left();

}

void es0(void) interrupt 4
(
recive=SBUF;
RI=0;
)

void LED_left(void)
{
P1=_crol_(P1,1);
//delay();调用你想要的延时这个不要说你不会啊,就是做个空循环就行
}

void LED_right(void)
{
P1=_cror_(P1,1);
//delay();
}

⑹ 什么事下位机,和单片机电路有什么区别

专业解答:

要理解下位机,那就要了解上位机,这只是一种概念说法。

1:上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。

2:下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。

⑺ 单片机modbus下位机程序怎么编写

这个是MODBUS控制电磁阀的一个程序。其中还有AD采集的部分。对CRC校验用查表的方法。至于怎样把校验的结果拆分成高低位字节,再发送,看程序吧。
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define Pressure P0

////////////////

/////////////////////

uchar addr;
uchar Pressure_updata;
uchar Pressure_lowdata;
/////////////////

sbit Dcf_open=P1^0;//电磁阀开启
sbit Dcf_close=P1^1;//电磁阀关闭

bit dr;
bit Dcf_state=1 ;
bit Halfsecond=0;
bit Onesecond=0;
//////////////////////////////
sbit Mydress_set=P2^5 ;
sbit P_uplimite =P2^6 ;
sbit P_lowlimite=P2^7;
sbit Stor=P3^2;
sbit myint=P3^3;
sbit ADC_wr =P3^6;
sbit ADC_rd =P3^7;
sbit xuantong =P1^7;
sbit addrset=P1^2;
sbit upset=P1^3;
sbit lowset=P1^4;
/////////////////////////

uchar code Myreturnstateopen[3] ={0x01,0x01,0x00};
uchar code Myreturnstateclose[3]={0x01,0x01,0x01};
uchar code Myreturnopen[3] ={0x01,0x01,0x10};
uchar code Myreturnclose[3]={0x01,0x01,0x20};

uchar receive_count=0;

uchar mysend[6],aq[8];
uchar Adc_value;

unsigned long Mycount=0;
uchar jishi=0; //定时一秒计数

uint crc=0,myaw=0;
uint crc16(unsigned char *puchMsg, unsigned int usDataLen);

bit yifasong=0;
void Beginsend( uchar Me );
bit check_modbus() ;

void Open_dcf() ;
void Close_dcf();
void timer0() ;
void uart_init(void) ;
void delay(uint z) ;
void Read_adc();
void Tosend();

/////////
/*************延时*****************/
void delay(uint z)
{
uchar y;
while(z--)
for(y=113;y>0;y--);
}

/************串口初始化*****************/
void uart_init(void) interrupt 4 using 1
{
if(RI)
{
aq[receive_count]=SBUF;
RI=0;
receive_count++;
if(0==receive_count%8)
{
yifasong=0;
receive_count=0;

};

RI=0;
}

}

/**************定时器0初始化**************/

void timer0() interrupt 1 using 1
{
TH0=0x4b;
TL0=0x63;

jishi++;

if (0==jishi%10) {
Halfsecond=1;
aq[0]=0;aq[1]=0;aq[2]=0;aq[3]=0;aq[4]=0;aq[5]=0;aq[6]=0;aq[7]=0;receive_count=0;
}

}

void Read_adc()
{
ADC_rd=1;

ADC_wr=1;
_nop_();
_nop_();
_nop_();
_nop_();

myint=1;
P0=0xff;

ADC_wr=0;
_nop_();
_nop_();
_nop_();
_nop_();
ADC_wr=1;
while( myint==1);
ADC_rd=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

Adc_value=P0; //读出的数据赋与addate

ADC_rd=1;
}

void Open_dcf()
{
Dcf_open=0; delay(1200); Dcf_open=1; Dcf_state=1;
}

void Close_dcf()
{

Dcf_close=0; delay(1200);Dcf_close=1; Dcf_state=0;

}

void Read_Pressure()
{

Read_adc() ;
if (Dcf_state)
{
if((Adc_value<Pressure_lowdata)|| (Adc_value>Pressure_updata))
{
delay(1200);
if((Adc_value<Pressure_lowdata)|| (Adc_value>Pressure_updata)) { Close_dcf(); }

}
else
{ ; }

}

else
{

if((Adc_value>Pressure_lowdata)&&(Adc_value<Pressure_updata))
{ delay(1200);
if((Adc_value>Pressure_lowdata)&&(Adc_value<Pressure_updata)) { Open_dcf(); }

}
else ;

}

}

void initialize()
{

TMOD=0x20;
SCON=0x50;//串口通讯方式1
TH1=0xfd;//波特率9600
TL1=0xfd;
TH0=0x4b;
TL0=0x63;
TI=0;//发送中断标志位清零
RI=0;//接收中断标志位清零
Mydress_set=1;P_lowlimite=1; P_uplimite=1; xuantong=1;
Mydress_set=0;delay(20);addrset=1;delay(20);addr=P0;
delay(20);
addrset=0;Mydress_set=1;delay(200);P0=0xff;
P_lowlimite=0;delay(20);lowset=1;delay(20);Pressure_lowdata=P0;
delay(20);
lowset=0;P_lowlimite=1;P0=0xff;
P_uplimite=0; delay(20);upset=1;Pressure_updata=P0;delay(20);upset=0;P_uplimite=1;P0=0xff;
xuantong=0;

}

void main(void)
{

IE=0x92;
TR0=1;TR1=1;
// WDTRST=0x1E;
// WDTRST=0xE1;//初始化看门狗

initialize();

Stor=0;

for(;;) { // WDTRST=0x1E;
//WDTRST=0xE1;//喂狗指令

if (Halfsecond==1) {

Halfsecond=0;
Read_Pressure();
}
//够一秒开始转换
if(receive_count==0&&(yifasong==0))
{ Stor=0;
dr= check_modbus();
if (dr&&addr==aq[0])
{ if(aq[1]==0x05)

switch ( aq[3])
{
case 0x00 :

if(!Dcf_state) Open_dcf();
Beginsend(0) ; break;
case 0x01 :

if(Dcf_state) Close_dcf();

Beginsend(1);
break;

default : ;
}

else if(aq[1]==0x01)

{
if(Dcf_state)

{ Beginsend(2);
}
else

{ Beginsend(3);
}
}
else;
}
else
;
}

}

}

void Beginsend(uchar Me )
{
uchar i;
ES=0; Stor=1;
TI=0;
mysend[0]=addr;
switch(Me)
{
case 0:

{ for(i=1;i<4;i++)
{

mysend[i] = Myreturnopen[i-1];
}
i=0;
}break;
case 1:
{for(i=1;i<4;i++)
{

mysend[i] = Myreturnclose[i-1];
} i=0;}break;
case 2:

{ for(i=1;i<4;i++)
{

mysend[i] = Myreturnstateopen[i-1];
} i=0;}break;
case 3:
{for(i=1;i<4;i++)
{

mysend[i] = Myreturnstateclose[i-1];
}i=0;}break;
default : ;}

myaw=crc16(mysend,4);
mysend[4] =myaw&0x00ff;
mysend[5] =(myaw>>8)&0x00ff;
for(i=0;i<6;i++)
{

SBUF=mysend[i];

while(TI!=1);
TI=0;

}
Stor=0;
ES=1;
yifasong=1;
}

bit check_modbus()

{
uchar m,n ;

crc=crc16(aq,6);

m=crc;n=crc>>8&0x00ff;
if(aq[6]==m&&aq[7]==n)

return 1 ;
else
return 0;
}

uint crc16(uchar *puchMsg, uint usDataLen)
{
uchar uchCRCHi = 0xFF ; //* 高CRC字节初始化
uchar uchCRCLo = 0xFF ; //* 低CRC 字节初始化
unsigned long uIndex ; // CRC循环中的索引
while (usDataLen--) // 传输消息缓冲区
{
uIndex = uchCRCHi ^ *puchMsg++ ; // 计算CRC
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
uchCRCLo = auchCRCLo[uIndex] ;
}
return (uchCRCHi | uchCRCLo<<8);
}

/***********************CRC校验*************************/
// CRC 高位字节值表

⑻ 单片机上下位机间的连接

将主机的TXD和各下位机的RXD连接,将主机的RXD和各下位机的TXD连接,AT89S52的串口没有地址寄存器,所以要人为的为各个下位机设定一个特定编号,主机向下位机发送命令时必须包含这个编号(实际只要花一个字节作为特征代码就可以),下位机根据对特征代码的识别来确定是否向上位机返回数据信息,上位机同时与各下位机的通信只能分时进行。至于AT89S52与LCD12864的连接是灵活的,一般采用串行连接,随便取单片机的几个I/O与之连接就可以了,AT89S52与LCD12864的通信只能软件模拟,上述方案供参考。如果想更方便些,建议单片机的选型,最好选择同时具备SPI和UART接口的

⑼ 什么是上位机什么是下位机现在常用的单片机有哪些,简单介绍下

上位机与下位机是相对而言,可以理解为“主从”模式,通常上位机指的是PC;常用的单片机有51系列、AVR系列、FREESCALE、PIC、MSP430等,还有arm系列(通常不被归类于单片机,但也可做单片机使用)

⑽ 电脑做上位机 单片机做下位机 通过USB通信 在电脑端控制单片机怎么玩

1.先买个usb 下载模块,到淘宝上买个
2.在自己先弄单片机最小系统在上面添加LED灯和蜂鸣器,可以面包板来测试先,然后再焊上去,
3.首先你要用上位机软件来测试,然后自己写相应的上位机软件 http://blog.csdn.net/zhs1931/archive/2010/01/16/5193819.aspx 这里的代码会了 (当然你要回点VC++的基础)

阅读全文

与单片机下位机相关的资料

热点内容
python查找相似图片的代码 浏览:331
赵丽pdf 浏览:656
如何苹果手机app不要自动更新 浏览:977
pythonflask路线教程 浏览:256
程序员职业有哪些好处 浏览:711
大都会软件app如何扫码 浏览:436
单片机0x38 浏览:756
程序员浪漫工作 浏览:329
php几分钟前 浏览:308
项目编译及运行 浏览:894
程序员的基本功 浏览:522
遗传算法排班 浏览:289
如何加密金融安全网 浏览:30
家里的wifi太卡了怎么样自己加密 浏览:233
华为链路聚合命令 浏览:426
apache自动运行php 浏览:519
485和单片机 浏览:975
xp修复系统命令 浏览:520
微你app怎么加好友 浏览:796
程序员转正 浏览:211