- 568.22 KB
- 24页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'-----------------------------------------------------频率报警器-------------------------------制作人—陈译--项目报告书频率监控报警器内部电路设计制作人:陈译制作时间:2010年5月23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--一:说明以及功能:说明:报警器电路时广泛使用的电路,在很多场合都有应用,本制作是基于51核心的单片机而来的频率报警器,在频率低于4000HZ的时候能够很好的测量出来,误差少,主要用于汽车发动机的频率检测以及报警工作,器件都是常见器件,成本低并且稳定,性能好。本频率监控报警器功能:1.能够准确测试到4000HZ以下的频率(由于成本问题,经过测试,当频率大于4000HZ的时候误差较大,特此说明)。2.当被测频率低于上线频率(上线频率可以自行设置,设置好后自动存储在eerom中)的时候,MCU处于监控阶段,2个继电器不工作(P1_0=0;P1_1=0;)。3.当被测频率在小于上线频率大于上线频率减去250这个区间当中,继电器0(P1_0=0)不工作,继电器1(P1_1=1)工作,并且工作10秒后停止30秒,注意这个动作仅仅在小于上线频率大于上线频率减去250这个区间内生效,其余区间按照内部无效。4.当被测频率大于上限频率时继电器1(P1_1=0)不工作,而继电器0在开始进入该区间(频率大于上限频率)的前5秒不工作,5秒后工作(P1_0=1),并且工作15秒后又停止工作20秒。而后又工作,按照此规则重复执行。注意:这些规定都是根据具体工作环境所设置的,因此比较繁琐。二:设计思路分析:1.在实际的基于单片机的频率测试中,通常采用定时器,计数器以及一些外围集成电路构成一个频率计。本制作考虑成本问题并没有增加外围的有关测试的器件,例如功放电路和滤波整形电路,只利用单片机的计数器和定时器功能测得频率。23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--1.频率的概念为信号在1秒钟的变化次数,因此我们就利用定时器定时1秒,然后读取计数器(该计数器设置为下降沿出发,既信号的下降沿来了就计数一次)的值,该值经过特殊处理即为频率值(公式:hz=h_count*255+l_count+count*65535;其中变量hz为当前所测频率值,h_count为当前1秒钟计数值的高位,l_count为其地位,count为当前计数值)。2.我们利用24c02这个器件来存储事先设置好的频率上限值,这个器件是根据的iic总线规定的接口实现读取操作的,在稍后会做介绍。3.该仪器的显示电路部分,我们采用的是1602接到MCU的P0口,用该器件的好处有方便操作,节约成本,显示效果佳。4.电源部分,因为我们的工作环境是在汽车内,又因为汽车的电源为24v所以我们设计了DC-DC模块,把24v电源转成5v的TTL电平以提供MCU和继电器以及液晶的电源需求。5.输入部分,我们用了3个按钮,1个用于复位,复位后的频率为(3000HZ)工作环境需求,另外两个用于上线频率的设置。三:硬件电路设计以及器件介绍:1.整体电路原理图MCU以及DC-DC部分:23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--1.主要器件:stc80c51它能够满足要求价格也便宜,易于获取,P1_0用于控制继电器0,P1_1用于继电器2控制,P2_0以及P2_1用于按键输入,P0_0到P0_1用于液晶的数据端,P3_4用于液晶的Rs端,P3_6用于液晶的rw端,P3_7用于液晶的片选,P2_2用于24c02的scl端,P2_4用于24c02的sdl端。1602液晶下面截图为其引脚功能跟标号23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--下面截图为1602的读写操作下面截图为本制作主要用到的该器件的指令23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--24c02器件AT24C02芯片DIP封装,其中:SDA、SCL:I2C总线接口;A2~A0:地址引脚;WP:写保护引脚,WP接VSS时,禁止写入高位地址,WP接VDD时,允许写入任何地址;VDD、VSS电源端、接地端。AT24C02工作原理由于80C51芯片内部无I2C总线接口,因此只能采用虚拟I2C总线方式,并且只能用于单主系统。即80C51作为I2C总线主器件,扩展器件作为从器件,从器件必须具有I2C总线接口。主器件80C51的虚拟I2C总线接口可用通用I/O口中任一口线充任。这里的主器件为AT89C2051,从器件为AT24C02。AT24C02具有256×23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--8(2K)bit的存储容量,页写入字节数为8。通常EEPROM器件写入时总需要一定的时间(5ms~10ms),因此在写入程序中无法连续写入多个数据字节。一次写入EEPROM的字节数不大于器件的页写入字节数时,可按通常RAM的写入速度将数据装入EEPROM的数据寄存器中,随后启动自动写入定时控制逻辑,经过5ms~10mS的时间,自动将数据寄存器中的数据同步写入EEPROM的指定单元。这样只要一次写入的字节数不多于页写入容量,总线对EEPROM的操作可视为对静态RAM的操作,但要求下次数据写入操作在5ms~10ms之后进行。AT24C02器件地址格式如图(2)所示。其中DA3~DA0位为器件固有地址编码,由工厂给定,为1010,不能更改。A2~A03位引脚地址用于相同地址器件的识别。本电路为000。R/W为数据传送方向。R/W=1时,主机接(读);R/W=0时,主机发送(写)。 D7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/W器件固有地址编码器件引脚地址读/写图(2)I2C总线器件SLA继电器,本制作中用到的继电器电源为5v由于51单片机的驱动能差了,所以我们在继电器前加入三极管,放大电流,提高单片机的驱动能力。四:软件设计23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--主程序框图说明:}单片机内部环境初始化液晶初始化读取存储的上线频率在液晶上打印一系列固定字符进入while循环并且读取当前频率读取按键是否当前频率大于上线频率是继电器1不工作,而继电器0在开始进入该区间的前5秒不工作,5秒后工作,并且工作15秒后又停止工作20秒当前频率在小于上线频率大于上线频率减去250这个区间当中继电器0不工作,继电器1工作,并且工作10秒后停止30秒否否是继电器都不工作监控频率中断程序框图23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--定时器0中断触发计时到1秒读取当前定时器1的计数一系列时间时间变量的增加外部中断0触发向液晶打印信息,向24c02写入3000(复位)定时器1触发计数+1下面是程序源码:#include#include"intrins.h"#defineuintunsignedint#defineucharunsignedchar#defineOP_READ0xa1//器件地址以及读取操作,0xa1即为10100001B#defineOP_WRITE0xa0//器件地址以及写入操作,0xa1即为10100000BsbitP1_0=P1^0;sbitP1_1=P1^1;sbitLcdRs=P3^4;sbitLcdRw=P3^6;sbitLcdEn=P3^7;sbitSCL=P2^2;sbitSDA=P2^4;//sbitP2_0=P2^5;ucharstr[8];ucharstr1[5];unsignedlongintcount=0,h_count=0,l_count=0,hz=0;unsignedintlimit=0;uchartemp;charlimithigh,limitlow;uchartime;uchardel=0;uchardel1=0;charge=0,shi=0,bai=0,qian=0;voiddelay(intz)23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--{intx,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}#defineLCD_COMMAND0//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏#defineLCD_HOMING0x02//光标返回原点voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0;delay(5);P0=input;LcdEn=1;delay(5);LcdEn=0;delay(5);}//显示#defineLCD_SHOW0x04//显示开#defineLCD_HIDE0x00//显示关#defineLCD_CURSOR0x02//显示光标#defineLCD_NO_CURSOR0x00//无光标#defineLCD_FLASH0x01//光标闪动#defineLCD_NO_FLASH0x00//光标不闪动voidLCD_SetDisplay(unsignedcharDisplayMode){LCD_Write(LCD_COMMAND,0x08|DisplayMode);}//设置#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00//default23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_SetInput(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}voidLCD_Initial(){//en=1;LcdEn=0;LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC递增,画面不动}//液晶字符输入的位置************************voidGotoXY(unsignedcharx,unsignedchary){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}//将字符输出到液晶显示voidPrintf(unsignedchar*str){while(*str!=" "){LCD_Write(LCD_DATA,*str);str++;}}//24c02voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}23-----------------------------------------------------项目设计书----------------------------------------------------------------
-----------------------------------------------------频率报警器-------------------------------制作人—陈译--voiddelaynms(unsignedcharn){unsignedchari;for(i=0;i