1、目 录 前言2摘要:2关键字:21 芯片介绍211 10116212 1161313 74HC04414 74HC14415 74HC74416 74HC164517 74HC145618 AT89C2051619 56282统概述921频率计定义922系统的组成923处理方法103系统硬件设计1031信号预处理1031.1滤波、衰减、补偿1131.2放大电路1132 波形转换电路1233 形整形及分频电路1334 单片机复位电路1435显示部分14351 显示电路14352 模拟串行通信原理1536 整机工作原理154系统软件的组成1641 系统软件框图1642 流程图1743 数据处理过程
2、1845 单片机源程序185. 参考文献资料32前 言 数字频率计在电子、通讯等领域中的实验、研究开发、生产用途非常的广泛,它可以由逻辑电 组成,也可以用单片机控制。由逻辑电路组成的频率计,结构复杂,组装、调试比较麻烦;由单片机控制的频率计,数据采集、计算、译码及量程的自动转换,都可以由CPU来完成,简化了电路,提高了系统的可靠性。摘要:本设计是以89c2051为核心的单片机设计,在单片机设计中应用单片机的数字运算和控制功能实现了量程的自动切换,满足了时间要求和精度要求。关键字: 89C2051,频率计,分频,1 芯片介绍11 1011610116是一个三运算放大器,带有正、反输出端,逻辑图及
3、引脚功能如下:引脚图12 11611161为基于微控器的系统提高了完整的存储和监控方案,运用低功耗CMOSE技术,在片内集成了带硬件存储写保护的串行EEPROM(16K),节能型系统电源监控电路和一个看门狗定时电路。当一个软件或硬件的误操作,一起系统的暂停和挂起时,1.6秒的看门狗电路可将系统恢复到默认状态,1161的定时监控SDA线,这样不需要增加PC板的跟踪功能。第2脚输出高电平的复位信号,第7脚输出低电平的复位信号WP 写保护E2PRON 就实现写保护 只读 将该管脚接地或悬空 可以对器件进行读写操作串行时钟 串行输入输出资料时 该脚用于输入时钟。SCL:串行时钟,串行输入输出数据时,该
4、脚用于时钟。REST:复位I/O口。该脚为开漏输出脚。可用作复位触发输入。SDA:串行数据地址,用于所以数据得发送和接受。SDA还可以作为看门狗定时器控制器。VCC:电源GND:接地NC:空脚13 74HC0474HC04为六反相器Y=/A引脚图14 74HC1474HC14是六反相器(施密特触发器)Y=/A引脚如上图。15 74HC74功能表输入输出PR CLR CLK DQ /QL H X X H L X XL L X XH H HH H LH H L XH LL HH* H*H LL HQ0 /Q0说明:*为不稳定引脚图 74HC74是一双D型正沿触发器,带预和清除端,其引脚及功能如下:
5、D触发器在这里主要是分频,它的这种接法是一种二分频的接法,对经过562分频的信号再一次分频,进一步降低它的频率,提高单片机的测量范围。16 74HC1641.引出端排列图和逻辑功能示意图图338所示是8位单相移位积存器74LS164的引出端排列图和功能示意图 。 (a)引出端排列图 (b)逻辑功能示意图 图3-3 8位单向移位积存器74LS164Ds=Dsa*Dsr是数码串行输入端,/CR是清零端,Q0Q7是数据并行输出端,CP是时钟脉冲移位操作信号。2.逻辑功能 表3.1所示是74LS164状态表,由表可知,74LS164具有下列功能;(1)清零功能当/CR=0时,移位寄存器异步清零。(2)
6、保持功能当/CR=1、CP=0时。移位寄存器保持状态不变,Qi n+1=Qin(i=07)。(3)送数功能当/CR=1时,CP上升沿将加在Ds=Dsa*Dsb端的二进制数码依次送入移位寄存器中。状态方程为 Q0n+1=Qsa*Qsb Q1n+1=Q0n Q2n+1=Q1n Q3n+1=Q2n Q4n+1=Q3n CP 上升沿时刻有效 (5.3.7) Q5n+1=Q4n Q6n+1=Q5n Q7n+1=Q6n17 74HC14574HC145是一个BCD十进制译码器/驱动器(OC),用于驱动灯、继电器或MOS电路;能吸收80m电流,LS145典型功耗为35mW;耐压15V18 AT89C2051
7、单片机的管脚排列图,各管脚的功能,关于此单片机的介绍AT89c2051与Intel的51系列兼容,没有P0口、P2口,所以不能扩充外部程序存储器、外部数据存储器,有些指不能使用或受到一定的限制,如MOVX,MOVC。内部集成一个A/D转换器。它是一个带有2KB可编程只读存储器(EEPROM)的低压高性能8位CMOSE微型计算机。它用ATMEL的高密非易失存储技术制造,并和工业标准MCS51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和Flash存储器,使AT89C2051成为一强劲的微型计算机。它为许多嵌入式控制应用提供了高度灵活和成本低的解决办法。1. 主要性能和MCS-51产品
8、兼容。2KB可重编程Flash存储器。耐久性:1000次写/擦除。2.76V的操作范围。全静态操作:0Hz24MHz。2级加密程序存储器。128*8位内部RAM。15条可编程I/O引线。2个16位定时器/计数器。6个中断源。可编程串行UART通道。直接LED驱动输出。片内模拟比较器。低功耗空载和掉电方式。2. 引脚功能说明AT89C2051的引脚结构89C2051引脚(1) Vcc电源端。(2) GND:接地端。(3) P1口:P1口是一8位双向I/O口。引脚P1.2P1.7提供内部上拉电阻。P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0
9、)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。当P1口引脚写入“1”时,可用作输入端。当引脚P1.2P1.7用作输入端并被外部拉低时,将因内部的上拉电阻而输出电流(IIL)。P1口还在Flash编程和程序效验期间接收代码数据。(4) 3口:P3口的P3.0P3.5,P3.7是带有内部上拉电阻的7个双向I/O引脚。P3.6用于固定输入片内比较器的输出信号,并且作为一通用I/O引脚而不可访问。P3口缓冲器可吸收20mA电流。当P3口引脚写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用表2-6 P3口的功能口引脚功能P3.0RXD(串行输入端口)P3.1
10、TXD(串行输出端口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)(5) 作输入端时,被外部拉低的P3口引脚将用上拉电阻而输出电流(IIL)。P3口还用于实现AT89C2051的各种功能,如表2-6所列。P3口还接收一些用于Flash存储器编程和程序效验的控制信号。(6) RST:复位输入。RST一旦变成高电平,所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。(7) XTAL1:作为振荡器反相放大器的输入和内部时钟发生器的输
11、入。(8) 器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。(9) XTAL1:作为振荡器反相放大器的输入和内部时钟发生器的输入。(10) XTAL2:作为振荡器反相放大器的输出。19 562在本计数计中,562主要用于构成64分频的分频器,原理如下图:2统概述21 频率计定义频率计为一秒时间内信号变化的次数。数字频率计就是在一秒标准时间内测出信号变化的次数,然后以数字的形式显示出来。22系统的组成频率计是以89c2051 、信号预处理电路、波形转换电路、波形整形及分频电路、复位看门狗电路、CPU电路、显示电路和系统软件所组成,其中信号
12、预处理电路包含衰减、低通滤波、高频补偿、其作用是对强信号的衰减;测量低频信号时,对高频进行滤除;测量高频时进行补偿;对待测信号的放大,降低对待测信号的幅度要求。波形转换电路主要由10116及外围元件组成,实现把正负交替的信号波形变换成可被单片机接受的TTL/ CMOS兼容信号;波形整形及分频由74HC04、562、74HC74、74HC14及外围元件等组成,分频电路用于扩展单片机的频率测量范围。复位电路由1161组成,用于保证系统的可靠运行。CPU用Atmel公司的At89c2051芯片。显示电路由74hc164、74ls145、数显、二极管等组成。系统硬件框图如图1 所示。图1 系统硬件框图
13、系统软软件用汇编语言编写,包括测量初始化模块、显示模块、信号频率测量模块、量程自动转换模块。23 处理方法 本频率计的设计以AT89C2051单片机为核心,利用它内部的定时/计数器完成待测信号频率的测量。单片机AT89C2051内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。在构成为定时器时,每个机器周期加1(使用12MHz的时钟时,每1us加1),这样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部引脚发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入每个机器周期被采样一次,
14、这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz的时钟时,最大计数速率为500kHz)。定时/计数器的工作由响应的运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。 为提高频率稳定度,本电路采用24M温度补偿晶振,其最大计数为1M,本频率计测频范围为1Hz到10M,以500kHz为分界,待测信号经放大、变换、整形后,一路直接送AT89C2051的P3.5口,一路经128:1(562为64:1,又经74HC74二分频)的分频电路后,送P3.4口,测频时,首先T0为计数器,T1为定时器,控制闸门时间为1
15、秒,1S后,将寄存器数值128倍运算后,判断值大于500k时,经变换处理后送显示,小于500k时,变T0为定时,T1为计数,如此处理,即能提高测量范围,又提高了测量精度,且巧妙的实现量程的自动切换,闸门时间1S采用硬件及软件结合方法实现,计数值用三字节存放,经十六进制到BCD码的变换后送显示。3系统硬件设计31信号预处理信号预处理电路包括滤波、衰减、补偿、放大。31.1滤波、衰减、补偿 待测信号经0.47uF的隔直通交电容耦合过来,当输入的信号电压较高时可按下琴键K1衰减,输入的电压信号可达到125V,当输入的信号频率较低时,按下琴键K2,经低通滤波减小干扰信号对后级的影响,信号经高频补偿电路
16、进入放大电路。31.2 放大电路放大部分采用场效应管,静态功耗低,而且放大之前有稳压二极管保护电路,可以对输入的电压进行嵌位,防止输入到CMOS的电压过高。由于采用零偏置,当输入信号为零或者为负时,场效应管夹断,当输入信号为正电压时,场效应管导通,零偏置放大器将正负交替的输入信号变成单向脉冲信号,使得输入信号在一个周期内,产生一个脉冲信号,以便于对其计数。32 波形转换电路采用差动输入,提高输入阻抗和共模抑制比,输入端提供偏置,使信号预处理电路出来的脉冲信号通过,信号经放大变为幅度足够大的方波脉冲或近似于方波脉冲的信号送波形整形电路 。33 形整形及分频电路由波形转换电路输出的方波信号。从波形
17、转换出来的信号,一路经74HC04整形后去除毛刺又经施密特反相器74HC14整形变为与标准的TTL/CMOS电平兼容的方波。另一路经128:1分频后接入单片机,562接成64:1的分频电路,又经74HC74二分频,实现高于500K时的测量处理电路,扩充了频率计的测量范围。34 单片机复位电路 单片机复位电路 当单片机死机或挂起的时候,在1.6秒以内计算机就不会给1161脉冲,这时复位电路就会给单片机以复位信号,使单片机重新开始工作。35显示部分351 显示电路由于AT89C2051的I/O口较少,本电路采用特殊的显示方式-由P1.6(数据端)和P1.7(时钟端)组成模拟串行通信口,单片机将要显
18、示的数据用模拟串口发送到74HC74164后,由74HC164转换为并行数据控制数码管显示的数字,实现显示数据的传送,由单片机提供位选的BCD码经74LS145译码后控制每位数码管的选通与消隐,并由两个发光二极管做为Hz及KHz的指示。352模拟串行通信原理 模拟串行通信口由P1.6和P1.7组成,其中P1.6作为数据发送端,P1.7作为时钟端,发送数据之前,先用指令将时钟P1.7清0(输出低电平),然后将要发送的一帧数据(8位二进制数)的最高位(第7位)送到数据端P1.6,再将时钟端置位(输出高电平),延时一个机器周期,再将时钟端清0,完成一位二进制数的传送,接着将第6位发送到P1.6端,如
19、此循环,完成一帧数据的传送。其时序图如下串行通讯时序图36 整机工作原理 待测信号经预处理电路之后,变成直流脉冲信号,经波形转换电路变换,信号变成削顶的脉冲信号,此时的信号已近似于方波脉冲,从波形转换早路出来的信号分成两路,一路直接经过整形,变成方波脉冲,送到89c2051的P3.5端;一路经64分频之后,再经过74HC04整形,再经过74HC74二分频(64*2=128),送到89c2051的P3.4端。89c2051首先对P3.5端进行计数,如果频率低500KHz,则直接将结果显示出来,单位为Hz;若频率高于500KHz,则对P3.4端进行计数,将计数结果*128倍之后,再进行显示,单位为
20、KHz。单位的显示由两个二极管指示。4系统软件的组成41 系统软件框图 结构框图系统软件设计采用模块化设计方法。整个系统由初始化模块、显示模块和信号频率测量模块等各种功能模块组成(见图4) 。上电后,进入系统初始化模块,系统软件开始运行。在执行过程中,根据运行流程分别调用各个功能模块完成频率测量、量程自动切换、测量结果显示。42 流程图 软件流程图43 数据处理过程计数值用三个字节来存储,经十六进制到BCD码的转换,本频率计测频范围为1Hz到10M,以500kHz为分界,待测信号经放大、变换、整形后,一路直接送AT89C2051的P3.5口,一路经128:1(562为64:1,又经74HC74
21、二分频)的分频电路后,送P3.4口,测频时,首先T0为计数器,T1为定时器,控制闸门时间为1秒,1S后,将寄存器数值128倍运算后,判断值大于500k时,经变换处理后送显示,小于500k时,变T0为定时,T1为计数,如此处理,即能提高测量范围,又提高了测量精度,且巧妙的实现量程的自动切换,闸门时间1S采用硬件及软件结合方法实现,计数值用三字节存放,经十六进制到BCD码的变换后送显示。45 单片机源程序DA4 EQU P1.2 ;显示位选择端DA3 EQU P1.3DA2 EQU P1.4DA1 EQU P1.5CLK EQU P1.7 ;时钟端DAT EQU P1.6 ;串行数据发送端SCL
22、EQU P3.1 ;看门狗,E2ROMSDA EQU P3.0 PV EQU P3.4 ;计数通道定义BZ EQU P3.5MD EQU P3.7 ;门控信号A153A EQU P3.2 ;分频器选通信号A153B EQU P3.3;RXD EQU P3.0 ;通讯口;TXD EQU P3.1BZDIG EQU 2FHDSPLA_ADD1 EQU 30H ; 显示缓冲区,最低位DSPLA_ADD2 EQU 31HDSPLA_ADD3 EQU 32HDSPLA_ADD4 EQU 33HDSPLA_ADD5 EQU 34HDSPLA_ADD6 EQU 35H;最高位DSPLA_ADD7 EQU 3
23、6H;单位指示位TX_TIME EQU 50H ;冲断次数计数器MOS_BZ EQU 51H ;通道选择寄存器BZ2 EQU 52H ;大小判断标志LDBZ BIT 10H ;1Hz标志位LD1HZ EQU 7BH JSQ3 EQU 53H ;计数值寄存区JSQ2 EQU 54HJSQ1 EQU 55HBCD1 EQU 60H ;压缩BCD码寄存区BCD2 EQU 61HBCD3 EQU 62HBCD4 EQU 63HCX EQU 64H HUANC1 EQU 65HHUANC2 EQU 66HHUANC3 EQU 67HHUANC4 EQU 68HWSA EQU 77hFDA EQU 78h
24、FDS EQU 79hFDB EQU 7ahPPD EQU 7bh;=;主程序;= ORG 0000H LJMP MAIN ORG 000BH LJMP TIM0 ORG 001BH LJMP TIM1MAIN: LCALL RST_WDOG ;复位看门狗 LCALL SETUP ;初始化MAIN1: LCALL DSPLA ;显示(“123456”) LJMP MAIN1 ;循环,等待中断;=DSPLA: NOP;显示子程序DSPLATEMP: MOV R7,#7 MOV R0,#DSPLA_ADD1;取显示区首地址 MOV DPTR,#TAB;取表格指针DSP1: MOV A,R0;取数值
25、 MOVC A,A+DPTR;查表DENG: CLR CLK;模拟串行输出处理 CLR C RLC A MOV DAT,C ;1 SETB CLK NOP CLR CLK RLC A MOV DAT,C ;2 SETB CLK NOP CLR CLK RLC A MOV DAT,C ;3 SETB CLK NOP CLR CLK RLC A MOV DAT,C ;4 SETB CLK NOP CLR CLK RLC A MOV DAT,C ;5 SETB CLK NOP CLR CLK RLC A MOV DAT,C ;6 SETB CLK NOP CLR CLK RLC A MOV DAT,
26、C ;7 SETB CLK NOP CLR CLK RLC A MOV DAT,C ;8 SETB CLK NOP CLR CLK LCALL WAY ;显示位选择 ;= LCALL DELAY10;延时 CLR DA1;关闭 SETB DA2 CLR DA3 SETB DA4DSP2: INC R0;指向下一位 DJNZ R7,DSP1;显示完否?DSPLAEND: RETTAB: DB 0F3H,90H,79H,0B9H,9AH,0ABH,0EBH,91H ;显示数码编码表, DB 0FBH,0BBH ;, DB 0F7H,94H,7DH,0BDH,9EH,0AFH,0EFH,95H,0F
27、FH,0BFH;0.7. DB 10H,01H ;8.,9. DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H DB 40H,73H,76H,00H,00H,00H,00H,00H,00H,00H; 初始化子程序WAY: MOV A,R7;第一位(最低位) CJNE A,#7,WAY1 SETB DA1 CLR DA2 CLR DA3 CLR DA4 RETWAY1: CJNE A,#6,WAY2;第二位 CLR DA1 CLR DA2 SETB DA3 CLR DA4 RETWAY2: CJNE A,#5,WAY3;第三位 CLR DA1 SETB DA2
28、 CLR DA3 CLR DA4 RETWAY3: CJNE A,#4,WAY4;第四位 SETB DA1 CLR DA2 SETB DA3 CLR DA4 RETWAY4: CJNE A,#3,WAY5;第五位 SETB DA1 SETB DA2 CLR DA3 CLR DA4 RETWAY5: CJNE A,#2,WAY6;第六位(最高位) CLR DA1 SETB DA2 SETB DA3 CLR DA4 RETWAY6: CJNE A,#1,WAY7;单位位 SETB DA1 SETB DA2 SETB DA3 CLR DA4WAY7: RET;=SETUP: CLR TR0;初始化程
29、序 CLR TR1 CLR LDBZ MOV MOS_BZ,#1 MOV LD1HZ,#10 CLR DA1 SETB DA2 CLR DA3 SETB DA4 MOV TX_TIME,#50;50*20ms MOV JSQ1,#0;=定时器初始化 MOV TMOD,#51H ;T1计数,模式1 ;T0定时,模式1 ;MOV SCON,#50H MOV TH0,#69H;20mS MOV TL0,#0ccH MOV TH1,#00H MOV TL1,#00H ; SETB TR0 ; SETB TR1 SETB ET0;充许T0中断 SETB ET1;充许T1中断 MOV BZDIG,#1 S
30、ETB EA ;开中断 CLR ES ;不许可串口 CLR EX1 ;不许可中断1 CLR EX0 ;不许可中断0 MOV WSA,#3 SETB TR0 ;启动定时器 SETB TR1;启动计数器 RET;=;以下为1161存储芯片操作子程序;-RST_WDOG: CLRSDA ;复位看门狗 DB 0,0,0,0 SETB SDA RET;=DELAY10: NOP ;延时子程序DELAY5: MOV R6,#0FFH LCALL RST_WDOG DJNZ R6,$ RETTIM0END1: LJMP TIM0END;=LDSJ: MOV TX_TIME,#50 ;1Hz数据处理程序 DJ
31、NZ LD1HZ,TIM0END1 CLR TR1;关闭计数器 MOV A,TH1 MOV JSQ2,A MOV A,TL1 MOV JSQ3,A ;= ;判断是否大于10 MOV A,JSQ1 JNZ PY1 MOV A,JSQ2 JNZ PY1 MOV A,JSQ3 CLR C SUBB A,#10 JNC PY1 LCALL BMBCD ;调BCD转换程序 MOV R0,#BCD1 MOV A,R0 ;取BCD码 ANL A,#0FH ;化成有效BCD码 MOV DSPLA_ADD6,A ;数值送到第一位(最低位) MOV DSPLA_ADD1,#0 ;其它位清0 MOV DSPLA_A
32、DD2,#0 MOV DSPLA_ADD3,#0 MOV DSPLA_ADD4,#0 MOV DSPLA_ADD5,#10 ;第二位显示“0.” MOV DSPLA_ADD7,#21 ;单位Hz SETB LDBZ MOV LD1HZ,#10 LJMP TIM07;=PY1: CLR LDBZ LJMP TIM0END;=TIM0: PUSH PSW PUSH ACC MOV A,MOS_BZ ;判断通道 CJNE A,#1,TIMJS ;若为PV通道(T0计数),跳出中断 MOV TH0,#63H MOV TL0,#0c0H DJNZ TX_TIME,TIM0END ;若定时未到1s,则退出中断 JB LDBZ,LDSJ ;若小于1, 转1处理程序 MOV TX_TIME,#50 ;50*20=1000mS CLR TR1 ;关闭计数器 MOV A,TH1 MOV JSQ2,A ;计数高位送到JSQ2 MOV A,TL1 MOV JSQ3,A ;计数低位送JSQ3 ;= ;判断是否小于1,如果小于1则再循环9次 MOV A,JSQ1 JNZ PY ;若T1已发生中断,说明计数大于1 MOV A,JSQ2 ;计数器计数值是否大于1 JNZ PY MOV A,JSQ3 JNZ PY SETB LDBZ ;小于1,1标志位置位 MOV LD1HZ,#10 ;=