电子综合设计总结报告-自适应数字频率计小电机转速测量.doc_第1页
电子综合设计总结报告-自适应数字频率计小电机转速测量.doc_第2页
电子综合设计总结报告-自适应数字频率计小电机转速测量.doc_第3页
电子综合设计总结报告-自适应数字频率计小电机转速测量.doc_第4页
电子综合设计总结报告-自适应数字频率计小电机转速测量.doc_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

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

文档简介

成都信息工程学院成都信息工程学院电电子工程学院子工程学院 电子综合设计 总结报总结报告告 题题 目:目: 自适应数字频率计自适应数字频率计 小电机转速测量小电机转速测量 专专 业:业: 班班 级:级: 姓姓 名:名: 指导教师:指导教师: 评评 分:分: 2011 年年 12 月月 1 日日 1 目录目录 1题目描述和要求题目描述和要求.2 1.1对功能及指标的理解2 1.2系统设计思路2 2设计说明设计说明.3 2.1工作原理3 2.1.1.测频部分的原理设计3 2.1.2 直流小电机模块4 2.1.3 数码管显示模块5 2.1.4 按键模块6 2.1.5 完整 pcb 图7 2.2软件设计7 2.2.1 主流程图及中断流程图7 2.2.1 与流程图相配的源程序及注解8 2.3特殊器件的介绍:.17 3调试过程调试过程.18 3.1问题及解决18 3.2调试数据19 3.3误差分析20 4设计总结及体会设计总结及体会.20 5参考文献参考文献.21 6 附录附录21 2 1.题目描述和要求题目描述和要求 自适应数字频率计和小电机转速测量:自适应数字频率计是通过单片机和分 频电路,对输入的信号进行频率测量,并在数码管或者液晶屏上显示,测量范 围在 1hz-9999khz(4 位高位有效数字) ,能自动选择最佳的频段进行测量现实 最多的有效数字,并且小数点能自动根据频率的大小进行自动调整。 小电机转速测量:光电对管发射红外线,小电机经过时遮挡红外线,是光电 接收管产生脉冲方波,进而利用单片机对脉冲信号计数,从而测出小电机的转 速。并且要在数码管上显示,可以利用按键控制小电机转速,事先用 pwm 技术 调节控制小电机转速测量电机速度与设置值相等。 1.11.1 对功能及指标的理解对功能及指标的理解 功能理解: 整个系统要求在一块单片机上实现自适应数字频率计和直流小电机转速测量, 通过系统按键实现两个子程序之间的切换。 自适应数字频率计:利用单片机和 cd4051 和 74ls393 实现对信号的频率测量, 并在数码管上精确显示,小数点也能自动根据频率大小作相应调整。 小电机转速测量:使用光电对管产生的脉冲信号进行小电机的转速测量,并 且要在数码管上显示,可以利用按键控制小电机转速,事先用 pwm 技术调节控 制小电机转速测量电机速度与设置值相等。 指标要求: 自适应数字频率计:设计分频电路,对输入的信号进行频率测量,并在数 码管或者液晶屏上显示,测量范围在 1hz-9999khz(4 位高位有效数字) ,能自 动选择最佳的频段进行测量现实最多的有效数字,并且小数点能自动根据频率 的大小进行自动调整。 小电机转速测量:光电对管发射红外线,小电机经过时遮挡红外线,是光 电接收管产生脉冲方波,进而利用单片机对脉冲信号技术,从而测出小电机的 转速。并且要在数码管上显示,可以利用按键控制小电机转速,事先用 pwm 技 术调节控制小电机转速测量电机速度与设置值相等。 1.21.2 系统设计思路系统设计思路 本系统采用 at89c52 作为整个系统的控制核心,四联数码管作为整个系统的显 示窗口,四个独立按键实现人性化的人机交互。如下 3 自适应数字频率计:lm393 和 cd4051 组成的分频电路将所测信号进行分屏,并 且根据不同的频段有 4051 进行选择,然后进过单片机显示在数码管上,分频电 路由 393 构成,393 是一个双二进制 4 位计数器,可根据要求的不同设计不同 的频段。 小电机测转速:三极管做驱动电路,让小电机经过光电对管,然后产生脉冲信 号,将信号输入单片机进行计数和定时,然后根据所测的值显示在数码管上, 有按键可控制小电机的转速,并最终让所测值与实际值相差不大。 2 2 设计说明设计说明 2.12.1 工作原理工作原理 本系统由 ls393cd4051 做频率计部分,按键模块以及数码管显示四个模块 组成。利用单片机 at89c52 做为主控芯片实现。 2.1.12.1.1. .测频部分的原理设计测频部分的原理设计 本设计要求自动判别输入周期频率为 5hz-10k 信号, 扩展要求输入信号频 率范围上限达到 20khz。 单片机 光电 对管 测转 速 74ls393 cd4051 分频电 路 数码管显示 4 由于单片机的计数频率上限较低(12mhz 晶振时,约 500khz) , 所以需对 高频被测信号进行硬件欲分频处理,采用 74ls393 进行分频处理后,再用 cd4051 将输入信号送入核心控制器件单片机 stc89c52 完成运算、控制及显示 功能。 为了提高频率的测量精度,所以在信号输入后首先设置电压跟随器以增大 输入阻抗,其后接电容进行对信号的滤波处理。将滤波后的信号接入电压比较 器,使输入信号转换为方波信号,从而方便对信号频率的测量。电路原理图如 图 2.1 所示。 123456 a b c d 654321 d c b a title numberrevisionsize b date:15-may-2010sheet of file:c:documents and settings2008021049桌桌mydesign.ddbdrawn by: u1 lm324 u2 lm339 u1 lm324 1a 1 clear 2 1qa 3 1qb 4 1qc 5 1qd 6 gnd 7 2qd 8 2qc 9 2qb 10 2qa 11 clear 12 2a 13 vcc 14 u4 74ls393 i4/o4 1 i6/o6 2 o/i 3 i7/o7 4 i5/o5 5 inh 6 vee 7 vss 8 a2 9 a1 10 a0 11 i3/03 12 i0/o0 13 i1/o1 14 i2/o2 15 vdd 16 u5 cd4051 i7 i7 p3.3 p2.5 p2.6 p2.7 +5 -5 +5 -5 +5 -5 xh +5+5 图 2.1 2.1.22.1.2 直流小电机模块直流小电机模块 小电机转盘经过光电对管,光电对管接收管阴极将产生一个跳变的脉冲 clk 信号,幅度大约在 5v 左右,将这个信号送进单片机的 t0 计数,并有 t1 作 1s 的定时,当定时到了,看有多少个脉冲信号进入,即可晓得小电机的转速, 然后送到数码管进行显示。 5 2.1.32.1.3 数码管显示模块数码管显示模块 显示模块是本系统中人机交互的重要部分,通过四联数码管实现了教学打 铃系统中时间的显示以及打铃时间的显示。在低频函数波形发生器中显示出了 波形的种类以及对应的波形频率,使用户直观的了解系统所实现的功能。 系统中显示采用动态显示方式,轮流循环依次显示四个数码管的值。控制 数码管的刷新频率在 50hz 以上即可以实现人眼感觉的正常显示。 图 2-4 显示部分 6 如图 2-4 所示,利用单片机的 p0 口做为数码管的段码值输出口,p2 口做 为数码管的位选值输出口。由于 at89c52 的 p0 口为准双向口,故在应用时填加 上拉电阻。 2.1.42.1.4 按键模块按键模块 本系统采用三个按键,一个按键用来实现两个系统之间的切换。另外两按 键分别实现在直流小电机中的频率的增加哦和减少设置。在软件程序中为了能 够保证按键实时有效,采用了定时器 0 中断循环扫描,每 1s 的时间扫描一次按 键改变状况,通过调用软件中的键盘扫面程序从而实现对不同功能的实现。 如图 2-5 所示,四个按键分别接到单片机的 p25、p26、p27 端口,利用 位操作实现对单个键盘的扫描。 7 2.1.52.1.5 完整完整 pcbpcb 图图 2.22.2 软件设计软件设计 2.2.12.2.1 主流程图及中断流程图主流程图及中断流程图 主程序通过扫描外部按键,改变 mode 的值,从而在两个子系统中切换,当 mode=1 时进入频率计,mode=0 时进入直流小电机。通过利用定时器 t0 每 1s 的 时间扫描一次外部键盘变化,利用定时器 t1 实现小电机转速设置。 =1=0 开始 初始化 mode 频率计小电 机 t0 定时 t1 计 数 t0 计数 t1 定时 分频判断按键显示 8 2.2.12.2.1 与流程图相配的源程序及注解与流程图相配的源程序及注解 #include /包含头文件 #define choosef p1 /频率计分频段选择端 code unsigned char ledcode = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /定义数码管段码数组 code unsigned char ledposit = 0xfe,0xfd,0xfb,0xf7; /定义数码管位选数组 unsigned int vt,timeloop,time; /定义频率变量,freq 为外部输入脉冲,fp 为分频数,vt 为高电平控制变量(pwm) /timeloop 定义定时器计时变量,50ms 进一次中断,将 timeloop=20,则定时器定时为 1s unsigned long int freq,t0count,t1count,disbuf7,fp; /t0count,t1count 分别统计计数器 t0 和计数器 t1 溢出次数 bit mode=0; /按键功能切换参数,mode=0 频率计功能,mode=1 电机功能 sbit key1 = p24; /占空比加 sbit key2 = p25; /占空比减 sbit key3 = p26; /切换功能按键 sbit output = p32; /pwm 输出 sbit dp = p07; /共阴数码管 dp=0 小数点被点亮 bit led_t=0; sbit led_b=p10; bit led_r=0; sbit led_r=p11; bit led_y=0; sbit led_y=p12; /* 函数名称:fpxz 入口参数:unsigned long int freq 出口参数:无 备注:频率计分频段选择 */ 9 void fpxz (unsigned long int freq) if(freq=31250i-) disbufi=freq%10; /取出个位 freq=freq/10; /* 函数名称:delay 入口参数:unsigned int dat 出口参数:无 备注:延时 */ void delay (unsigned int dat) unsigned char i,j; for(i=0;i0 | disbufi-bzw0) bzw+; for(p=0,i=4-bzw;i8; /重新给 t0 定时器赋初值 tl0 = -50000; led_t=!led_t; /led 灯闪烁 led_b=led_t; if (+timeloop = 20) /判断 1s 时间是否到达 tr1 = 0; /关闭 t1 计数器 freq = t1count*65536 + th1*256 + tl1; /如果到达,计算频率 timeloop = 0; /清零定时变量,为开始下一个 13 1s 作准备 th1 = 0; /清零计数器,重新开始计算频 率 tl1 = 0; t1count=0; led_r=!led_r; /led 灯闪烁 led_r=led_r; fpxz(freq); freq=freq*fp; freq=freq-(freq/100)*8; mzfz(freq); tr1=1; else /小电机测速 t0 计数,t1 定时 t0count+; th0=0; tl0= 0; tr0 = 1; /重新启动定时/计数器,开始 下一次测量 /* 函数名称:t1_init 入口参数:无 出口参数:无 备注:电机测频部分,t0 做计数器,t1 做定时器(1s) */ void t1_int (void) interrupt 3 /电机测速:t1 做定时器,50ms 进 一次中断 tr1 = 0; /关闭 t1 定时器 if(mode=1) th1 = (-50000)8; /重新给 t1 定时器赋初值 tl1 = -50000; led_t=!led_t; /led 灯闪烁 led_b=led_t; 14 if (+timeloop = 20) /判断 1s 时间是否到达 tr0 = 0; /关闭 t0 计数器 freq = t0count*65536 + th0*256 + tl0; /如果到达,计算频率 timeloop = 0; /清零定时变量,为开始下一 个 1s 作准备 th0 = 0; /清零计数器,重新开始计算 频率 tl0 = 0; t0count=0; tr0=1; led_y=!led_y; /led 灯闪烁 led_y=led_y; if(time+8; tr0 = 1; /启动定时器 t0 tr1 = 1; /启动计数器 t1 et0 = 1; /开始定时器 t0 中断 et1 = 1; /开始定时器 t0 中断 ea = 1; /开启系统总中断 choosef=0x07; /分频选择 p1=choosef; /* 函数名称:dianji_init 输入参数:无 输出参数:无 备注:电机初始化 */ void dianji_init(void) ea = 0; /关闭系统总中断 tmod = 0x15; /设置定时/计数器的工作模 式:t0:计数器,方式 1;t1:定时器,方式 1 timeloop = 0; time=0; vt = 10; t0count = 0; /统计计数器 t0 溢出中断的 次数 tl0 = th0 = 0; /清零 t0 计数器初值 tl1 = -1000; /给 t1 定时器置初值,初值到 溢出为 50ms th1 = (-1000)8; tr0 = 1; /启动计数器 t0 tr1 = 1; /启动定时器 t1 et1 = 1; /开始定时器 t1 中断 et0 = 1; /开始定时器 t1 中断 ea = 1; /开启系统总中断 / choosef=0x08; /切换时让频率计复位 16 / p1=choosef; /* 函数名称 main 输入参数:无 输出参数:无 备注:主函数 */ void main(void) mode=1; while(

温馨提示

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

评论

0/150

提交评论