标题:
51单片机和上位机串口通信控制电机和显示温度
[打印本页]
作者:
yongbuyanqi
时间:
2018-2-7 09:47
标题:
51单片机和上位机串口通信控制电机和显示温度
51和上位机(C#编写)串口通信
0.png
(45.57 KB, 下载次数: 31)
下载附件
2018-2-7 23:08 上传
0.png
(5.58 KB, 下载次数: 47)
下载附件
2018-2-7 23:08 上传
全部资料51hei下载地址:
控制台.zip
(464.24 KB, 下载次数: 79)
2018-2-7 09:46 上传
点击文件名下载附件
51和上位机(C#编写)串口通信
下载积分: 黑币 -5
单片机源程序如下:
#include<reg52.h>
#include"bstv51.h"
#include"delay.h"
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit EN1=P1^4; //使能端
sbit EN2=P1^5;
sbit IN1=P1^2; //电机1
sbit IN2=P1^3;
sbit IN3=P1^6; //电机2
sbit IN4=P1^7;
void run(void) //前进函数
{
EN1=1;
IN1=0;
IN2=1; //左电机的正转
EN2=1;
IN3=1;
IN4=0;//右电机的正转
}
void back(void) //后退函数
{
EN1=1;
IN1=1;
IN2=0; //左电机的反转
EN2=1;
IN3=0;
IN4=1;//右电机的反转
}
void stop(void) //停止函数
{
EN1=0;
EN2=0;//电机使能
}
void UartConfiguration(); //串口配置函数申明
void main()
{
uchar date1,date2;
uint s;
bstv51_init(); //开发板初始化
UartConfiguration();
while(1)
{
if(RI==1)
{
date1=SBUF;
RI=0;
s=0;
while(s<2000&&date1==0xDB)
{
s++;
if(RI==1)
{
date2=SBUF;
RI=0;
switch(date2)
{
case 66:LED1=0;LED2=1;FM=1;
break;
case 255:LED1=1;LED2=0;FM=1;
break;
case 'S':LED1=1;LED2=1;FM=0;
break;
case 0xAA:run();
break;
case 0xBB:back();
break;
case 'P':stop();
break;
}
}
}
}
}
}
///////////串口配置函数/////////////////////
void UartConfiguration()
{
TMOD=0x20; //设置计数器1的工作方式2
TH1=0xfd; //设置计数器1的初值,决定波特率(0xfd表示9600的波特率)
TL1=0xfd; //设置计数器1的初值,决定波特率
PCON=0x00; // 波特率倍增0x00不加倍 0x80加倍
SCON=0x50; //设置工作方式1 开启接受允许
EA=1; //开启总中断
ES=1; //开启串口接受中断
TR1=1; //计数器1开始运行
}
///////////////串口中断服务函数///////////////////(不需要申明)
//void itrpt_svice() interrupt 4 //串口中断服务函数
//{
// date=SBUF; //取出接受到的数据(手机把数据发给单片机的SBUF寄存器,date从寄存器中取值)
// RI=0; //清除接受中断标志位
// SBUF=date; //单片机把数据date放到总线上(发给电脑或者手机)
// while(!TI); //等待发送数据完成
// TI=0; //清除发送中断标志位
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
作者:
zb12138
时间:
2019-4-28 16:28
打不开
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1