找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3892|回复: 1
打印 上一主题 下一主题
收起左侧

单片机按键控制步进电机启停 液晶显示电机状态,有源码和仿真电路

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg52.h>                 //调用单片机头文件
  2. #include <intrins.h>
  3. #define uchar unsigned char  
  4. #define uint  unsigned int         
  5. //引脚声明
  6. sbit rs=P2^0;//1602数据/命令选择引脚
  7. sbit rw=P2^1;//1602读写引脚               
  8. sbit e =P2^2;//1602使能引脚
  9. sbit IN1=P3^3;//电动机方向引脚1
  10. sbit IN2=P3^4;//电动机方向引脚2
  11. sbit ENA=P3^5;//电动机使能引脚
  12. sbit key_hy=P3^7;//红外传感器
  13. sbit key_end=P3^6;//行程开关
  14. //us延时函数
  15. void delay(uint i)
  16. {
  17.          while(--i);
  18. }
  19. //毫秒延时函数
  20. void delayms(uint xms)
  21. {
  22.         uint x,y;
  23.         for(x=0;x<xms;x++)
  24.                 for(y=0;y<122;y++);
  25. }
  26. //1602写命令函数
  27. void write_com(uchar com)
  28. {
  29.         e=0;
  30.         rs=0;//指令模式
  31.         rw=0;//写
  32.         P0=com;
  33.         delay(3);
  34.         e=1;
  35.         delay(25);
  36.         e=0;
  37. }

  38. //1602写数据函数
  39. void write_data(uchar dat)
  40. {
  41.         e=0;
  42.         rs=1;//数据模式
  43.         rw=0;//写
  44.         P0=dat;
  45.         delay(3);
  46.         e=1;
  47.         delay(25);
  48.         e=0;        
  49. }
  50. //初始化1602液晶
  51. void init_1602()
  52. {
  53.         delay(1000);
  54.         write_com(0x38);//双行显示,5*7字符
  55.         write_com(0x0c);//不显示光标
  56.         write_com(0x06);//向后显示
  57.         write_com(0x01);//清屏
  58.         delay(1000);
  59. }
  60. //主函数
  61. void main()
  62. {
  63.         init_1602();//1602液晶初始化
  64.         IN1=0;//初始状态电动机停止
  65.         IN2=0;
  66.         ENA=0;
  67.         write_com(0x80);
  68.         write_data('C'); write_data('L');write_data('O');write_data('S');write_data('E');
  69.         while(1)
  70.         {
  71.                 if(key_hy==0) //红外传感器检测到信号
  72.                 {
  73.                          IN1=0;//电动机运行,后备箱车门打开
  74.                          IN2=1;
  75.                          ENA=1;
  76.                          //lcd1602显示ON
  77.                          write_com(0x80);
  78.                          write_data('O'); write_data('P');write_data('E');write_data('N');write_data(' ');
  79.                          delayms(5000);//开启5秒
  80.                          IN1=0;//电动机运停止
  81.                          IN2=0;
  82.                          ENA=0;        
  83.                          //lcd1602显示STOP
  84.                          write_com(0x80);
  85.                          write_data('S'); write_data('T');write_data('O');write_data('P');write_data(' ');
  86.                 }
  87.         }
  88. }
复制代码

所有资料51hei提供下载:
后备箱车门控制系统.rar (34.22 KB, 下载次数: 43)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1052001 发表于 2022-11-26 14:37 来自手机 | 只看该作者
这个红外检测具体是怎么用的呢  检测到信号 然后点击启动吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表