已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要单片机是单片微型计算机的简称,也就是把微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。本次课程设计的题目是:“简易数字频率计设计”以单片机89C51为核心设计了一种频率计。在设计中应用单片机的数学运算和控制功能,实现了测量量程的自动切换,既满足测量精度的要求,又满足系统反应时间的要求。关键字:单片机频率测量数据处理目录摘要.1第1章绪论.31.1单片机的简介.31.2单片机的应用领域.31.3单片机的发展趋势.3第2章系统硬件电路框图设计.42.1简易数字频率计的功能描述.42.2硬件电路设计框架.42.3主要芯片介绍.52.3.174HC161的介绍.52.3.274HC153的介绍.52.4系统硬件单元电路设计及论证.62.4.1晶振电路.62.4.2复位电路.62.4.2放大整形电路.7第3章系统软件设计.83.1软件整体设计框图.83.2子程序设计框图.93.2.1显示程序.93.2.2频率测量程序.9第4章系统调试.104.1软件调试.104.2硬件调试.10第5章毕业设计总结.11参考文献.12附录A电路原理图.13附录B整体总程序.14第M页1第1章绪论1.1单片机的简介单片机是单片微型计算机的简称,也就是把微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。由此来看,单片机是可单独地完成现代工业控制所要求的智能化控制系统,这是单片机最大的特征。1.2单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:(1).在智能仪器仪表上的应用(2).在工业控制中的应用(3).在家用电器中的应用(4).在计算机网络和通信领域中的应用(5).单片机在医用设备领域中的应用1.3单片机的发展趋势现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:(1).低功耗CMOS化(2).微型单片化(3).主流与多品种共存第M页2第2章系统硬件电路框图设计2.1简易数字频率计的功能描述本次毕业设计主要完成功能有:(1)长按设置键可选择测量频率或者周期。(2)短按则是选择设置闸门时间(0.05s10s)。(3)输入信号幅度:0-5v,测量频率范围:0.1Hz4MHz。2.2硬件电路设计框架根据设计要求,数字频率计硬件电路框图设计如图2-1所示:图2-1整机硬件设计框图单片机波形整形分频电路波形变换放大器代测信号LCD显示电路第M页32.3主要芯片介绍2.3.174HC161的介绍74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能.其管脚图如图2-2所示:图中P0P3为时钟CP和四个数据输入端,/MR为清零,CEP、CET为使能端,PE为置数端,Q0Q3为数据输出端,以及TC为进位输出端。当清零端CR=“0”,计数器输出Q3、Q2、Q1、Q0立即为全“0”,这个时候为异步复位功能。当CR=“1”且LD=“0”时,在CP信号上升沿作用后,74LS161输出端Q3、Q2、Q1、Q0的状态分别与并行数据输入端D3,D2,D1,D0的状态一样,为同步置数功能。而只有当CR=LD=EP=ET=“1”、CP脉冲上升沿作用后,计数器加1。74LS161还有一个进位输出端CO,其逻辑关系是CO=Q0Q1Q2Q3CET。合理应用计数器的清零功能和置数功能,一片74LS161可以组成16进制以下的任意进制分频器。2.3.274HC153的介绍74HC153是一个双4选1数据选择器,其管脚图如图2-3所示:图2-374HC153管脚图第M页4下面的表是各个端口的工作条件:极限值推荐工作条件电源电压Vcc.-0.5+7.0V电源电压Vcc.2V6V输入电压V1.-1.5V+Vcc+1.5V输入电压V1.0VCC输出电压VO.-0.5VVcc+0.5V输出电压VO.0VCC输入电流I1(每端).20mA工作环境温度TA54HC153.-55+125输出电流IO(每端).25mA74HC153-40+85电源电流Icc(Vcc或GND端)50mA输入脉冲上升,下降时间Tr,TfVcc=2.0V.1000ns功率耗散PD*.500mWVcc=4.5V.500ns储存温度范围TS.-65+150Vcc=6.0V.400ns焊接温度(10秒)TLTL.3002.4系统硬件单元电路设计及论证2.4.1晶振电路单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。图是内部时钟方式,改图中电容C1和C2取33PF,晶体的振荡频率取12MHz,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。其实际连接如图2-4所示:图2-4晶振电路2.4.2复位电路复位电路如图-5所示。当单片机一上电,立即复位。电容C和电阻实现上电自动复位。复位也是使单片机推出低功耗工作方式而进入正常状态的一种操作。C1XTLA1XTLA2C2第M页5图2-5复位电路2.4.2放大整形电路该放大电路主要是为了对输入信号进行放大,波形整形等功能,其原理图设计如图2-6所示:图2-6放大整形电路第M页6第3章系统软件设计3.1软件整体设计框图本次程序设计采用的是C语言程序设计,其设计框图3-1所示:图3-1系统软件设计框图第M页73.2子程序设计框图3.2.1显示程序该子程序的总体架构图如3-2所示:图3-2显示子程序总体架构图其程序的运行流程为:YN3.2.2频率测量程序频率测量程序的整体架构如图3-3所示:图3-3频率测试程序总体框架图向LCD写入命令或数据设置显示模式设置输入模式初始化LCD显示程序内部等待函数内部等待函数,等待有无信号?向LCD写入数据设置显示模式设置输入模式初始化LCD延时子程序减按键、加按键89c52初始化显示闸门时间计数中断判断频率定时中断频率显示周期显示测试频率测试频率程序第M页8第4章系统调试单片机硬件和软件调试的工具分别为:protues和KeilC51调试软件。4.1软件调试单片机软件调试主要是调试本次课程设计的主程序。其调试过程如下:(1)新建一个工程。单击Project菜单,在弹出的下拉菜单中选NewProject。(2)然后选择你要保存的路径,输入工程文件的名字,保存。(3)新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。然后点击确定。(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为c语言文件。(5)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”单击右键选择“AddFileToGroupSourceGroup1”,选中Test.c文件。(6)单击“Project”菜单,选中“BuiltTarget”,完成程序的编译,在工程文件夹中找到*.hex文件即可。4.2硬件调试单片机硬件调试是检测在设计电路时,电路中存在的一些缺陷,故硬件调试是必不可少的,其步骤大致如下:(1)打开软件Protues,将设计好的单片机硬件电路打开。(2)在确定电路已经连接完成后,双击AT89C51单片机加入*.hex文件。(3)单击软件最左下方的Play按钮。若无异常,当按下某一按键时,能完成以下功能时,则表示设计调试通过。(a)长按设置键可选择测量频率或者周期。(b)短按则是选择设置闸门时间(0.05s10s)。第M页9第5章毕业设计总结大学三年就会在这最后的毕业设计总结划上一个圆满的句号。我曾经以为时间是一个不快不慢的东西,但现在我感到时间过的是多么的飞快,三年了,感觉就在一眨眼之间结束了我的大学生涯。最能把理论知识运用到实践当中的过程就数毕业设计了。在整个毕业设计的过程中每一步都是自己亲自做过的,遇到的问题也非常多,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。以往没有注意到的问题,都在这一次的毕业设计中得以体现,这培养了我的细心,耐心和专心。我觉得能够在这次的毕业设计中学到很多的东西,以往不注意的细节,在这一次中是必须让自己去注意的。也是我这三年来所学到知识的一个体现。我深深知道,每一次的学习实践环节都是那么的来之不易,都是通过老师的深思熟虑后,才给我们定下目标。然后让我们在知识的海洋里翱翔,让我们随着年龄的增长不断的扩充自己的知识领域,也逐渐成熟,逐渐长大,老师同时也教导我们逐渐成为一个能够为身边的人,为家庭,为国家做出点点贡献的人,教导我们学会感恩。所以,我在这次的毕业设计中,认真对待每一个过程,希望自己的认真,自己最后的毕业设计的成果能够回报老师这么多年来的教导,这么多年的奉献。最后,由于理论方面所学有限,理解又不好,再加之动手能力的匮乏,在这次毕业设计中难免会有错误,还望老师批评指正。第M页10参考文献1林志琦.单片机原理接口及应用.北京:中国水利水电出版社,20072胡辉.单片机原理与应用.北京:中国水利水电出版社,20073赵文博.单片机语言C51程序设计.北京:人民邮电出版社,20054谭浩强.c程序设计.北京:清华大学出版社,1991第M页11附录1电路原理图K2K1K1K2SETSETDISPLAYDISPLAYXTAL218XTAL119ALE30EA31PSEN29RST9P0./AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.0/T21P1./T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD1P3.2/INT012P3./INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2./A1023P2.3/A124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52+5V234567891RP110K+5VD71463D5124D31029D1807E6RW5S4VS1D2VE3LCD1602LCD1602加键频率减键周期VC1X061Y7151X24332X0102Y912X21233A14B21E125U374HC153设置D03Q014D14113D25Q212D3631RCO15ENP7ENT10CLK2LOAD9MR1U574HC16VC12U6741R110kR210kR3250kR59.1kR620kC110uF+5V-5V-5V+5VRSTCLKCEABCD32674518U4LM31832674518U2LM318AMFM+-D31N401R81kC210uF第M页12附录2整体总程序#include#include#include#includefloatf;/频率floatp;/周期floatsj;/闸门时间charidatabuff20;charflag=0;/频率周期选择标志位charxs=0;/设置闸门时间结束后是否显示结果的标志位unsignedcharm=0,n=0,yichu=0,fenpin;/m定时中断次数n计数中断次数yichu判断是定时器还是计数器溢出#defineKey_SetP1#defineK10xbf#defineK20x7f#defineNO_Set0xff#defineFreq0#definePeri1sbitB153=P24;sbitA153=P23;sbitP17=P17;sbitP16=P16;sbitP35=P35;sbitSet=P32;unsignedcharLCD_Wait(void);voidLCD_Write(bitstyle,unsignedcharinput);voidLCD_SetDisplay(unsignedcharDisplayMode);voidLCD_SetInput(unsignedcharInputMode);voidLCD_Initial();voidGotoXY(unsignedcharx,unsignedchary);voidPrint(unsignedchar*str);voidC52_Initial();voidDelay(unsignedintt);voiddisplay(floatf);voidcepin();voidpanduan();voidtimedisplay(floatsj);voidTime_Set1();voidTime_Set2();第M页13voidt0();voidt1();sbitLcdRs=P20;sbitLcdRw=P21;sbitLcdEn=P22;sfrDBPort=0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口unsignedcharLCD_Wait(void)LcdRs=0;/寄存器选择输入端1:数据0:指令LcdRw=1;_nop_();/RW:为0:写状态;为1:读状态;LcdEn=1;_nop_();/使能输入端,读状态,高电平有效;写状态,下降沿有效LcdEn=0;returnDBPort;#defineLCD_COMMAND0/Command#defineLCD_DATA1/Data#defineLCD_CLEAR_SCREEN0x01/清屏#defineLCD_HOMING0x02/光标返回原点voidLCD_Write(bitstyle,unsignedcharinput)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意顺序LcdEn=1;_nop_();/注意顺序LcdEn=0;_nop_();LCD_Wait();#defineLCD_SHOW0x04/显示开#defineLCD_HIDE0x00/显示关#defineLCD_CURSOR0x02/显示光标#defineLCD_NO_CURSOR0x00/无光标#defineLCD_FLASH0x01/光标闪动#defineLCD_NO_FLASH0x00/光标不闪动voidLCD_SetDisplay(unsignedcharDisplayMode)LCD_Write(LCD_COMMAND,0x08|DisplayMode);#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00/default#defineLCD_MOVE0x01/画面可平移第M页14#defineLCD_NO_MOVE0x00/defaultvoidLCD_SetInput(unsignedcharInputMode)LCD_Write(LCD_COMMAND,0x04|InputMode);voidLCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);/8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);/开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);/清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC递增,画面不动voidGotoXY(unsignedcharx,unsignedchary)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);voidPrint(unsignedchar*str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;voidC52_Initial()sj=1000000.00;Key_Set=0xff;TMOD=0x51;/01010001T1为计数器,T0为定时器EA=1;ET0=1;ET1=1;EX0=1;PX0=1;/外部中断0设置为高优先级IT0=0;/电平触发方式第M页15voidDelay(unsignedintt)/t随着数值越大,误差趋于平衡.unsignedchari;while(t-)for(i=0;i999400.00)if(f1040.00)sprintf(buff,Freq:%4.2fkHz,(f/1000.00);elseif(f0.06)sprintf(buff,Freq:%3.2fHz,f);GotoXY(0,1);第M页16Print(buff);voidPdisplay(floatp)if(p999400.00)if(p9950.00)sprintf(buff,Cycle:%4.2fms,(p/1000.00);elseif(p0.248)sprintf(buff,Cycle:%3.3fus,p);elsesprintf(buff,error(TimeorF),p);GotoXY(0,1);Print(buff);voidcepin()unsignedchara;unsignedlongjs;m=0;n=0;TMOD=0x51;TH0=0x3c;/定时50msTL0=0xb0;TH1=0;TL1=0;a=sj/50000.00;TCON=0x50;/启动定时器和计数器while(m!=a);TCON=0;第M页17js=TH1*256+n*65536+TL1;f=(js/(sj/1000000.00)*fenpin;p=sj/(js*fenpin);if(xs=0)/设置结束后第一次不显示结果if(flag=Freq)Fdisplay(f);elsePdisplay(p);voidpanduan()xs=0;/设置结束后第二次循环显示结果B153=1;/选择16分频A153=0;yichu=0;TMOD=0x51;TH0=0xff;/定时器0200usTL0=0x38;TH1=0xff;/计数器1100脉冲TL1=0x9c;TR0=1;/启动定时器0和计数器1TR1=1;while(yichu=0);/如果没有溢出一直循环TR0=0;/已经溢出关闭定时器0和计数器1TR1=0;if(yichu=1)/计数器先溢出:在200ms内测得的脉冲过多,说明频率较高fenpin=16;/转为测16分频后的频率16cepin();else/定时器先溢出:100个脉冲的时间比较短,即频率较低,可以减少分频数yichu=0;B153=0;A153=1;TH0=0xfc;/定时器01msTL0=0x18;TH1=0xff;/计数器1100个脉冲TL1=0x9c;TR0=1;/启动定时器0和计数器1第M页18TR1=1;while(yichu=0);/如果没溢出一直循环TR0=0;/已经溢出关闭定时器0和计数器1TR1=0;if(yichu=1)/计数器先溢出:在1ms内测得的脉冲过多,说明频率较高fenpin=4;/转为测4分频后的频率4cepin();else/定时器先溢出:100个脉冲的时间比较短,即频率较低fenpin=1;B153=0;A153=0;cepin();voidtimedisplay(floatGTime)sprintf(buff,GTime=%7.0fus,GTime);GotoXY(0,1);Print(buff);Delay(50);voidTime_Set2()Delay(1000);if(P17=1)sj=sj-50000.00;if(sj50000.00)timedisplay(sj);elsesj=50000.00;timedisplay(sj);else第M页19while(P17=0)Delay(500);sj=sj-500000.00;if(sj50000.00)timedisplay(sj);elsesj=50000.00;timedisplay(sj);voidTime_Set1()Delay(1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46409-2025风险管理新兴风险管理指南
- 兰花养殖合同合作协议
- 北京房屋买卖合同范本
- 农村厂房建设合同范本
- 农民土豆收购合同范本
- 卖楼铺面转让合同范本
- 代抚养别人孩子协议书
- 企业补充劳动合同协议
- 共享酒店团购合同范本
- 劳务挂靠付款合同范本
- 《中国工艺美术史》全套教学课件
- 集团教师培训管理办法
- 虱媒疾病传播机制-洞察及研究
- 应用写作 课件全套 周志凌 绪论、第1-10章 应用文概述-申论写作
- 提高护理服务质量品管圈
- 2025年高等自学教育考试马克思主义基本原理概论全真模拟试卷及答案(共四套)
- 乡村农业设备管理制度
- 2025至2030中国EPO(重组人红细胞生成素)行业产销预测及经营发展分析报告
- 口腔手术病人护理常规
- 德语动介搭配
- 车行合伙人合同范本
评论
0/150
提交评论