数字频率计设计报告_第1页
数字频率计设计报告_第2页
数字频率计设计报告_第3页
数字频率计设计报告_第4页
数字频率计设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、简易数字频率计的设计报告 撰写人 :XXX 工 号 :XXX 日 期 :2009年7月30日第一部分 MCU芯片选型 1.1 79F166芯片介绍 SH79F166是一种高速高效率8051可兼容单片机。在同样振荡频率下,较之传统的8051芯片它有着运行更快速的优越特性。SH79F166保留了标准8051芯片的大部分特性,如:内置256字节RAM,1个UART和外置中断INT0,INT1。此外,SH79F166还集成了外部256字节RAM,可兼容8052芯片的16位定时器/计数器(Timer2)。该单片机还包括适合于程序和数据的16 K字节Flash块。SH79F166不仅集成了如EUART和S

2、PI等标准通讯模块,还集成了LCD、LED驱动器,具有内建比较功能的ADC,PWM定时器等实用模块。此外,芯片还带有低功耗工作方式等。 1.2 选取芯片的依据 本设计的要求是制作一个简易的数字频率计,根据设计要求,可以用到79F166芯片的如下特征:一内建LED驱动LED驱动器包含一个控制器,一个占空比发生器及4 /8 个COM输出引脚和8个Segment输出引脚。支持1/4 占空比和1/8占空比电压驱动方式。通过DISPSEL位对驱动模式进行选择。控制器由显示数据RAM存储区和一个占空比发生器组成。LED SEG1-SEG8脚还可以当作I/O口使用。当DISPSEL位置1时,LED功能有效。

3、P1SS寄存器和P3SS寄存器分別用于控制LED_SEG1-8,LED_C1 LED_C8和I/O端口模式的选择。二SH79F166内建看门狗定时器(WDT),可通过对其特殊功能寄存器的设置,增强系统的抗干扰能力,便于程序的调试,减小软件程序跑飞引起的麻烦。三具有丰富的定时器,定时器不仅可以实现对输入脉冲的计数,还可以工作于定时状态,实现定时采集。与传统8052定时器相比,SH79F166除了定时器2功能类似之外,新增了定时器3和定时器4,使得定时器在实现上更加简单。四SH79F166具有丰富的中断源:5个外部中断(INT0,INT1,INT2, INT3,INT4),INT4共4个中断源(I

4、NT40-43共用一个向量地址),3个定时器中断(定时器2,3和4),1个EUART中断,ADC中断,SPI中断和PWM中断(3个PWM中断源共用一个中断向量地址)和SCM中断。五SH79F166整合带数字比较功能的ADC模块,ADC模块整合数字比较功能可以比较ADC中的模拟输入的值与数字值。如果允许数字比较功能(在ADCON 寄存器中的EC位置1),并且ADC模块使能 (在ADCON寄存器中的ADON位置1),只有当相应的模拟输入的数字值大于寄存器中的比较值(ADDH/L)时,才会产生ADC中断。当GO/置1时,数字比较功能会持续工作,直到GO/清0。这一点与模数转换工作方式不同。 第二部分

5、 设计规格书 2.1 系统特性l 采用与基于单片8bit的增强型微处理器SH79F166。l 工作电压:5V。l 系统时钟:12MHz。l 采用定时器2实现对脉冲输入的计数。l 采用定时器3实现定时采集功能。l 采用定时器4实现溢出闪烁功能。l I/O口为21CMOS双向引脚。l 输入引脚内建上拉电阻。l 通过写内部RAM地址实现LED8段数码管显示功能。l CPU机器周期为1个振荡时钟周期。 2.2 硬件系统的实现 图1 系统的电路原理图 系统的电路原理示意图如图1所示。主要包含电源电路,LED显示电路,振荡电路,信号采集处理电路和JTEG接口电路。 其中振荡电路采用的是外部12MHz晶振作

6、为本系统的时钟源。LED显示电路使用了2个2位共阴极8段数码显示管用于显示采集到的频率值。由于SH79F166带有LED驱动,通过芯片内部硬件电路实现对LED的动态扫描,故而可以直接连接到LED数码管引脚。 信号的采集处理电路首先通过电解电容隔直处理,去除了信号中包含的直流成份,交流信号又通过三极管的放大进入单片机的计数引脚,其中放大电路主要工作在于静态工作点的设置。驱动电路的简图如图2所示:图2 信号处理电路设计图 信号处理电路首先通过隔直电容除去了原始测量信号中的直流偏置成分,电阻R3,R4用于设置三极管的静态工作点,保证三极管的集电极电压在2.5V左右,电阻R5和R6构成放大倍数,使输入

7、小信号时可以得到较大的输出电压。电容C9为旁路电容。 2.3 抗干扰设计系统的硬件部分采取的抗干扰措施如下。1. 为达到很好的抗噪声效果,系统中将晶振,复位电路等容易产生噪声的部分相互靠近,经电容退耦紧靠MCU,且避免在晶振下方走信号线。2. 电源输入接104电容及10100uF电解电容进行退耦。3. 面包板的走线按照从输入到输出的走向走直线,尽量避免环形的走向。 第三部分 使用说明书 3.1 系统的主要功能和特性系统的功能是检测2020KHz的正弦波信号频率,输入信号参数Vpp=0.23V、bias=-1.51.5V。检测到的频率值通过四位有效位显示,分两档计频,当输入频率在1Hz999Hz

8、范围时,显示为0.0010.999;当输入频率在1KHz19.99Hz范围时,显示为01.0019.99;当没有频率信号输入时,显示0.000;当输入频率大于19.99KHz(不包含19.99Hz),显示19.99Hz并保持闪烁(闪烁频率为2Hz)。 3.2 系统的设置 系统使用简单方便,不需要通过外部按键控制,只要让系统上电,将信号从输入端输入,系统自动识别信号频率,并以相应的显示方式进行显示,显示刷新频率为1秒。第四部分 软件设计4.1 软件流程图主程序流程图显示子程序定时器2、3中断子程序第五部分 测试报告5.1 系统测试1. 仪器使用:RIGOL DG2041信号发生器,9V直流稳压电

9、源2. 输入信号频率在119.99KHz,Vpp=210mV3V,bias=-1.5+1.5V时显示均正常,当信号幅值Vpp正好位于200mV时,信号频率采集发生偏差,此时所测信号不准。5.2 方案改进在200mV的Vpp时,信号在放大后并不是理论上的20倍,得到的是一个Vpp将近3V的没有失真的正弦波信号,由于波峰在静态工作点时刚好在单片机所能识别的高电平处,因而造成小部分峰值没有被单片机识别,得到的频率信号就小于实际频率值。方案改进的办法可以通过增加一个比较器,如LM339,比较器一端的接参考电平2.5V,令一端接三极管集电极输出信号,由于信号的Vpp达到3V之多,比较器可以很好的分辨信号

10、频率,由于时间限制,此部分可以在以后补上。 第六部分 软件程序#include <sh79f166.h>typedef unsigned char UCHAR;typedef unsigned int UINT;unsigned char code LED_TAB = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x00; /0123456789'space'/*数码管显示RAM设置*/unsigned char xdata COM1 _at_ 0x01E0;unsigned char xdata COM2

11、_at_ 0x01E1;unsigned char xdata COM3 _at_ 0x01E2;unsigned char xdata COM4 _at_ 0x01E3;/*函数声明部分*/void initialMCU(void);void LEDDisplay(UINT value);void EnableTimer2(void);void DisableTimer2(void);void EnableTimer3(void);void DisableTimer3(void);/*全局变量定义部分*/bit Over20k_Flag;bit StartSample_Flag;bit Ov

12、er65535_Flag;UINT Disp_F_data;void main()initialMCU();while(1)if(StartSample_Flag)StartSample_Flag = 0;EnableTimer2();EnableTimer3(); LEDDisplay(Disp_F_data);void initialMCU(void)/CLOCK settingCLKCON = 0x00; /fsys = OSC = 12MHz/LED settingDISPCON = 0xC0; DISPCLK0 = 0x6E;DISPCLK1 = 0x01;P1SS = 0xFF;P

13、3SS = 0x0F;/T3 T4 settingINSCON = 0x40; /选择特殊功能寄存器页1TL3 = 0xE5; /定时1s 0xFFFF-1s/(256/12MHz) = 0x48E5TH3 = 0x48;T3CON = 0x34; /0011 0100 256分频,T3开始计数TL4 = 0x73; /定时0.5 0xFFFF-0.5s/(256/12MHz) = 0xA473TH4 = 0xA4;T4CON = 0x32; /0010 0010 256分频,T4开始计数INSCON = 0x00; /选择特殊功能寄存器页0IPL1 = 0x50;EA = 1; /打开总中断

14、StartSample_Flag = 1;Over65535_Flag = 0;void LEDDisplay(UINT value) UINT disp_num = value;if(disp_num>=19992)IEN1 |= 0x40; /打开定时器4中断if(Over20k_Flag)COM1 = LED_TAB1; /display "19.99"COM2 = LED_TAB9 | 0x80;COM3 = LED_TAB9;COM4 = LED_TAB9;elseCOM1 = LED_TAB10; /display " "COM2 =

15、LED_TAB10;COM3 = LED_TAB10;COM4 = LED_TAB10;else IEN1 &= 0xBF; /禁止定时器4中断if(disp_num<1000) /1999HzCOM1 = LED_TAB0 | 0x80;COM2 = LED_TABdisp_num/100;COM3 = LED_TAB(disp_num%100)/10;COM4 = LED_TABdisp_num%10;else /1K20KHzif(disp_num>=10000)disp_num = (disp_num+8)/10;elsedisp_num = (disp_num+5

16、)/10;COM1 = LED_TABdisp_num/1000;COM2 = LED_TAB(disp_num%1000)/100 | 0x80;COM3 = LED_TAB(disp_num%100)/10;COM4 = LED_TABdisp_num%10;void EnableTimer2(void)TL2 = 0;TH2 = 0;T2MOD = 0x00;T2CON = 0x07; / Timer 2 is 16-bit counter, counter modeET2 = 1; /enable timer 2 interruptTR2 = 1; /enable timer 2void DisableTimer2(void) TR2 = 0; /disable timer 2ET2 = 0; /disable timer 2 interruptvoid EnableTimer3(void)IEN1 = 0x10; /打开定时器3中断,改为在需要时打开/*中断服务程序部分*/void TIME2_INT() interrupt 5 /定时器2的中断号为5.Over65535_Flag = 1;TR2 = 0;void TIME3_INT() interrupt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论