课程设计(论文)基于单片机的通用电子计数器的设计.doc

上传人:rrsccc 文档编号:9928995 上传时间:2021-04-04 格式:DOC 页数:23 大小:503.50KB
返回 下载 相关 举报
课程设计(论文)基于单片机的通用电子计数器的设计.doc_第1页
第1页 / 共23页
课程设计(论文)基于单片机的通用电子计数器的设计.doc_第2页
第2页 / 共23页
课程设计(论文)基于单片机的通用电子计数器的设计.doc_第3页
第3页 / 共23页
课程设计(论文)基于单片机的通用电子计数器的设计.doc_第4页
第4页 / 共23页
课程设计(论文)基于单片机的通用电子计数器的设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《课程设计(论文)基于单片机的通用电子计数器的设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的通用电子计数器的设计.doc(23页珍藏版)》请在三一文库上搜索。

1、琼州学院本科生学年论文基于单片机的通用电子计数器的设计学 院: 电子信息工程学院 专 业: 电子信息科学与技术专业 年 级: 2008级 学生姓名: 学 号: 指导老师: 2011年6月基于单片机的通用电子计数器的设计XXX(琼州学院电子信息工程学院,海南 三亚,572022)摘要:本文重点介绍了以AT89C52单片机为控制器的测量方法,并用c语言进行设计,采用单片机智能控制,结合外围电子电路得以频率和周期的测量,并用十进制数字来显示被测信号的频率和周期。关键词:单片机AT89C52 电路原理 频率测量 周期测量 0 引言随着科技的不断发展,单片机已广泛应用在工业控制、自动检测、智能仪表、家用

2、电器等各个方面。其中,利用电子计数器测量来进行测量周期和频率的精度高、速度快、使用简单,因而得到了广泛应用。本文介绍一种基于单片机控制的通用电子计数器,具有成本低,体积小、抗干扰能力强,功能强大,测量精度高,使用方便、简单等优点。1 系统方案论证与比较1.1 方案一采用的是中小规模数字集成电路,虽然能够实现频率和周期的测量,但其功能扩展不易实现,智能化程度也不高,不符合目前通用计数器的发展要求。1.2 方案二设计方法,硬件电路的实现上都要比方案一和方案三简洁,并且设计思路是非常简单的,电路也不复杂,但由于它采用的是通用计数器专用模块设计,不符合我们的设计要求,所以就不予考虑。1.3 方案三使用

3、到的元器件都是我们所常用到的一些元件,如:74HC573八进制3态非反转透明锁存器,LED数码管等;且使用了功能强大的AT89C52芯片,使本系统可以通过对软件改进而扩展功能,提高测量精度。综上所述,考虑系统的方案的可行性和可靠性等因素,本设计采用方案三以单片机作为核心控制系统的具体实施方案作为最终的方案。2 硬件设计主要硬件原件说明2.1 单片机选择AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令

4、系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。选择AT89C52,其功能和特点:与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz、 三级加密程序存储器、 32个可编程I/O口线、三个16位定时器/计数器 八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符 。2.11 引脚功能及管脚电压AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调

5、整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10

6、脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。所以选择功能强大的AT89C52芯片非常适合。AT89C52引脚图如下:2.2 74HC573芯片74HC573八进制3态非反转透明锁存器,高性能硅门 CMOS 器件,当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 1脚三态允许控制端低电平有效 ,D0D7为数据输入端 ,Q0Q7为数据输出

7、端 ,LE为锁存控制端。74HC573引脚图 2.3 单元电路原理介绍2.3.1 时钟电路原理 如图所示为时钟电路原理图,AT89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。晶振电路图2.3.2 复位电路原理 如图所示为复位电路原理图,复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序,并使其它功能单元处于一个确定的初始状态。本

8、复位电路采用的是按键复位,它是通过复位端经电阻与VCC电源接通而实现的,它兼具上电复位功能。因本系统的晶振的频率为12MHz,所以,复位信号持续时间应当超过2S才能完成复位操作。 复位电路图2.3.3 显示器原理一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编

9、码为11000000,即0xc0。可以看出两个编码的各位正好相反;本系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。7SEG-MPX6-CA数码管2.4 测频率的基本原理2.4.1 测量频率的方法测量频率的方法一般分为无源测频法、有源测频法及电子计数法三种。无源测频法(又可分为谐振法和电桥法),常用于频率粗测,精度在1左右。有源比较法可分为拍频法和差频法,前者是利用

10、两个信号线性叠加以产生拍频现象,再通过检测零拍现象进行测频,常用于低频测量,误差在零点几Hz;后者则利用两个非线性信号叠加来产生差频现象,然后通过检测零差现象进行测频,常用于高频测量,误差在20 Hz左右。以上方法在测量范围和精度上都有一定的不足,而电子计数法主要通过单片机进行控制。由于单片机的较强控制与运算功能,电子计数法的测量频率范围宽,精度高,易于实现。本设计就是采用单片机电子计数法来测量频率和周期,其系统硬件原理框图如图1所示时钟,复位电路按键信号源f(x)AT89C52显示电路2.4.2 基本原理测频率的基本原理是利用电子计数器显示单位的时间内通过时钟信号周期的个数来实现频率的测量。

11、当测量周期时,通过单片机求频率的倒数方法,从而获得我们所需要的周期的测量。硬件部分由分频电路,单片机和数据显示电路组成;软件部分由信号频率测量模块,周期测量模块,定时器终端服务模块,数据显示模块等功能模块实现。应用单片机的控制能力和运算能力,实现计数功能和频率,周期的换算。设计的通用计数器测量范围能够达到20HZ7MHZ,满足所需要的频率范围,测量精度较高,并对测量过程中数据误差的进行了分析,提出了减少误差的方法。最后,文章还对通用计数器的设计方案提出了可扩展的地方。用单片机电子计数法测量频率有测频率法和测周期法两种方法。测量频率主要是在单位定时时间里对被测信号脉冲进行计数;测量周期则是在被测

12、信号一个周期时间里对某一基准时钟脉冲进行计数。测量矩形波的周期通过对频率求倒即可得到。基于单片机的通用电子计数器主要电路图3 软件设计3.1 设计流程图计算机单片机锁存器数码管显示计数器功能烧录程序控制信号控制信号电路板3.2 频率/周期测量流程图变量初始化,T0/T1初始化(设置T0为外部脉冲计数,T1为1s定时)否结束计算频率/周期定时1s是否已到是3.3 总流程图3.2 测频法与测周期法误差分析电子计数器测频法主要是将被测频率信号加到计数器的计数输入端,然后让计数器在标准时间Ts1内进行计数,所得的计数值N1。与被测信号的频率fx1的关系如下: fx1=N1/Ts1= N1fs1而电子计

13、数器测周法则是将标准频率信号fs2送到计数器的计数输入端,而让被测频率信号fx2控制计数器的计数时间,所得的计数值N2与fx2的关系如下: fx2=fs2/ N2事实上,无论用哪种方法进行频率测量,其主要误差源都是由于计数器只能进行整数计数而引起的1误差:1=N/ N对于测频法,有:1=N1/ N1=1/ N1=1/ Ts1fx1= fs1/ fx1对于测周法,则有:1=N2/ N2= 1/ N2=fs2/ fx2=Ts2fx2可见,在同样的Ts下,测频法fx1的低频端,误差远大于高频端,而测周法在fx2的高频端,其误差远大于低频端。理论研究表明,如进行n次重复测量然后取平均,则1误差会减小n

14、倍。如给定1误差0,则要求0对测频法要fx1 对测周法则要求fx20fs2因此,对一给定频率信号fs进行fs1/0 测量时,用测频法fs1越低越好,用测周法则fs2越高越好。3.3 程序编程设计系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以 下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3)绘制程序流程图

15、;(4)合理分配系统资源;(5)为程序加入注释,提高可读性,实施软件工程;3.3 功能仿真使用Proteus 软件进行单片机系统仿真设计,然后结合keil uvision4软件进行编译,实现单片机电路的仿真。频率:50kHz 周期:20us频率:100Hz 周期:10000us功能仿真图4 总结与体会本次设计利用AT89C52单片机来设计通用电子计数器,再辅之于部分外围电路实现对通用电子计数器进行频率和周期的测量,性能稳定,精度高,而且扩展性能强大。但也存在一定的误差。本实验设计还存在很多不足之处。但在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实

16、际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。5 致谢本次论文离不开指导老师的指导和关心。在此,谨向指导老师致以衷心的感谢。附录1 程序源代码/ *基于单片机的通用电子计数器主要程序*/ * 功能概要: LED显示频率,周期 */* MCU: ATC89C52 晶振:11.0592Mhz */=/*头文件区*#include#include#include #include/*宏定义方便使用*#define uchar unsigned char#define uint unsigned int/*定义变量区*sbit dula=P26; /数

17、码管段选sbit wela=P27; /数码管位选sbit k5=P37; /测频启动按键uchar k,count,key=0;uchar code table=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80, 0X90,0X88,0X83,0XC6,0XA1,0X8E,0X86,0xbf,0xff; /0F,-,全不亮,共阳uchar code table_yin=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x00; /

18、共阴uchar tab_freq=0,0,0,0,0,0;unsigned long int z;/=/*函数声明区* void delay(uint); /延时函数void disp(); /显示函数void int_count0(); /T0计数中断函数void int_time1(); /T1定时中断函数void trans_count(); /数据转换函数void freq_key(); /测试启动及频率周期切换/=/*主函数开始*void main()dula=0;wela=0;TMOD=0x15; EA=1;ET0=1;ET1=1;while(1) freq_key(); tran

19、s_count(); disp();/=/*T0计数中断函数开始*void int_count0() interrupt 1k+;if(key=2)TR1=0;TR0=0;/*T1计时中断函数开始*void int_time1() interrupt 3count+;if(key=1)TH1=0x4c;TL1=0x00; /50ms初值if(count=20) TR0=0; TR1=0; count=0; /=/*数据转换函数开始*void trans_count()if(key=1) z=k*65536+TH0*256+TL0; if(z=999999) z=999999;if(key=2)

20、 z=(count*65536+TH1*256+TL1)*12000)/110592; /11.0592每个机器周期时间为:12/11.0592 us if(z=999999) z=999999; tab_freq0=z/100000; /十万位 tab_freq1=(z%100000)/10000; /万位 tab_freq2=(z%10000)/1000; /千位 tab_freq3=(z%1000)/100; /百位 tab_freq4=(z%100)/10; /十位 tab_freq5=z%10; /个位/=/*显示函数开始*void disp()uchar i,n,a;n=0x01;

21、 /共阳位选 /n=0xfe; /共阴位选 dula=0;wela=1; / 选中位选P0=n;for(i=0;i6;i+)wela=0;dula=1; /选中段选a=tab_freqi;P0=tablea;dula=0;wela=1; / 选中位选P0=n;delay(2);n=n1; /共阳位选 /*n=n;n=n0;i-) for(n=110;n0;n-);/=/*按键函数开始*void freq_key()if(k5=0)delay(10);if(k5=0) key+; while(k5=0); if(key=1) /测频率 k=0; count=0; TH0=0x00; TL0=0X

22、00; /T0 TH1=0x4c; TL1=0X00; /50ms */ TR0=1; TR1=1; if(key=2) / z=0; k=0; count=0; TH0=0xff; TL0=0Xf5; /T0 TH1=0x00; TL1=0X00; /T1 TR0=1; while(TL0=0xf5); /确保当外部时钟信号为下降沿时,T1开始计数 TR1=1; if(key=3) z=0; key=0; 参考文献:1张毅刚,单片机原理及应用,高等教育出版社,2003年2李广弟,朱月秀,冷祖祁. 单片机基础M北京:北京航空航天大学出版社,2007年3王建校、杨建国、宁改娣等. 51系列单片机

23、及C51程序设计M北京:科学出版社,2002年4马忠梅、马岩、张凯等. 单片机的c语言应用程序设计M北京:北京航空航天大学出版社,1997年5林立,张俊亮,曹旭东,刘得军.单片机原理及应用M,电子工业出版社,2010.5Microcontroller-based design of general-purpose electronic counterCHEN-DAO-NENG(Qiongzhou Institute of Electronic Information Engineering, Sanya, Hainan,572022)Abstract: This paper focuses o

24、n the AT89C52 microcontroller as the controller of the measurement method, and using c language design, the use of intelligent control chip, combined with the external electronic circuit to measure frequency and period, and decimal numbers to show the measured frequency and cycle .Keywords: microcontroller AT89C52 frequency measurement period measurement circuit.琼州学院本科生学年论文指导教师评定表姓名陈道能性别男学号08406051034学院琼州学院电子信息工程学院年级 08级专业电子信息科学与技术论文题目基于单片机的通用电子计数器的设计序号评价内容分数序号评价内容分数1准备过程的态度(10分)5创新性(10分)2论文写作(设计)的态度(20分)6综合能力(10分)3理论意义或现实意义(15分)7写作水平(10分)4工作量与难度(15分)8写作规范(10分)总分评语:指导教师(签名): 2010年 6 月 30 日

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1