您好,欢迎访问三七文档
单片机课程设计题目:数字频率计班级:电气084姓名:王金龙学号:200809317指导教师:路小娟设计时间:2011.1.14评语:成绩数字频率计1目录一引言………………………………………………………………………………………..21.1课程设计的目的………………………………………………………………………..21.2课程设计的意义………………………………………………………………………..2二课程设计课题……………………………………………………………………………..2三基本原理…………………………………………………………………………………..2四功能及按键说明…………………………………………………………………………..2五主要硬件介绍……………………………………………………………………………..35.189C51芯片介绍………………………………………………………………………...35.2六位LED显示器………………………………………………………………………4六程序流程图………………………………………………………………………………..56.1主程序main流程图.....................................................................................................56.2定时50ms中断子程序流程图.....................................................................................66.3显示子程序流程图.......................................................................................................6七原理图.................................................................................................................................7八源程序代码.........................................................................................................................7九仿真结果与分析...............................................................................................................10十课程设计心得与体会.......................................................................................................14十一参考文献………………………………………………………………………………15数字频率计2数字频率计一、引言1.1课程设计的目的通过本次课程设计,巩固和加深“单片机原理与应用”中的理论知识,了解和应用proteus仿真系统,结合软硬件,基本掌握单片机的应用的一般设计方法,提高电子电路的设计和实验能力,并且提高自身查找和运用资料能力。1.2课程设计的意义通过本次课程设计,使得理论知识系统化,从中或得一些实战工作经验,提高个人与团体指挥的作用。二、课程设计课题频率计系统设计:用AT89C51单片机设计一个六位LED显示的频率计。三、基本原理本系统采用测量频率法,可将频率脉冲直接连接到AT89C51的T0端,将T/C1用做定时器。T/C0用做计数器。在T/C1定时的时间里,对频率脉冲进行计数。在1S定时内所计脉冲数即是该脉冲的频率。图1:测量时序图由于T0并不与T1同步,并且有可能造成脉冲丢失,所以对计数器T0做一定的延时,以矫正误差。具体延时时间根据具体实验确定。四、功能及按键说明P0.0~P0.5为LED位选择,其中P0.5指向十万位P0.0指向个位,RP1数字频率计3为P0口的上拉电阻。P2.0~P2.7为LED的段位选择,对应LED的A,B,C,D,E,F,G,DP。P3.4为待测频率入口。五、主要硬件介绍5.189C51芯片介绍许多由关硬件设计中都使用到单片机89C51,其功能[7]比以往的单片机强大的多。89C51引脚图如图3-2所示。图2:89C51引脚图芯片引脚功能:主电源引脚Vcc和VssVcc(40脚):接+5V电压;Vss(20脚):接地;89C51晶振接法如图3-3。图3:89C51晶振接法图数字频率计4选用6MHz频率的晶体,允许输入的脉冲频率为250kHz。电容的大小范围为20pF~40pF,本设计选用30pF电容。5.2六位led显示器单片机应用系统中常使用LED作为显示器,在需多位LED显示时,为了简化电路,降低成本,常将所有门的选线并联在一起,由一个8位I/O口控制,而共阴(阳)I/O线受控制,实现各部分时选通。图4:6位LED动态显示接口电路由于所有6位选线皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方阵轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示相应字符。如此轮流,使每位分时显示该位应显示字符,根据人眼视觉特性,当LED所加信号频率大于50Hz时,人眼不能感觉其变化,所以每位显示的间隔不能超过20ms,也就是说要在20ms之内分时的点亮所有LED,LED越多所分的时间越短,亮度就会不足;如果增加点亮时间,又会使扫描频率下降,有闪烁感容易造成人眼的彼劳,这种方式就是我们大家常用的动态扫描方式,也是此种显示器的主要工作方式。数字频率计5六、程序流程图6.1主程序main流程图数字频率计62、定时50ms中断子程序xtimer1()流程图3、显示子程序display流程图数字频率计7七、原理图图5:频率计原理图八、源程序代码/*简易数字频率计:T1定时计器,T0计数器,由P34(/T0)口输入待测频率*//*T1定时1S,在这1S内T1的计数值就是待测的频率值。*/#includereg52.h//头文件#includeintrins.h//头文件#defineucharunsignedchar//宏定义#defineuintunsignedint//宏定义sfr16DPTR=0x82;//定义DPTRbitstatus_F=1;//状态标志位uintaa,qian,bai,shi,ge,bb,wan,shiwan;//定义变量ucharcout;unsignedlongtemp;//定义长整型变量/*数码管显示0-9*/数字频率计8ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*子函数声明*/voiddelay(uintz);voidinit();voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge);voidxtimer0();voidxtimer1();/*主函数*/voidmain(){P0=0XFF;//初始化P0口init();//调用定时器,计数器初始化while(1){if(aa==19)//定时20*50MS=1S{aa=0;//定时完成一次后清0status_F=1;//完成计数TR1=0;//关闭T1定时槛,定时1S完成delay(46);//延时较正误差TR0=0;//关闭T0DPL=TL0;//计数量的低8位DPH=TH0;//计数量的高8位temp=DPTR+cout*65535;//计数值放入变量shiwan=temp%1000000/100000;wan=temp%100000/10000;qian=temp%10000/1000;//显示千位bai=temp%1000/100;//显示百位shi=temp%100/10;//显示十位ge=temp%10;//显示个位}display(shiwan,wan,qian,bai,shi,ge);//调用显示函数数字频率计9}}/*定时器,计数器初始化*/voidinit(){temp=0;//变量赋初值aa=0;cout=0;IE=0X8A;//开中断,T0,T1中断TMOD=0x15;//T1为定时器工作于方式1,T0为计数器工作于方式1TH1=0x3c;//定时器赋高8初值,12M晶振TL1=0xb0;//定时器赋低8初值,12M晶振TH0=0;//计数器赋高8初值初值TL0=0;//计数器赋低8初值TR1=1;//开定时器1TR0=1;//开计数器0}/*显示子函数*/voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge){P0=0xdf;//P0口是位选11011111改成11111101==0XDFP2=table[shiwan];//显示shiwan位delay(5);P0=0xef;//P0口是位选11101111改成11111110==0XFEP2=table[wan];//显示wan位delay(3);P0=0xf7;//P0口是位选111101111改成01111111==0X7FP2=table[qian];//显示千位delay(3);P0=0xfb;//P0口是位选11111011改成10111111==0XBF数字频率计10P2=table[bai];//显示百位delay(3);P0=0xfd;//P0口是位选11111101改成11011111==0XDFP2=table[shi];//显示十位delay(3);P0=0xfe;//P0口是位选11111110改成11101111==0XEFP2=table[ge];//显示个位delay(3);}/*定时中断子函数*/voidxtimer1()interrupt3{TH1=0x3c;//定时器赋高8初值TL1=0xb0;//定时器赋低8初值aa++;}/*计数器中断子函数*/voidxtimer0()interrupt1{cout++;}/*延时子函数。延时1MS*/voiddelay(uintz){uinti,j;for(i=0;iz;i++)for(j=0;j110;j++);//j上限为125}九、仿真结果与分析此简易频率计的特点是由于加入了延时补偿,对于低频率脉冲能够准确计数,对于较高频率,则频率越高,误差越大。但总体来讲,误差相对较小。数字频率计111、在1~3257HZ,测量结果是准确的,如图6所示1HZ,1KHZ,3257HZ的仿真图:数字频率计12图6:1HZ,1KHZ,3257HZ的仿真图2、在3258HZ~9.5KHZ的时候测量有误差并且慢慢减少。在3258HZ时候达到最大误差0.03069%,如图。9.5KHZ时候达到最小误差0.01368%。如图:图7:测量3258HZ的仿真结果数字频率计13图8:测量95013HZ的仿真结果3、从9.6KHZ~999.7629KHZ,测量误差越来越大,在9.6KHZ为0.01458%,在999.7629KHZ时为0.0237%图9:测量9.6KHZ的仿真结果数字频率计14图10:测量999.7629KHZ的仿真结果十、课程设计心得体会在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。在设
本文标题:数字频率计
链接地址:https://www.777doc.com/doc-6221663 .html