转速课程设计说明书.docx
- 文档编号:28416084
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:21
- 大小:579.76KB
转速课程设计说明书.docx
《转速课程设计说明书.docx》由会员分享,可在线阅读,更多相关《转速课程设计说明书.docx(21页珍藏版)》请在冰豆网上搜索。
转速课程设计说明书
目录
摘要…………………………………………………………………………………………2
1引言………………………………………………………………………………………3
2方案设计…………………………………………………………………………………4
2.1系统设计方案论证…………………………………………………………………4
2.1.1方案一……………………………………………………………………4
2.1.2方案二………………………………………………………………………4
2.2方案二的总体设计框图………………………………………………………4
3系统硬件设计……………………………………………………………………………4
3.1主控芯片……………………………………………………………………………4
3.2滤波电路及LM324芯片……………………………………………………………7
3.3显示设备及74LS373芯片…………………………………………………………8
4系统软件设计………………………………………………………………………………8
4.1设计思路……………………………………………………………………………8
4.2程序流程图…………………………………………………………………………8
结论…………………………………………………………………………………………11
致谢…………………………………………………………………………………………12
附录A原理图………………………………………………………………………………13
附录B仿真图………………………………………………………………………………14
附录C程序编译图…………………………………………………………………………15
附录DPCB图………………………………………………………………………………16
附录E程序代码……………………………………………………………………………17
参考文献……………………………………………………………………………………22
摘要
单片机因其体积小、功能强、价格低廉而得到广泛应用。
本文介绍用AT89C52单片机设计制作发动机转速检测系统,仅需AT89C52最小系统,外接一个四位共阴数码管,再加一片74LS373锁存芯片以及滤波电路。
这样就能够对发动机转速进行检测,并显示在数码管上面。
关键词:
转速单片机显示
1引言
1.1问题的提出
目前汽车上转速表显示过于复杂,能否利用现在所学的单片机知识及常见的元器件搭建出能检测汽车发动机或者其它装置的转速,将会巩固所学的单片机知识。
1.2任务与分析
本文是应用MCS-51单片机原理和控制理论设计转速检测控制器的硬件电路,并利用C语言进行程序设计。
通过检测单片机的外部中断触发信号来启动内部的定时器定时两个信号之间的时间,所得时间在程序中进行加权滤波,转换,最后将转速在数码管上显示。
2
方案设计
2.1发动机转速检测系统设计方案论证
2.1.1方案一
本设计程序采用定时计数器0定时一段时间,在此段时间内设置定时器计数1对外部进行计数,最后将所得的个数进行滤波、转换,最后在数码管上显示。
但是,这种方案所测的为转速在一定时间内的平均值,不够精确。
2.1.2方案二
与方案一相比,本方案通过检测单片机的外部中断触发信号来启动内部的定时器计时两个信号之间的时间,所得时间在程序中进行加权滤波,转换,最后将转速在数码管上显示。
这种设计能够很好的检测发动机的瞬时转速,精确度高。
编写程序相对简单,更容易实现要求。
2.2方案二总体设计框图
本设计采用89C52作为主控芯片,通过滤波电路处理输入信号,数码管作为输出设备显示转速。
其中P3.2作为信号的输入,P1口用作数码管的段选信号,P2口用作数码管的位选信号。
详细原理图见附件一,仿真图见附件二,程序编译完成图见附件三。
设计框图如图一所示。
图一发动机转速检测系统设计框图
3系统硬件设计
3.1主控芯片
设计中所采用主控芯片为AT89C52。
因其价格便宜,在市场上已经很成熟,各个方面都能够满足设计要求故选择它。
其采用标准双列直插式引脚DIP-40大规模集成电路封装。
它的引脚排列如下图二所示
图二AT89C52的引脚排列
引脚介绍:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3.2滤波电路及LM324芯片
LM324芯片是差动输入的四运算放大器。
该运放放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。
共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。
每一组运算放大器可用图三所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
图三LM324管脚图
霍尔传感器输出信号为正弦信号,而单片机只能处理高低电平信号,为此必须将正弦信号转换成TTL电平信号。
设计中利用LM324的比较作用将输入信号与参考电压进行比较,到大于时LM324输出端为高电平,否则为低电平。
由于LM324为模拟器件,其驱动能力不足。
设计中在输入端串联了一片74LS04的六非门芯片,提高输入的驱动能力,以便于单片机处理。
图四信号输入滤波电路
3.3显示设备及74LS373芯片
74LS373为三态输出的八D触发器。
其真值表如图五所示。
在设计中其功能为提高单片机的输出驱动能力,使数码管正常显示。
图五74LS373真值表
设计中的显示器件为数码管,数码管是有多段发光二极管组成的。
它有共阴和共阳的区分,当二极管的负极接在一起则为共阴,而正极连在一起的为共阳数码管。
设计中选择的为共阴数码管,其段选接在P1口,位选接在P2口的前四位。
4系统软件设计
4.1设计思路
利用80C52单片机内部的定时计数器和外部中断功能,通过检测P3.2端口的信号启动定时计数器进行计时,当下一次触发信号到来时,定时器停止计时并保存当前值。
再启动定时器计时,如此循环。
保存值达到五次后,对其进行加权滤波处理。
最后将所得的值赋给数码管显示。
4.2程序流程图
图六主程序流程图
图七定时器0中断函数流程图
图八外部中断函数流程图
结论
此次设计过程中,我查阅了一些相关资料,使得我更深入的了解单片机芯片的工作原理以及相关软件、硬件的使用方法。
在这一周的时间里,我不仅完成设计所要求的内容,也掌握了AT89C52芯片的具体功能。
但是,也存在显示数字有一定的误差,分析原因在于51单片机处理浮点运算的能力不够。
在整个设计过程中,我们不仅能将书本上学到的关于单片机相关的知识与实践相结合,而且还培养了团队合作精神并提高了自学能力。
这将对我们今后的实践提供很大的帮助。
设计中还让我意识到:
理论和实践相结合的重要性。
虽然电路看上去比较简单,但实际行动起来将会遇到许多困难。
因此,设计过程中要保持一种持之以恒、严谨的学习态度,这样才会在设计过程中及时的发现问题、解决问题。
致谢
本课题在选题过程中得到了**老师的悉心指导。
她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。
从课题的选择到最终的完成,她都给予我细心的指导和不懈的支持。
在此谨向她致以诚挚的谢意和崇高的敬意。
课题能够顺利完成也离不开同组同学的帮助,在此一并感谢。
在以后的学习和生活中我将会更努力的学习知识,并将其应用到实际中。
附录A:
原理图
附录B:
仿真图
附录C:
程序编译
附录D:
PCB图
附录E:
程序代码
#include
#defineSEG7_DUANP1//段选
#defineSEG7_WEIP2//位选
bitFlag;//第一次中断标志
bitFlag_s;//转换标志
unsignedcharCOUNT;//溢出次数
unsignedlongT[5];
unsignedcharW[5]={1,2,3,4,5};//权值
unsignedcharCC[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管共阴字符表
unsignedcharaa[]={0xfe,0xfd,0xfb,0xf7};
voidInit(void);
unsignedintSmooth(void);
voidDelay_ms(unsignedcharms);
voidSEG7_Display(unsignedintd);
//-------------------------------
//主函数
//-------------------------------
voidmain(void)
{
unsignedintdis_dat;
Flag=0;
Flag_s=0;
COUNT=0;
dis_dat=0;
Init();
Delay_ms(20);
EA=1;
while
(1)
{
if(Flag_s)
{
dis_dat=Smooth();
Flag_s=0;
}
SEG7_Display(dis_dat);
}
}
//----------------------------------
//名称:
显示函数
//功能:
显示共阴四位
//----------------------------------
voidSEG7_Display(unsignedintd)
{
unsignedchardd[4],i;
dd[0]=d/1000;
dd[1]=d%1000/100;
dd[2]=d%1000%100/10;
dd[3]=d%10;
for(i=0;i<4;i++)
{
SEG7_WEI=aa[i];
SEG7_DUAN=CC[dd[i]];
Delay_ms(5);
}
}
//-----------------------------
//名称:
延时函数
//功能:
约为(ms*1)ms时间
//-----------------------------
voidDelay_ms(unsignedcharms)
{
unsignedchara,b;
for(a=ms;a>0;a--)
for(b=120;b>0;b--);
}
//-----------------------------
//名称:
定时器,中断初始化
//功能:
定时器0采用16位,中断下降沿触发
//-----------------------------
voidInit(void)
{
TMOD=0x01;
EX0=1;
ET0=1;
IT0=1;
}
//-----------------------------
//名称:
滤波函数
//功能:
加权滤波,权值1,2,3,4,5
//-----------------------------
unsignedintSmooth(void)
{
unsignedchari;
unsignedintdat;
floatsum;
floatavg;
sum=0;
for(i=0;i<5;i++)
{
sum+=T[i]*W[i];
}
sum=sum/15;
avg=60000000/sum;
dat=(int)avg;
if(dat>9999)dat=9999;
returndat;
}
//---------------------------
//外部中断0的中断函数
//---------------------------
voidINT(void)interrupt0
{
if(Flag)
{
staticunsignedcharm=0;
T[m]=TH0*256+TL0+65536*COUNT;
TH0=0;
TL0=0;
COUNT=0;
m++;
if(m==5)
{
m=0;
Flag_s=1;
}
}else
{
Flag=1;
TH0=0;
TL0=0;
TR0=1;
}
}
//-----------------------------
//定时器0的中断函数
//-----------------------------
voidTime(void)interrupt1
{
COUNT++;
TH0=0;
TL0=0;
}
参考文献
[1]徐峥颖编著.Protel99SEEDA技术及应用[M].北京:
机械工业出版社,2005.
[2]张靖武编著.单片机系统的protues设计与仿真[M].北京:
电子工业出版社,2007.
[3]李朝青编著.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2005.
[4]边春远编著.MCS-51单片机应用开发实用子程序[M].北京:
人民邮电出版社,2005.
[5]刘守义编著.单片机应用技术[M].西安:
西安电子科技大学出版社,2002.
[6]韩志军编著.单片机应用系统设计[M].北京:
机械工业出版社,2005.
[7]张毅刚,刘喜元编著.新编MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版社,2003.
[8]唐岚编著.汽车测试技术[M].北京:
机械工业出版社,2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 转速 课程设计 说明书