智能仪表设计基础
课程设计
课题名称:频率计设计 学生姓名: 学 号: 班 级: 指导老师:
扬州大学能源与动力工程学院
二零一一年九月
目 录
第一章 频率计的整体方案设计„„„„„„„„„„„„„„„„ () 1. 1 设计理念„„„„„„„„„„„„„„„„„„„„„„() 1. 2 分析设计任务„„„„„„„„„„„„„„„„„„„„() 第二章 电路的设计和器件的选择„„„„„„„„„„„„„„„ () 2. 1 信号整形设计部分„„„„„„„„„„„„„„„„„„() 2. 2 单片机控制设计部分„„„„„„„„„„„„„„„„„() 2. 3 显示电路设计部分„„„„„„„„„„„„„„„„„„() 2. 4 软件控制设计部分„„„„„„„„„„„„„„„„„„() 第三章 组装调试电路„„„„„„„„„„„„„„„„„„„„ () 3. 1 硬件调试„„„„„„„„„„„„„„„„„„„„„„() 3. 2 软件调试„„„„„„„„„„„„„„„„„„„„„„() 第四章 实验结果及误差计算„„„„„„„„„„„„„„„„„ () 第五章 设计小结„„„„„„„„„„„„„„„„„„„„„„ () 第六章 元器件清单„„„„„„„„„„„„„„„„„„„„„„() 第七章 参考文献„„„„„„„„„„„„„„„„„„„„„„ () 附 录 频率计的设计任务书及程序清单„„„„„„„„„„„„ () 1. 原理图„„„„„„„„„„„„„„„„„„„„„„„() 2. 单片机C语言程序„„„„„„„„„„„„„„„„„„ () 3 任务书„„„„„„„„„„„„„„„„„„„„„„„()
第一章 频率计的整体方案设计
1. 1 设计理念
本频率计要求能测出输入信号为正弦波、三角波、方波等周期信号波的频率。所谓“频率”,就是周期性信号在单位时间(1S)内变化的次数。本次设计采用LM324以及IN4728稳压管组成的电路将正弦波、三角波,方波整形成方波,通过软件控制51单片机记录1s内的方波的上升沿的个数,即可得到被测信号的频率。
1. 2 分析设计任务
本频率计的数据采集系统主要元器件是单片机STC89C51,由它完成对待测信号频率的计数和结果的显示等功能,外部还有复位电路、晶振电路和显示模块等部件。系统框图如下所示:
图1-2-1 系统框图
第二章 电路的设计和器件的选择
2. 1 信号整形设计部分
为了能测不同波形的周期信号频率,必须对被测信号进行整形处理,使波形能成为被单片机C51识别的脉冲信号。本设计的整形模块由LM324和IN4728A组成的电压比较器构成。经过运放部分处理的信号电压值直接输入单片机可能造成电压值过高烧毁单片机,因此需要对电压值进行稳定电压处理。
整形电路如下所示:
图2-1-1
图2-1-2
图2-1-3
图2-1-4
2. 2 单片机控制设计部分
本设计采用STC89C51单片机,是一种高性能低功耗的8位微处理器。本次设计主要用到单片机P3口的一部分和P1口与LCD相连。22,23脚接12M晶振,为单片机提供时序;P3.1和P3.2口与MAX232连接,从而将软件程序考进到单片机中;P1.6与P1.7口通过与八段数码管连接,从而对记得的数据进行显示;将整形过后的方波接入到T0口,通过编程对输入脉冲进行测频并将其在数码管上显示。
图2-2-1
2. 3 显示电路设计部分
显示部分我们采用五位十进制数码管,用单片机89C51进行编程实现数码管显示的功能。
数码管显示电路图如下所示:
图2-3-1
2. 4 软件控制设计部分
主要能通过软件编程来完成各模块的硬件功能,通过仿真达到预期效果。 根据系统硬件设计,软件设计主要包括:单片机控制程序模块,数码管显示模块。
程序框图如下所示:
开始T0定时T1计数初始化开中断定时1S读取数据并显示计数器T1清零
图2-4-1主程序
T0中断T0重新赋初值开T0中断NN标志位是否为1Y标志位清零关T0中断t减1 t是否为0Y中断返回
图2-4-2T0中断程序
T1中断T1清零t加1中断返回
图2-4-3T1中断程序
第三章 组装调试电路
3. 1 硬件调试
主要使用数字万用表、信号发生器、示波器。依次测量每个功能部件功能是否达到要求。
用数字万用表测试每个元器件是否焊接有效,是否有虚焊,导线是否完全联通,器件是否有损坏;用示波器测量信号发生器输出的波形频率是否准确,测试我们的整形电路是否恩那个达到预期的效果。
3. 2 软件调试
通过编写C语言程序测试数码管显示模块、计数模块、定时模块是否都能满足所需功能要求。
第四章 实验结果及误差计算
第一次测量结果
实际值
10 50 100 200 500 1000 1100 1200 1500 2000 2500 3000 3500 4000 5000 10000
测量值
10 47 95 187 468 936 1021 1122 1405 1871 2336 2808 3271 3736 4671 9336
表4-1
误差分析:
这次测得数据具有很大的误差,我们对其进行了分析。首先是对示波器的输出波形,检测其是否像其显示的频率一样。测试结果是一样。然后我们又对整形电路的输出波形的频率进行了检测,结果还是一样。最后,我们怀疑是我们的单片机的晶振是否和显示的一样。即通过改变定时时间来消除误差。
差值
0 3 5 13 32 64 79 78 95 129 164 192 229 264 329 664
误差
0 0.06 0.05 0.065 0.064 0.064 0.071818
0.065 0.063333 0.0645 0.0656 0.064 0.065429
0.066 0.0658 0.0664
完善过后的测得数据
实际值
10 50 测量值
10 50 差值
0 0 误差
0 0 100 100 200 200 500 500 1000 1000 1100 1100 1200 1200 1500 1500 2000 2000 2500 2500 3000 3000 3500 3500 4000 4000 5000 5000 10000
10000
此次测得的数据与实际值毫无误差
0 0 0 0 0 0 0 0 0 0 0 0 0 0 表4-2
0 0 0 0 0 0 0 0 0 0 0 0 0 0
第五章 设计小结
我们的智能仪器课程设计安排在大四的开始,为期三个星期。以前总是在课
堂上听着老师分析智能仪器的原理,如何设计的,怎么实现功能的。现在我们也开始自己动手练习了。虽然做的很粗糙,功能也不是很完善,但是自己能够在同组成员的共同努力下做出这样的一件东西,真的是一件令人很激动的事情。
一开始,我在想考研嘛,时间比较的紧张,还要花费三个星期的时间做课程设计,可能有些不太合适,但是听见唐老师一直在强调,这个对自己以后考研面试很有帮助,于是我想也是,就算自己考试了,还是要面试的,不如趁着这个机会好好学习一下,再说大家都在实验室做课程设计,我自己也不能够安心呆在教室看书。于是我和组员们就投入到了课程设计中。
首先是要画出模拟图,焊接硬件电路,由于我们的课题比较简单,这些任务基本上能够在规定的计划时间内完成。最后一步就是编写程序,然后上机调试。这是最难的一步,也是最关键的一步。这是我们会遇到很多的问题。果然,我们遇到了。
我们做的是测频计,用信号发生器发出正弦波,方波,和三角波,然后通过我们设计的调理电路将其转成规则的方波,通过程序,我们用数码显示管读出它的频率。一开始,我们的程序无法运行,我们自己已经找不出错误了,于是就请了班上比较厉害的同学帮我们看看问题出在哪里,经过一番努力问题还是没有能过解决掉。于是我们的设计一点进展都没有,急坏了我们。没有办法,只能重新找条思路编程,于是我们又继续编程序了。最后终于能够显示结果了,可是误差很大,老师说自己找原因,没有办法,我们又要开始纠结了。最后我们选择用补偿法将误差缩小了。最后能达到很高的准确度。
这次课程设计对我的启发很大。很多的东西纸上谈兵是没有用的,只有真正的自己动手做了,才能发现问题,解决问题,在失败中成长。就像考研,即使你的分数线再高,如果对于动手方面的东西一点都没有接触,学校是不会看好你的,毕竟是工科的学生,纯理论的东西是没有用的。
第六章元器件清单
元器件 单片机 数码管显示器
Multichannel RS-232 Drivers/Receivers
电阻 电容 晶振 放大器 稳压管 排针 导线
数量 STC89C51 LG3641 MAX232 若干 若干
6MHz 一个 12MHz 一个 LM324 1N4728两个 若干 若干 表6-1
第七章 参考文献
[1] 童诗白主编.《模拟电子技术基础》(第三版)·高教出版社.2001 [2] 张毅刚主编 《单片机原理及应用》(第一版)·高教出版社.2010 [3] 张国雄主编 《测控电路》(第3版)·机械工业出版社.2010 [4]LM324:放大器
ZLG7290:种IC接口键盘及LED驱动管理器件,提供数据译码和循环、移位、段寻址等控制。 STC89C51:单片机
MAX232: +5V-Powered, Multichannel RS-232 Drivers/Receivers
2
附 录
1. 原理图
2. 单片机C语言程序 #include #include typedef unsigned char BYTE; typedef unsigned long int WORD; typedef unsigned long int DWORD; #define T1MS (65536-12000) sfr AUXR = 0x8e; DWORD t,a[8]; //----------------------------------- /*精确延时程序*/ } void delay(BYTE t) { do { TL0=T1MS; TH0=T1MS>>8; TR0=1; while(!TF0); TF0=0; TR0=0; }while(--t); /*读出现在计数器中的计数值*/ WORD fuzhi(void) { } /*将1s计数的值显示*/ void div(unsigned long int ss) { for(i=0;i<5;i++) { a[i]=ss%10; ss/=10; BYTE i; WORD i,j; i=TH1; j=i<<8; j+=TL1; return j; } } ZLG7290_Download(i,0,0,a[i]); if(i==3){ZLG7290_Download(i,1,0,a[i]);} //-------------------------------------- main() { DWORD mi, bb,cc; AUXR=0xc0; TMOD=0x51; TL1=0; TH1=0; TR1=1; } ET1=1; EA=1; while(1) { } delay(1000); bb=fuzhi(); mi=t; t=0; cc=mi*65536+bb; TH1=0; TL1=0; div(cc); /*t1中断函数*/ void { } TL1=0; TH1=0; t++; t1_sever(void) interrupt 3 3. 任务书 一、课题名称 频率计设计 二、设计内容及设计要求 测给定的正弦波、三角波、方波的频率。 设计任务: (1)测量信号:正弦波;三角波;方波 ; (2)测量频率范围: 10Hz到10kHz之间; (3)显示方式: LED数码管十进制数显示; 因篇幅问题不能全部显示,请点此查看更多更全内容