收藏 分享(赏)

单片机课程设计 红外计数器系统的设计.doc

上传人:yoyooong 文档编号:5695330 上传时间:2022-06-13 格式:DOC 页数:10 大小:724KB
下载 相关 举报
单片机课程设计 红外计数器系统的设计.doc_第1页
第1页 / 共10页
单片机课程设计 红外计数器系统的设计.doc_第2页
第2页 / 共10页
单片机课程设计 红外计数器系统的设计.doc_第3页
第3页 / 共10页
单片机课程设计 红外计数器系统的设计.doc_第4页
第4页 / 共10页
单片机课程设计 红外计数器系统的设计.doc_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、题目:红外计数器系统的设计一、 需求分析随着人们生活水平的不断提高,人们越来越追求人性化的事情。计数器是不可或缺的必需品。人数计数器一般应用于商场,卖场,连锁店,超市,药店,博物馆,公务员,展览馆,图书馆,景区,酒吧,公园,电影院,网吧,医院,机场,火车站,客运码头等公共场所。目的是为了提高零售产业,文化娱乐等公共场所的运营管理,客流信息的精准分析统计。该系统可以随时随地掌控不同地区客运流量,从而为日常经营决策的科学性购物和休闲环境的舒适性,人力资源调配合理性提供科学依据。基于51单片机的红外计数器,外传感器感受到外界信息时,产生高低电平,通过软件工程设置单片机内部寄存器,当传感器的高低脉冲倍

2、单片机接收时,单片机产生中断,中断产生进入中断服务程序,通过设置中断程序服务进行技术并通过。Ru口将技术信息传至数码管,数码管显示技术的个数。当需要该系统会对目标进行累积计数,可以对一个场所内的人数进行计数。除了基础的计数功能,还要有峰值报警功能和显示功能。要能设置人数峰值以符合不同的场合人数的容量不同。二、系统总体设计(硬件、软件设计整体框图及组成框图模块介绍)1.需要的硬件:STC52芯片,四位数码管,LCD1602,红外传感器,蜂鸣器。STC52芯片用于实现计数功能,显示功能,报警功能等,是系统的核心硬件之一。四位数码管和LCD1602都是显示人数的硬件,能清楚的展示人数。红外传感器能检

3、测实际的目标数量,并传送信号返回系统,也是该系统的核心硬件。蜂鸣器实现报警功能,当人数到达峰值会对用户报警。2系统的整体设计如下依照需求给红外计数器设置检测模块,显示模块,人数设置模块,报警模块。检测模块红外线计数器检测原理是采用红外对射及反射的两个设备安装在入口区域,一旦有目标经过阻挡了红外线,就会自动计数。但是此计数的效果不是很好,容易导致误差,如并排通过就无法准确计数,只会计数一个。显示模块一位数码管有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一

4、个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合成数字或字母。共阴是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。Lcd也有对应的八个引脚类似于数码管的段码,能控制显示的内容。计数模块当单片机收到传感器的信号后,向IO口传送一个低电平或高电平,程序中设置的参数就会加一或减一。单片机再将这个参数显示在显示模块。自激振荡模块时钟源电路单片机内部具有一个高增益反向放大器,用于构成振荡器。三、系统详细设计(详细电路图、程序流程图、程序)完整代码如下:#include reg51.h#include intrins.h#define uch

5、ar unsigned char#define uint unsigned int#define out P0 unsigned int s10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极09unsigned int count=0,num=0,numm=0;/num为人数上限num1为当前人数/unsigned char yi=set01;/上下限/unsigned char liang=01;/当前人数sbit k0=P20;/蜂鸣器sbit k1=P21;/加sbit k2=P22;/减sbit k3=P23;/复位sbi

6、t k4=P24;/传感器sbit RW=P25;sbit RS=P26;sbit E=P27;sbit A=P34;void lcd_initial(void);void check_busy(void);void write_command(uchar com);void write_data(uchar dat);void string(uchar ad,uchar *s);void initcounter() TMOD=0x06; TH0=256-1; /按键按1下,数码管显示数字1TL0=256-1;ET0=1; EA=1; TR0=1; void delayms(uint j) /

7、延迟ms uchar l;for(;j0;j-)while(-l);l=249;while(-l);l=250; void key()/按键控制函数if(k1=0)/人数上限增加delayms(500);P3=0x0f;delayms(500);P3=0x1f;if(k2=0) /人数上限减少delayms(500);P3=0xf;delayms(500);P3=0x1f;if(k4=0)/红外信号传回delayms(100);P3=0x0f;delayms(100);P3=0x1f;void display()/数码管显示函数/uchar a;if(k1=0)/ P1=snum;/显示设置人

8、数if(k2=0)/ P1=snum;/显示设置人数if(k4=0)/ P1=snumm;/显示当前人数void check_busy(void)/LCDuchar dt;dodt=0xff;E=0;RS=0;RW=1;E=1;dt=out;while(dt&0x80);E=0;void write_command(uchar com)/LCD写入命令check_busy();E=0;RS=0;RW=0;out=com;E=1;_nop_();E=0;delayms(1);void write_data(uchar dat)/LCD写入内容check_busy();E=0;RS=1;RW=0;

9、out=dat;E=1;_nop_();E=1;delayms(1);void lcd_initial(void)/LCD初始化write_command(0x38);write_command(0x0c);write_command(0x05);write_command(0x01);delayms(1);void sting(uchar ad,uchar *s)/ write_command(ad);while(*s0);write_data(*s+);delayms(100);void main()/主函数while(1)initcounter();key();delayms(100);

10、/write_command(0x01);delayms(100);display();/lcd_initial();/string(0x81,HH);/string(0xc1,HH);void timer_isr() interrupt 1 /中断服务函数; 0表示外部中断0,1 定时器0, 2 外部中断1, 3 定时器1, 4 串口中断 if(k1=0) num+;if(k2=0)num-;if(k4=0) numm+;四、系统实现与测试实物如图实际的测试结果lcd无法显示,数码管能显示人数5和人数6,根据测试判断是线路连接不良和代码问题,但其能实现计数功能、检测功能和报警功能。如下所示。五、总结(分点描述本次作品完成程度,对作品的不足和展望)本次设计完成了红外计数器的检测功能、报警功能、计数功能,没能完全实现显示功能。通过这次实验让我认识到我的写程序的能力有待提高,对51单片机还不够熟悉,这直接导致了我的设计不完美。还有仿真的电路与实际的电路连接也不是完全互通,在电脑上能仿真的电路不一定能在现实中实现。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高等教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报