简易数字频率计实验报告Word下载.docx
《简易数字频率计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《简易数字频率计实验报告Word下载.docx(21页珍藏版)》请在冰点文库上搜索。
由于I2>
I1,因此电容C放电,vc随时间线性下降。
当vc下降到vc≤VR/3时,比较器C2输出发生跳变,使触发器输出端Q又由高电平变为低电平,I2再次断开,I1再次向C充电,vc又随时间线性上升。
如此周而复始,产生振荡,若I2=2I1,vc上升时间与下降时间相等,就产生三角波输出到脚3。
而触发器输出的方波经缓冲器输出到脚9。
三角波经正弦波变换器变成正弦波后由脚2输出。
当I1<
I2<
2I1时,vc的上升时间与下降时间不相等,管脚3输出锯齿波。
因此,8038能输出方波、三角波、正弦波和锯齿波等四种不同的波形。
图1ICL8038内部原理电路框图
图2ICL8038管脚图
2、ICL8038的典型应用
由图2可见,管脚8为调频电压控制输入端,管脚7输出调频偏置电压,其值(指管脚6与7之间的电压)是(VCC+VEE)/5,它可作为管脚8的输入电压。
此外,该器件的方波输出端为集电极开路形式,一般需在正电源与9脚之间外接一电阻,其值常选用10kΩ左右,如图3所示。
当电位器RV1动端在中间位置,并且图中管脚7接+4V时,管脚9、3和2的输出分别为方波。
三角波和正弦波。
电路的振荡频率ƒ约为0.3/[(R1+0.5RV1)C]。
调节RV2﹑RV3可使正弦波的失真达到较理想的程度。
RV1为调频电位器。
RV4调节方波占空比及正弦波失真度。
图3 函数发生器电路图
可通过改变10号管脚的电容值来改变频率,C2从50uf--250pf每降低10倍频率增加10倍,再通过RV1来实现对频率的微调。
2.整形电路
整形电路部分通过74LS00中的与非门按照图4连接,管脚1为输入信号,管脚6为输出信号。
图4整形电路
3.二分频电路
74LS74为带预置和清除端的两组D型触发器,
图574LS74管脚图
图6功能表
图7二分频计
4.单片机计数部分
1.AT89C52芯片介绍:
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kB的可反复擦写的只读程序存储器(EPROM)和128B的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置通用8位中央处理器(CPU)和FLASH存储单元
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
电源:
VCC-芯片电源,接+5V;
VSS-接地端;
时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
控制线:
控制线共有4根,
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
I/O线:
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
RST/VPD:
复位/备用电源。
EA/Vpp:
内外ROM选择/片内EPROM编程电源。
图8单片机管脚图
2.单片机应用管脚应用:
p0口作为lcd1602的数据口
lcd的rs由单片机的p2.0控制
lcd的rw由单片机的p2.1控制
lcd的en由单片机的p2.2控制
利用单片机的T0口定时模式
利用单片机的T1口为计数模式
由外部电路与单片组成的复位电路
利用外部晶振12MHZ为单片机提供时钟频率
3.软件设计:
程序流程图:
(程序见附录)
开始
单片机初始化
Lcd1602初始化设置
开T0定时和T1计数
二进制转换为BCD压缩码
提出各位位上的数字
LCD显示
结束
1.LCD1602液晶屏介绍:
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
注:
为了表示的方便,后文皆以1表示高电平,0表示低电平。
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
2.管脚功能:
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地
第2脚:
VDD接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚篟W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
图9单片机部分电路
示波器,电源,函数信号发生器
当频率越高时,误差越大。
可能是由于51单片机本身计数的限制和其他噪声信号对高频信号的干扰引起的。
而对于低频信号,误差相对很小。
误差主要来源于元器件本身的误差。
该数字频率计经过实际检验说明:
具有精度高、使用方便、显示直观、硬件电路简单等特点。
在本次设计中遇到了许多的困难——仿真与实物无法有机的结合,程序显示无法达到要求……这些困难都基本克服,但波形产生电路中还有缺陷——高频信号会有失真,但对设计总体影响不大。
经过这次设计有效地提高了我们实践动手能力,对我们今后的学习和生活有很大的积极影响。
1.康华光电子技术基础(模拟部分)第五版高等教育出版社
2.康华光电子技术基础(数字部分)第五版高等教育出版社
3.汪文陈林单片机原理及应用华中科技大学出版社
4.李强51系列单片机编程技术北京航空航天大学出版社
LCD_RSEQUP2.0
LCD_RWEQUP2.1
LCD_ENEQUP2.2
ORG0000H
JMPMAIN
ORG000BH
JMPT0_INT
ORG0030H
MAIN:
LCALLPRO_SET
CALLSET_LCD
LOOP5:
CALLINIT_TI
CALLZHUANGHUA
CALLFUZHI
CALLLCE_FRE
SJMPLOOP5
;
初始化程序
-----------------------------------------------------------
PRO_SET:
MOVP0,#0FFH
MOVP1,#0FFH
MOVP2,#0FFH
SETBP3.5;
P3.5端口置输入状态
RET;
T1(TIMER1的外部输入脚)
----------------------------------------------------
LCD初始化设置
SET_LCD:
CLRLCD_EN
CALLINIT_LCD
CALLDELAY1
MOVDPTR,#INFO1
MOVA,#1
CALLLCD_SHOW
MOVDPTR,#INFO2
MOVA,#2
RET
INFO1:
DB"
GROUPOF3B"
0;
LCD第一行显示信息
INFO2:
FRE:
"
LCD第二行显示信息
LCD接口初始化
8位I/O控制
INIT_LCD:
MOVA,#38H;
双列显示,字形5*7点阵
CALLWCOM
CALLDELAY1
MOVA,#0EH;
开显示,关光标,
MOVA,#01H;
清除LCD显示屏
MOVA,#06H
RET
---------------------------------------------------
LCD_SHOW:
;
在LCD的第一行或第二行显示信息字符
CJNEA,#1,LINE2;
判断是否为第一行
LINE1:
MOVA,#01H
CALLWCOM
MOVA,#80H
JMPFILL
LINE2:
MOVA,#0C0H
FILL:
CLRA
MOVCA,@A+DPTR
CJNEA,#0,LC1
LC1:
CALLWDATA
INCDPTR
写入命令子程序
WCOM:
MOVP0,A
CLRLCD_RS
CLRLCD_RW
SETBLCD_EN
CALLDELAY0
CLRLCD_EN
写入数据子程序
WDATA:
SETBLCD_RS
CLRLCD_EN
RET
INIT_TI:
MOVTMOD,#51H;
/*01010001T1计数,T0定时*/
MOVTH0,#HIGH(65536-49988);
50ms@12MHz
MOVTL0,#LOW(65536-49988)
MOVTH1,#00H
MOVTL1,#00H
MOVR6,#0
SETBET0
SETBEA
MOVR7,#20
SETBTR0
SETBTR1
COUNT1:
JBCTF1,LOOP0
MOVA,R7
JZTEND
SJMPCOUNT1
LOOP0:
INCR6
SJMPCOUNT1;
MOVR0,#01;
MOVR1,#00HR1为高8位,r0为低8位
TEND:
RET
T0_INT:
;
中断
DJNZR7,T0_END
CLRTR1
CLRTR0
JMPTIAO
T0_END:
50ms执行一次
TIAO:
RETI
ZHUANGHUA:
MOVR0,TL1
MOVA,R0
MOVR1,#00H
SUBBA,R1
MOVR0,A
CLRA
MOVR1,TH1
MOVA,R0
ADDA,R0
MOVR0,A
MOVA,R1
ADDCA,R1
MOVR1,A
MOVA,R6
ADDCA,R6
MOVR6,A
MOVR4,#0FFH
MOVR5,#0FFH
LCALLQMUL
MOVR0,3AH
MOVR1,39H
MOVR2,38H
lCALLHEX2BCD;
调用子程序把R0R1R2中的数字,转换成BCD码,送到R4R5R6R7
QMUL:
MOVA,R4
MOVB,R6
MULAB
MOVR3,A;
(R3)=(R4*R6)L
MOVR4,B;
(R3)=(R4*R6)B
MOVA,R5
ADDA,R4
MOVR4,A
CLRA
ADDCA,B
MOVR5,A
MOVA,R3
MOV38H,A
ADDCA,R4
MOV39H,A
ADDCA,R5
MOV3AH,A
HEX2BCD:
MOVR4,A;
先清零
MOVR5,A
MOVR6,A
MOVR7,A
MOVR3,#24;
共转换24位数
LOOP3:
CLRC
MOVA,R2
RLCA
MOVR2,A
MOVA,R1
MOVR1,A
MOVA,R0
MOVR0,A
MOVA,R7;
送到BCD码的低端
ADDCA,R7;
带进位加。
自身相加,相当于左移一位
DAA;
十进制调整,变成BCD码
MOVA,R6
ADDCA,R6
DAA
MOVR6,A
MOVA,R5
ADDCA,R5
MOVR5,A
MOVA,R4
ADDCA,R4
MOVR4,A
DJNZR3,LOOP3;
FUZHI:
MOVA,R7
MOVB,#16
DIVAB;
除以16,目的是分离出高、低四位
MOV31H,A;
存放十位
MOV30H,B;
存放个位
DIVAB
MOV33H,A
MOV32H,B
MOV36H,A;
存放百万位
MOV35H,A
MOV34H,B
PRO_SETS:
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
MOV36H,#00H
显示各位数字
-----------------------------------
LCE_FRE:
MOVA,#0C5H
MOVR1,#36H
LOOP1:
MOVA,@R1
ADDA,#30H
CALLWDATA;
DECR1;
CJNER1,#2FH,LOOP1
DELAY0:
MOVR7,#250
DJNZR7,$
DELAY1:
;
延时3ms
MOVR6,#15
D2:
MOVR7,#100
DJNZR6,D2
RET
END