单片机课程设计方案量程自动转换测量仪.docx

上传人:b****8 文档编号:10668236 上传时间:2023-02-22 格式:DOCX 页数:17 大小:107.58KB
下载 相关 举报
单片机课程设计方案量程自动转换测量仪.docx_第1页
第1页 / 共17页
单片机课程设计方案量程自动转换测量仪.docx_第2页
第2页 / 共17页
单片机课程设计方案量程自动转换测量仪.docx_第3页
第3页 / 共17页
单片机课程设计方案量程自动转换测量仪.docx_第4页
第4页 / 共17页
单片机课程设计方案量程自动转换测量仪.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机课程设计方案量程自动转换测量仪.docx

《单片机课程设计方案量程自动转换测量仪.docx》由会员分享,可在线阅读,更多相关《单片机课程设计方案量程自动转换测量仪.docx(17页珍藏版)》请在冰豆网上搜索。

单片机课程设计方案量程自动转换测量仪.docx

单片机课程设计方案量程自动转换测量仪

课程名称:

单片机原理及应用课程设计

 

设计题目:

量程自动转换频率计

系别:

通信与控制工程系

专业:

通信工程

班级:

学生姓名:

朱飞宇

学号:

06416129

起止日期:

2009年6月8日~2009年6月19日

指导教师:

教研室主任:

谢四莲

指导教师评语:

 

指导教师签名:

年月日

成绩评定

项目

权重

成绩

1、设计过程中出勤、学习态度等方面

0.2

2、课程设计质量与答辩

0.5

3、设计报告书写及图纸规范程度

0.3

总成绩

教研室审核意见:

 

教研室主任签字:

年月日

教案系审核意见:

 

主任签字:

年月日

摘要

本设计是一种基于STC89C52单片机开发的频率自动转换测量仪的设计。

系统以单片机STC89C52及可编程逻辑器件为核心,构成完备的测量系统。

可以对20Hz~20kHz频率范围的信号进行频率、相位等参数的精确测量,测相绝对误差不大于1°;采用数码管显示被测信号的频率、相位差。

硬件结构简单,软件采用汇编语言实现,程序简单可读写性强,效率高。

与传统的电路系统相比,其有处理速度快、稳定性高、性价比高的优点。

关键词:

STC80C52自动转换可编程逻辑器件单片机

 

设计要求2

1方案论证与对比2

1.1方案一2

1.2方案二3

1.3方案对比与选择3

2单元电路设计与计算4

2.1放大电路的设计4

2.2整形电路的设计4

2.3分频电路的设计5

2.4分频控制电路设计5

3系统软件工作流程图6

3.1系统工作流程6

4系统功能测试与整体指标8

5详细仪器清单8

6总结与思考及致谢10

参考文献11

附录一:

放大整形分频控制电路PCB板12

附录二:

74HC390分频电路PCB板图13

附录三:

程序14

量程自动转换频率计

设计要求

利用单片机作为控制核心,完成一个量控可以自动转换得频率计。

具体要求如下:

基本部分:

(1)检测输入信号的频率,自动选择量程进行测量。

(2)测量精度达到0.1HZ,频率测量范围为20KZ~20KHZ。

(3)可以测量的信号在0.1V~5V。

(4)在数码管上显示测量的频率值。

扩展部分:

被测频率测量范围为20HZ~10MHZ,检测输入信号的频率,自动选择量程进行测量。

1方案论证与对比

 

1.1方案一

系统如图1所示。

 

图2方案一系统方框图

该方案。

缺点。

1.2方案二

本设计以89C52单片机和可编程逻辑器件(CPLD)为核心,构成低频信号频率相位测量仪;频率、相位测量电路由阻抗变换电路、整形电路、分频电路、计数器电路、锁存器、数据处理和显示电路等组成,可对20Hz~20kHz信号进行频率和相位测量。

单片机系统是整个硬件系统的核心,他既是协调整机工作的控制器,又是数据处理器,并完成对最终显示的控制。

原理框图如图2所示:

图3方案二系统方框图

1.3方案对比与选择

以上方案。

显然采用方案二比较便于设计,并且精确度也高些。

2单元电路设计与计算

2.1放大电路的设计

根据设计要求芯片特点:

电流反馈型宽带运放,其单位增益带宽很宽,高达140MHZ。

注意要点:

应注意电路中各电阻电容应紧密靠近AD811的相应引脚,去耦电容必不可少。

特意加了两个隔直电容,以便滤除直流的影响。

整个系统单电源供电,提高稳定性。

放大倍数计算公式:

Vin=Vout*R4/(R13+R4)

即Vout/Vin=(R13+R4)/R4=(510+51)/51=11。

如图4所示:

图4放大电路原路图

我们采用。

Vin=Vout*R4/(R13+R4)

即Vout/Vin=(R13+R4)/R4=(510+51)/51=11。

2.2整形电路的设计

单片机只能检测到方波信号,为了能测量方波以外的信号。

我们设计了整形电路,通过比较器LM339对信号进行整形编程方波信号。

整形电路的原理图如图5所示:

注意要点:

加入正反馈电阻构成迟滞比较器。

如果输入信号Uin在门限值附近有微小的干扰,则输出电压就会产生相应的抖动(起伏)。

在电路中引入正反馈可以克服这一缺点。

原理图如图5所示

图5整形电路原理图

2.3分频电路的设计

为了能达到扩展部分的要求被测频率要达到10MHZ,故要对其进行分频,SN74HC390是高速分频器件,最高分频频率为50MHz。

每片SN74HC390可实现100分频,采用两片串联,可实现对信号的1000分频,经分频后的数字信号频率较低,约8kHz以下,可由单片机直接计数。

分频电路如图6示。

电路如图6示:

图674C390分频电路

2.4分频控制电路设计

单片机不能检测高频信号,为了满足设计要求中的能测量10MHZ的信号,我们设计了分频电路。

并且为了满足自动换挡的要求,我们选用模拟开关CD4051对信号进行分频的倍数的控制。

CD4051真值表如左图示,分频控制电路如右图示。

电路如图7示:

图7CD4051分频控制电路

3系统软件工作流程图

3.1系统工作流程

频率计由单片机89C52、信号予处理电路、串行通信电路、测量数据显示电路和系统软件所组成,其中信号予处理电路包含待测信号放大、波形变换、波形整形和分频电路系统硬件框图如图1所示。

信号予处理电路中的放大器实现对待测信号的放大,降低对待测信号的幅度要求。

波形变换和波形整形电路实现把正弦波样的正负交替的信号波形变换成可被单片机接受的TTL/CMOS兼容信号。

分频电路用于扩展单片机的频率测量范围并实现单片机频率测量和周期测量使用统一的输入信号

图9测频原理

被测信号。

程序流程图如图10所示:

图10软件系统流程图

4系统功能测试与整体指标

系统的调试以程序的调试为主

1)硬件测试比较简单,首先检频查电路的焊接师傅正确,让后可以用万用表测试或通电检测。

2)软件调试可以先编写程序并进行硬件的正确性检验,然后分别进行主程序、显示数据刷新子程序、频率转换命令子程序、读出频率子程序等的编程及调试。

3)软件调试能显示频率值,并且测得的结果与理论值相差在1%以内,实验就算基本上成功了。

表格1系统测试结果

测量序号

理论值

测量值

1

20000

20007.5

2

15000

15004.3

3

10000

10003.9

4

5000

5002.7

5

1000

1001.3

6

500.0

500.4

7

100.0

100.1

8

20.0

20.0

5详细仪器清单

表格2仪器清单

仪器名称

数量

STC89C52RC

1片

PCB板

1块

IC插座40脚

1个

9针串口座

1个

9针串口盖

1个

电源适配器

1个

17脚单排

1个

20脚单排

1个

带锁开关

1个

三孔接线座

1个

三位数码管

2个

三极管8051

8个

MAX232EPE

1片

1K电阻

10个

2K电阻

5个

发光二极管

1个

轻触开关

1个

6总结与思考及致谢

为了完成本次课程设计的任务,我查阅了大量相关书籍和资料,花费了几天的时间才基本的了解和掌握了汇编的基本特征和编程语句,最终完成了设计任务。

单片机具有其自己的指令集,在对他的编程过程中我深刻体会到这种语言的简便。

许多编程如果应用汇编语言进行编程,工作量会大大降低,而且算法明了,形式简洁,可以大大减轻工作量。

汇编语言的代码效率高,对复杂的运算或大型程序,用汇编语言的编程时间远比C语言花费多,这就降低了开发效率;而C语言的编程无需考虑几的寄存器或存储器的分配等细节,有C51编译系统安排,从而可以加快开发者的编程速度,缩短开发周期。

单片机系统也可以用C语言进行开发。

明确技术是为设计服务的,不要沉迷于技术的运用,坚决摒弃那些华而不实的特效。

通过在本次课程设计我更加深刻的明白了,注意理论联系实际,使我们更好的掌握以单片机为核心的嵌入式系统的开发技术。

在调试中我们用到了系统可编程(ISP)实验板作为一个实践平台提供给了我们一个很好的动手操作机会。

随着非总线扩展芯片的增多,我们要用到窜行器件。

扩展的原则一是使用相同控制信号的芯片之间,不能有相同的地址;二是相同地址的芯片之间,控制信号不能相同。

单片机总是通过地址总线、数据总线和控制总线来与外部交信息的。

数据总线传送指令码和数据信息,各外围芯片都要并接在它上面和CPU进行信息交流。

由于数据总线是信息的公共通道,各外围芯片必须分时使用才不至于使用总线的冲突,什么时候哪个芯片使用,是靠地址编号区分的,什么时候打开指定地址的那个芯片通往数据总线的门,是手控制信号控制的,而这些信号是通过执行相应的指令产生的,就是计算机的工作原理,因此单片机的系统扩展就归结到外界设计存储器、程序存储器和I/O接口与三总线的连接。

通过这次课程设计我收获了很多,我基本了解了单片机和使用的一些注意事项,在某种程度上对单片机的作用也有了更深的理解。

参考文献

[1] 程守洙,江之永主编.普通物理学(第5版)[M].北京:

高等教育出版社,1998.

[2] 马文蔚改编.物理学(第3版)[M].北京:

高等教育出版社,1993.

[3] 吴百诗主编.大学物理(修订本)[M].西安:

西安交通大学出版社,1994.

[4] 阎金铎等编写.普通物理教案手册[M].北京:

北京师范大学出版社,1984.

[5] 祝之光编写.物理学[M].北京:

高等教育出版社,1988.

[6] 张学恭主编.物理学[M].西安:

西安交通大学出版社,1996.

[7] 张三慧主编.大学物理学(第2版)力学[M].北京:

清华大学出版社,2000.

[8]倪光炯等编.改变世界的物理学(第2版)[M].上海:

复旦大学出版社,1999.

[9]向义和编著.大学物理导论[M].北京:

清华大学出版社,1999.

[10]李群芳主编.单片微型计算机与接口技术.北京:

电子工业出版社,2005

[11]谢自美主编.电子线路设计.武汉:

中科技大学出版社,2004

[12]朱定华主编.单片机原理及接口技术学习辅导.北京:

电子工业出版社,2001

[13]徐惠民主编.单片微型计算机原理、接口及应用(第2版).北京:

北京邮电大学出版社,2000

附录一:

放大整形分频控制电路PCB板

附录二:

74HC390分频电路PCB板图

附录三:

程序

#include"reg52.h"

unsignedcharcodedisbit[6]={0xfb,0xf7,0xef,0xdf,0xbf,0x7f}。

unsignedcharcodedispcode[10]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28}。

unsignedintcountf=0,countm。

floatprecount。

unsignedintt0oc=20。

voiddispfre(unsignedintfre)。

voiddelay_r(void)。

/************测频率*************/

voidt0_int()interrupt1

{

TR0=0。

t0oc--。

TH0=0x3c。

//T0初值定时一秒

TL0=0xb0。

//

if(t0oc==0)

{

t0oc=20。

//

precount=(float)(countf/10)。

countm=(int)precount。

countf=0。

}

TR0=1。

}

voidint0_int()interrupt0

{

EX0=0。

countf++。

EX0=1。

}

/*******数码管显示频率**********/

voiddispfre(unsignedintfre)

{

unsignedintjinp。

if(fre<=20000)

{

if(fre>=10000&fre<=20000)

{jinp=(fre*10)%10。

P1=dispcode[(fre*10)%10]&0xdf。

P3=disbit[0]。

delay_r()。

P1=dispcode[fre%10]。

P3=disbit[1]。

delay_r()。

P1=dispcode[(fre/10)%10]。

P3=disbit[2]。

delay_r()。

P1=dispcode[(fre/100)%10]。

P3=disbit[3]。

delay_r()。

P1=dispcode[(fre/1000)%10]。

P3=disbit[4]。

delay_r()。

P1=dispcode[fre/10000]。

P3=disbit[5]。

delay_r()。

}

if(fre>=1000&fre<10000)

{jinp=(fre*10)%10。

P1=dispcode[(fre*10)%10]&0xdf。

P3=disbit[1]。

delay_r()。

P1=dispcode[fre%10]。

P3=disbit[2]。

delay_r()。

P1=dispcode[(fre/10)%10]。

P3=disbit[3]。

delay_r()。

P1=dispcode[(fre/100)%10]。

P3=disbit[4]。

delay_r()。

P1=dispcode[(fre/1000)]。

P3=disbit[5]。

delay_r()。

}

if(fre>=100&fre<1000)

{jinp=(fre*10)%10。

P1=dispcode[(fre*10)%10]&0xdf。

P3=disbit[2]。

delay_r()。

P1=dispcode[fre%10]。

P3=disbit[3]。

delay_r()。

P1=dispcode[(fre/10)%10]。

P3=disbit[4]。

delay_r()。

P1=dispcode[(fre/100)]。

P3=disbit[5]。

delay_r()。

}

if(fre>=20&fre<100)

{jinp=(fre*10)%10。

P1=dispcode[(fre*10)%10]&0xdf。

P3=disbit[3]。

delay_r()。

P1=dispcode[fre%10]。

P3=disbit[4]。

delay_r()。

P1=dispcode[(fre/10)]。

P3=disbit[5]。

delay_r()。

}

 

}

}

voiddelay_r(void)

{unsignedchari,j。

for(i=0。

i<25。

i++)

for(j=0。

j<25。

j++)。

}

voidmain(void)

{

TMOD=0x01。

//T0定时

TH0=0x3c。

//T0初值

TL0=0xb0。

EA=1。

EX0=1。

IT0=1。

//外中断0下降沿触发

ET0=1。

TR0=1。

while

(1)

dispfre(countm)。

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1