历史上的今天
今天是:2024年10月15日(星期二)
2021年10月15日 | 基于51单片机的红外计数器-1602显示
2021-10-15 来源:eefocus
一.硬件方案
本设计的主要原理为:红外发射管发射红外线,红外接收管接收红外线,并且接收管当有红外线照射的时候,电阻比较小,当无线外线照射的时候电阻比较大,这样就可以通过一个电压比较器和一个基准电压进行对比,当有光照的时候,红外接收管电阻比较小,那么和其串联的电压分压就会增大,所以电压比较器将会输出一高电平;当无光照射的时候,红外接收管的电阻比较大,这样电压比较器就会输出一个低电平。这个便是外部计数电平信号,这个电平信号送入AT89C51单片机进行计数控制,在经过扩展、显示驱动完成最后的显示过程。
硬件主要由:STC89C52单片机最小系统、LCD1602显示屏显示、红外避障传感器、按键、蜂鸣器及电源组成;

二.设计功能
(1)按键从左边第一个起,设置键、加键/清零键、减键。单独一个控制为复位按键。
(2)控制芯片使用51单片机,显示设备采用1602液晶;
(3)采用两个红外光电传感器,分别对进入和出去的人进行检测;
(4)计数范围是0-9999;
(5)通过统计进入和出去的人数,算出当前的总人数并进行显示;
(6)可通过按键设置人数上限报警值;
(7)一旦总人数大于或等于设置的人数上限值时,进行声光报警;
(8)可通过复位按键,清零计数;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

四.软件设计
(1)程序流程图

(2)主程序源码(节选)
/******************主程序**********************/
void main()
{
beep = 0; //开机蜂鸣器叫一声
delay_1ms(100);
P0 = P1 = P2 = P3 = 0xff; //初始化IO口
time_init();
init_1602(); //lcd1602初始化
while(1)
{
key(); //按键扫描函数
if(key_can < 10)
{
key_with(); //按键执行函数
}
hw_jin_dis(); //红外计数
hw_chu_dis(); //红外计数
if(menu_1 == 0) //扫描显示倒计时数
{
if(flag_500ms == 1)
{
flag_500ms = 0;
if(num >= set_num)
beep = ~beep; //报警
else
{
beep = 1;
}
}
}
}
}
/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{
static uint value;
TH0 = 0xd8;
TL0 = 0xf0; // 10ms
value ++;
if(value >= 50)
{
value = 0;
flag_500ms = ~flag_500ms;
}
}
史海拾趣
|
测振仪的技术原理及测振仪的技术问题 测振仪的技术原理, 测振仪的技术问题: 现在的测振仪一般都采用压电式的,结构形式大致有二种:① 压缩式;② 剪切式,其原理是利用石英晶体和人工极化陶瓷(PZT)的压电效应设计而成。当石 ...… 查看全部问答> |
|
我们项目要做个自动进样器,由电机驱动运动,要求速度为300mm/s,速度挺快的,所以启动和停止时必须匀加速,在驱动里通过产生高低脉冲使电机运转。 nCounts为脉冲个数,nTmpDelay为延时数 &nbs ...… 查看全部问答> |
|
大家好,有人问到如何实现会唱歌的玩具娃娃,就和市面上的玩具娃娃一样,按一下,会唱首歌,再按一下会笑,再按会说话什么的,因为本人从来不涉及硬件设计知识,所以没办法回答朋友的问题,现在请大家告诉我下这个玩具娃娃是怎么个设计实现原理,谢 ...… 查看全部问答> |
|
我们所使用的Vxworks版本是6.3的, 我想使用 timer_create, timer_connect等API进行设置定时器, 我们进行了设置, 步骤也是跟VxWorks文档介绍的一样, 先调用timer_create, 然后再timer_connect进行处理程序的关联, 最后再调用timer_settime函数进行设 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 最近都在找资料,都没有找到关于液体点滴的优秀作品,哪位大侠有,请发我一份!谢谢! … 查看全部问答> |
|
再提供一个小作品:EK-STM3210E大容量仿真学习套件上市啦! 仿真器 - 内嵌ST-LINK II仿真器,支持STM32F10x标准系列和扩展总线系列Cortex-M3 MCU - USB2.0全速,USB供电 - 支持评估系统或用户目标系统仿真 - 下载速度大于5K/秒 - 通过跳线 ...… 查看全部问答> |
|
用的芯片是STM8S103F3.使用串口1,内部时钟,查询发送,中断或者查询接收疑问:STM8的管教复用是不是,你配置了串口,那么相应的两个管脚IO就自动成为RXD和TXD?现在的把收发两个管脚直接短路,程序里面一直在发送,用万用表测试电压为1.8V左右,估 ...… 查看全部问答> |
|
Beaglebone DIY继续 让板子的继电器动起来和输入(字符驱动)。 relaydrv.c驱动: relaytest.c应用程序: Makefile: 测试时自己设置一下,用到如下命令: mknod /dev/relaytest c 251 0 insmod relaydrv.ko ./relaytest rmmod relaydrv 有几个没响。不知道是否电路原因,到时再查。 串口显示: ...… 查看全部问答> |




