速度表课程设计报告DOC.docx
《速度表课程设计报告DOC.docx》由会员分享,可在线阅读,更多相关《速度表课程设计报告DOC.docx(20页珍藏版)》请在冰豆网上搜索。
速度表课程设计报告DOC
第一章速度表设计
设计一个基于89C52单片机的速度表,该速度表可以测量转速范围0—3000r/min,
当电机转速超过3000r/min时,蜂鸣器自动报警。
1.1课程设计的目的:
1、巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决实际课题设计的能力。
2、培养针对课题需要,选择和查阅有关手册、图表及文献资料的能力,提高组成系统、编程、调试的动脑动手能力。
3、通过对课题设计方案的分析、选择、比较,熟悉运用单片机系统开发、软硬件设计的方法内容及步骤。
4、掌握的STC89C52,74HC14,四段共阳数码管接口电路,及使用方法。
1.2课程设计要求:
1、熟悉组成系统中的实验模块原理,画出实验原理图。
2、写出完整的设计任务书:
课题的名称、系统的功能、硬件原理图、软件框图、元件清单、程序清单、参考文献。
第二章设计方案
2.1速度表主要功能
该速度表可以测量转速范围0—3000r/min,当电机转速超过3000r/min时,蜂鸣器自动报警。
2.2转速测量方法选择
对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。
在频率的工程测量中,电子式定时计数测量频率的方法一般有三种:
M法(测频法)、T法(测周期法)和M/T法(频率/周期法)。
2.2.1M法(测频法)
在规定的检测时间内,检测光电脉冲发生器所产生的脉冲信号的个数来确定转速。
虽然检测时间一定,但检测的起止时间具有随机性,因此M法测量转速在极端情况下会产生
1个转速脉冲的误差。
当被测转速较高或电机转动一圈发出的转速脉冲信号的个数较大时,才有较高的测量精度,因此M法适合于高速测量。
2.2.2T法(测周期法)
它是测量光电脉冲发生器所产生的相邻两个转速脉冲信号的时间来确定转速。
相邻两个转速脉冲信号时间的测量是采用对已知高频脉冲信号进行计数来实现的。
在极端情况下,时间的测量会产生
1个高频脉冲周期,因此T法在被测转速较低(相邻两个转速脉冲信号时间较大)时,才有较高的测量精度,所以T法适合于低速测量。
2.2.3M/T法(频率/周期法)
它是同时测量检测时间和在此检测时间内光电脉冲发生器所产生的转速脉冲信号的个数来确定转速。
由于同时对两种脉冲信号进行计数,因此只要“同时性”处理得当,M/T法在高速和低速时都具有较高的测速精度。
本设计要实现在转速范围0000-3000转/分之间测量转速,所以速度表既要测量低速转速又要测量高速转速,而M/T法在高速和低速时都有较高的精度。
由于M/T法可在整个速度范围内获得高分辨率,可在不损失精度和分辨率的前提下获得快速响应,所以本次设计采用M/T法。
2.3转速测量原理
一般的转速长期测量系统是预先在轴上安装一个有60齿的测速齿盘,用变磁阻式或电涡流式传感器获得一转60倍转速脉冲,再用测频的办法实现转速测量。
而临时性转速测量系统,可采用红外采样系统,从转轴上预先粘贴的一个标志上获得一转一个转速脉冲,随后利用电子倍频器和测频方法实现转速测量。
不论长期或临时转速测量,都可以在微处理器的参与下,通过测量转轴上预留的一转一齿的鉴相信号或光电信号的周期,换算出转轴的频率或转速。
即通过速度传感器,将转速信号变为电脉冲,利用微机在单位时间内对脉冲进行计数,再经过软件计算获得转速数据。
亦即:
(1)
n——转速,单位:
转/分钟;
N——采样时间内所计脉冲个数;
T——采样时间,单位:
分钟;
m——每旋转一周所产生的脉冲个数(通常指测速码盘的齿数)。
如果m=60,那么1秒钟内脉冲个数N就是转速n,即:
(2)
通常m为60。
2.4系统概述
系统主要由AT89S52单片机处理系统、转动系统、信号采集单元、信号处理单元和显示系统等几个部分组成,如图1:
信号采集及其处理
转动系统
单片机处理电路
显示电路
图1系统组成框图
2.4.1转动系统
本设计中采用霍尔传感器测量电机转速。
2.4.2信号采集及其处理
被测物理量经过霍尔传感器将磁场变化转换成电脉冲。
2.4.3单片机处理电路
用于测量转速的脉冲信号通过P3.5/T1输入单片机,用AT89S52的定时计数器T1对脉冲信号进行计数,用定时计数器T0进行定时,每50ms产生一个中断对数码管进行刷新,产生120个中断后(即6s),进行一次转速处理,再通过单片机对T1的脉冲数进行运算转换后,用数码管显示电机的转速。
2.4.4显示电路
系统通过四位七段数码管实时显示电机的转速值。
2.5系统硬件实现
2.5.1AT89S52单片机介绍
如图2所示,AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
引脚功能:
电源引脚:
VCC接电源、GND接地。
输入/输出口:
PORT0(39~32)、PORT1(1~8)、PORT2(21~28)、PORT3(10~17)。
复位引脚:
RST。
几乎所有的微控制器都需要复位(Reset)的操作。
对于8051而言,只要复位引脚接高电平超过两个机器周期(约
),即可产生复位操作。
频率引脚:
XTAL1、XTAL2。
存储器引脚:
。
当
时,系统使用内部存储器;当
时,系统使用外部存储器。
外部存储器控制引脚:
第30脚(ALE):
地址锁存启用信号,若ALE=1,P0被当成地址总线;若ALE=0,P0被当成数据总线。
第29脚(
):
程序存储启用信号,通常把此引脚连接到外部存储器(ROM)的
引脚,当8051要读取外部存储器的数据时,此引脚就会输出一个低电平信号。
图2AT89S52引脚图
(2)主控单元
如下图3所示,X1为12MHz的晶振,第9脚为复位引脚,通过按键开关控制。
用于测量转速的脉冲通过P3.5输入单片机,用AT89S52的定时/计数器T1对脉冲信号进行计数,用定时/计数器T0进行定时,每50ms产生一个中断对数码管进行刷新,产生120个中断后(即6s),进行一次转速处理,再通过单片机对T1的脉冲数进行乘10运算转换后,用数码管显示电机的转速。
图3AT89S52单片机处理电路
(3)时钟电路
单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
本设计中此采用内部时钟方式,如图4所示,以石英晶体振荡器和两个片电容组成外部振荡源。
片内的高增益反相放大器通过XTAL1、XTAL2外接,作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。
振荡器的频率取决于晶振的振荡频率,振荡频率范围为1.2—12MHz。
工程应用时通常采用6MHz或12MHz。
图中X1为12MHz,电容C1、C2为30pF,它们一起构成此单片机的自激振荡器。
图4时钟电路图
(4)复位电路
8051的复位引脚(Reset)是第9脚,当单片机振荡器工作时,该引脚上出现持续2个机器周期的高电平,就可以实现系统复位。
如图5所示,本设计采用手动复位,用一个电容与一个10K电阻串联组成,电阻接地,电容接VCC,RESET脚接在它们中间。
未上电时,RST端为低电平,只要按下这个按键,RST端转换为高电平,经过两个机器周期后,单片机就能复位。
图5含手动的Reset电路图
2.5.2显示模块设计
(1)显示部分采用四位七段数码管来显示最终的结果,即电机的转速。
如图6所示,采用500Ω的限流电阻,并使用PNP三极管放大输入电流,以增加数码管的亮度。
图6显示电路
(2)四位七段数码管:
内部的4个数码管共用a~dp这8根数据线,有4个公共端,加上a~dp,共有12个引脚。
图7是一个共阳四位数码管的内部结构图。
引脚排列是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚。
图7四位七段数码管内部结构图
管脚顺序:
从数码管的正面观看,以第一脚为起点,管脚的顺序逆时针方向排列。
12—9—8—6→公共脚
a--11b--7c--4d--2e--1f--10g--5dp--3
2.6系统软件的设计
2.6.1控制程序说明
在6S之内计数外部脉冲的频率,由定时器0进行6S的定时(定时方式),定时器1对外部脉冲进行计数。
和PC机相比,单片机资源十分有限。
因此单片机系统不可能像windows系统那样建立庞大的消息循环机制,将消息分发给各个程序并行处理。
在基于消息的单片机编程中,采取一种简化的方式,消息可以这样来定义:
当某个事件(例如中断)发生时,事件处理程序(例如中断服务程序)设置相应的标志,不同的标志即代表不同的消息;而主程序所进行的消息循环就是主程序不断地判断这些标志,以决定启动哪一个处理函数(即将消息发送给特定的消息处理函数)。
这种方法在多中断系统中使用,可以明显地提高中断的实时性;另外,由于在中断服务程序中不需要调用数据处理程序,也有效地防止了代码重入带来的问题。
2.6.2程序设计流程图
(1)主程序流程图
图8主程序流程图
(2)测量函数流程图
图9测量函数流程图
(3)显示函数流程图
图10显示函数流程图
(4)T0_6s中断子程序流程图
图11T0_6s中断子程序流程图
第三章调试
图12程序调试
第四章问题与总结
4.1问题
(1)在绘制电路图时电路出现错误,经过观察和调整,得以原理图成功制出。
(2)在编写程序时程序也出现了问题,出现许多提示错误,经过和同学讨论,最后程序才成功编写完成,仿真效果也随之出来。
(3)本来以为仿真图出来,接下来就是简单的手工问题,可过程远比我想象的要复杂的多,第一次焊了一块板,差不多快完成时发现连线连成“蜘蛛网”,甚是难看,在同学的建议下我选择了重新焊,在第二次的焊板过程中发现第一次焊时有许多地方的引脚是错误,结果总不会如自己所意料的,第二次焊结束时所想要的效果还是没有出来,当时的心很失落,用电压表查电路、查看板有无虚焊,在焊完漏掉的线路后效果仍旧没出来,我的心更加失望,在快要绝望准备放弃时,我抱着试一试的心理重新烧了一下程序,结果出来了,心中的石头落下了。
4.2总结
本次的设计中利用STC89C52和霍尔传感器以及三极管完成电路的设计,用单片机直接译码显示,中断报警设计完成了程序设计。
通过这次课程设计,我进一步了解了单片机直接译码显示,中断,计数的编程方法,学会了在实际动手操作过程中,使我接触了一些我以前没接触过的元件,在学习与运用中更好的掌握知识。
这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。
参考文献
1.《单片机应用系统设计技术》张齐著电子工业出版社
2.《单片机原理及应用技术》范力旻电子工业出版社
3.《例说8051》谢亮、陈敌北、张义人民邮电出版社
4.《单片机C语言应用100例》王东峰王会良电子工业出版社
5.《51系列单片机设计实例》楼然苗李光飞北航出版社
附录1
电路原理图:
附录2
程序清单:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodet[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
};
uintn,num;
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<50;j++);
}
voiddisplay(ucharm,ucharw,ucharq,ucharb,uchars,ucharg)//显示
{
P1=0xfe;
P0=t[g];
delay
(1);
P0=0xff;
P1=0xfd;
P0=t[s]&0x7f;
delay
(1);
P0=0xff;
P1=0xfb;
P0=t[b];
delay
(1);
P0=0xff;
P1=0xf7;
P0=t[q];
delay
(1);
P0=0xff;
P1=0xef;
P0=t[w];
delay
(1);
P0=0xff;
P1=0xdf;
P0=t[m];
delay
(1);
P0=0xff;
}
voidmain()
{
ucharm,w,q,b,s,g;
TMOD=0x25;//00100101=>T1,定时,方式2;T0,计数,方式1
TH0=0;
TL0=0;
TH1=6;
TL1=6;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while
(1)
{
m=num/10000;
w=num/10000%10;
q=num/1000%10;
b=num/100%10;
s=num/10%10;
g=num%10;
display(m,w,q,b,s,g);
}
}
voidt1(void)interrupt3
{
n++;
if(n==4000)//一秒时间到
{
n=0;//清零
EA=0;//关中断
num=(long)TH0*256+TL0;//取计数值
num=num*60;
if(num>=3000)
{
P3=0xFE;
}
else
{
P3=0xFF;
}
TL0=0;//计数清零
TH0=0;//计数清零
EA=1;//重开
}
}
附录3
元器件清单:
元件名称
数量
备注
STC89C52
1
74HC14
1
电阻
4
150
电阻
3
150K
电阻
9
500
电路板
2
四段共阳数码管
1
LG4042BH
蜂鸣器
1
THDZ
晶振
1
12MHZ
电解电容
1
25V10uF
电容
2
30pF
电解电容
1
25V470uF
PNP三极管
5
S8550D331
按钮
1
光电传感器
1
H105
1.5V电池
3
附录4
实物图: