基于单片机的频率计数器.doc_第1页
基于单片机的频率计数器.doc_第2页
基于单片机的频率计数器.doc_第3页
基于单片机的频率计数器.doc_第4页
基于单片机的频率计数器.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于C52单片机的数字式频率计设计 目 录第1章 频率计数器设计 2 1.1设计内容、要求及目的2 1.2 基本原理与总体方案 3第2章 硬件系统设计4 2.1各部分方案及说明 4 2.1.1 单片机部分 42.1.2数据显示电路 5第3章 软件系统设计8 3.1 应用系统的程序设计8 3.1.1 频率测试程序8 3.1.2 数值显示10 3.1.3 LCD显示 10第4章 测试数据12第5章 设计总结体会13参考文献 14附录1 15附录2 20第1章 频率计数器设计1.1 设计的内容、要求及目的设计内容:本课题以AT89C52单片机为核心,设计和制作一个数字式频率计,来完成对输入的信号进行频率计数,计数的频率结果通过LCD1602显示出来。要求能够对10Hz100KHz的方波信号和正弦信号的频率进行测量。 设计要求:1. 设计方案要合理、正确;2. 系统硬件设计;3. 完成必要元器件选择;4. 系统软件设计及调试;5. 撰写设计报告 实验目的:本实验的目的是设计一种基于C52单片机的数字频率计,可以测试信号发生器产生的方波信号和正弦信号的频率,课设要求频率范围10Hz-100kHz,且在显示设备上准确显示信号频率。把在“单片机原理及应用”课堂上学习的知识运用于实践,并通过查阅相关资料,来丰富对单片机的认识和使用,培养一种自学和动手的能力。同时,引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全面提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。1.2 本设计的基本原理与总体方案基本原理:频率计数器的主要功能是测量周期信号的频率。频率是单位时间( 1S )内信号发生周期变化的次数。正弦信号的判定一个周期通常是通过极值点判断,两个极小值的时长既是一个正弦信号的周期,方波信号也是可以通过两个下降沿之间的时长为一个周期。只要计算出1s中方波信号和正弦信号的周期数,也就能得到我们所需要的频率数值。本设计是基于C52单片机平台做的,需要采用定时器的计数、定时和中断功能。由于C52单片机的所有中断均是低电平或者下降沿触发,因此我们只需要检测方波信号和正弦信号的低电平对信号的周期进行计数,因次需要用到两个定时器。测量过程中定时/计数器T2和T0的工作方式设置,T0是工作在计数状态下,对输入的频率信号进行计数,在本次设计使用的AT89C52单片机中,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一,最大计数值为fOSC/24,由于fOSC12MHz,因此,T0的最大计数频率为0.5MHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T0工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理,送到LCD1602显示出来。总体方案: 本课题设计的是一种以C52单片机为主控制的频率计。数字频率计主要由以下几部分组成:信号源、C52单片机及其最小系统和LCD显示。本课题主要是以单片机AT89C52 为核心, 通过计数电路, 以及软件程序的编写,实现脉冲频率的显示。频率计系统总体框图如下:正弦信号、方波信号信号源C52单片机及其最小系统LCD显示设备图1 总体方案第2章 硬件系统设计 此次设计要求制作一频率计系统,需要使用的硬件主要包括52单片机芯片和LCD。另外还是用到排线若干,下载线及电源线。2.1 各部分方案选定、功能2.1.1 单片机部分 本次设计采用了AT89C52 单片机, AT89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS微处理器,属于8位的单片机。如图2所示:图2 AT89C52引脚图 AT89C52拥有五个中断源,当有外部脉冲到来时可实现中断的响应,另外AT89C52拥有定时/ 计数器(T0、T1),可实现定时与计数的功能。单片机AT89C52的P0、P2的4个8位并行I/O口可进行外部存储设备扩展。 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:电源电路、复位电路、时钟电路。1.电源电路:电源电路就是单片机的供电电路,一般是3.3V或者5V,STC89C52采用的5V电压供电。 2.复位电路:复位是单片机的初始化操作,只需给AT89C52单片机的复位引脚RST加上大于两个机器周期(即24个时钟振荡周期)的高电平就可使AT89C52复位。包括上电复位和手动复位。3.时钟电路:用于产生AT89C52单片机工作时必需的控制信号,AT89C52单片机的内部电路正是在时钟信号的控制下,严格地按时序执行指令进行工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。AT89C52单片机最小系统的最高时钟频率为12MHz。2.1.2 数据显示电路 图3 显示电路图(1) C51系列单片机采用的显示设备通常由LCD1602或者数码管。由于本设计需要显示字符和数字。因此本设计优先采用LCD1602。LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。开发板上硬件连线 :(2) 把单片机系统中的P0.0P0.7口连接LCD的D0-D7端口。由于P0口上电后是上电复位后是开漏输出。且作为C52单片机的扩展输出,相比较P1、P2、P3口没有上拉电阻,因此LCD1602连接C52单片机P0口时,应该外接上拉电阻。把单片机系统中的P2.5P2.7与LCD1602的RS,RW,E引脚相连,再RESPACK-8和LCD1602的D0-D7端口连接 。(3) P3.4是C52单片机的定时器0端口,因为需要计数单片机信号的周期因此可以直接将信号源的端口,接入到定时器T0(P3.4)端口。 第3章 软件系统设计3.1 应用系统的程序设计 系统的应用程序设计主要包括两个方面,核心部分的程序是频率测试程序,另外一部分是LCD1602显示程序。频率测试程序将频率测试出来后,将数值传递给STC89C52单片机,单片机将数值传递给LCD1602显示。3.1.1 频率测试程序频率测试程序采用了C52单片机的两个定时器T0和T2,两个中断计数器中断0和的定时器中断2,计数器T0采用计数功能,计量外部信号的低电平数量,定时器2采用单片机最小系统定时1s。采用T2定时62.5ms,连续循环定时16次即可完成1s定时,用一个unsigned char型的 time存放循环的次数,每一次循环自动加1,当time为16时则1s定时到时。当定时器T2和T1同时开始工作,当定时器T2的时间达到1s后,计算T0的count数,同时进行数值转换。将转换后的数据传递给单片机和LCD1602显示。设计中T0采用计数功能,思路是除了计数器T0的TH0放初值和TL0用于计数外,再选用一个unsigned long 型的count,每当计数器T0溢出回零时产生中断,中断程序执行count自增1,这样,当一秒到时时采集的计数数据,count存放的是数据的最高位,TH0存放的是数据的次高位,TL0存放的是数据的最低位。当然,这里所说的“最高位”“次高位”以及“最低位”都是针对十六进制而言的。其程序流程图如图4所示。 图4 频率测试流程图3.1.2 数值显示由于我们的最大值是100KHZ,我们以HZ为单位。最高位为结果 / 100000,第二位是结果 / 10000再取10的余数。依次下来可以得到相应位的数字。用ASCII码所以应该输出0x30+对应位的数字(0x30是48,ASCII码中48是0)。3.1.3 LCD显示将要显示的内容转换为相应的LCD显示的ASCII码,由于P0口地址是80H,输入的地址应该是0x80 +第几个,再通过P0口输出数字。RS为低电平时,输入地址第一行0x80+ add,第二行0x80+0x40 + add。RS为高电平时,输入数值0x30 +dat,字母按照ASCII码输入。每次输入信息都需要开使能端,延时后再关闭。 开始RS=0;输入地址0x80 +addRS=1;输入数据0x30+datLcden=1;延时;Lcden=0Lcden=1;延时;Lcden=0结束开始RS=0;输入地址0x80 +addRS=1;输入数据0x30+datLcden=1;延时;Lcden=0Lcden=1;延时;Lcden=0结束图5 LCD1602显示流程图第4章 测试数据信号波信号源输出频率LCD显示频率方波1HZ1HZ方波5HZ5HZ方波10HZ10HZ方波60KHZ60000HZ方波95KHZ94999HZ方波100KHZ99997HZ方波120KHZ11993HZ正弦波1HZ1HZ正弦波5HZ5HZ正弦波10HZ10HZ正弦波50KHZ50000HZ正弦波90KHZ89998HZ正弦波100KHZ99993HZ正弦波150KHZ14990HZ表1 测试数据经测试,该数字计频器已满足10HZ-100KHZ的测频要求,最大能测出1HZ-150KHZ信号的频率。第5章 设计总结体会这次课程设计,我们主要学习了51单片机的基础知识,以及对程序编译软件KEIL4和电路仿真软件PROTEUS的使用。在这个实验过程中,我们先是对实验题目和要求做了理解、分析,再对每个小组成员进行任务分工,最后结合大家的工作内容完成实验设计。在这个过程中,我们也遇到了一些问题。比如,程序烧录时出现下载失败的情况,调试测试时找不到合适的信号源等。但是,通过我们小组成员的交流沟通,紧密合作,最后这些问题都一一解决。另一方面,我们在这个学习的过程中也收获颇多。在前期,老师课堂上的理论知识的讲解和答疑,让我们对单片机的功能和作用有了更深的认识;在中期,我们通过各个实验的练习和调试,加强了对相关软件的使用熟练度,同时在和同学们的讨论中,也对书本中的知识点有了更清晰的认识。在后期,我们和小组成员的讨论交流,让我们认识到团队合作的重要性。无论是在实验前的资料收集,还是实验过程中的调试、改进,都融入了我们每一个成员的智慧。 总之,这次关于单片机的学习,使我们每一个成员都有了进步。在学习之前,我们每个人的基础都不相同,对软件使用的熟练度也不一致。也正是在这个学习过程中,我们互帮互助,遇到问题相互答疑,才使得自己有所提升。当然,这仅仅只是一个开始,从个人兴趣或今后就业来说,这都值得我们继续学习下去。参考文献:1. 单片机原理与应用 王迎旭等编. 机械工业出版社2. 51系列单片机设计实例 楼然苗等编. 北京航空航天大学出版社3. 计算机硬件技术基础实验教程 黄勤等编. 重庆大学出版社4. 微型计算机接口技术及应用 刘乐善主编. 华中科技大学出版社5. 单片微型计算机原理及接口技术陈光东等. 华中科技大学出版社6. 51单片机C语言教程郭天祥. 电子工业出版社附录1源程序清单:#include#define uchar unsigned char/宏定义#define uint unsigned int/宏定义/*LCD1602使能*/sbit lcden = P27;/使能信号端sbit lcdrs = P26;/写数据/命令选择端sbit lcdrw = P25;/读写选择端uchar sw,w,q,b,s,g;void timer_init ();void delay (unsigned int a);unsigned long fre; /频率unsigned char time;/时间unsigned long count=0; /计数void delay(uint z) /延时子程序 uint x,y; for(x = z;x 0;x-) for(y = 125;y 0;y-);void write_com(uchar com)/定义一个带参数的写命令子程序 lcdrs = 0; /1602的rs为0时,接收命令,为1时接收数据 P0 = com;/把void write_com(uchar com)中的COM中的数据给P0口 delay(5);/延时 lcden = 1;/使能端为高脉冲 delay(5);/延时 lcden = 0;/低脉冲 delay(5);/延时void write_shu(uchar shu)/定义一个带参数的写数据子程序 lcdrs = 1; /1602的rs为0时,接收命令,为1时接收数据 P0 = shu;/把void write_shu(uchar shu)中的COM中的数据给P0口 delay(5);/延时 lcden = 1; delay(5);/延时 lcden = 0; delay(5);/延时void write_1602_2(uchar add,uchar dat)/1602显示程序 write_com(0x80 +0x40 + add+6); write_shu(0x30+dat);void write_1602_1(uchar add,uchar dat)/1602显示程序 write_com(0x80+add); write_shu(dat);void init()/定义一个初始化子程序 lcden = 0; lcdrw = 0; write_com(0x38);/调用 write_com子程序并把0x38赋给P0口,显示模式打开 delay(2);/延时 write_com(0x0c);/调用 write_com子程序并把“开显示,显示光标,光标不闪烁”指令码赋给P0口 write_com(0x06);/调用 write_com子程序并把“地址指针加1,整屏不移动”指令码赋给P0口 write_com(0x80);/数据指针初始化,让指针指向最左端,显示从第一行开始 write_com(0x01);/调用 write_com子程序并把清零指令码赋给P0口 /*/void display (unsigned long fre) /显示函数 sw = fre / 100000; w = fre / 10000%10; q = fre / 1000 % 10; b = fre % 1000 / 100; s = fre %100 / 10; g = fre % 10; void main () timer_init ();/定时/计数器初始化 init() ; write_1602_1(1,84); write_1602_1(2,104); write_1602_1(3,101); write_1602_1(4,32); write_1602_1(5,70); write_1602_1(6,114); write_1602_1(7,101); write_1602_1(8,113); write_1602_1(9,117); write_1602_1(10,101); write_1602_1(11,110); write_1602_1(12,99); write_1602_1(13,121); write_1602_1(14,58); while (1) display (fre); /write_1602_2(1,sw);write_1602_2(2,w); write_1602_2(3,q); write_1602_2(4,b);write_1602_2(5,s);wr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论