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年))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值