单片机频率计数器 湖南工程学院课设.docx

上传人:牧羊曲112 文档编号:5076935 上传时间:2023-06-02 格式:DOCX 页数:19 大小:404.29KB
返回 下载 相关 举报
单片机频率计数器 湖南工程学院课设.docx_第1页
第1页 / 共19页
单片机频率计数器 湖南工程学院课设.docx_第2页
第2页 / 共19页
单片机频率计数器 湖南工程学院课设.docx_第3页
第3页 / 共19页
单片机频率计数器 湖南工程学院课设.docx_第4页
第4页 / 共19页
单片机频率计数器 湖南工程学院课设.docx_第5页
第5页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机频率计数器 湖南工程学院课设.docx》由会员分享,可在线阅读,更多相关《单片机频率计数器 湖南工程学院课设.docx(19页珍藏版)》请在三一办公上搜索。

1、第1章概述11.1设计内容11.2设计要求11.3设计目的1第2章设计方案22.1测频原理22.2设计总体思路2第3章各模块硬件设计及说明33.1单片机的选择与说明33.2方波发生器电路设计43.3晶振电路的设计43.4复位电路设计53.5数码管显示电路设计6第4章软件部分的设计84.1软件设计思路84.2软件设计流程图94.3源程序编写9第5章系统的仿真与调试12第6章总结与体会14参考文献15附录:频率计数器电路图16第1章概述1.1设计内容以单片机为核心,设计和制作一个频率计数器,来完成对输入的信号进行 频率计数,计数的频率结果通过6位动态数码管显示出来。要求能够对0 250KHZ 的信

2、号频率进行准确计数,计数误差不超过1HZ。1.2设计要求(1) 设计方案要合理、正确;(2) 系统硬件设计;(3) 完成必要元器件选择;(4) 系统软件设计及调试;(5) 写出设计报告。1.3设计目的(1) 了解定时、计数器的结构及其工作原理;(2) 掌握单片机的定时、计数器的控制方式;(3) 掌握应用单片机进行频率测试控制的原理;(4) 能根据设计任务要求编制数显频率计数器的程序,理解程序对计数器 的控制原理;(5) 会利用电路仿真软件绘制数显频率计数器的电路原理图;(6) 会用KeilC51软件对源程序进行编译调试及与Proteus软件联调,实 现电路仿真。第2章设计方案2.1测频原理以被

3、测信号整形后的方波脉冲作为控制闸门信号,采用单片机内部的定时 器计数器进行计数。方波脉冲的上升沿到达,定时器计数器开始从零启动计数, 每一机器周期,计数器加1,直到方波脉冲的下降沿到达,计数器则停止计数, 此时,计数器内存储的是脉宽的机器周期数的2倍。由于单片机内部振荡频率很 高,故允许有一个机器周期的量化误差。设定时器计数器内存储的机器周期数为N,机器周期为Tc,则信号周期为T=2NXTc(1)于是,信号频率为f=1/T=1/(2NXTc)(2)2.2设计总体思路在设计频率计数器前,需要先设计一个简单的输入信号发生器,在本课题我 们选择设计一个简易的方波发生器,频率可以自行调整。频率计数器的

4、设计包括频率计数和显示电路的的设计,频率计数需包含复 位,译码功能,显示电路的功能要求能通过6位动态数码管将计数频率的结果显 示出来。频率计数器的设计需先利用相应的编程软件设计出程序,编译通过后在利用 仿真软件仿真出正确的结果。总设计框图如下:频率计数器总设计框图第3章各模块硬件设计及说明3.1单片机的选择与说明在本课题中使用的是AT89C51单片机。一般的OTP产品,一旦错误编程就成了废品,而ATMEL公司89系列单片机 内部采用了 Flash存储器,所以,错误编程之后仍可以重新编程,直到正确为止。 其次是它可反复进行系统试验。用89系列单片机设计的系统,可以反复进行系 统试验,每次试验可以

5、编入不同的程序,这样就可以保证用户的系统设计达到最 优,而且还可以随用户的需要和发展进行修改,使系统能不断追随用户的最新要 求。本次课程设计我选择AT89C51单片机。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微 处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中, ATMEL的AT89C51是一种高效微控制器,1. 主要特性:与MCS-51兼容;4K字节可编程FLASH存储器;寿命:1000写/擦循环;数 据保留时间

6、:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;128X8 位内部RAM; 32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程 串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。2. 振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为 片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信 号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3. 芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持

7、ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在 任何非空存储字节被重复编程以前,该操作必须被执行。AT89C51的引脚分布:XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.Q/A6P2.1/A9P2.2VA10PSENP2.3/A11ALEP2.4/A12EAP2.5VA13P2.6/A14P2.7VA15P-1.0P3.0FXDP1.1P3.1HXDP1.2P32/1NT0P-1.3P3.3/1NT1P1.4P3.4H0P1.5P3.STIP-1.6P

8、3.6RP1.7P37/RD901 1 ? 3455678_2空 3AT89C51的引脚分布3.2方波发生器电路设计如下图:在P3.2输入频率可调方波。q (痢I I ztjT(P3.2/iNT0j a门打二10:TEXfi= AJ U -I hl!- II! _|_LI3何 _ j Ii r方波发生器3.3晶振电路的设计在MCS-51芯片内部有一个高增益反相放大器,其输入端为XTAL1,其输出端 为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容, 从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如下图所示:时钟电路产生的振荡脉冲经过触发器进行二分频之

9、后,才成为单片机的时钟脉冲信号。一般地,电容C1和C2取30pF左右,晶振的振荡频率范围为1.212MHZ。晶 体振荡频率高,系统的时钟频率也高,单片机运行速度也就越快。MCS-51在通常应用情况下,使用振荡频率为6MHz或12MHz。晶振电路3.4复位电路设计根据应用的要求,复位操作有两种基本形式:上电复位和上电或开关复位。当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的 高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环 复位状态。上电复位要求接通电源后,自动实现复位操作。电容C3和电阻R9对电源十 5V来说构成微分电路。如下图复位电路

10、所示。要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也 能使单片机复位。由于电容C3的充电和反相门的作用,使RST持续一段时间的 高电平。当单片机已在运行当中时,按下复位键RST后松开,也能使RST为一段 时间的高电平,从而实现上电或开关复位的操作。本系统的复位电路采用上电复 位。复位电路3.5数码管显示电路设计首先介绍一下显示器的显示接口,按驱动方式分为静态显示和动态显示两种 显示方式。对于多为显示器,通常都是采用动态显示,既逐个地循环地点亮各位 显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残 留效应,看起来与全部点亮效果一样。为了实现LED显示器的

11、动态扫描,除了要 给显示器提供段的输入之外,还有对显示器选择位的控制,这就是通常说的段控 和位控。因此,多位LED显示器接口电路需要有两个输出口,其中一个用于8 条段控线;另一个用于输出位控线,位控线的数目等于显示器的数目。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态 驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另 外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是 那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们 只要

12、将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码 管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受 控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms, 由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同 时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会 有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而 且功耗更低。如下图所示:AT89C51的P0-P0.6分别连接数码管的A-G引脚,P0.7连接DP端, 低电平有效。P1.0-P1.2输出数码管的位码,控制6个数码

13、管,高电平有效。由于 由P0口输出的是二进制码,故要使用译码器74LS138进行译码,产生6个输出端, 控制6个数码管的状态。数码管显示电路译码电路第4章软件部分的设计4.1软件设计思路在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数 器加1。外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少 需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使 用12MHz时钟,最大计数速率为500kHz),也就是说,使用12MHz时钟的AT89C51 单片机设计的频率计数器系统,所测信号的频率不能大于500kHz,若大于则必须 通过分频器分频才能测试

14、,而本次任务的要求是对0-300kHz的信号进行测量,所 以可以直接进行。利用AT89C51单片机的TO, T1的定时/计数器功能,来完成对输入的信号进 行频率计数。设置定时器0工作方式1,定时1s,并产生方波信号从P1.1引脚输出。 设置定时器1工作在计数方式1,对输入脉冲进行计数,溢出产生中断。将定时器 1中断定义为优先。由于16位二进制加法计数器的最大计数值为65535,1s之内可 能会产生多次溢出,所以需要在中断处理程序里对中断次数进行计数1s到后, 将中断次数和计数器里的数值取出进行综合处理,处理后的数据送显示。定时器T0的计数初值:由于定时器丁0工作在定时方式时最大的定时时间大 约

15、为65ms,若要定时1s,可以采用定时10ms,中断10 0次来完成1s的定时。对于定 时10ms来说,用定时器方式1可实现。机器周期为:Tp=12/晶振频率二12/12MHz=1 u s计数初值为:X=2”n-Tc=216-50000=15536=3CB0H故 THO=3CH,TL0二E0H。信号频率的计算:T1X作在计数方式时最大的计数值为2”16,假设1s内溢出 C1次,最后未溢出的计数值为C2,F=C1*2”16+C2=C1*65536 +(TH1*256+TL1)。4.2软件设计流程图软件设计流程图4.3源程序编写#include unsigned long g_iCnt=0,g_C

16、ntLock;unsigned char g_cdisnum6;code unsigned char g_cDistable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char cnt10ms=0;延时void delay(unsigned int cnt)(while(-cnt);/*定时器初始化子程序*/void Init_Timer0(void)(TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时 器时不受影响TH0=0x3C;/给定初值,这里使用定时器最大值从0开始计数一直到1

17、0ms溢出TL0=0xB0;EA=1;总中断打开ET0=1;定时器中断打开TR0=1;定时器开关打开void ShowToSeg(unsigned long uiNumber)(static unsigned long PreuiNumber;if(PreuiNumber != uiNumber)(g_cdisnum0=uiNumber/100000;/把计算数字的每个位存入数组。g_cdisnum1=(uiNumber/10000)%10;g_cdisnum2=(uiNumber/1000)%10;g_cdisnum3=(uiNumber/100)%10;g_cdisnum4=(uiNumb

18、er/10)%10;g_cdisnum5=(uiNumber)%10;PreuiNumber = uiNumber;void Show()(static char num=0;ShowToSeg(g_CntLock);P1 = num;P0=g_cDistableg_cdisnumnum;num+;if(num5)num=0;delay(40);char flag=0;void main()(EX0=1;/外部中断0开IT0=1;/边沿触发Init_Timer0();EA=1;全局中断开while(1)(在此添加其他程序Show();/*外部中断程序*/void ISR_Key(void) i

19、nterrupt 0 using 1(g_iCnt+;void Timer0_isr(void) interrupt 1 using 1(TH0=0x3C;/给定初值,TL0=0xB0;cnt10ms+;P2=0x01;if(20=cnt10ms)(cnt10ms=0;g_CntLock=g_iCnt;g_iCnt=0;第5章系统的仿真与调试设置输入信号的频率值,运行仿真图,6位晶体管显示信号的频率值,按下 复位键后定时器/计数器清零,如下图所示:RP1nn inu iuAT89C52118XTAL23(KF_33_P0.0/AD;P0.1/AD1P0.2/AP0.3/AP0.4/AP0.5/

20、AD5P0.6/AD6P0.7/ADP2.0/AP2.1/AP2.2/A1P2.3/A1P2.4/A1P2.5/A1P2.6/A1P2.7/A1P1.0/T2P1.1/T2EXP3.0/RX P3.T7TX P3.27INT P3.3/INTP3.4/TP3.5/TP3.6/WP3.7/RD2 2i6545AY0BY1CY2Y3Y4E1Y5E2 .3Y6Y715 1514 1413 13RP1P1.0/T2P1.1/T2EXP0.0/ADP0.1/ADP0.2/ADP0.3/ADP0.4/ADP0.5/ADfP0.6/ADP0.7/ADI9J9 308 X7 366 3 35 3534 34

21、33 33 32 32P2.0/AP2.1/AP2.2/A1P2.3/A1P2.4/A1P2.5/A1P2.6/A1P2.7/A1P3.0/RX P3.亟 P3.2/INT P3.3/INTP3.4/T P3.5/TP3.6/WP3.7/RD申1仲:2 2, 3 3勺6七112AY0BY1CY2Y3Y4E1Y5E2ESY61515 1414,1313 引212111110按下复位键频率计清零第6章总结与体会通过这次单片机课程设计,我学会了怎样使用KEIL软件编写程序,以及根据 程序使用proteus绘制电路图,并进行仿真,以实现课程设计所要求的功能。我们从这个学期才正式开设单片机这门课程,但是

22、在大一、大二那会我就从 学长、老师、以及同学那听说了单片机对我们这个专业很重要,但在那时我还从 没接触过单片机,虽然周围有些同学已经在学习单片机了。直到这个学期开设单 片课程,我才算接触了单片机。但是我们这个学期开设的课程大部分都是理论课, 实验课很少,如果要想学好单片机,光靠完成老师布置给我们的单片机课程任务 很难学好单片机。而我的理论课程也没学好,实验课基本上就是在那打酱油,自 己也没有认真去专研它,所以对于单片机基本上没学到什么东西。所以,当课程 设计的任务布置下来后,我是一点也不会,虽然我们这个课题很简单。但是万事 开头难,我还是得自己去动手做。我们这个课题是设计一个频率计数器,这其中

23、包括软件部分的设计和电路图 的绘制以及仿真出结果。我知道光靠我一个人很难把这个课题做好,我得去寻求 同学的帮助。幸好和我们这一组的有一位单片机学得那很好的同学,在他的指导 和帮助下以及自己查阅各种资料书,把这个课题做好了。通过这次课程设计,我 更深一步的学习了c语言,我觉得这是我这次课程设计最大的收获,单片机也算 学到了一点皮毛。从这次课程设计我又一次明白了,理论和实践有很大的差别。刚开始设计程 序的时候,我先把单片机的书重新学习了一下,以为学好理论了,这种程序应该 可以编出来,没想到程序编出来编译存在很多错误。于是,自己一条语句一条语 句的修改,其中有几条语句是真的改对不了,最后还是请教同学

24、才把问题解决了。 我觉得学我们工科这个专业还是动手能力更重要,很多理论上很难弄懂的问题, 通过实践可以更深刻、形象的弄明白。在这次试验中我发现了自己与别人的差距,我以后要正视这种差距,并努力 缩小这种差距。最后我要感谢老师能够给我这次机会正视自己并且挑战自己,以及他的辛勤 指导!还要感谢我的同学,如果没有他们的悉心指导,我自己一个人很难顺利的 完成!参考文献1谭浩强C程序设计.北京:清华大学出版社,1991.2郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略. 北京:电子工业出版社,2009, 1.第3章.第4章第10章.3王迎旭.单片机原理与应用.第2版.北京:机械工业出版社

25、.2012, 2.第二章.4钟启仁.HT66Fxx Flash MCU原理与实践一C语言.第4章.4-3节.4-8节.91S9O681V3LS11叩/2. Ed4AZ9CdZSlCd/*毛dMI/CTd:1Z4-Td:a/OTdL Id91dGidmoe 人-cm oz*恶lV/Z7d V/97d V/97d V/*云 d v/esd V/S7d /rsd /07dV3 3W N3Sdra-|-bP 17能9,QC 9冲6V/ZOdV/90dV/90dV/17OdV/COdV/SOd v/rod V/OOd jC?nvix瞄jdoenvixsnvixISHnvxxLb8-10VdS3akdd国蝌器w硼17

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号