您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机课程设计报告——智能数字频率计
单片机原理课程设计报告题目:智能数字频率计设计专业:信息工程班级:信息111学号:***姓名:***指导教师:***北京工商大学计算机与信息工程学院1、设计目的(1)了解和掌握一个完整的电子线路设计方法和概念;(2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。(3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用:包括放大器、滤波器、比较器、计数和显示电路等。(4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。2、设计要求(1)基本要求设计指标:1.频率测量:0~250KHz;2.周期测量:4mS~10S;3.闸门时间:0.1S,1S;4.测量分辨率:5位/0.1S,6位/1S;5.用图形液晶显示状态、单位等。充分利用单片机软、硬件资源,在其控制和管理下,完成数据的采集、处理和显示等工作,实现频率、周期的等精度测量方案。在方案设计中,要充分估计各种误差的影响,以获得较高的测量精度。(2)扩展要求用语音装置来实现频率、周期报数。(3)误差测试调试无误后,可用数字示波器与其进行比对,记录测量结果,进行误差分析。(4)实际完成的要求及效果1.测量范围:0.1Hz~4MHz,周期、频率测量可调;2.闸门时间:0.05s~10s可调;3.测量分辨率:5位/0.01S,6位/0.1S;4.用图形液晶显示状态、单位(Hz/KHz/MHz)等。3、硬件电路设计(1)总体设计思路本次设计的智能数字频率计可测量矩形波、锯齿波、三角波、方波等信号的频率。系统共设计包括五大模块:主芯片控制模块、整形模块、分频模块、档位选择模块、和显示模块。设计的总的思想是以AT89S52单片机为核心,将被测信号送到以LM324N为核心的过零比较器,被测信号转化为方波信号,然后方波经过由74LS161构成的分频模块进行分频,再由74LS153构成的四选一选择电路控制档位,各部分的控制信号以及频率的测量主要由单片机计数及控制,最终将测得的信号频率经LCD1602显示。各模块作用如下:1.主芯片控制模块:单片机AT89S52内部具有2个16位定时/计数器T0、T1,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。利用单片机的计数器和定时器的功能对被测信号进行计数。以AT89S52单片机为控制核心,来完成对各种被测信号的精确计数、显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。2.整形模块:整形电路是将一些不是方波的待测信号转化成方波信号,便于测量。本设计使用运放器LM324连接成过零比较器作为整形电路。3.分频模块:考虑单片机利用晶振计数,使用11.0592MHz时钟时,最大计数速率将近500kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。本设计使用的分频芯片是74LS161实现4分频及16分频。4.档位选择模块:控制74LS161不分频、4分频或者16分频,控制芯片是74LS153。5.显示模块:编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示,本设计选用LCD1602。(2)测频基本设计原理所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T(右图3-1所示)。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。利用单片机的定时/计数T0、T1的定时、计数功能产生周期为1s的时间脉冲信号,则门控电路的输出信号持图3-1续时间亦准确地等于1s。闸门电路由标准的秒脉冲信号进行控制,当秒脉冲信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒脉冲信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。(2)系统框图本智能数字频率计系统框图如图3-2所示图3-2智能数字频率计系统框图(3)单片机部分P0口经上拉后做LCD数据接口P2.1~P2.3作为LCD控制端口P2.4~P2.5作为分频选择端口P3.5作为被测信号输入端口P3.2~P3.4作为开关控制端口(对应电路图中K1,K2,SET)图3-389D52单片机部分电路(4)分频部分74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。其管脚图如图3-4所示:图3-474HC161图3-574HC153管脚图74HC153是一个双4选1数据选择器,其管脚图如图3-5所示:74LS161对整形后的防波信号进行分频,Q1为四分频输出,Q3为16分频输出。未经分频、经过四分频和经过16分频的三路信号作为74LS153的一个4选1数据选择器低三位输入,由单片机控制选择分频数,然后再送单片机内部计数器T1(如图3-6)。图3-6分频、选择分频档位电路图(5)LCD显示部分LCD显示,1602的八位数据I/O口与单片机的P0口相连,读写控制端接P2.0-P2.2口。三个按键中,设置键接P3.2单片机按外部中断0接口,当按键按下后,置P3.2口低电平,单片机中断。S1、S2为频率/周期、闸门时间加/减选择按键(如图3-7)。图3-7LCD显示部分电路图4、软件设计(1)主程序流程图设计本次程序设计采用的是C语言程序设计,其设计流程图4-1所示:图4-1主程序流程图(2)子程序流程图设计1显示程序:LCD显示程序设计流程如图4-2所示:图4-2显示程序流程图2频率测量程序框图:频率测量程序的整体架构如图4-3所示:图4-3频率测量框架图(3)中断服务流程图INT0中断流程图如图4-4所示:图4-4INT0中断流程图(4)程序代码#includeAT89x52.h#includestdio.h#includemath.h#includeintrins.hfloatf;//频率floatp;//周期floatsj;//闸门时间charidatabuff[20];charflag=0;//频率、周期选择标志位charxs=0;//设置闸门时间结束后是否显示结果的标志位unsignedcharm=0,n=0,yichu=0,fenpin;//m定时中断次数n计数中断次数yichu判断是定时//器还是计数器溢出#defineKey_SetP3#defineK10xf7//11110111P33#defineK20xef//11101111P34#defineNO_Set0xff#defineFreq0#definePeri1sbitB153=P2^4;sbitA153=P2^3;sbitP17=P3^4;sbitP16=P3^3;sbitP35=P3^5;sbitSet=P3^2;unsignedcharLCD_Wait(void);voidLCD_Write(bitstyle,unsignedcharinput);voidLCD_SetDisplay(unsignedcharDisplayMode);voidLCD_SetInput(unsignedcharInputMode);voidLCD_Initial();voidGotoXY(unsignedcharx,unsignedchary);voidPrint(unsignedchar*str);voidC52_Initial();voidDelay(unsignedintt);voiddisplay(floatf);voidcepin();voidpanduan();voidtimedisplay(floatsj);voidTime_Set1();voidTime_Set2();voidt0();voidt1();/*****模块名称LCD1602显示程序******//***********************端口定义***********************************/sbitLcdRs=P2^0;sbitLcdRw=P2^1;sbitLcdEn=P2^2;sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口/************************内部等待函数********************************/unsignedcharLCD_Wait(void){LcdRs=0;//寄存器选择输入端1:数据0:指令LcdRw=1;_nop_();//RW:为0:写状态;为1:读状态;LcdEn=1;_nop_();//使能输入端,读状态,高电平有效;写状态,下降沿有效LcdEn=0;returnDBPort;}/**********************向LCD写入命令或数据***************************/#defineLCD_COMMAND0//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏#defineLCD_HOMING0x02//光标返回原点voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();//注意顺序LcdEn=1;_nop_();//注意顺序LcdEn=0;_nop_();LCD_Wait();}/********************设置显示模式*********************************/#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//default#defineLCD_MOVE0x01//画面可平移#defineLCD_NO_MOVE0x00//defaultvoidLCD_SetInput(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}/******************初始化LCD**************************************/voidLCD_Initial(){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(unsignedc
本文标题:单片机课程设计报告——智能数字频率计
链接地址:https://www.777doc.com/doc-5575984 .html