找回密码
 立即注册

QQ登录

只需一步,快速开始

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

谁会写红外感应开关的程序

[复制链接]
楼主
ID:1 发表于 2016-4-11 16:36 | 只看该作者
人体红外感应灯程序:http://www.51hei.com/bbs/dpj-41311-1.html
回复

使用道具 举报

沙发
ID:113556 发表于 2016-4-11 20:02 | 只看该作者
#include <reg51.h> #include <intrins.h>  #define uchar unsigned char // 0~255 #define uint  unsigned int  // 0~65535   sfr ADCR = 0xc5; // 控制寄存器 sfr ADDR = 0xc6; // 结果寄存器 sfr P1M0 = 0x91; // 这两个寄存器用来设置 P1口四种状态 sfr P1M1 = 0x92;  void delayms(uchar k);  int AdcVal(uchar n);    // 进行软件滤波后的ADC的值 int AdcValPro(uchar n); // 取出单次ADC的值  int speed;   // 存放红外线感应器值的变化率 int adc;     // 存放红外线感应器的值 int adcComp; // 存放比较电阻器的值  void main(void) {         int curAdc, curSpeed, ssss;         SP = 0X5F;         adc = AdcVal(0); //红外线感应器电压         adcComp = AdcVal(1); //比较电压         speed = 0;         delayms(10);         while(1)         {                 curAdc = AdcVal(0);                 AdcComp = AdcVal(1);                 curSpeed = curAdc - adc;                 ssss = curSpeed - speed;                 if(-25 < ssss && ssss < 25) // 25是判断电压变化过快的依据, 我随便写的, 应该根据实际值确定;                 {                         if(curAdc < curAdcComp && P1_0) P1_0 = 0; // P1_0 为输出连接继电器                         else if(curAdc > curAdcComp && P1_0 == 0) P1_0 = 1;                         adc = curAdc;                                 }                 speed = curSpeed;                 delayms(10);         } } //----------------------------------------- //ADC相关程序 int AdcVal(uchar n)  {         uchar i;         int val = 0;         for(i = 0; i < 8; i++) // 进行8次测量取平均值                 val += AdcValPro(n);         return val >> 3; }  int AdcValPro(uchar n) {         //返回第N个ADC的值从0到7         int val;         P1M0 = 0x03;         P1M1 = 0x03;         ADCR = 0x88 + n;         while((ADCR & 0x10) == 0) ; // 等待转换完成         val  = ADDR;         ADCR = 0x00;         return val; }  void delayms(uchar k) {         uint i,j;         for(i = 0; i < k; i++)                 for(j = 0; j < 100; j++) ; }
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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