找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一个at89c51单片机的人体红外传感器程序

[复制链接]
跳转到指定楼层
楼主
ID:760638 发表于 2020-6-20 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是前段时间自己做的一个人体
红外程序,用的是c51板子,用到
iic和按键和lcd模块还有蜂鸣器和定时器

单片机源程序如下:
  1. #include<reg51.h>
  2. #include"lcd.h"
  3. #include"time.h"
  4. #include"beep.h"

  5. #define MotorData P1

  6. unsigned char temp;
  7. void disp();
  8. unsigned char phasecw[4] ={0x08,0x04,0x02,0x01};
  9. unsigned char phaseccw[4]={0x01,0x02,0x04,0x08};
  10. unsigned char buffer[]={"hhahhhahhaaaaaa"};
  11. sbit HW=P3^2;

  12. void delay(unsigned int k)
  13. {
  14.     while(k--);
  15. }

  16. void disp(unsigned char *P)
  17. {
  18.         unsigned char i;
  19.         for(i=0;P[i]!='\0';i++)
  20.         {
  21.                 lcd_dat(P[i]);
  22.                 delay(500);
  23.         }
  24. }

  25. void Delay_xms(unsigned int x)
  26. {
  27. unsigned int i,j;
  28. for(i=0;i<x;i++)
  29.   for(j=0;j<112;j++);
  30. }

  31. void MotorCW(void)
  32. {
  33. unsigned char i;
  34. for(i=0;i<4;i++)
  35.   {
  36.   
  37.    MotorData=phasecw[i];
  38.    Delay_xms(4);
  39.   }
  40. }

  41. void MotorCCW(void)
  42. {
  43. unsigned char i;
  44. for(i=0;i<4;i++)
  45.   {
  46.    MotorData=phaseccw[i];
  47.    Delay_xms(4);
  48.   }
  49. }

  50. void time() interrupt 1
  51. {
  52.         unsigned char i;
  53.         TH0=(65536-50000)/256;
  54.         TL0=(65536-50000)%256;
  55.         i++;
  56.         if(i==20)
  57.         {
  58.                 i=0;                          
  59.                 temp++;
  60.         }
  61. }


  62. void MotorStop(void)
  63. {
  64. MotorData=0x00;
  65. }

  66. void main(void)
  67. {
  68.          unsigned int i,a,b;
  69.         lcd_init();
  70.         time_init();
  71.          Delay_xms(50);
  72.          {
  73.                  if(HW==1)
  74.                  {
  75. //                        if(temp>3)
  76. //                        {
  77.                                  for(i=0;i<250;i++)
  78.                                  {
  79.                                            MotorCW();  
  80.                                            beeper();
  81.                                         lcd_cmd(0x82);
  82.                                         disp(buffer);
  83.                                   }
  84.                                           MotorStop();  
  85.                                           a++;
  86.                                           Delay_xms(1500);
  87.                                   for(i=0;i<250;i++)
  88.                                   {
  89.                                            MotorCCW();
  90.                                            beeper();
  91.                                         lcd_cmd(0x82);
  92.                                         disp(buffer);
  93.                                   }         
  94.                                           MotorStop();  
  95.                                           b++;
  96.                                           Delay_xms(1500);
  97. //                         }  
  98.                    }
  99.    }
  100.         if(a+b==2)
  101.         MotorStop();        
  102. }
复制代码

所有程序51hei提供下载:
下期实训人体红外.zip (41.71 KB, 下载次数: 50)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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