自学内容网 自学内容网

C#代码 串口通信晋中A2板,控制直流电机

1,在电脑中给晋中板中下载编译好的程序。

        0x39 :开启电机的标识

        代码:

/**********************************************************************************
****
实验名称:串口通信实验
接线说明:
实验现象:下载程序后,当串口助手发送数据给单片机,单片机原封不动转发给串口助手显示
注意事项:使用黄色跳线帽将 CH340 旁的 P5 端子的 UTX 和 P30 短接,URX 和 P31 短接,出厂默
认已短接好
***********************************************************************************
****/
#include "reg52.h"
typedef unsigned int u16;//对系统默认数据类型进行重定义
typedef unsigned char u8;
u8 u16_data;

//定义直流电机控制管脚
sbit DC_Motor=P1^0;

/*******************************************************************************
* 函 数 名 : uart_init
* 函数功能 : 串口通信中断配置函数,通过设置 TH 和 TL 即可确定定时时间
* 输 入 : baud:波特率对应的 TH、TL 装载值
* 输 出 : 无
*******************************************************************************/
void uart_init(u8 baud)
{
TMOD|=0X20; //设置计数器工作方式 2
SCON=0X50; //设置为工作方式 1
PCON=0X80; //波特率加倍
TH1=baud; //计数器初始值设置
TL1=baud;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
/*******************************************************************************

* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/

void main()
{
 //u16_data=0;
DC_Motor=0;//关闭电机
uart_init(0XFA);//波特率为 9600
while(1)
{

}
}
void uart() interrupt 4 //串口通信中断函数
{
u8 rec_data;
RI = 0; //清除接收中断标志位
rec_data=SBUF; //存储接收到的数据
if(rec_data==0x39)
{
   DC_Motor=1;//开启电机
}
else
{
DC_Motor=0;//关闭电机
}
SBUF=rec_data; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}

2,通过WPF界面控制电机开启。

      

     C# 代码:

    2.1 wpf布局完成事件中开启串口连接

bool is_run = false;//电机开启标识
SerialPort com = new SerialPort();
private void ErrorPage_Loaded(object sender, RoutedEventArgs e)
{
    com.BaudRate = 9600;//波特率
    com.PortName = "COM6";//端口号
    com.DataBits = 8;//字节长度
    com.Open();//打开端口连接
}

     2.2 开启电机 按钮点击事件

        

 private void Button_Click_3(object sender, RoutedEventArgs e)
 {
     Byte[] data = new Byte[4];
     if (!is_run)
     {
         data[0] = 0x39;
         is_run = true;
     }
     else
     {
         data[0] = 0;
         is_run = false;
     }
     com.Write(data, 0, 1);
     //com.Close();
 }

该文为原创文章,转载请注明原文出处

Author:靓仔建 w: gaolian1025

(希望能帮助到各位,大家的支持是我创作最大动力!现在待业中。(专注.net C# 6年))


原文地址:https://blog.csdn.net/qq_33435149/article/details/142860883

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!