历史上的今天
今天是:2024年10月22日(星期二)
2019年10月22日 | 单片机人体红外感应自动门电路
2019-10-22 来源:51hei
基于51单片机和人体红外感应模块的自动门程序设计资料分享给大家
Altium Designer画的自动门原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
#include #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 unsigned char code zheng[4]={0x08,0x04,0x02,0x01};//正转表格 unsigned char code fan[4] ={0x01,0x02,0x04,0x08};//反转表格 uchar flag_start ; //启动标志位 1为起动步进电机 否则关闭电机 uchar flag_z_f; //正反标志位 0为顺时钟 1为逆时史上转 uint flag_moshi; sbit led1 = P2^0; //指示灯 sbit led2 = P2^1; sbit led3 = P2^2; sbit led4 = P2^3; sbit hw1 = P2^4; //红外感应 sbit hw2 = P2^5; //红外感应 uint bjdj_value; //步进电机的量 uchar flag_sj,flag_zdg; //延时关门时间 打开和关闭的变量 void Delay(unsigned int i)//延时 { while(--i); } /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i } uchar key_can; /********************独立按键程序*****************/ void key() { static uchar key_new; if((P3 & 0xf0) != 0xf0) //按键按下 { Delay(1000); //按键消抖动 if(((P3 & 0xf0) != 0xf0) && (key_new == 1)) { //确认是按键按下 key_new = 0; switch(P3 & 0xf0) { case 0xe0: key_can = 1; break; //得到按键值 case 0xd0: key_can = 2; break; //得到按键值 case 0xb0: key_can = 3; break; //得到按键值 case 0x70: key_can = 4; break; //得到按键值 } } } else //按键松开 key_new = 1; } void bujindj() //步进电机函数 { static uchar i; if(flag_z_f != 0) { if(flag_z_f == 1) //开 { if(bjdj_value >= 512) { flag_z_f = 0; flag_zdg = 1; }else bjdj_value ++; } if(flag_z_f == 2) //关 { if(bjdj_value <= 1) { flag_z_f = 0; bjdj_value = 1; }else { bjdj_value --; } } for(i=0;i<4;i++) //4相 { if(flag_z_f == 1) //开 { P1=zheng[i];// // P0=fan[i]; } else if(flag_z_f == 2)//关 { P1=fan[i];// // P0=zheng[i]; } } } } /******************主程序**********************/ void main() { static unsigned char value; while(1) { key(); if(key_can < 10) { if(key_can == 1) //自动模式 { flag_moshi = 0; flag_z_f = 0; led4 = 0; led3 = 1; //指示灯 } if(key_can == 2) //手动模式 { flag_moshi = 1; flag_z_f = 0; led4 = 1; led3 = 0; //指示灯 } if(key_can == 3) //手动关 { flag_z_f = 2; led2 = 0; led1 = 1; //指示灯 } if(key_can == 4) //手动开 for(j=0;j<120;j++);
史海拾趣
|
IEEE 802.11a :使用5GHz频段,传输速度54Mbps,与802.11b不兼容 IEEE 802.11b :使用2.4GHz频段,传输速度11Mbps IEEE 802.11g :使用2.4GHz频段,传输速度54Mbps,可向下兼容802.11b 目前IEEE 802.11b最常用,但IEEE 802.11g更具下一代标准 ...… 查看全部问答> |
|
我在网上下载了一个源代码是基于CC2430的zigbee 点对点的实例通信代码,但是看不懂, 能不能帮我解释一下程序的大致框架和实现原理,诸如 hal层 cul层 是实现什么的,程序如何工作的?十分感谢了 TI(德州仪器公司)的CC2430芯片的库函数以及一些 ...… 查看全部问答> |
|
串口0为片内自带的,初始化的时候,U0FCR这个寄存器总是写不进去值,请教高手~~~ 附代码:[code] INT8U UART0_Init( INT32U baudrate) { INT32U Fdiv; PINSEL0 &= 0 ...… 查看全部问答> |
|
对于TI的M3系列的开发板,普及率还不是很高,为什么这么说?我主要参考了淘宝里的开发板的销售情况,发现其他公司,尤其是现在比较热的××公司,你只要到淘宝上一搜,遍地都是。这里面良莠不齐,难免 ...… 查看全部问答> |
|
HARDWARE DESIGN TECHNIQUES Prototyping Analog Circuits Evaluation Boards Noise Reduction and Filtering for Switching Power Supplies Low Dropout References and Regulators EMI/RFI Considerations Sensors and Cable Shielding … 查看全部问答> |
|
MSP430: Trouble Writing Memory Block at 0x0 on Page 0 of Length 0x4: Could not perform access, BSL memory segments are protected. MSP430: GEL: File: D:\\workspace_v5_2\\12864\\Debug\\12864.out: Load failed.… 查看全部问答> |
|
经网友两次指点,我终于找到了这里:求温度和流量传感器得到的信息怎么显示在液晶屏上 我在传感器板块发了这么一个帖子(开始我连发什么板块都不知道,觉得用到了传感器,所以应该发传感器吧) ------------------------------------------------------------------------------------------ 我从来没搞过开发,不过想自己DIY点东西 ...… 查看全部问答> |




