ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:2.75MB ,
资源ID:5696208      下载积分:2 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-5696208.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的红外计数器 (2).doc)为本站会员(yoyooong)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的红外计数器 (2).doc

1、目录一、需求分析-4二、系统总体设计-4三、系统详细设计-5四、系统实现与测试-16五、总结-19六、参考文献-20题目:基于51单片机的红外计数器一、需求分析当今社会飞速发展的格局下,厂家基本采用流水线技术进行产品生产作业,而怎样对其线上的产品进行实时的、有效率的、精确的自动计数成为广大生产厂家十分关注的问题。传统的机械式或电子式计数器(主要是用数字电路集成组件组成)电路比较复杂,元器件数量较多,故障率较高,维修比较困难,而且设置预定数值不太方便,功能不易更改且功能过于单一,适用范围较窄。而基于单片机为核心控制的计数器有着能够实时,精确,可靠,稳定等计数优点已成为广大厂家的首选自动计数的装置

2、。二、系统总体设计红外计数STC89C52数码管显示蜂鸣器图1 总体设计逻辑图原理:电路的指导思想是红外发射管发射红外线,红外接收管接收红外线,并且接收管当有红外线照射的时候,电阻比较小,当无线外线照射的时候电阻比较大,这样就可以通过一个电压比较器和一个基准电压进行对比,当有光照的时候,红外接收管电阻比较小,那么和其串联的电压分压就会增大,所以电压比较器将会输出一高电平;当无光照射的时候,红外接收管的电阻比较大,这样电压比较器就会输出一个低电平。这个便是外部计数电平信号,这个电平信号送入AT89C51单片机进行计数控制,在经过扩展、显示驱动完成最后的显示过程。三、系统详细设计图2 原理图复位是

3、否按下报警数码管显示计数N设定E=X初始化主程序判断N是否=E图3 程序流程图程序:#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include /数码管段选定义 0 1 2 3 4 56 7 8 9uchar code smg_du=0x28,0xee,0x35,0xa2,0xe4,0xa5,0x21,0x4a,0x20,0xa1, 0x60,0x25,0x39,0x26,0x31,0x71,0xff; /断码/数码

4、管位选定义sbit smg_we1 = P34; /数码管位选定义sbit smg_we2 = P35;sbit smg_we3 = P36;sbit smg_we4 = P37;uchar dis_smg8 = 0;bit flag_500ms;sbit beep = P23; /蜂鸣器IO口定义 sbit hw = P24; /红外传感器IO口定义 uchar a_a;uchar menu_1; /设置参数用uint num; /计的数uchar miao,weimiao; / 倒计时数uchar num_value; / 用做中间的变量bit flag_num_en ; / 倒计时器开始

5、计时使能标志位uchar set_num = 80; / 设置倒计时数的启始值 #define RdCommand 0x01 /定义ISP的操作命令#define PrgCommand 0x02#define EraseCommand 0x03 #define Error 0#define Ok 1#define WaitTime 0x07 /定义CPU的等待时间sfr ISP_DATA=0xe6; /寄存器申明sfr ISP_ADDRH=0xe5;sfr ISP_ADDRL=0xe4;sfr ISP_CMD=0xe3;sfr ISP_TRIG=0xe2;sfr ISP_CONTR=0xe1;

6、/*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j 8);/* 地址赋值 */ ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); ISP_CMD = ISP_CMD | RdCommand; /* 写入读命令 */ ISPgoon(); /* 触发执行 */ ISP_IAP_disable(); /* 关闭ISP,IAP功能 */ EA = 1; return (ISP_DATA); /* 返回读到的数据 */* = 扇区擦除 = */void SectorErase

7、(unsigned int sector_addr) unsigned int iSectorAddr; ISP_CMD = ISP_CMD | EraseCommand; /* 擦除命令3 */ iSectorAddr = (sector_addr & 0xfe00); /* 取扇区地址 */ ISP_ADDRH = (unsigned char)(iSectorAddr 8); ISP_ADDRL = 0x00; ISPgoon(); /* 触发执行 */ ISP_IAP_disable(); /* 关闭ISP,IAP功能 */* = 字节写 = */void byte_write(uns

8、igned int byte_addr, unsigned char original_data) EA = 0; SectorErase(byte_addr); ISP_ADDRH = (unsigned char)(byte_addr 8); /* 取地址 */ ISP_CMD = ISP_CMD & 0xf8; /* 清低3位 */ ISP_DATA = original_data; /* 写入数据准备 */ ISP_CMD = ISP_CMD | PrgCommand; /* 写命令2 */ ISPgoon(); /* 触发执行 */ ISP_IAP_disable(); /* 关闭I

9、AP功能 */ EA =1;/*把数据保存到单片机内部eeprom中*/void write_eeprom()SectorErase(0x2000);byte_write(0x2000, set_num % 256);byte_write(0x2001, set_num / 256);byte_write(0x2002, num % 256);byte_write(0x2003, num / 256);byte_write(0x2059, a_a);/*把数据从单片机内部eeprom中读出来*/void read_eeprom()set_num = byte_read(0x2001);set_

10、num = 8;set_num |= byte_read(0x2000);num = byte_read(0x2003);num = 8;num |= byte_read(0x2002);a_a = byte_read(0x2059);/*开机自检eeprom初始化*/void init_eeprom()read_eeprom();/先读/*数码位选函数*/void smg_we_switch(uchar i)switch(i)case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 =

11、1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;/*定时器0初始化程序*/void time_init() EA = 1; /开总中断TMOD = 0X01; /定时器0、工作方式1ET0 = 1; /开定时器0中断 TR0 = 1; /允许定时器0定时/*数码显示函数*/void di

12、splay()uchar i;for(i=0;i= 2)menu_1 = 0;dis_smg0 = smg_dunum % 10;dis_smg1 = smg_dunum / 10 % 10;dis_smg2 = smg_dunum / 100 % 10;dis_smg3 = smg_dunum / 1000 % 10;if(menu_1 = 0) /倒计时器按键操作开始 暂停 if(key_can = 2) /清零num = 0;dis_smg0 = smg_dunum % 10;dis_smg1 = smg_dunum / 10 % 10;dis_smg2 = smg_dunum / 10

13、0 % 10;dis_smg3 = smg_dunum / 1000 % 10;if(menu_1 = 1)/设置倒计时器开始数if(key_can = 2)set_num + ;/ 设置数加if(set_num 9999)set_num = 9999;/最大加到99if(key_can = 3)set_num - ;/ 设置数减if(set_num = 9999)num = 9999;dis_smg0 = smg_dunum % 10;dis_smg1 = smg_dunum / 10 % 10;dis_smg2 = smg_dunum / 100 % 10;dis_smg3 = smg_d

14、unum / 1000 % 10;write_eeprom(); /保存数据else value = 1;/*主程序*/ void main()beep = 0; /开机蜂鸣器叫一声delay_1ms(100);P0 = P1 = P2 = P3 = 0xff; /初始化IO口time_init();init_eeprom(); /把设置的参数从eeprom内读出来dis_smg0 = smg_dunum % 10;dis_smg1 = smg_dunum / 10 % 10;dis_smg2 = smg_dunum / 100 % 10;dis_smg3 = smg_dunum / 1000

15、 % 10;while(1)key(); /按键扫描函数if(key_can = set_num)beep = beep; /报警else beep = 1;display(); /数码管显示函数/*定时器0中断服务程序*/void time0_int() interrupt 1static uint value;TH0 = 0xd8;TL0 = 0xf0; / 10msvalue +;if(value = 50)value = 0;flag_500ms = flag_500ms;四、系统实现与测试图4 仿真图1图5 仿真图2图6 实物图1(通电)图7 实物图2(计数到11)1、设值为10(当

16、红外管检测人数到达10时,蜂鸣器会报警,并且LED会闪烁)2、实物与仿真无较大差别3、但是实物由于元件的问题,按键-和按键复位已经坏了,因此这里将复位键调到按键+,按键-失灵五、总结作品的完成程度:可以实现进多少人的计数,通过数码管显示;可以通过按键设置人数上限,当人数到达设置上限时,LED灯亮、蜂鸣器闪烁。不足和展望:1、由于时间紧迫,加上自己的疏忽,原理图转为PCB时,DC底座没有看好封装,导致DC底座只能外接,给红外管的VCC只能改为用跳线。2、买元器件时,淘宝商家发错元件,因此数码管的型号不对,因此数码管也只能用杜邦线外接,导致数码管接触有点不稳定。3、因为板子反复修改,部分元件损坏,导致设置按键减失灵。4、没有实现对人数进出的同时检测,只能实现单边。六、参考文献1 王松德,梁会琴,王丹红外线计数器的设计与制作J.农机化研究,2005,5 期.2 谢洪用单片机控制红外编码探测障碍物J.单片机与嵌入式系统应用,2007,8 期.3 戴培山,冯成德,刘栋基于keil+c51 的红外遥控器解码设计J.自动化与仪器仪表,2003,6 期.4 梅海峰红外线光电计数器的设计及制作J.大氮肥,2005,28(5).5 铁牛简易红外线人数统计器J.实用影音技术,2005,9 期.6 杨汉祥,张琦红外计数器的设计J.科技广场,2009 ,7 期.

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


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

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

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