标题:
单片机按键控制步进电机启停 液晶显示电机状态,有源码和仿真电路
[打印本页]
作者:
PeaceY
时间:
2020-4-18 13:18
标题:
单片机按键控制步进电机启停 液晶显示电机状态,有源码和仿真电路
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
`4JY9~JSI__LZ8F8M610V2W.png
(47.83 KB, 下载次数: 78)
下载附件
2020-4-18 13:17 上传
单片机源程序如下:
#include <reg52.h> //调用单片机头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//引脚声明
sbit rs=P2^0;//1602数据/命令选择引脚
sbit rw=P2^1;//1602读写引脚
sbit e =P2^2;//1602使能引脚
sbit IN1=P3^3;//电动机方向引脚1
sbit IN2=P3^4;//电动机方向引脚2
sbit ENA=P3^5;//电动机使能引脚
sbit key_hy=P3^7;//红外传感器
sbit key_end=P3^6;//行程开关
//us延时函数
void delay(uint i)
{
while(--i);
}
//毫秒延时函数
void delayms(uint xms)
{
uint x,y;
for(x=0;x<xms;x++)
for(y=0;y<122;y++);
}
//1602写命令函数
void write_com(uchar com)
{
e=0;
rs=0;//指令模式
rw=0;//写
P0=com;
delay(3);
e=1;
delay(25);
e=0;
}
//1602写数据函数
void write_data(uchar dat)
{
e=0;
rs=1;//数据模式
rw=0;//写
P0=dat;
delay(3);
e=1;
delay(25);
e=0;
}
//初始化1602液晶
void init_1602()
{
delay(1000);
write_com(0x38);//双行显示,5*7字符
write_com(0x0c);//不显示光标
write_com(0x06);//向后显示
write_com(0x01);//清屏
delay(1000);
}
//主函数
void main()
{
init_1602();//1602液晶初始化
IN1=0;//初始状态电动机停止
IN2=0;
ENA=0;
write_com(0x80);
write_data('C'); write_data('L');write_data('O');write_data('S');write_data('E');
while(1)
{
if(key_hy==0) //红外传感器检测到信号
{
IN1=0;//电动机运行,后备箱车门打开
IN2=1;
ENA=1;
//lcd1602显示ON
write_com(0x80);
write_data('O'); write_data('P');write_data('E');write_data('N');write_data(' ');
delayms(5000);//开启5秒
IN1=0;//电动机运停止
IN2=0;
ENA=0;
//lcd1602显示STOP
write_com(0x80);
write_data('S'); write_data('T');write_data('O');write_data('P');write_data(' ');
}
}
}
复制代码
所有资料51hei提供下载:
后备箱车门控制系统.rar
(34.22 KB, 下载次数: 43)
2020-4-18 13:18 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
我的抽油机啊
时间:
2022-11-26 14:37
这个红外检测具体是怎么用的呢 检测到信号 然后点击启动吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1