C#: 串口(定时)控制下位机开关
2022/4/7 20:19:15
本文主要是介绍C#: 串口(定时)控制下位机开关,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 下位机
/********************************************************************************************* 出品: 杜洋工作室 DoYoung Studio 程序名: DB1-011 电脑控制电源插座 编写人: 杜洋 编写时间: 2013年01月17日 硬件支持: DB1(PCB1) 修改日志: 1-2013011723 完成开发,4路开关控制+全局开关 2-2013011900 加入5到11路的扩展项目 /********************************************************************************************* 说明: 请使用DBC软件进行控制。 DB1端串口波特率4800,每次接收2个字节的数据(数据头码+控制项目序号) /*********************************************************************************************/ #include <reg52.h> //头文件 #define HEAD 0x00//数据头码 sbit J1 = P1 ^ 3;//控制器接口定义 sbit J2 = P3 ^ 2;// sbit J3 = P1 ^ 4;// sbit J4 = P1 ^ 5;// sbit J5 = P1 ^ 7;//5-11路没有使用(第12路用作了全局开关) sbit J6 = P1 ^ 7;// sbit J7 = P1 ^ 7;// sbit J8 = P1 ^ 7;// sbit J9 = P1 ^ 7;// sbit J10 = P1 ^ 7;// sbit J11 = P1 ^ 7;// /*********************************************************************************************/ void DELAY_MS (unsigned int a){//毫秒级延时 unsigned int i; while( a-- != 0){ for(i = 0; i < 600; i++); } } /*********************************************************************************************/ void UART_init (void){//UART串口初始化函数 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**********************************************************************************************/ void main (void){ unsigned char UART_data1,UART_data2; //定义串口接收数据变量 unsigned int s; // DELAY_MS(1000);//延时防止下载时死机 UART_init();//串口初始化(查寻) while(1){ if (RI == 1){ //接收中断标志位为1时//接受数据头码 UART_data1 = SBUF; //接收数据 SBUF 为单片机的接收发送缓冲寄存器 RI = 0; //令接收中断标志位为0(软件清零) s=0; while (s<2000&&UART_data1==HEAD){//判断头码是否正确,等待时间过长时跳出。 s++; if (RI == 1){//开始接受控制数据 UART_data2 = SBUF;// RI = 0; switch (UART_data2){ case 0x01:J1=0;break;//第1路开 case 0x81:J1=1;break;//第1路关 case 0x02:J2=0;break; case 0x82:J2=1;break; case 0x03:J3=0;break; case 0x83:J3=1;break; case 0x04:J4=0;break; case 0x84:J4=1;break; case 0x05:J5=0;break; case 0x85:J5=1;break; case 0x06:J6=0;break; case 0x86:J6=1;break; case 0x07:J7=0;break; case 0x87:J7=1;break; case 0x08:J8=0;break; case 0x88:J8=1;break; case 0x09:J9=0;break; case 0x89:J9=1;break; case 0x0A:J10=0;break; case 0x8A:J10=1;break; case 0x0B:J11=0;break; case 0x8B:J11=1;break; case 0x0C:J1=0;J2=0;J3=0;J4=0;J5=0;J6=0;J7=0;J8=0;J9=0;J10=0;J11=0;break;//全局开关 case 0x8C:J1=1;J2=1;J3=1;J4=1;J5=1;J6=1;J7=1;J8=1;J9=1;J10=1;J11=1;break; default://冗余语句 break; } } } } } } /**********************************************************************************************/ //杜洋工作室 DoYoung Studio /*********************************************************************************************/
2. 上位机界面
// TODO: P10
这篇关于C#: 串口(定时)控制下位机开关的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具