频率计课程设计.docx
《频率计课程设计.docx》由会员分享,可在线阅读,更多相关《频率计课程设计.docx(14页珍藏版)》请在冰点文库上搜索。
频率计课程设计
江苏理工学院
JIANGSUUNIVERSITYOFTECHNOLOGY
电气信息工程学院
频率计课程设计
学院名称:
电气信息工程学院
专业:
电子
班级:
10电子2班
姓名:
陈曦
学号:
10311201
指导老师:
陈连玉
设计时间:
2013年4月
数字频率计
数字频率计数器是测量信号频率的装置,也可以用来测量方波脉冲的脉宽通常频率以数字形式直接显示出来,简便易读,即所谓的数字频率计频率测量对生产过程监控有很重要的作用,可以发现系统运行中的异常情况,以便迅速作出处理,传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量低频信号时不宜直接采用基于单片机技术,而数字式频率计数器具有操作简单方便、响应速度快、体积小等一系列优点,可以及时准确地测量低频信号的频率。
1、数字频率计与单片机
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)和功能越来越强大的单片机的广泛应用。
数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的基本功能是测量正弦信号、方波信号、尖脉冲信号及其他各种单位时间内变化的物量。
在AT89C51单片机上实现的频率计,整个系统非常精简,而且具有灵活的现场可更改性。
在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。
该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。
2、技术指标
输入脉冲幅度:
0—5V
频率测量范围:
100—100000Hz
测量精度:
±1%
显示方式:
四位数字显示
3、系统结构框图
图1系统结构框图
一、硬件电路设计
1,硬件电路图
图2硬件管脚图
1、其具体连接方法如下:
P3.4口(即T0)接输入脉冲信号。
XTAL1与XTAL2管脚接两个20pF电容和12MHz晶振构成时钟电路。
RST管脚接510Ω电阻,10μF电容及复位开关构成人工复位电路。
P2.4—P2.1接驱动7407的四个输入端,四个输出端接数码管的位选通端。
P0.0—P0.7接数码管的段选线。
2、元件参数如下
R1=R2=510Ω,C1=C2=10uf,C3=C4=20pf。
一片74ls00接成非门使用,用于整形。
一片7407用于驱动数码管。
四个共阴极数码管,一个8路排阻,阻值为330Ω。
共阴级八段数码管图如图
2,各模块电路的实现及其功能
1、信号发生模块
利用电容的充放电,产生近似矩形波的波形,再经非门整形,就可以得到标准的矩形波,若波形不够标准,可多接入几个非门。
频率计算公式为:
f=1/2.2*R2*C2
(1)
计算得到f=190Hz,但由于元件本身并不标准,且有较大误差,以及接入电路后存在的一些干扰,从示波器实测得到的频率为195HZ。
1)单片机系统模块
选择单片机是因为有编程灵活、易调试的特点,而且它的引脚较多,利于电路的设计。
它内部集成了CPU,RAM,ROM,定时器/计数器和多功能I/0口等一台计算机所需的基本功能部件。
晶振由外部接入,各个并行口可直接使用,故直接接数码管的段选线,使得硬件设计易于实现,且简化了程序。
单片机的主要功能就是定时一秒钟,统计被测信号的周期个数,在转换、存储、送给单片机的并行口和驱动7407。
2)数码管显示模块
LED显示器采用动态显示方式。
显示时将所有位的段选线相应的并联在一起,由一个8位I/O口即P0口控制,形成段选线的多路复用。
驱动器7407连接位选部分,由P2.4—p2.1口控制。
由于各位的段选线并联,段选码的输出对各位来说都是相同的。
同一时刻,如果各个位选线都处于选通状态的话,四位的LED将显示相同的字符。
要各位LDE能够显示出与本位相应的显示字符,就须采用扫描显示方式。
即在同一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字型码,这样同一时刻,四位LED中只有选通的那一位显示出字符,而其他三位则是熄灭的。
而在下一刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段选线上输出相应位将要显示字符的字符码。
这样循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于人眼有视觉残留现象,只要每位显示间隔足够短,则可造成多位同时亮的效果。
所以数码管的作用就是动态显示频率值。
二、软件设计
1)主程序框图
主程序中包含初始化,二十进制转换程序和压缩BCD码转换成非压缩BCD码程序。
其中二十进制转换程序和压缩BCD码转换成非压缩BCD码程序是:
图3主程序框图
2)数码管显示的调用函数
当频率低于10KHz时,调用函数有四个,QIANW调用函数、BAIW调用函数、SHIW调用函数、GEW调用函数,分别对应数码管的从左到右四位。
当频率不低于10KHz时,调用函数也有四个,QIANW1调用函数、BAIW1调用函数、SHIW1调用函数、GEW1调用函数,分别对应数码管的从左到右四位。
TAB和TAB1是供查表用的。
TAB:
DB77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH
TAB1:
DB0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH
3)中断函数结构
动态扫描显示时间是由定时器1决定的,每中断一次,则显示一个数码管,依次从左往右显示。
中断函数主要负责调用显示程序和存储计数得到的频率值。
四、软件源程序代码
数字频率计的程序和解释说明如下:
ORG0000H;程序复位入口地址
AJMPMAIN
ORG001BH;计时器T0的中断入口
AJMPPTF0;跳转到中断程序中
ORG0033H;主程序入口地址
MAIN:
MOVSP,#60H
MOVTH1,#0ECH
MOVTL1,#78H;定时5MS
SETBEA;开放CPU中断
SETBET1;开放定时器中断
MOVTH0,#0
MOVTL0,#0;给计数器T0赋初值0
MOVTMOD,#15H;计时器T1工作在方式1定时模式,计数器T0工作在方式1计数模式
MOV30H,#0C8H;循环200次,共定时1S
MOV40H,#0;用于判断显示数码管哪一位
SETBTR0;启动计数器0
SETBTR1;启动定时器1
LOOP1:
ACALLZHUANH;将二进制数转换为压缩BCD码
ACALLCHAIF;将压缩BCD码转换为非压缩BCD码
AJMPLOOP1;循环处理计数器T0采集得到的数据
PTF0:
MOVTH1,#0ECH
MOVTL1,#78H;给定时器T1重新赋值
INC40H;数码管判断位加1
MOVA,50H
CJNEA,#00H,DAY;判断50H单元是否为零,若为0继续往下执行,若不为0,则跳转到子程序DAY中
MOVA,40H;每5ms显示一位,从最高位开始,到最低位时,返回高位
CJNEA,#1,LOP1
ACALLQIANW
AJMPTIAO
LOP1:
CJNEA,#2,LOP2
ACALLBAIW
AJMPTIAO
LOP2:
CJNEA,#3,LOP3
ACALLSHIW
AJMPTIAO
LOP3:
ACALLGEW
MOV40H,#0
AJMPTIAO
DAY:
MOVA,40H
CJNEA,#1,LP1
ACALLQIANW1
AJMPTIAO
LP1:
CJNEA,#2,LP2
ACALLBAIW1
AJMPTIAO
LP2:
CJNEA,#3,LP3
ACALLSHIW1
AJMPTIAO
LP3:
ACALLGEW1
MOV40H,#0
TIAO:
DJNZ30H,PTFR;判断是否到1S
MOV20H,TH0
MOV21H,TL0;将计数器T0中的数转移到20H,21H中
MOVTH0,#0
MOVTL0,#0;将计数器T0重新赋0
MOV30H,#0C8H
PTFR:
RETI
ZHUANH:
MOVR2,20H;将计数得到的值存入R2和R3中
MOVR3,21H
CLRA
MOVR4,A;将R4、R5、R6清零
MOVR5,A
MOVR6,A
MOVR7,#16
LOOP:
CLRC;将16位二进制数逐位左移一位,移得的数据放入进位C中
MOVA,R3
RLCA
MOVR3,A
MOVA,R2
RLCA
MOVR2,A
MOVA,R6;(R4R5R6)+(R4R5R6)+C=(R4R5R6)*2+C
ADDCA,R6
DAA
MOVR6,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
DJNZR7,LOOP
RET
CHAIF:
MOVA,R5;将压缩BCD码R4R5R6转换为非压缩BCD码,从高到低依次放于50H、51H、52H、53H、54H
ANLA,#0F0H
SWAPA
MOV51H,A
MOVA,R5
ANLA,#0FH
MOV52H,A
MOVA,R6
ANLA,#0F0H
SWAPA
MOV53H,A
MOVA,R6
ANLA,#0FH
MOV54H,A
MOV50H,R4
RET
QIANW:
MOVA,51H;频率不超过10KHZ时,以HZ为单位,四位显示,最高位为千位,以此类推
MOVDPTR,#TAB;千位上显示51H单元中的内容
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0EFH
RET
BAIW:
MOVA,52H;百位上显示52H单元中的内容
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0F7H
RET
SHIW:
MOVA,53H;十位上显示53H单元中的内容
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0FBH
RET
GEW:
MOVA,54H;个位上显示54H单元中的内容
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0FDH
RET
QIANW1:
MOVA,50H;频率大于10KHZ时,小数点放千位,以KHZ为单位,省去个位,以四位显示
MOVDPTR,#TAB;千位上显示50H单元中的内容
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0EFH
RET
BAIW1:
MOVA,51H;百位上显示51H单元中的内容和显示小数点
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0F7H
RET
SHIW1:
MOVA,52H;十位上显示52H单元中的内容
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0FBH
RET
GEW1:
MOVA,53H;个位上显示53H单元中的内容
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVP2,#0FDH
RET
TAB:
DB77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH;0—9
TAB1:
DB0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH;0.—9.
NOP
END
五、调试与结果分析
1、硬件调试
焊好电路后,首先检查是否有虚焊,如果没有,再上电检测。
首先检测数码管的好坏,由于P2.4—P2.1控制数码管的位选线,P0.0—P0.7接数码管的段选线,而且数码管是共阴的,所以只要将+5V电源的地分别接P2.4—P2.1口,若数码管显示8和小数点,说明是好的,四个都检测完后就检查数码管的接线。
首先+5V电源的地接P2.4口,电源的正端接一个1KΩ的电阻,分别点触P0.0—P0.7,若点触到哪一个口,相对应的二极管熄灭,说明连线是正确的。
检测完一个数码管,然后用相同的方法检测完四个数码管。
2、软件调试
本次设计采用的单片机是AEDK51HB仿真机,所使用的编程软件是LCA51,操作步骤较为简单。
首先打开LCA51软件,测试串口,然后新建文件,在内部编程,编完程序,保存就可以了,后缀名为.ASM。
没有警告和错误时,在仿真机电源/运行的指示灯为绿色的情况下,点击确定。
下载完成以后,点击全速运行,观察检测结果。
3、测量结果
用单片机检测并由数码管显示的频率范围为180-182Hz,其误差在±1%范围内,所以满足此项要求。
六,课程设计体会
在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。
在设计时遵循从整体到局部也即自上而下的原则。
把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。
将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。
在程序调试时应按各个功能模块分别调试。
在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。
另外程序的设计要具有可扩展性,程序的结构要标准化,便于阅读、修改和扩充。
通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握汇编语言的设计和调试方法。
对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。
参考文献:
[1]张毅坤,陈善久.单片微型计算机原理及应用.西安电子科技大学出版社,2002.
[2]张友德,赵志英,徐时亮.单片微机原理应用与实验.复旦大学出版社,2000.
[3]张毅刚,彭善元,董继承.单片机原理及应用.高等教育出版社,2003.